準(zhǔn)備工作:
ü 服務(wù)器Linux (Red Hat或Debian-based)或者macOS
ü 可穩(wěn)定連接到互聯(lián)網(wǎng)
ü 安裝git
ü 若服務(wù)器操作系統(tǒng)屬macOS榛鼎,請安裝Homebrew
ü 若是服務(wù)器操作系統(tǒng)屬Linux系抡笼,請安裝yum或者apt-get
操作步驟:
在本示例中,我們將下載必要的Libra組件藏古,然后執(zhí)行一筆Alice與Bob間的交易。
執(zhí)行以下步驟厂捞,用以提交交易到Libra測試網(wǎng)絡(luò)的驗證節(jié)點。
下載并構(gòu)建libra核心源碼
構(gòu)建libra CLI客戶端,然后連接到測試網(wǎng)絡(luò)
創(chuàng)建Alice和Bob的賬戶
增發(fā)一定數(shù)量的libra到Alice和Bob的賬戶
提交一筆交易到測試網(wǎng)絡(luò)
下載Libra core
git clone https://github.com/libra/libra.git
啟動libra核心
為了啟動libra核心裙犹,你需要切換到libra目錄,運行腳本以安裝依賴,命令如下所示:
**cd libra**
**./scripts/dev_setup.sh**
啟動腳本執(zhí)行如下動作:
ü 安裝rustup - rustup是Rust編程語言的安裝程序德崭,實現(xiàn)了Libra Core
ü 安裝所需版本的Rust工具鏈
ü 安裝CMake - 管理構(gòu)建過程
ü 安裝protoc - 協(xié)議緩沖區(qū)的編譯器
ü 安裝Go - 用于構(gòu)建協(xié)議緩沖區(qū)
構(gòu)建Libra CLI客戶端并連接到測試網(wǎng)絡(luò)
執(zhí)行如下命令锌奴,用以連接到Libra測試網(wǎng)絡(luò)的驗證節(jié)點(視網(wǎng)絡(luò)情況,此步驟用時或較久)
**./scripts/cli/start_cli_testnet.sh**
此命令用來構(gòu)建和運行客戶端的utilizing cargo(Rust的包管理器),并將客戶端連接到testnet上的驗證器節(jié)點往枣。
客戶端連接到testnet上的節(jié)點后渣叛,您將看到以下輸出饺著。要隨時退出客戶端,請使用quit命令梢睛。
**Connected to validator at: ac.testnet.libra.org:8000**
**usage: <command> <args>**
**Use the following commands:**
**account | a**
**Account operations**
**query | q**
**Query operations**
**transfer | transferb | t | tb**
**<sender_account_address>|<sender_account_ref_id> <receiver_account_address>|<receiver_account_ref_id> <number_of_coins> [gas_unit_price (default=0)] [max_gas_amount (default 10000)] Suffix 'b' is for blocking.**
**Transfer coins from account to another.**
**help | h**
**Prints this help**
**quit | q!**
**Exit this client**
**Please, input commands:**
**libra%**
創(chuàng)建Alice與Bob的賬戶
將客戶端連接到testnet后,可以運行CLI命令來創(chuàng)建新帳戶愉阎。我們將引導(dǎo)您為兩個用戶創(chuàng)建帳戶(讓我們稱他們?yōu)锳lice和Bob)幽七。
步驟1:檢查CLI客戶端是否在您的系統(tǒng)上運行
libra%命令行提示符指示您的Libra CLI客戶端正在運行。要查看帳戶命令的幫助信息章办,請輸入“account”藕届,如下所示:
**libra% account**
**usage: account <arg>**
**Use the following args for this command:**
**create | c**
**Create an account. Returns reference ID to use in other operations**
**list | la**
**Print all accounts that were created or loaded**
**recover | r <file path>**
**Recover Libra wallet from the file path**
**write | w <file name>**
**Save Libra wallet mnemonic recovery seed to disk**
**mint | mintb | m | mb <receiver account> <number of coins>**
**Mint coins to the account. Suffix 'b' is for blocking**
第2步:創(chuàng)建Alice賬戶
請注意词顾,使用CLI創(chuàng)建帳戶不會更新區(qū)塊鏈上忍,只會創(chuàng)建本地密鑰對。
要創(chuàng)建Alice的帳戶繁成,請輸入以下命令:
**libra% account create**
成功輸出示例:
**>> Creating/retrieving next account from wallet**
**Created/retrieved account #0 address**
**3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8**
#0是Alice帳戶的索引,十六進制字符串是Alice帳戶的地址。索引只是引用Alice帳戶的一種方式祠墅。帳戶索引是本地CLI索引侮穿,可以在其他CLI命令中使用,以便用戶方便地引用他們創(chuàng)建的帳戶毁嗦。該賬戶索引對區(qū)塊鏈毫無意義亲茅。只有當(dāng)通過鑄幣將任何一筆錢添加到Alice的賬戶時,才會在區(qū)塊鏈上創(chuàng)建Alice的賬戶,或者通過來自另一個用戶的轉(zhuǎn)賬將錢轉(zhuǎn)移到Alice的賬戶克锣。請注意茵肃,您也可以在CLI命令中使用十六進制地址。帳戶索引只是帳戶地址的便利包裝袭祟。
**libra% account create **
**>> Creating/retrieving next account from wallet**
**Created/retrieved account #0 address 1411d5f7afb9134b6c81ef222fe638384574962c62fdf158c76b8e00058ce414**
第3步:創(chuàng)建Bob的賬戶
要創(chuàng)建Bob的帳戶验残,請重復(fù)帳戶創(chuàng)建命令:
**libra% account create**
成功輸出示例:
**>> Creating/retrieving next account from wallet**
**Created/retrieved account #1 address**``**8337aac709a41fe6be03cad8878a0d4209740b1608f8a81566c9a7d4b95a2ec7**
#1是Bob帳戶的索引,十六進制字符串是Bob帳戶的地址巾乳。
**libra% account create **
**>> Creating/retrieving next account from wallet**
**Created/retrieved account #1 address**``**08a754f096a64823dab5536fca4e92627dfd0d10b7299ca6e9e10e27550c9170**
步驟4(可選):列出帳戶
要列出您創(chuàng)建的帳戶您没,請輸入以下命令:
**libra% account list**
成功輸出示例:
**User account index: 0, address: 3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8,**
**sequence number: 0**
**User account index: 1, address:**``**8337aac709a41fe6be03cad8878a0d4209740b1608f8a81566c9a7d4b95a2ec7, sequence number: 0**
帳戶的序列號表示從該帳戶發(fā)送的交易數(shù)。每次從該帳戶發(fā)送的事務(wù)被執(zhí)行并存儲在區(qū)塊鏈中時胆绊,它會遞增氨鹏。
**libra% account list **
**User account index: 0, address: 1411d5f7afb9134b6c81ef222fe638384574962c62fdf158c76b8e00058ce414, sequence number: 0, status: Local**
**User account index: 1, address: 08a754f096a64823dab5536fca4e92627dfd0d10b7299ca6e9e10e27550c9170, sequence number: 0, status: Local**
增加****Libra Coins****到****Alice****和****Bob****的****賬戶
在testnet上創(chuàng)建和添加硬幣是通過Faucet完成的。Faucet是一種與testnet一起運行的服務(wù)压状。此服務(wù)僅用于為testnet創(chuàng)建硬幣仆抵,并且不存在主網(wǎng)。它創(chuàng)造了沒有現(xiàn)實世界價值的libra种冬。假設(shè)您已經(jīng)創(chuàng)建了Alice和Bob的帳戶镣丑,分別為索引0和索引1,您可以按照以下步驟將Libra添加到兩個帳戶娱两。
第****1****步:將****110 Libra****添加到****Alice****的****帳戶
要使鑄幣Libra并添加到Alice的帳戶莺匠,請輸入以下命令:
**libra% account mint 0 110**
0是Alice的帳戶的索引。
110是要添加到Alice帳戶的Libra數(shù)量十兢。
一個成功的帳戶mint命令也將在區(qū)塊鏈上創(chuàng)建Alice的帳戶慨蛙。
成功輸出示例:
**>> Minting coins**
**Mint request submitted**
請注意,提交請求時纪挎,這意味著它已成功添加到mempool(testnet上的驗證程序節(jié)點)。它并不一定意味著它將成功完成跟匆。稍后异袄,我們將查詢帳戶余額以確認(rèn)鑄幣是否成功。
第****2****步:將****52 Libra****添加到****Bob****的****帳戶
要使鑄幣Libra并添加到Bob的帳戶玛臂,請輸入以下命令:
**libra% account mint 1 52**
1是Bob的帳戶索引烤蜕。
52
一個成功的帳戶mint命令也將在區(qū)塊鏈上創(chuàng)建Bob的帳戶。在區(qū)塊鏈上創(chuàng)建Bob帳戶的另一種方法是將錢從Alice的帳戶轉(zhuǎn)移到Bob的帳戶迹冤。
成功輸出示例
**>> Minting coins**
**Mint request submitted**
第****3****步:****檢查****余****額
要檢查Alice帳戶中的余額讽营,請輸入以下命令:
**libra% query balance 0**
成功輸出示例:
**Balance is: 110**
余額是:110
要檢查Bob帳戶中的余額肩祥,請輸入以下命令:
**libra% query balance 1**
成功輸出示例:
**Balance is: 52**
提交交易
在我們提交交易以將Libra從Alice的賬戶轉(zhuǎn)移到Bob的賬戶之前宦芦,我們將查詢每個賬戶的序列號。這將有助于我們了解執(zhí)行事務(wù)如何更改每個帳戶的序列號糠悼。
查詢帳戶的序列號
**libra% query sequence 0**
**>> Getting current sequence number**
**Sequence number is: 0**
**libra% query sequence 1**
**>> Getting current sequence number**
**Sequence number is: 0**
在query sequence 0,0是Alice的帳戶的索引莉兰。 Alice和Bob的帳戶的序列號為0表示到目前為止尚未執(zhí)行Alice或Bob的帳戶中的任何交易挑围。
轉(zhuǎn)賬
要提交交易以將10個天秤座從Alice的帳戶轉(zhuǎn)移到Bob的帳戶,請輸入以下命令:
**libra% transfer 0 1 10**
0是Alice的帳戶的索引糖荒。
1是Bob的帳戶索引杉辙。
10是從Alice的賬戶轉(zhuǎn)移到Bob的賬戶的Libra的數(shù)量。
成功輸出示例:
**>> Transferring**
**Transaction submitted to validator**
您可以使用命令query txn_acc_seq 0 0 true(按帳戶和序列號進行事務(wù)處理)來檢索有關(guān)您剛剛提交的事務(wù)的信息捶朵。第一個參數(shù)是發(fā)件人帳戶的本地索引蜘矢,第二個參數(shù)是帳戶的序列號。
您剛剛將您的事務(wù)提交到testnet上的驗證器節(jié)點综看,它已包含在驗證器的mempool中品腹。這并不一定意味著您的交易已被執(zhí)行。理論上寓搬,如果系統(tǒng)運行緩慢或過載珍昨,則需要一些時間才能看到結(jié)果,您可能需要通過查詢帳戶多次檢查句喷。要查詢索引為0的帳戶镣典,可以使用命令query account_state 0.
阻止轉(zhuǎn)賬命令:您可以使用transferb命令(如下所示),而不是傳輸命令唾琼。 transferb將提交事務(wù)并僅在事務(wù)已提交到區(qū)塊鏈后返回到客戶端提示兄春。一個例子如下所示:
libra% transferb 0 1 10
有關(guān)從提交到執(zhí)行和存儲的事務(wù)生命周期的理解,請參閱事務(wù)的Life of a Transaction
轉(zhuǎn)賬后查詢序列號
**libra% query sequence 0**
**>> Getting current sequence number**
**Sequence number is: 1**
**libra% query sequence 1**
**>> Getting current sequence number**
**Sequence number is: 0**
Alice的帳號(索引0)的序號為1表示到目前為止已經(jīng)從Alice的帳戶發(fā)送了一個交易锡溯。 Bob的帳戶(索引1)的序列號為0表示到目前為止尚未從Bob的帳戶發(fā)送任何交易赶舆。每次從帳戶發(fā)送交易時,序列號都會增加1祭饭。
轉(zhuǎn)移后檢查兩個帳戶中的余額
要檢查兩個帳戶中的最終余額芜茵,請像在此步驟中一樣,再次查詢每個帳戶的余額倡蝙。如果您的交易(轉(zhuǎn)賬)成功執(zhí)行九串,您應(yīng)該在Alice的賬戶中看到100個Libra,在Bob的賬戶中看到62個Libra寺鸥。
**libra% query balance 0**
**Balance is: 100**
**libra% query balance 1**
**Balance is: 62**
恭喜猪钮!
您已成功在Libra testnet上執(zhí)行了您的交易,并將10個Libra從Alice的賬戶轉(zhuǎn)移到了Bob的賬戶胆建!
運行本地驗證程序節(jié)點
要在您的計算機上本地啟動驗證程序節(jié)點并創(chuàng)建您自己的本地區(qū)塊鏈網(wǎng)絡(luò)(未連接到Libra testnet)烤低,請確保已按照Setup Libra Core中的說明運行構(gòu)建腳本,切換到Libra Core存儲庫的根目錄笆载,并運行l(wèi)ibra_swarm扑馁,如下所示:
**$**
**cd ~/libra**
**$ cargo run -p libra_swarm -- -s**
-p libra_swarm:cargo運行l(wèi)ibra_swarm包涯呻,該包啟動由一個節(jié)點組成的本地區(qū)塊鏈。
-s :啟動本地客戶端以連接到本地區(qū)塊鏈檐蚜。
要查看啟動節(jié)點和連接Libra Blockchain的其他選項魄懂,請運行:
**$ cargo run -p libra_swarm -- -h**
cargo命令可能需要一些時間才能運行。如果此命令的執(zhí)行完成且沒有錯誤闯第,則系統(tǒng)上正在運行Libra CLI客戶端實例和Libra驗證器節(jié)點市栗。成功執(zhí)行后,您應(yīng)該看到包含CLI客戶端菜單和libra%提示符的輸出咳短。
· 更新Rust:
· 在libra根目錄中運行
**rustup update **
· 更新protoc:
**protoc **
更新到3.6.0或者更高版本.
· 在libra根目錄中重新運行啟動腳本
**./scripts/dev_setup.sh**
客戶端構(gòu)建及運行
如果你遇到構(gòu)建錯誤填帽,嘗試刪除cargo鎖定文件:
**rm cargo.lock**
如果連不上testnet:
· 檢查你的網(wǎng)絡(luò)連接
· 保證你使用的是最新版本的客戶端,拉取最新的libra core并重新運行客戶端:
**./scripts/cli/start_cli_testnet.sh**
鑄幣及轉(zhuǎn)賬
如果連接到testnet的驗證節(jié)點失效, 你會得到如下“Server unavailable”的錯誤提示:
**libra% account mint 0 110**
**>> Minting coins**
**[ERROR] Error minting coins: Server unavailable, please retry and/or check **if** host passed to the client is running**
· 如果你的余額在提交交易之后沒有更新咙好,等待一會兒篡腌,重新查詢看,如果區(qū)塊鏈遇到高的交易量勾效,可能會發(fā)生更新延遲嘹悼,如果你的余額仍然沒有更新,請嘗試重新鑄幣杨伙。
· 檢查賬戶是否存在限匣,可以查檢賬戶狀態(tài)米死,對于下標(biāo)為0的賬戶贮庞,命令如下:
**libra% query account_state 0**
轉(zhuǎn)賬命令
如果testnet驗證節(jié)點失效或連接超時窗慎,你會看到如下錯誤:
**libra% transfer 0 1 10**
**>> Transferring**
**[ERROR] Failed to perform transaction: Server unavailable, please retry and/or check if host passed to the client is running**
轉(zhuǎn)賬錯誤的解決方法
· 檢查網(wǎng)絡(luò)連接
· 檢查賬戶狀態(tài),保證賬戶存在伏伐,如下命令:
**query account_state 0**
· 你可以通過使用quit 或者q!命令退出客戶端, 重新運行
**./scripts/cli/start_cli_testnet.sh**