昨天听说 Facebook 的数字币 Libra 官网已经正式上线,找了好久才找到网址: https:// 可始终打不开,只好去读各路介绍文章,有的看好,有的唱衰,不一而足。读完后总体感觉 Libra 未来极有可能成为一种很重要的支付手段,值得研究一下。 还好今天很轻松就打开了官网,于是参照文档安装编译完 Libra 的命令行客户端,在测试网络上成功发起了第一笔 Libra 转账。 开玩笑似的截图在朋友圈嘚瑟,果然点赞不少。大辉甚至建议我写一篇使用教程,让我颇为汗颜,因为这个操作其实只是跑了一下 Libra 的官方客户端,没任何技术含量,实在不值一晒。 但转念又想,建立在区块链上的数字货币毕竟还很早期,大部分人(包括我在内)都只是听说,但也许从来没上手用过,一点直观的使用体验都没有。所以虽然这些操作并不难,但应该也能帮一些不便上官网的朋友亲手体验 Libra,对区块链和数字币积累一点实际的触感。那么就简单写一个操作说明吧。 先声明几点:以下操作完全是在 Libra 的测试网络上运行,所有充值和转账金额都只是虚拟数据,仅出于演示目的,既不会损失你任何实际的金钱,也不会让你得到任何实际的金钱。更不是什么能让你会所嫩模或下海干活的“炒币”。 下面是具体操作过程: 1. 准备
接下来,我们会下载必要的 Libra 组件,然后创建两个账户,并在这两个账户之间进行转账。 2. 克隆并编译 Libra Core在终端里找一个合适的目录下执行: git clone https://github.com/libra/libra.git 然后进入 libra 目录:
运行安装脚本: ./scripts/dev_setup.sh 这一步视乎你的网络连接速度,可能需要挺长时间,我这里是300M的光纤,大约用了40分钟左右。 3. 编译客户端并连接到测试网络执行命令:
这条命令会编译客户端,并把客户端连接到 Libra 测试网络中的验证节点上。 连接成功后,会看到这些输出信息: 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% 如果看到上面的信息,说明你的客户端运行正常,并且已经成功连接到 Libra 的测试网络上了,接着开始创建测试账户。 4. 创建测试账户在
意思是创建账户,你会看到类似这样的信息: >> Creating/retrieving next account from wallet Created/retrieved account #0 address a81b8fcd484fd9bff6f67f51751cd6949de233c08019bb79038a09c626d29857
请注意,我们现在创建的这个账户暂时还只在本地,并没有出现在区块链上,只有以下两种情况发生之后,才会真正在区块链上创建这个账户:
我们要测试在账户之间进行转账,所以还需要再创建另外一个账户: 再次输入创建账户的命令:
这次返回的信息里 输入命令: account list 意思是列出目前本地的所有账户,你应该看到类似信息:
表明目前本地有两个账户,本地编号分别是 你可以把这两个地址记录下来,稍后会用到。 5. 检查账户余额我们现在还不能转账,为什么呢,因为两个账户里目前都没有余额,你可以输入查询余额的命令来检查一下: query balance 0 这里输入的
表明目前A账户的余额是 也可以检查一下我们创建的第二个账户(以下简称B账户)的余额,当然应该也是 query balance 1 应该看到:
6. 给账户充值我们现在给A账户里充一些钱,由于在测试阶段,不需要真的付钱,但以后 Libra 正式运行时,这一步应该就要掏出真金白银来充值了。 只需要执行这行命令就可以给账户里充钱: mint 0 100 命令中的 同样,可以把
那么,这里写成: mint 3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8 100 效果是完全一样的。 好,现在查询一下A账户的余额:
应该看到余额就是你刚才充值的钱数,假设是 Balance is: 100 7. 发起转账现在可以从A账户向B账户转账了,假设我们要转 15 个 Libra 币:
其中 你会看到这样的提示: >> Transferring Transaction submitted to validator To query for transaction status, run: query txn_acc_seq 0 0 <fetch_events=true|false> 意思是转账交易已经提交给验证节点了,但这里多说一点细节,就是此时理论上只能认为转账信息已经提交到节点,但不保证已经被执行,按我的理解,就像你寄出的快递已经被快递小哥收走,但具体送到哪儿了,还得随时用快递单号查询。(把 在 Libra 里,你可以用下面的命令查询转账状态:
其中第一个 返回信息类似这样,记录了这笔转账的详细信息: >> Getting committed transaction by account and sequence number Committed transaction: SignedTransaction { raw_txn: RawTransaction { sender: a81b8fcd484fd9bff6f67f51751cd6949de233c08019bb79038a09c626d29857, sequence_number: 3, payload: {, transaction: peer_to_peer_transaction, args: [ {ADDRESS: 8ff67e42fcbc4633fb0165afa4a4bfd511e0064ab8ed431d3a8baf778b5053d2}, {U64: 100000000}, ] }, max_gas_amount: 10000, gas_unit_price: 0, expiration_time: 1560936041s, }, public_key: 5fa8955585aef04eba252ef27797834f591972b0d09759d42b44dcfc71dc26b9, signature: Signature( R: CompressedEdwardsY: [74, 194, 138, 73, 58, 65, 249, 140, 87, 159, 51, 152, 161, 157, 228, 94, 93, 138, 197, 222, 63, 240, 159, 76, 77, 192, 187, 83, 242, 49, 70, 225], s: Scalar{ bytes: [204, 212, 104, 57, 7, 225, 251, 159, 219, 52, 96, 71, 200, 180, 211, 245, 180, 14, 37, 0, 6, 53, 100, 99, 34, 215, 25, 217, 66, 194, 116, 7], } ), } Events: ContractEvent { access_path: AccessPath { address: a81b8fcd484fd9bff6f67f51751cd6949de233c08019bb79038a09c626d29857, type: Resource, hash: '217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97', suffix: '/sent_events_count/' } , index: 3, event_data: AccountEvent { account: 8ff67e42fcbc4633fb0165afa4a4bfd511e0064ab8ed431d3a8baf778b5053d2, amount: 100000000 } } ContractEvent { access_path: AccessPath { address: 8ff67e42fcbc4633fb0165afa4a4bfd511e0064ab8ed431d3a8baf778b5053d2, type: Resource, hash: '217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97', suffix: '/received_events_count/' } , index: 0, event_data: AccountEvent { account: a81b8fcd484fd9bff6f67f51751cd6949de233c08019bb79038a09c626d29857, amount: 100000000 } } 现在我们来查一下A账户的余额:
显示余额为: Balance is: 85 再查一下B账户的余额:
显示余额为: Balance is: 15 说明我们从A账户向B账户转的 |
|