相关文章:
智能合约养成日记合约状态数据定义与方法实现
Rust智能合约养成日记编写Rust智能合约单元测试
在本期Rust智能合约开发Blog中,BlockSec将为大家介绍如何将一个简单的示例智能合约部署至NEAR测试网络(TestNet)中,执行合约,并查询合约的执行结果。
当合约的开发者们实现了合约的主要逻辑,进行了单元测试后,开发者可将该合约项目编译成WASM字节码,部署到NEAR的测试链上,为最后部署到主网(MainNet)做准备。
1.NEAR网络介绍
NEARProtocol作为一种协议,意味着可以存在有基于该协议的多种独立网络。NEAR协议所制定的规范与标准NEARProtocolSpecificationsandStandards指明了基于NEAR协议的不同链,其创世区块配置GenesisConfig中chain_id各不相同。
我们常用的主要有如下三种网络:
TestNet
每一个智能合约项目最终都需要在区块链网络上运行,以实现项目的功能。然而,对于一个新项目来说,项目团队往往会先将项目部署在测试网(TestNet)上,用来测试该智能合约项目的功能和相关业务逻辑。
乌克兰零售商VARUS通过Binance Pay接受加密支付:9月16日消息,Binance宣布与乌克兰食品连锁零售商内翻达成合作。Varus是一家在乌克兰拥有100多家超市商店的零售商,它与数字资产交易所币安合作推出了加密货币支付。客户现在可以在线订购杂货并通过币安支付钱包支付账单。VARUS是欧洲第一家接受Binance Pay的超市。[2022/9/16 7:02:09]
MainNet
当合约在测试网络中进行了多轮的测试和独立的安全审查之后,开发团队可以选择将该合约正式地部署至主网中。
LocalNet
LocalNet不同于TestNet。LocalNet运行于本地,因此部署在该链上的合约与交易数据均不向外部网络公开。如果在合约项目部署至TestNet或MainNet之前,开发者不希望泄漏任何该项目相关的重要信息,LocalNet将是一个不错的选择。
2.NEARCLI安装
NEARCLI(CommandLineInterface)是一个NodeJS命令行接口,它底层利用near-api-js连接到上述所介绍的网络中,并与之交互。因此在安装之前,我们需要首先安装npm,随后我们将在Linux中利用npm执行如下安装命令安装NEARCLI。
公关和营销机构Taurus推出数字货币产品TaurusCrypto:11月9日消息,专注技术领域的综合公关和营销机构Taurus推出一项新的数字货币产品TaurusCrypto,成为第一家推出以加密为重点的营销推广服务的澳大利亚机构,并以加密货币奖励其团队成员。(Bandt)[2021/11/9 6:41:13]
$sudonpminstall-gnear-cli
执行如下命令可查看NEARCLI的安装版本,并检查是否安装成功。
$near--version
3.在TestNet中部署合约
3.1.注册TestNet账户
新用户可在https://wallet.testnet.near.org页面中注册新的TestNet钱包,只需要输入用户名即完成注册,例如statusmessage.testnet。
随后在https://explorer.testnet.near.org中,我们可以搜索并查看有关TestNet中该账户的有关信息,如下所示:
在TestNet中,每一个新建账户中将含有200?的原生余额。?
3.2.在NEARCLI中登录该账户
TrustBase自主研发波卡智能合约编程语言SubScript:据官方消息,TrustBase基于波卡智能合约独立开发编程语言SubScript,用于优化波卡生态中的开发体验。Subscript是一个用于Polkadot Wasm智能合约的编程语言,可以提供WebAssembly原生的的智能合约编程环境和IDE支持。相对于当前Parity官方维护的ink!语言,Subscript无需rust编程基础,任何具备web开发基础的DApp开发者都可以快速上手Subscript语言。Subscript此前已获得Web3基金会的官方资助。
TrustBase是一个支持跨链消息的波卡Wasm智能合约平行链,为开发者提供了方便易用的合约语言及编程工具,DApp开发者不需要拍卖波卡中继链插槽,就可以访问波卡的XCMP跨链消息。[2020/12/19 15:46:32]
由于我们已经安装NEARCLI,且已申请了NEARTestNet中的用户账户。下面可以尝试在NAERCLI中登录该账户:
$nearlogin
随着上述命令的执行,NEARCLI将唤起一个链接,并需要用户手动点击登陆上述statusmessage.testnet账户。
动态 | 此前盗取DragonEx 700万美元加密货币的始作俑者系朝鲜黑客组织Lazarus:据Radio Free Asia援引区块链分析公司Chainalysis公布的最新调查结果,朝鲜黑客组织Lazarus于2019年3月侵入位于新加坡的加密交易所DragonEx并盗取了价值约700万美元的加密货币,包括BTC、XRP和LTC。Lazarus黑客创建了一家假公司,声称提供一款自动加密货币交易机器人,并且伪造了网站和公司员工,从而接触了DragonEx的核心人物。DragonEx的员工下载了一款免费试用的交易机器人软件,黑客得以入侵他们的电脑并盗走了数百万美元。Chainalysis称,Lazarus的攻击策略显示出了另一种复杂程度,因为它们超越了传统的“电子邮件或小规模网站”的钓鱼攻击范畴。该公司还指出,Lazarus不同于其他黑客组织,它的动机主要是为了赚钱,而不是为了制造混乱。(Korea Herald)[2020/2/5]
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'?}
动态 | 区块链仲裁公司Proof of Trust计划在伦敦证券交易所上市:1月17日消息,区块链仲裁公司Proof of Trust计划在伦敦证券交易所上市,但目前该公司尚未公布更多有关上市的详细信息。据悉,该公司致力于开发区块链智能合约纠纷解决方案。(CoinDesk )[2020/1/17]
3.4.合约编译与部署
在将合约部署之前,我们首先需要对合约进行编译,如下命令可利用cargo编译得到具体的WASM文件status_message.wasm.它通常位于项目的target/wasm32-unknown-unknown/release/目录下。
$RUSTFLAGS='-Clink-arg=-s'cargostablebuild--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将主要从安全的角度,向大家进一步展示如何编写一个安全的智能合约。
原文作者:ChrisBurniske原文编译:H.ForestVentures,CryptoOcean原文标题:《TheCryptoJ-Curve》推荐理由:本文作者为前方舟基金加密投资部门负责.
尊敬的用戶: 由於杠桿ETF產品FREE3L、BAKE3L、XTZ5L、SRM3L、APX3L、SHIB3L、TRX3L、ICP3L、BAL3L、XMR3L、BAT3L和CVC3L的單價均低於0.
巴比特讯,3月29日,浙江卫视新闻联播报道了杭州未来科技城发布的XR产业发展计划。该计划具体将实施“五个一”措施:1.打造一个基地,超前布局全产业链条;2.筹建一支基金,加快技术成功转化;3.聚.
WNFT币总发行量22亿枚,已于PancakeSwap上线,最终通缩至2200万枚。目前WNFT已销毁5.5亿枚,defi挖矿6年共产出6.6亿枚,流通量4.4亿枚,3.3亿枚机构投资锁仓3年,
1Karmaverse(KNOT)TokenSaleResultTheGate.ioStartupKarmaverse(KNOT)saleresultisasfollows:KNOTStartu.
尊敬的用戶,AAX將上架以下幣種的限時高息理財產品,詳情如下:活動時間:2022年3月31日17點-2022年4月7日17點活動一:限時高息.