Libra區塊鏈錢包開發實錄附源碼 - LearnDapp系列

Facebook Libra最近非常吸引眼球,做爲看好Libra的區塊鏈應用開發者,天然是要嘗試着作些什麼了。本文記錄了開發一個Libra錢包的具體過程,採用RPC調用方案和鏈作交互。過程描述較爲仔細,請視狀況跳過已瞭解的內容。最後附上了Libra錢包源碼的Github倉庫地址,歡迎clone。前端

1.安裝Libra、編譯客戶端、鏈接測試網

安裝node

git clone https://github.com/libra/libra.git && cd libra
./scripts/dev_setup.sh
複製代碼

編譯客戶端git

cargo build
複製代碼

若是遇到 google/protobuf/wrappers.proto: File not found (macos環境),則在cargo build以前執行github

export PATH="/usr/local/opt/protobuf/bin:$PATH"
複製代碼

看到下圖則表示完成,預計5分鐘時間macos

鏈接測試網npm

./scripts/cli/start_cli_testnet.sh
複製代碼

進入交互終端api

2.體驗:建立帳戶、充值、發起交易、查詢交易

建立帳戶瀏覽器

account create
複製代碼

執行安全

account list
複製代碼

列舉剛剛建立的兩個帳號bash

給#0帳號充值

account mint 0 10000
複製代碼

而後查詢餘額

query balance 0
複製代碼

結果爲 Balance is: 10000

發起交易

transfer 0 1 2
複製代碼

以後查詢交易

query txn_acc_seq 0 0 true
複製代碼

返回包括Committed transaction和Events和兩部分。經過amount能夠看出數額最多保留到小數點後6位,這對於穩定幣而言足矣。

此時嘗試退出後從新進入,執行account list返回爲空,看似數據被清除了。但當你執行account create之後建立的帳戶還和以前的同樣,再查詢餘額,以前充值的影響還在,其實數據已經上了測試網絡。

3.本地運行節點

體驗過Libra的基本操做後,接下來咱們須要本身在本地跑一個認證節點。

cargo run -p libra_swarm -- -s 
複製代碼

(注意:請提早關閉本地的代理,不然會報錯)

若是執行順利,會和上文執行./scripts/cli/start_cli_testnet.sh同樣進入交互終端。

能夠看到運行在本地的節點,數據是和測試環境獨立的,而且退出後數據會重置。

4.調用鏈的API實現

因爲Libra提供了rpc調用方式,咱們可以很方便的選擇語言進行開發。這裏我基於nodejs開發了一個npm包libra-weight,用於封裝rpc方法提供前端調用的基本api。

libra-weight在實現接口前作了這些事:

複製rust源碼中的proto文件到項目中,而後執行如下代碼:

protoc --proto_path=./ --proto_path=/usr/local/Cellar/protobuf/3.7.1/include/ --js_out=import
_style=commonjs,binary:. *.proto
複製代碼

每一個.proto文件都會獲得編譯後的*.pb.js:

搜索proto中的request,只實現了這幾個接口:

作了接口接下來就是在錢包應用中調用了,此時就把libra-weight發佈完放一邊,進入Libra-wallet,代碼結構以及調用的實現以下:

而後前往瀏覽器中調用接口,就能看到帳戶的交易信息了

示例使用了官方測試網絡地址,固然你徹底能夠如前文中所寫,在本地自行搭建驗證節點,而且運行示例代碼直觀感覺一番。至於錢包前端已經有很多人作了,能夠先去 github.com/learndapp/a… 看看錢包的部分。

建立帳戶能夠在Libra終端內進行,由於Libra沒有挖礦,能夠認爲充值屬於特殊的一種轉帳交易,也能夠在終端中完成。若是你如今就要作到在錢包應用中建立帳戶,不妨看看這個案例 medium.com/kulapoffici… ,固然這種實現方式只是用於演示,建立帳戶的操做交由他人或通過網絡傳輸都是不安全的。合理的方案是本地環境建立帳戶+api調用進行轉帳交易的廣播。

後話

Libra項目有不少能夠探索的地方。比方說用Move編寫的mvir後綴文件,如同以太坊Solidity的sol後綴同樣,能夠稱之爲Libra中的智能合約。目前在應用端作嘗試的也很多,好比區塊瀏覽器,能夠去 github.com/learndapp/a… 的區塊鏈瀏覽器部分查看。接下來我也會作更多實踐,有新發現會持續分享。

文中提到的錢包源碼:github.com/learndapp/L…

本文已整理至倉庫:github.com/learndapp/L…

記得順手點個Star,這是對我最好的支持。有任何問題也歡迎隨時聯繫個人微信公衆號「區塊鏈瓦工」。

參考鏈接

官方文檔:

developers.libra.org/docs/my-fir… developers.libra.org/docs/move-o… developers.libra.org/docs/crates… developers.libra.org/docs/refere…

相關文章
相關標籤/搜索