区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > XMR > 正文

SME:Rust智能合约养成日记(3)_SMEX

作者:

时间:

相关文章:

智能合约养成日记合约状态数据定义与方法实现

Rust智能合约养成日记编写Rust智能合约单元测试

在本期Rust智能合约开发Blog中,BlockSec将为大家介绍如何将一个简单的示例智能合约部署至NEAR测试网络(TestNet)中,执行合约,并查询合约的执行结果。

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

1.NEAR网络介绍

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

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

TestNet

每一个智能合约项目最终都需要在区块链网络上运行,以实现项目的功能。然而,对于一个新项目来说,项目团队往往会先将项目部署在测试网(TestNet)上,用来测试该智能合约项目的功能和相关业务逻辑。

加密基础设施公司Prime Trust完成1.07亿美元B轮融资:6月22日消息,加密基础设施公司 Prime Trust 宣布完成 1.07 亿美元 B 轮融资,具体融资信息暂未透露。本轮融资资金将用于扩大其产品类别,包括加密退休金产品和资产 Token 化产品。

此前消息,Prime Trust 于 2021 年 7 月宣布完成 6400 万美元 A 轮融资,该轮融资由 Mercato Partners 的成长型股票基金 Traverse 领投,Samsung Next、Kraken Ventures,以及 Seven Peaks Ventures 等参投。[2022/6/22 1:24:33]

MainNet

当合约在测试网络中进行了多轮的测试和独立的安全审查之后,开发团队可以选择将该合约正式地部署至主网中。

LocalNet

LocalNet不同于TestNet。LocalNet运行于本地,因此部署在该链上的合约与交易数据均不向外部网络公开。如果在合约项目部署至TestNet或MainNet之前,开发者不希望泄漏任何该项目相关的重要信息,LocalNet将是一个不错的选择。

2.NEARCLI安装

阿猛:Crust旨在构建一个重视数据隐私和所有权的分布式云生态系统:据官方消息,2021年9月2日晚, 瓦特直播特邀阿猛先生创始人阿猛做客直播间, 就CRUST主网上线事件, 深入探讨数据存储细分市场未来机遇。在本次直播中,阿猛先生表示传统数据存储存在很大痛点,传统数据存储服务存在成本高,安全性差,数据易丢失,缺乏对个人隐私的保护等问题。Crust 旨在构建一个重视数据隐私和所有权的分布式云生态系统,Crust的运行方式就是通过把全球的服务器,通过区块链技术,将这些服务器利用起来。Crust的数据存储方式不仅拥有着极低的边际成本,而且更多的副本为文件提供了可用性,并且唯一的CID可以保证文件不被篡改,且在区块链的技术加持下,文件的安全行得到了更大的保障。

瓦特直播是WBF交易所品牌旗下视频直播平台, 截止目前累计开展114场直播秀, 先后推出6档直播栏目, 邀请90余名行业KOL和精英领袖, 合作媒体社区多达100家。[2021/9/3 22:57:50]

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

TrustWallet以太坊报价疑似出现问题:加密货币钱包软件TrustWallet以太坊报价疑似出现问题,报价突破3800美元,而以太坊现价在3500美元左右(金十)[2021/5/7 21:35:27]

$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中登录该账户

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

TrustBase将于HECO建立Pool,并且设立Grant支持优质项目生态发展:据官方消息,TrustBase与HECO生态达成合作,旨在将优质的波卡生态项目快速在HECO进行部署,发展自身应用场景,从而辅助海外项目在中国市场的推广发展。

未来第一阶段TrustBase预计建立Grant,提供资金以及技术支持用以扶植Subscript语言生态下的优质波卡项目进入HECO生态。据悉,获得Grant的项目,除了能够得到双方的品牌资源之外,还可获得推荐参与HECO Grant黑客松的机会。[2021/4/25 20:56:54]

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

Crust将停止使用APP和网站的HTTP版本:波卡生态中的去中心化存储应用Crust发推表示,为了为下一阶段的Crust Maxwell测试网做准备,防止安全问题出现,Crust将从1月14日12:00开始,停止使用APP和网站的HTTP版本,只支持HTTPS版本。使用HTTP版本账户的用户,需要将账户移至HTTPS或者进行备份。[2021/1/14 16:08:47]

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

标签:TESTSTATCOMSMETESTASTATIC币BIDCOMSMEX

XMR热门资讯
BitMart:MIM (MIM)正式更名为MIM (SWARM)_smartfund

亲爱的BitMart用户:应MIM项目方的要求,MIM(MIM)正式更名为MIM(SWARM)。BitMart系统所有涉及此项目的地方都将同步更名。如给您造成不便,敬请谅解.

AKI:详解Osmosis代币经济设计:代币模型教科书?_TVL

原文来源:CYCLabs现在来看,似乎Cosmos一开始看起来“很蠢”的代币经济是可行的。因为初始超过67%的流动代币加上灵魂人物JaeKwon出走,导致项目方对于Cosmos本身的控制力接近于.

XT.com:XT.COM關於JCBS合約更換完成的公告_HTT

尊敬的XT.COM用戶:JCBS合約地址更換已完成,用戶在平臺的JCBS資產已按照1:1的比例兌換為新合約的代幣.

Status:BKEX 关于上线 PILOT(Unipilot) 并开放充值功能的公告_ACT

尊敬的用户:?????????BKEX即将上线PILOT,详情如下:上线交易对:PILOT/USDT??币种类型:ERC20充值功能开放时间:已开放交易功能开放时间:2022年4月1日15:00.

Gate.io HODL & Earn: Lock DOGA To Earn 100% APR(Phase 1)

TheDOGALock-up&Earn#1willlaunchat8:00UTConApr1atGate.io''s“HODL&Earn”.

TER:Tbit关于上线体验金功能的公告_GAT

尊敬的Tbit用户? 为增加产品多样性,增强用户交易体验,Tbit计划于2022年3月30日上线体验金功能,具体上线时间以实际为准。体验金可以用于任意交易对的合约交易.