Rust智能合约养成日记: 合约部署,函数调用,及explorer使用

往期回顾:

Rust智能合约养成日记合约状态数据定义与方法实现Rust智能合约养成日记编写Rust智能合约单元测试在本期Rust智能合约开发Blog中,BlockSec将为大家介绍如何将一个简单的示例智能合约部署至NEAR测试网络(TestNet)中,执行合约,并查询合约的执行结果。

当合约的开发者们实现了合约的主要逻辑,进行了单元测试后,开发者可将该合约项目编译成WASM字节码,部署到NEAR的测试链上,为最后部署到主网(MainNet)做准备。

1.NEAR网络介绍

NEARProtocol作为一种协议,意味着可以存在有基于该协议的多种独立网络。NEAR协议所制定的规范与标准NEARProtocolSpecificationsandStandards指明了基于NEAR协议的不同链,其创世区块配置GenesisConfig中chain_id各不相同。

我们常用的主要有如下三种网络:

TestNet每一个智能合约项目最终都需要在区块链网络上运行,以实现项目的功能。然而,对于一个新项目来说,项目团队往往会先将项目部署在测试网之后,开发团队可以选择将该合约正式地部署至主网中。LocalNetLocalNet不同于TestNet。LocalNet运行于本地,因此部署在该链上的合约与交易数据均不向外部网络公开。如果在合约项目部署至TestNet或MainNet之前,开发者不希望泄漏任何该项目相关的重要信息,LocalNet将是一个不错的选择。

破产的Compute North向Crusoe出售155万美元的资产:金色财经报道,比特币挖矿托管服务商Compute North正以约155万美元的价格向Crusoe Energy Systems出售11个集装箱。根据周三提交的文件,美国德克萨斯州南区休斯顿分部的破产法院批准了这项销售。根据该文件,Crusoe已经在10月28日支付了价值18.7万美元的定金。该公司在截止日期前没有收到任何其他合格的出价。(the block)[2022/11/17 13:15:53]

2.NEARCLI安装

NEARCLI(CommandLineInterface)是一个NodeJS命令行接口,它底层利用near-api-js连接到上述所介绍的网络中,并与之交互。因此在安装之前,我们需要首先安装npm,随后我们将在Linux中利用npm执行如下安装命令安装NEARCLI。

$sudonpminstall-gnear-cli?

执行如下命令可查看NEARCLI的安装版本,并检查是否安装成功。

$near--version

3.在TestNet中部署合约

3.1.注册TestNet账户

新用户可在https://wallet.testnet.near.org页面中注册新的TestNet钱包,只需要输入用户名即完成注册,例如statusmessage.testnet。

Northern Trust 宣布成立数字资产和金融集团:金色财经报道,北方信托(Northern Trust )宣布成立数字资产和金融集团,该集团将由现任全球负责人Justin Chapman领导市场倡导创新和研究。

新团队将负责支持快速增长的数字资产市场的团队与致力于提供跨传统证券服务市场的市场准入和洞察力的团队结合在一起。

Northern Trust资产服务总裁Pete Cherecwich 表示,客户对数字市场的发展和对数字资产的投资以及对股票、固定收益、另类和私人资产等更传统资产类别的配置越来越感兴趣。与其创建单独的业务线,不如将我们对数字市场和传统市场的关注结合在一起,我们可以继续开发真正反映和支持客户不断发展的投资策略的服务和能力。[2022/6/24 1:28:19]

随后在https://explorer.testnet.near.org中,我们可以搜索并查看有关TestNet中该账户的有关信息,如下所示:

Crypto.com聘请Jon Russell担任Web 3基金LP,暗示将扩大基金规模:1月17日消息,Crypto.com Capital宣布正在扩大其2亿美元的Web 3基金,并已任命Jon Russell为亚洲的有限合伙人。Jon Russell曾是驻曼谷的科技记者,为Tech Crunch和The Ken撰稿。Crypto.com Capital最初于2021年3月推出该基金,资金为2亿美元,目标是DeFi、NFTs、区块链游戏和元宇宙等垂直行业的种子和A轮交易。该基金目前由Crypto.com联合创始人Bobby Bao管理,并正在全球范围内招聘更多的LP。Russell将帮助扩大该基金对亚洲项目的接触。Jon Russell告诉CoinDesk,该基金的规模将增加一倍以上,预计将在未来几天内公布。(CoinDesk)[2022/1/17 8:54:02]

在TestNet中,每一个新建账户中将含有200?的原生余额。

3.2.在NEARCLI中登录该账户

由于我们已经安装NEARCLI,且已申请了NEARTestNet中的用户账户。下面可以尝试在NAERCLI中登录该账户:

$nearlogin

随着上述命令的执行,NEARCLI将唤起一个链接,并需要用户手动点击登陆上述statusmessage.testnet账户。

Crust Network 道长:用户的资产在Rollup解决方案中是安全的:金色财经现场报道,7月9日,金色沙龙第66期Layer2-扩容“空间站”,探索更高维度的破局之道在杭州举办,Crust Network 道长在圆桌对话环节中表示,V神曾提到, 二层解决方案有两大问题:一个是资产安全性问题,还有一个是系统安全性问题。Rollup已经将资产安全性问题基本解决,也就是用户的资产在Rollup解决方案中是安全的。但Rollup的系统安全性问题仍有待解决。

