1. 程式人生 > 程式設計 >Libra教程之:Libra testnet使用指南

Libra教程之:Libra testnet使用指南

Libra testnet網路

Libra的測試網路testnet已經上線了,那麼我們該怎麼做才能在testnet上給自己轉賬一千萬,從此出任CEO,贏取白富美,走上人生巔峰呢? 跟著我的節奏,來吧。

testnet只是一個測試網路,有的小夥伴在想我是不是可以搭個私鏈發個幣,然後再上交易所呢? 完全沒問題,在幣圈只有想不到的,沒有做不到的,搭私鏈的問題,我會在文章中最後一個章節講到。

本檔案將指導你完成在Libra區塊鏈上的第一筆交易。 執行之前有一些準備工作要做:

  • 你正在Linux(基於Red Hat或Debian的)或macOS系統上執行。
  • 你的網際網路連線穩定。
  • git已安裝在你的系統上。
  • Homebrew安裝在macOS系統上。
  • yum或者apt-get已安裝在Linux系統上。

目前本教程只能正常執行在Linux和macOS環境中,請小夥伴自行檢查。

下載和安裝Libra

克隆Libra核心儲存庫

git clone https://github.com/libra/libra.git
複製程式碼

checkout testnet分支

git checkout testnet
複製程式碼

安裝依賴

要設定Libra Core,請切換到libra目錄並執行安裝指令碼以安裝依賴,如下所示:

cd libra
./scripts/dev_setup.sh
複製程式碼

上面的安裝指令碼會執行如下操作:

  • 安裝rustup:rustup是Rust程式語言的安裝程式。
  • 安裝所需版本的rust-toolchain。
  • 安裝CMake,用來管理構建過程。
  • 安裝protoc:protocol buffers的編譯器。
  • 安裝Go:building protocol buffers。

編譯Libra client並連線到Testnet網路

執行下面的命令來編譯Libra client和連線到Testnet網路:

./scripts/cli/start_cli_testnet.sh
複製程式碼

該命令利用cargo(Rust的包管理器)構建並執行客戶端,並將客戶端連線到測試網上的驗證者節點。

客戶端連線到測試網上的節點後,你將看到以下輸出。 要隨時退出客戶端,請使用quit命令。

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%
複製程式碼

建立兩個A和B的兩個賬號

之前的文章中,我們一直在講A轉賬10個幣給B的故事,那麼這裡我們就來試驗一下,到底是怎麼轉的。

檢查libra cli Client是否執行

libra%命令列提示符表示你的Libra CLI客戶端正在執行。 要檢視account命令的幫助資訊,請輸入“ 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
複製程式碼

建立A的賬戶

請注意,使用CLI建立帳戶不會更新區塊鏈,而只會建立本地金鑰對。

要建立愛麗絲的帳戶,請輸入以下命令:

libra%account create
複製程式碼

成功樣例輸出:

>> Creating/retrieving next account from wallet
Created/retrieved account #0 address 3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8
複製程式碼

0是A帳戶的索引,十六進位制字串是A帳戶的地址。 索引只是引用A帳戶的一種方式。 帳戶索引是本地CLI索引,可以在其他CLI命令中使用,以使使用者方便地參考他們建立的帳戶。 該索引對區塊鏈沒有意義。 僅當通過挖礦將錢新增到Alice的帳戶中,或者通過其他使用者的轉賬將資金轉移到Alice的帳戶中時,才會在區塊鏈上建立Alice的帳戶。 請注意,你也可以在CLI命令中使用十六進位制地址。 帳戶索引只是為了方便賬戶地址的引用。

建立B的賬戶

同樣的方式,我們建立B的賬戶。

>> Creating/retrieving next account from wallet
Created/retrieved account #1 address 8337aac709a41fe6be03cad8878a0d4209740b1608f8a81566c9a7d4b95a2ec7
複製程式碼

1是B帳戶的索引,十六進位制字串是B帳戶的地址。

檢視賬戶列表

使用如下命令來檢視你的賬戶列表:

libra% account list
複製程式碼

可能的輸出如下:

