買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > Gateio > Info

Rust智能合約養成日記: 合約部署,函數調用,及explorer使用

Author:

Time: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將是一個不錯的選擇。

數字資產公司 Taurus 完成 6500 萬美元 B 輪融資:金色財經報道,數字資產公司 Taurus 完成 6500 萬美元 B 輪融資,Credit Suisse 領投,Arab Bank Switzerland、Investis 參投。

據悉,Taurus 是一家總部位于瑞士的數字資產基礎設施公司,專注于為歐洲的金融機構提供托管和代幣化等數字資產服務。該公司于 2020 年 4 月完成 1100 萬美元 A 輪融資。Taurus 表示未來幾個月內將在巴黎和迪拜開設辦事處,然后在東南亞和美洲展開業務。為此,Taurus 計劃今年將員工人數從 60 人增加到 100 人左右。(The Block)[2023/2/14 12:05:50]

2.NEARCLI安裝

NEARCLI(CommandLineInterface)是一個NodeJS命令行接口,它底層利用near-api-js連接到上述所介紹的網絡中,并與之交互。因此在安裝之前,我們需要首先安裝npm,隨后我們將在Linux中利用npm執行如下安裝命令安裝NEARCLI。

$sudonpminstall-gnear-cli?

執行如下命令可查看NEARCLI的安裝版本,并檢查是否安裝成功。

Russell Coin羅素幣即將上線ZBG:據官方消息,Russell Coin羅素幣,將于2021年3月初上線ZBG交易平臺。

羅素幣(Russell Coin, 簡稱RC)于2017年11月21日創世,總量2100萬個。RC科學的采用了完全去中心化的主節點獎勵計劃,POW挖礦納稅給主節點的激勵機制,結合最新X20R算法,達到電腦挖礦能耗更低,環形加密匿名性更強。更多活動詳情請訪問官網。[2021/2/26 17:55:11]

$near--version

3.在TestNet中部署合約

3.1.注冊TestNet賬戶

新用戶可在https://wallet.testnet.near.org頁面中注冊新的TestNet錢包,只需要輸入用戶名即完成注冊,例如statusmessage.testnet。

隨后在https://explorer.testnet.near.org中,我們可以搜索并查看有關TestNet中該賬戶的有關信息,如下所示:

動態 | 上市公司Systech與FarmaTrust合作 提供藥物區塊鏈解決方案:據PRnewswire消息,上市公司晶門科技(Systech)宣布與FarmaTrust合作,為制藥行業提供可靠的藥物區塊鏈解決方案,保證藥品供應鏈的安全性和真實性。據悉,FarmaTrust是全球藥品跟蹤系統。[2018/9/13]

在TestNet中,每一個新建賬戶中將含有200?的原生余額。

3.2.在NEARCLI中登錄該賬戶

由于我們已經安裝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'?}

TrustToken從A16z等投資方獲得2000萬美元投資:在包括安德森霍洛維茨(Andreessen Horowitz,A16z)、丹華資本和BlockTower Capital在內的大型風險投資公司的幫助下,資產代幣化平臺TrustToken剛剛在戰略代幣出售中獲得了2000萬美元。[2018/6/18]

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.

BeeToken與WeTrust建立合作關系 最大限度地降低用戶與房東租金相關的風險:總部位于舊金山的BeeToken,其Beenex分散式住宅共享網絡采用ERC-20公用事業代幣,今天宣布與WeTrust建立新的合作伙伴關系,這是一個基于區塊鏈的平臺為Bee Token用戶提供基于眾包安全存款的分散式保險層,并通過在Beenest平臺上集成用戶歷史記錄來提高風險評估能力。Bee Token和WeTrust將通過共享關于可信度和信用度的信息,共同激勵用戶之間的良好行為,從而以較低廉的保險費率(包括財產損失和/或家具損壞)最大限度地降低與房東租金相關的風險。[2018/1/28]

接著我們便可以使用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將主要從安全的角度,向大家進一步展示如何編寫一個安全的智能合約。

Tags:NETESTNEARTESTPett NetworkRequest NetworkNEAR幣TESTA

Gateio
STO:Reddit用戶為GameStop組建NFT專家團隊歡呼_RedFOX Labs

GameStop(GME)正在組建一個由區塊鏈和NFT專家組成的團隊,致力于該公司即將推出的NFT平臺.

1900/1/1 0:00:00
數字貨幣:國際環境CBDC進展積極,全球央行數字貨幣研發駛入快車道_FSINU價格

來源:數字法幣研究社 10月1日,美國、歐洲、英國、瑞士、日本、加拿大和瑞典的各國央行聯合國際清算銀行BIS連發了3篇CBDC現狀報告.

1900/1/1 0:00:00
ETF:盼了6年的比特幣ETF終于來了,這意味著什么?_BTC

本周二,第一個美國比特幣交易所交易基金(ETF)將推出,結束了加密貨幣社區的大約六年的期待。假設一切正常,ProShares的ETF將開始在紐約證券交易所Arca交易,股票代碼為$BITO.

1900/1/1 0:00:00
NFT:Vitalik Buterin:NFT需要經歷多個寒冬才能理解它的長期價值_VITA

巴比特現場報道,10月26日,由萬向區塊鏈實驗室主辦的第七屆區塊鏈全球峰會在上海舉行,以太坊創始人、萬向區塊鏈實驗室首席科學家VitalikButerin分享稱.

1900/1/1 0:00:00
MATIC:因電力短缺,哈薩克斯坦開始針對加密挖礦業務開啟限電措施_加密貨幣

據Neftegaz.RU10月21日消息,哈薩克斯坦國家電網運營商已經開始限制對該國最大的消費者——加密礦工進行電力配給.

1900/1/1 0:00:00
POOL:融資新聞丨加密支付基礎設施XanPool完成2700萬美元融資,由Valar Ventures領投_jackpool幣什么時候爆發

XanPool是一家支付基礎設施提供商,可促進更快的加密和法定貨幣結算,今天宣布已籌集了2700萬美元的A輪融資,由ValarVentures領投.

1900/1/1 0:00:00
ads