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…

相关文章
相关标签/搜索