User account index: 0,address: 3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8,sequence number: 0
User account index: 1,address: 8337aac709a41fe6be03cad8878a0d4209740b1608f8a81566c9a7d4b95a2ec7,sequence number: 0
複製程式碼

帳戶的序列號指示已從該帳戶傳送的交易數量。 每次執行從該帳戶傳送的交易並將其儲存在區塊鏈中時,它都會增加。

給A和B新增Libra幣

testnet的挖礦是通過Faucet完成的。 Faucet是與測試網一起執行的服務。 此服務僅在testnet使用,在mainnet是不存在的。 當然它建立的Libra幣是沒有現實價值的。 假設你已經建立了分別具有索引0和索引1的A和B的帳戶,則可以按照以下步驟將Libra新增到這兩個帳戶中。

給A新增110 LBR

libra% account mint 0 110
複製程式碼

0是A帳戶的索引。 110是Libra要新增到A帳戶的數量。 成功的mint命令還將在區塊鏈上建立A的帳戶。

成功的輸出如下:

>> Minting coins
Mint request submitted
複製程式碼

請注意,提交請求後,這意味著已將其成功新增到(測試網中驗證者節點的)記憶體池中。 它不一定意味著它將成功完成。 稍後,我們將查詢帳戶餘額以確認mint是否成功。

給B新增40 LBR

同樣的我們給B也新增40 LBR。

libra% account mint 1 40
複製程式碼

查詢餘額

我們可以輸入如下命令來查詢上面的mint是否成功執行:

libra% query balance 0

Balance is: 110

libra% query balance 1

Balance is: 40
複製程式碼

轉賬

最激動人心的時刻到了,我們要開始轉賬了。 我們會將10 LBR從A的賬戶轉給B。 看下如何操作:

libra% transfer 0 1 10
複製程式碼

0 是A的index。

1 是B的index。

10 是要轉賬的LBR數目。

是不是很簡單。它的輸出如下:

>> Transferring
Transaction submitted to validator
To query for transaction status,run: query txn_acc_seq 0 0 <fetch_events=true|false>
複製程式碼

你可以使用命令查詢txn_acc_seq 0 0 true(通過帳戶和序列號進行交易)來檢索有關剛提交的交易的資訊。第一個引數是傳送者帳戶的本地索引,第二個引數是帳戶的序列號。

你剛剛將事務提交到testnet上的驗證器節點,該事務已包含在驗證器的記憶體池中。這不一定意味著你的交易已執行。從理論上講,如果系統執行緩慢或過載,則需要花費一些時間才能看到結果,並且你可能必須通過查詢帳戶進行多次檢查。要查詢索引為0的帳戶,可以使用命令query account_state 0。

如果你想立馬返回交易結果,那麼可以使用transferb命令(如下所示)代替transfer命令。它僅在將交易提交到區塊鏈後,transferb才會提交交易並返回到客戶端提示。一個例子如下所示:

libra% transferb 0 1 10

檢視是否轉賬成功

libra% query balance 0
Balance is: 100
libra% query balance 1
Balance is: 50
複製程式碼

好啦,你的第一個交易完成了。就是這麼簡單。

搭建私鏈

如果你不想使用testnet,那麼可以參照如下方法來搭建一個私鏈。

轉到Libra Core repository的根目錄,然後執行libra_swarm,如下所示:

$ cd ~/libra
$ cargo run -p libra_swarm -- -s
複製程式碼

-p libra_swarm 使用cargo來執行libra_swarm軟體包,該軟體包啟動由一個節點組成的本地區塊鏈。

-s選項啟動本地客戶端以連線到本地區塊鏈。

要檢視用於啟動節點並連線到Libra區塊鏈的其他選項,請執行:

$cargo -p libra_swarm -- -h

cargo執行命令可能需要一些時間才能執行。 如果該命令的執行沒有錯誤,則說明你的系統上正在執行Libra CLI客戶端例項和Libra驗證器節點。 成功執行後,你應該看到包含CLI客戶端選單和libra%提示符的輸出。

更多教程請參考 flydean的部落格