比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

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

StarkNet正開發基于Rust的新開源定序器:1月31日消息,以太坊Layer2擴容解決方案StarkNet宣布正在開發新的StarkNet Sequencer(定序器),其在Apache 2.0許可下是開源的,首要目標是增加StarkNet吞吐量。

新的Sequencer將分階段實現,第一個模塊已可供社區審查,最終實現基于Rust的Sequencer完全取代當前基于Python的Sequencer。[2023/1/31 11:38:21]

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。

Paradigm已在Github開源基于Rust的以太坊客戶端Reth:12月8日消息,Paradigm已在Github開源基于Rust的以太坊客戶端Reth,目前其代碼尚未被審計,任何人都可以在Apache/MIT許可下使用,沒有任何附加條件,并鼓勵社區對它進行分叉,同時貢獻文檔、問題、請求等。

此前報道,11月Paradigm宣布正在構建基于Rust的以太坊客戶端Reth,不包含任何現有客戶端的代碼,而是建立在包括Geth、Erigon和Akula在內的客戶端的基礎上,核心目標是模塊化、開源友好性與性能。[2022/12/8 21:31:11]

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

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

3.2.在NEARCLI中登錄該賬戶

Kakao子公司Crust計劃推出面向自由職業者的元宇宙Project Altverse:8月2日消息,韓國互聯網巨頭Kakao旗下區塊鏈子公司Crust正在建立一個名為Project Altverse的生態系統,并開始招聘相關開發人員。自由職業者可以在該生態系統中制作和分發元宇宙平臺上的內容并獲得基于加密貨幣的獎勵。

該工作組的開發人員的工作還包括使用加密錢包實現用戶體驗,因此預計相關的生態系統獎勵系統將基于加密貨幣等區塊鏈生態系統。對此,Kakao相關人士表示,該元宇宙項目計劃支持自由職業者的經濟活動,具體面向的職業人群還沒有確定,目前還在計劃階段。(MTN)

?[2022/8/2 2:53:39]

由于我們已經安裝NEARCLI,且已申請了NEARTestNet中的用戶賬戶。下面可以嘗試在NAERCLI中登錄該賬戶:

$nearlogin

隨著上述命令的執行,NEARCLI將喚起一個鏈接,并需要用戶手動點擊登陸上述statusmessage.testnet賬戶。

3.3.查看賬戶相關信息

貴金屬代幣化平臺Aurus在迪拜建立總部,并獲得加密貨幣交易許可證:7月6日消息,貴金屬代幣化平臺Aurus在迪拜DMCC加密中心成立了新總部,引入了新的董事會,并獲得了加密貨幣交易許可證,進一步在全球擴張。

據悉,Aurus開放式區塊鏈生態系統以一種去中心化和可持續的方式實現金、銀和白金的代幣化。(PR Newswire)[2022/7/6 1:55:13]

同時,我們可以通過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'?}

3.4.合約編譯與部署

在將合約部署之前,我們首先需要對合約進行編譯,如下命令可利用cargo編譯得到具體的WASM文件status_message.wasm.它通常位于項目的target/wasm32-unknown-unknown/release/目錄下。

美國橄欖球明星Russell Okung將以比特幣支付工資:12月28日,“用比特幣支付工資”(Pay me in bitcoin)已成為美國國家橄欖球聯盟球員Russell Okung的現實。據悉,Okung于2019年5月在推特上首次提出使用比特幣支付工資的要求,這項協議是與比特幣初創公司Zap達成的,Zap的Strike產品可以將傳統的工資支票轉換成比特幣。Okung的1300萬美元年薪的一半將以比特幣支付。(Coindesk)[2020/12/30 16:01:35]

$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將主要從安全的角度,向大家進一步展示如何編寫一個安全的智能合約。

Tags:NETNEARESTTESTchianetworknear幣最新價格Nestreeritestream

以太坊價格
美SEC主席Gary Gensler:DeFi具有創新性,但不可逃避監管_SEC

據Decrypt消息,10月25日,美國證券交易委員會主席GaryGensler在雅虎財經的全市場峰會上表示,新興的去中心化金融行業是加密貨幣中最具創新性的領域之一.

1900/1/1 0:00:00
區塊鏈隱私公鏈Findora推出1億美元生態系統基金_DOR

在Findora主網Beta版上推出Staking,ForgeTestnet上發布FindoraEVM,以及Findora首次5萬美元黑客馬拉松即將啟動之后.

1900/1/1 0:00:00
Facebook數字貨幣之路再次受阻,Novi錢包剛開啟試點便遭受“群攻”_BOO

10月20日,Facebook加密貨幣Diem的聯合創始人、數字錢包Novi負責人DavidMarcus宣布,正式在美國和危地馬拉這兩個國家之間開啟了Novi數字錢包應用的小型試點.

1900/1/1 0:00:00
區塊鏈項目BSN將在土耳其和烏茲別克斯坦推出兩個新門戶_區塊鏈

據Cointelegraph10月12日報道,基于區塊鏈的服務網絡(BSN),通過在土耳其和烏茲別克斯坦設立兩個新門戶,繼續擴大其全球影響力.

1900/1/1 0:00:00
干貨 | zkEVM:設計挑戰與解決思路_ROLL

感謝VitalikButerin、BarryWhitehat、Chih-ChengLiang、KobiGurkan和GeorgiosKonstantopoulos的審閱和真知灼見.

1900/1/1 0:00:00
NFT周刊|Coinbase進軍NFT領域;Visa投資于NFT創作者;ViacomCBS也將涉及其中_OIN

本周對于NFT領域而言依舊是重要的一周,因為Coinbase正式進入了NFT領域。Coinbase這家Crypto交易所巨頭已經為Crypto交易所和NFT領域打開了一個渠道,并引起了廣泛的關注.

1900/1/1 0:00:00
ads