他山之石,可以攻玉。Crust网络提供了高安全性和高可用的数据存储网络,有能力为Layer2方案提供更高的系统安全性。

一些实际的例子已经证明了Crust的存储优势。Uniswap已经将它的网站去中心化的部署在了Crust之上,除此之外,还有更多DApp和NFT项目将他们的数据存储在Crust网络。[2021/7/9 0:40:09]

3.3.查看账户相关信息

同时,我们可以通过NEARCLI查询特定账户的相关信息

$nearstatestatusmessage.testnetAccountstatusmessage.testnet{amount:'199999959035075000000000000',block_hash:'8iomNEFNa4LQB54ehTPBGu8bBfotistoWrBcYJfxm8vA',block_height:68318068,code_hash:'11111111111111111111111111111111',locked:'0',storage_paid_at:0,storage_usage:264,formattedAmount:'199.999959035075'?}

TaurusGroup获1100万美元融资,阿拉伯银行瑞士分行领投:4月29日消息, 加密基础设施初创公司Taurus Group已获得1000多万英镑(约1100万美元)A轮融资,阿拉伯银行瑞士分行领投,Tezos基金会和其他投资者参投。Taurus Group计划扩大其团队,并将其业务扩展到整个欧洲的新市场。

该公司联合创始人Lamine Brahimi表示,“我们希望以欧洲为重点,扩大我们的工程和销售团队。我们计划在伦敦、法兰克福或巴黎等金融中心开设新的办事处。”该公司希望在未来12到18个月内将员工人数从目前的20人增加到40人。目前还不清楚Taurus Group迄今为止的融资总金额。该公司拒绝透露总额及其估值,但表示“2019年收入达到7位数”。

据悉,总部位于日内瓦的Taurus Group成立于2018年4月,为银行等机构客户提供数字资产的发行、保管和转移的基础设施解决方案。其知名客户包括SEBA、Vontobel和阿拉伯银行。(The Block)[2020/4/29]

3.4.合约编译与部署

在将合约部署之前,我们首先需要对合约进行编译,如下命令可利用cargo编译得到具体的WASM文件status_message.wasm.它通常位于项目的target/wasm32-unknown-unknown/release/目录下。

$RUSTFLAGS='-Clink-arg=-s'cargo+stablebuild--targetwasm32-unknown-unknown--release

同时,我们可以给statusmessage.testnet创建一个子账户,名为contract01.statusmessage.testnet,用于合约的部署

$cdtarget/wasm32-unknown-unknown/release$exportMASTER_ACCOUNT=statusmessage.testnet$nearcreate-accountcontract01.$MASTER_ACCOUNT?????????????--initialBalance10?????????????--masterAccount$MASTER_ACCOUNTAccountcontract01.statusmessage.testnetfornetwork"testnet"wascreated.

接着我们便可以使用neardeploy命令来帮助我们部署该合约。

$neardeploy--accountIdcontract01.$MASTER_ACCOUNT\????????????--wasmFilestatus_message.wasm

若合约部署成功,我们可以获得如下信息:

Startingdeployment.Accountid:contract01.statusmessage.testnet,node:(https://rpc.testnet.near.org),helper:(https://helper.testnet.near.org),file:status_message.wasmTransactionId4oDYA8wPLJuKwDumJxEGubeJBA9Ep13MLXSf34q9ydRmToseethetransactioninthetransactionexplorer,pleaseopenthisurlinyourbrowser(https://explorer.testnet.near.org/transactions/4oDYA8wPLJuKwDumJxEGubeJBA9Ep13MLXSf34q9ydRm)Donedeployingtocontract01.statusmessage.testnet

3.5调用合约函数

当我们成功部署合约至TestNet后,部署该合约的账户contract01.statusmessage.testnet,即为该合约的地址。为验证TestNet中StatusMessage合约是否能够正常运行。我们可以调用set_status来设定合约内置的属性。

$nearcall--accountId$MASTER_ACCOUNT\???contract01.$MASTER\_ACCOUNTset\_status'{"message":"Hi!2021"}'

如下是调用该合约中函数set_status返回的信息

Schedulingacall:contract01.statusmessage.testnet.set_status({"message":"Hi!2021"})TransactTransactionIdE9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesNToseethetransactioninthetransactionexplorer,pleaseopenthisurlinyourbrowser(https://explorer.testnet.near.org/transactions/E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN)''

可见该笔StatusMessage合约函数调用交易能够正常执行,并返回了具体的TransactionID,即E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN

3.6交易查询

NEAR为社区提供了一个数据浏览查询平台NEARExplorer。用户可以在该平台中搜索指定网络中的账户ID,交易哈希,交易区块等实时链上信息。

利用该笔交易的ID可以在NEARExplorer查询具体的交易细节。https://explorer.testnet.near.org/transactions/E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN

本期总结和预告

这一期中我们详细的介绍了如何将一个智能合约编译,并且部署到测试链上,接着如何调用指定的合约中的函数,并且通过explorer查询特定交易的状态。通过前三期的Rust智能合约养成日记,相信同学们大概知道如何从头开始写一个简单的合约,并且将其部署。从下一期开始BlockSec将主要从安全的角度,向大家进一步展示如何编写一个安全的智能合约。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:437ms0-9:335ms