产品动态

您的位置: 首页产品动态

最新技术更多

区块链技术 | 在Facebook Libra上的实现第一笔交易

作者:区块链研究实验室(文章来源——巴比特 海盗号)发布时间:2019-06-26

 

Libra是Facebook 在 6/18 发表的区块链解决方案。提出 LibraCoin 加密货币来为金融基础建设赋能。以 Facebook 与这次参与的合作伙伴,我相信在未来能让支付、跨国跨境金融交易都能更加地便利。

 

本篇文章将带着大家一起进行 Libra 的教学,如何在 Libra 上面发送自己的第一笔交易吧!

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/28031574027202911324088744534518/20190626145135955.jpg

 

Agenda

 

• 环境设置

• 下载与编译 Libra

• 连上 Libra testnet

• 建立自己的 Libra account 与透过水龙头 (Faucet) 取得 LibraCoin

• 查询 Libra account 的余额

• 发送 LibraCoin

• 查询发送的 transaction

 

环境设置

 

目前 Libra 只支持 Linux 与MacOS 两种环境,以下将以 Linux Ubuntu 18.04 作为示范。

 

Environment: Ubuntu 18.04 on AWS EC2t3.xlarge

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/46619887346608219621580660714083/20190626145208096.png

 

下载与编译Libra

 

第一步:下载最新的Libra存储库

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/80697181855840252640804154518078/20190626145226221.png

 

第二步: 安装 Libra Core 所需的 dependencies

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/72357454384712758399286935550190/20190626145241253.png

 

Step2-optional. 在安装 dependencies 的过程间我有遇到 protoc 安装失败,原因是 18.04 的 apt 上面的 protobuf 版本是 3.0.0,而 Libra 所需的版本为 >= 3.6.0 ,所以导致他安装失败。这时我们就需要手动安装最新版本的 protobuf 来解决这个问题。

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/80364249704133904819319136568920/20190626145259456.png

 

第三步:编译并执行 Libra Cli 来连上 testnet

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/53783435675011129137786075773790/20190626145315300.png

 

看到 libra% 出现就代表我们已经大功告成连上 testnet 了!

 

连接testnet

 

其实跟编译 libra cli 是同一个 script ,除非原始码有更动,他就不会浪费时间在重复编译上了。

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/38765407051108014511976893483105/20190626145333472.png

 

建立自己的Libra account

 

所有跟 account 相关的功能都在 account 下面,我们可以先下 account 这个指令来看看有哪些功能可以使用吧!

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/41566161868340890866093011146293/20190626145350738.png

 

它主要有五大功能:

 

• Create: 建立一个账号,每个账号在 local 会给一个 reference ID,举例来说,第一个被建立的账号就是 ID=0。

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/25600540414913373490829296906028/20190626145408334.png

 

List: 印出所有被建立或者被加载的账号。

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/75587794820174287851821494887691/20190626145424129.png

 

• Recover: 从一个文件还原一个钱包账号。像是 import wallet。

• Write: 将钱包账号储存到一个档案。像是 export wallet。

• Mint: 请水龙头 (Faucet) 发钱给一个指定的账号。

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/47358447848228375529229859383448/20190626145440770.png

 

Hint: 跟 transaction 相關的操作(mint/transfer)都有提供 blocking 與 non-blocking 的版本。想要使用 blocking 的版本,比如说要等水龙头真的发钱给你,那我们可以使用下面这种语法:

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/79888213924823650109881952918161/20190626145728147.png

 

他就会直接卡住并印出 waiting 直到这个 Transaction 被完成为止。

 

查询Libra account的余额

 

语法是 query balance <account address/ref_id>

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/59098603357448111514532185479460/20190626145744506.png

 

发送Libra币

 

转账的语法如下:

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/37205443779362174151661166923436/20190626145800194.png

 

tranfer 一共有五个参数:

 

1. Sender Account 的 address 或 reference id

2. Receiver Account 的 address 或 reference id

3. 要发送多少数量的 libra

4. 这次 transaction 的 gas 手续费,预设是 0。这个参数可以不给。

5. 这次 transaction 的最高 gas 限制,预设是 10000。这个参数可以不给。

 

举例而言,如果我想从Account #0 转 100Libra 给Account #1,我可以这样写 transfer 0 1 100 。

 

查询发送的transaction

 

查询交易的指令为:

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/70372673961502318581137867442784/20190626145822976.png

 

一共有三个参数:

 

1. Account 的 address 或 reference ID。

 

2. Sequence Number: 在 Libra 的设计中,sequence number 代表了该 account 发起了几个交易,每发起一次交易且被收进 Libra blockchain 中这个数字就会 +1 。这个设计是为了避免 replay 攻击,每个发送出去的transaction 带有当前 account 的 sequence number ,而发送出去的 transaction 会先被放入 mempool 中等待被执行。当 Libra blockchain 从 mempool 中拿 transaction 出来执行的时候会去比对当前的 account sequence number 是否跟 transaction 的 sequence number 相同。若相同才能执行,且马上会把 account 的 sequence number +1 ,这样即使在 mempool 中有多个重复的 transaction 也只会有一个合法的能被执行,其他的将会被丢弃。

 

3. 是否需要抓取 events。

 

常见错误

 

Libra testnet 有挡一个区间内的爆量 request,如果你在短时间内送一堆 transaction (mint or transfer) 有机会拿到下面这个 error:

 

https://attachfiles.oss-cn-beijing.aliyuncs.com/attachFiles/p2p_article/p2p_article/31607346065484570856899184011125/20190626145840288.png

 

这时候只要稍等一下再重新送那笔 transaction 就能解除了。

 

原作者:链三丰

来源:公众号:区块链研究实验室

 

联系我们

400-090-3910

(北京总部:全国统一咨询热线)

北京地址:北京市朝阳区领地OFFICE1号楼A座1403

上海分部:13911340419

上海地址:上海市宝山区泸太路6395号1_2层B区2440室

广州分部:13161766437

广州地址:广州市天河区广汕一路715号2号楼1-7楼405-5房

关注我们 了解最新动态消息
关注微信
关注微博
专题子站: