往期回顾:
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将是一个不错的选择。
Coinbase全球营销主管John Russ决定离职:10月15日,Coinbase全球营销主管John Russ发推表示,已决定从Coinbase离职。John Russ表示,该决定是对此前Coinbase首席执行官Brian Armstrong的“远离”言论的回应。此前9月30日消息,Brian Armstrong发文称,希望Coinbase专注于建设业务,最大限度远离社会激进主义和。该番言论随后引发公司内容员工及其他领域人员不满。此后,Coinbase业务和数据副总裁Dan Yoo将离职,且已有5%的Coinbase员工已接受遣散费。[2020/10/16]
2.NEARCLI安装
NEARCLI(CommandLineInterface)是一个NodeJS命令行接口,它底层利用near-api-js连接到上述所介绍的网络中,并与之交互。因此在安装之前,我们需要首先安装npm,随后我们将在Linux中利用npm执行如下安装命令安装NEARCLI。
$sudonpminstall-gnear-cli?
执行如下命令可查看NEARCLI的安装版本,并检查是否安装成功。
$near--version
3.在TestNet中部署合约
3.1.注册TestNet账户
澳大利亚农业供应链平台Entrust将在Hedera Hashgraph上运营:9月22日消息,澳大利亚政府支持农业供应链平台Entrust宣布,将在企业区块链Hedera Hashgraph上运营。该供应链平台旨在重点保护葡萄酒和乳制品制造业免受全球市场造假影响,并推动农业部门节能工作。(Cointelegraph)[2020/9/22]
新用户可在https://wallet.testnet.near.org页面中注册新的TestNet钱包,只需要输入用户名即完成注册,例如statusmessage.testnet。
随后在https://explorer.testnet.near.org中,我们可以搜索并查看有关TestNet中该账户的有关信息,如下所示:
Bittrex支持的加拿大交易所CatalX与Prime Trust达成合作:由Bittrex支持的加拿大加密货币交易所CatalX已与Prime Trust达成合作,CatalX的客户现在可以使用Prime Trust的PrimePay数字支付服务,以及该公司的存取款支付处理技术。作为该服务的一部分,CatalX还将整合Prime Trust的“合规即服务”(Compliance As A Service)模式,为所有账户提供KYC和AML服务。(NS Banking)[2020/5/9]
在TestNet中,每一个新建账户中将含有200?的原生余额。
3.2.在NEARCLI中登录该账户
由于我们已经安装NEARCLI,且已申请了NEARTestNet中的用户账户。下面可以尝试在NAERCLI中登录该账户:
$nearlogin
随着上述命令的执行,NEARCLI将唤起一个链接,并需要用户手动点击登陆上述statusmessage.testnet账户。
行情 | 库币上线Suterusu 24h内涨幅达26%:据库币KuCoin消息,库币已于2月25日上线Suterusu(SUTER)并开启交易对:SUTER/USDT,24h内涨幅达26%。Suterusu是基于智能合约为区块链交易及数据提供隐私保护。原创的零知识证明协议ZK-conSNARK,无需“可信预设”更安全,优化ZKP大小,支持智能合约,可为BTC、ETH、NEO等主流数字资产实现隐私保护。 库币数字货币交易所,为来自207个国家的500万用户提供币币、法币、合约、矿池、借贷等一站式服务。全球每4个数字货币持有者就有1个是库币用户。[2020/2/25]
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'?}
动态 | 英国旅行社Alternative Airlines与Utrust建立合作关系,拟支持用加密货币预定航班:11月13日,总部位于瑞士的加密支付处理商Utrust宣布与英国旅行社Alternative Airlines建立合作伙伴关系。两家公司计划支持用BTC、ETH、DASH、DGB和Utrust的原生代币UTK来预定航班。两家公司之间的合作将为Alternative Airlines公司的客户带来即时的跨境交易。据悉,该旅行社的网站允许客户搜索650多家航空公司的航班,例如达美航空、联合航空、英国航空、维珍航空和阿联酋航空等。[2019/11/14]
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将主要从安全的角度,向大家进一步展示如何编写一个安全的智能合约。
摘要 产业动态: 全球大学区块链能力排名:新加坡国立大学第一,清华第八韩国记者协会与与PUBLISH合作,采用区块链技术改善新闻媒体生态系统Ripple与卡塔尔国家银行达成合作.
1900/1/1 0:00:00往期回顾:Rust智能合约养成日记合约状态数据定义与方法实现在上一期BlockSec针对Rust智能合约开发的文章中,我们介绍了如何为合约StatusMessage定义合约状态,并为该合约实现了不同的方法.
1900/1/1 0:00:00前文《打破K/V存储的性能瓶颈》中,我们提到用一个哈希值来反映区块链系统中所有对象的当前状态集合,并称之为“世界状态”.
1900/1/1 0:00:0010月18日,社交媒体巨头Facebook官网发文表示,Facebook计划在未来五年内在欧盟招聘10,000名员工,以帮助建立所谓的元宇宙。这将是该公司朝着这一概念迈出的重要一步,这是最近几个月最高老板马克扎克伯格吹捧的.
1900/1/1 0:00:00据Cointelegraph10月19日报道,彭博分析师EricBalchunas预测,Valkyrie基于比特币期货的ETF在上周获得纳斯达克交易所上市认证后,“可能”将在未来几天推出,可能是周三或者周四.
1900/1/1 0:00:00原文:36氪 想象一下,当你在网上购买了一件喜欢的实体商品时,一个基于区块链技术的NFT也同时归到了你的名下.
1900/1/1 0:00:00