月亮链 月亮链
Ctrl+D收藏月亮链
首页 > NEAR > 正文

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

作者:

时间:1900/1/1 0:00:00

往期回顾:

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将是一个不错的选择。

NBA球星托尼·帕克推出“Like A Brush”慈善NFT系列:9月17日消息,NBA球星托尼·帕克在社交媒体上发文表示,其个人在巴黎Binance Blockchain Week上正式宣布推出自己的慈善NFT系列“Like A Brush”,该系列与法国艺术家Julien Durix合作设计,总计发行3,333枚,帕克参与其中111枚创作,这111枚NFT销售所得资金将捐赠给帕克旗下慈善机构Infinity Care。[2022/9/17 7:02:39]

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。

Huobi Trust聘请前美国国土安全部官员担任首席运营官:金色财经报道,火币科技的美国子公司Huobi Trust已聘请前美国国土安全部官员Robert Whitaker担任首席运营官(COO)。据悉,Whitaker在国土安全部工作了近12年,从2014年到2017年是该机构的非法融资和犯罪收益部门的监督官员,在此期间调查了暗网市场的刑事案件和其他与加密相关的活动。[2021/8/6 1:37:38]

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

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

3.2.在NEARCLI中登录该账户

Crust Network宣布将集成波卡跨链预言机协议Ares:3月11日消息,波卡生态去中心化存储项目Crust Network发文宣布,与波卡生态跨链预言机协议Ares protocol合作。Crust Network将集成Ares协议资产数据和链下数据。Ares协议也将支持Crust Network数据管理和数据索引进行链上数据验证。[2021/3/11 18:35:16]

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

$nearlogin

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

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'?}

动态 | Overstock支持的Bankorus公司已没有资金:10月6日,Overstock支持的Bankorus公司最大股东Sonic Zhang发表声明称,Bankorus公司已没有资金,员工都已辞职。作为向Bankorus公司捐款100多万美元的捐款人,Sonic Zhang称其了解到,由于第二轮投资者撤资,Bankorus现金已经告罄,同时Overstock的STO平台tZero此前提供资金,帮Bankorus向STO产品过渡的代币并不能保存财富。Bankorus目前所拥有的只是对立陶宛Rato信贷联盟的100万美元投资。(Cointelegraph)[2019/10/7]

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,用于合约的部署

动态 | 汇桔网与美国区块链公司InvenTrust公司达成合作:据中华网消息,近日,在2018广东省知识产权交易博览会知识产权产业领袖高峰论坛上,汇桔网与InvenTrust公司正式达成战略合作关系,未来双方将在区块链研究院、知识产权区块链等方面展开一系列合作,共同推进知识产权与区块链的深度融合,以区块链技术为广大知商提供更多合作机遇。[2018/11/12]

$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将主要从安全的角度,向大家进一步展示如何编写一个安全的智能合约。

标签:NETNEARESTTESTomeganetwork币有多少人挖near币能到多少CoreStarterTesta Finance

NEAR热门资讯
区块链:加纳国家网络安全顾问:区块链技术对加纳的数字转型至关重要_YSEC

据Ghanaweb10月9日消息,加纳国家网络安全顾问AlbertAntwi-Boasiako博士在第四届加纳区块链虚拟会议上强调了加纳将区块链纳入其技术生态系统的必要性.

1900/1/1 0:00:00
加密货币:俄罗斯央行试图评估投资者的比特币持有量_玩加密货币什么人最多

据Cointelegraph10月15日报道,俄罗斯央行正试图评估当地投资者的比特币持有量,因为在新冠肺炎引发的提款后,大量资金没有返回银行.

1900/1/1 0:00:00
数字货币:美财政部发布2021制裁审查报告:数字资产的日益采用可能损害制裁效力_scoin币兑美元

美国财政部周一发布了2021年制裁审查报告。虽然它强调了加密货币是一种威胁,但也强调了该部门与加密社区接触的必要性.

1900/1/1 0:00:00
区块链:万向区块链杜宇:如何从区块链探寻元宇宙?_元宇宙专业大学排名

10月25日下午,由万向区块链和腾讯新闻联合主办的“数字化未来:元宇宙”?国际周开放日主题活动圆满落幕.

1900/1/1 0:00:00
TOMI:去信任公链质押协议Obol Technologies完成615万美元融资,ConsenSys等参投_LOC

据TheBlock10月18日消息,去信任公链质押协议ObolTechnologies完成615万美元融资.

1900/1/1 0:00:00
EFI:融资新闻 | 加密货币初创公司Immunefi完成550万美元种子轮融资_GRAPE

据TheBlock10月27日报道,帮助DeFi协议在其平台上推出漏洞奖励计划的加密货币初创公司Immunefi在一轮种子轮融资中筹集了550万美元.

1900/1/1 0:00:00