Libra区块链钱包开发实录附源码-LearnDapp系列

Libra区块链钱包开发实录附源码-LearnDapp系列

Facebook Libra最近很是吸引眼球,作为看好Libra的区块链应用开发者,自然是要尝试着做些什么了。本文记录了开发一个Libra钱包的具体过程,采用RPC调用方案和链做交互。过程描述较为仔细,请视情况跳过已了解的内容。最后附上了Libra钱包源码的Github仓库地址,欢迎clone。

1.安装Libra、编译客户端、连接测试网

安装

git clone https://github.com/libra/libra.git && cd libra
./scripts/dev_setup.sh

编译客户端

cargo build

如果遇到 google/protobuf/wrappers.proto: File not found (macos环境),则在cargo build之前执行

export PATH="/usr/local/opt/protobuf/bin:$PATH"

看到下图则表示完成,预计5分钟时间

tech.mojotv.cn_

连接测试网

./scripts/cli/start_cli_testnet.sh

进入交互终端

tech.mojotv.cn_

2.体验:创建账户、充值、发起交易、查询交易

创建账户

account create

执行

account list

列举刚刚创建的两个账号

tech.mojotv.cn_

给#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:

tech.mojotv.cn_

搜索proto中的request,只实现了这几个接口:

tech.mojotv.cn_

做了接口接下来就是在钱包应用中调用了,此时就把libra-weight发布完放一边,进入Libra-wallet,代码结构以及调用的实现如下:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流, 谢谢大家对mojotv.cn的支持.喜欢这个网站麻烦帮忙添加到收藏夹,添加我的微信好友: felixarebest 微博账号: MojoTech 向我提问.

目录