Libra教程之:Libra testnet使用指南
文章目录
Libra testnet网络
Libra的测试网络testnet已经上线了,那么我们该怎么做才能在testnet上给自己转账一千万,从此出任CEO,赢取白富美,走上人生巅峰呢? 跟着我的节奏,来吧。
testnet只是一个测试网络,有的小伙伴在想我是不是可以搭个私链发个币,然后再上交易所呢? 完全没问题,在币圈只有想不到的,没有做不到的,搭私链的问题,我会在文章中最后一个章节讲到。
本文档将指导你完成在Libra区块链上的第一笔交易。 运行之前有一些准备工作要做:
- 你正在Linux(基于Red Hat或Debian的)或macOS系统上运行。
- 你的互联网连接稳定。
- git已安装在你的系统上。
- Homebrew安装在macOS系统上。
- yum或者apt-get已安装在Linux系统上。
目前本教程只能正常运行在Linux和macOS环境中,请小伙伴自行检查。
下载和安装Libra
克隆Libra核心存储库
git clone https://github.com/libra/libra.git
checkout testnet分支
git checkout testnet
安装依赖
要设置Libra Core,请切换到libra目录并运行安装脚本以安装依赖,如下所示:
cd libra
./scripts/dev_setup.sh
上面的安装脚本会执行如下操作:
- 安装rustup:rustup是Rust编程语言的安装程序。
- 安装所需版本的rust-toolchain。
- 安装CMake,用来管理构建过程。
- 安装protoc:protocol buffers的编译器。
- 安装Go:building protocol buffers。
编译Libra client并连接到Testnet网络
运行下面的命令来编译Libra client和连接到Testnet网络:
./scripts/cli/start_cli_testnet.sh
该命令利用cargo(Rust的包管理器)构建并运行客户端,并将客户端连接到测试网上的验证者节点。
客户端连接到测试网上的节点后,你将看到以下输出。 要随时退出客户端,请使用quit命令。
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%
创建两个A和B的两个账号
之前的文章中,我们一直在讲A转账10个币给B的故事,那么这里我们就来试验一下,到底是怎么转的。
检查libra cli Client是否运行
libra%命令行提示符表示你的Libra CLI客户端正在运行。 要查看account命令的帮助信息,请输入“ account”,如下所示:
libra% account
usage: account <arg>
Use the following args for this command:
create | c
Create an account. Returns reference ID to use in other operations
list | la
Print all accounts that were created or loaded
recover | r <file path>
Recover Libra wallet from the file path
write | w <file name>
Save Libra wallet mnemonic recovery seed to disk
mint | mintb | m | mb <receiver account> <number of coins>
Mint coins to the account. Suffix 'b' is for blocking
创建A的账户
请注意,使用CLI创建帐户不会更新区块链,而只会创建本地密钥对。
要创建爱丽丝的帐户,请输入以下命令:
libra%account create
成功样例输出:
>> Creating/retrieving next account from wallet
Created/retrieved account #0 address 3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8
0是A帐户的索引,十六进制字符串是A帐户的地址。 索引只是引用A帐户的一种方式。 帐户索引是本地CLI索引,可以在其他CLI命令中使用,以使用户方便地参考他们创建的帐户。 该索引对区块链没有意义。 仅当通过挖矿将钱添加到Alice的帐户中,或者通过其他用户的转账将资金转移到Alice的帐户中时,才会在区块链上创建Alice的帐户。 请注意,你也可以在CLI命令中使用十六进制地址。 帐户索引只是为了方便账户地址的引用。
创建B的账户
同样的方式,我们创建B的账户。
>> Creating/retrieving next account from wallet
Created/retrieved account #1 address 8337aac709a41fe6be03cad8878a0d4209740b1608f8a81566c9a7d4b95a2ec7
1是B帐户的索引,十六进制字符串是B帐户的地址。
查看账户列表
使用如下命令来查看你的账户列表:
libra% account list
可能的输出如下:
User account index: 0, address: 3ed8e5fafae4147b2a105a0be2f81972883441cfaaadf93fc0868e7a0253c4a8, sequence number: 0
User account index: 1, address: 8337aac709a41fe6be03cad8878a0d4209740b1608f8a81566c9a7d4b95a2ec7, sequence number: 0
帐户的序列号指示已从该帐户发送的交易数量。 每次执行从该帐户发送的交易并将其存储在区块链中时,它都会增加。
给A和B添加Libra币
testnet的挖矿是通过Faucet完成的。 Faucet是与测试网一起运行的服务。 此服务仅在testnet使用,在mainnet是不存在的。 当然它创建的Libra币是没有现实价值的。 假设你已经创建了分别具有索引0和索引1的A和B的帐户,则可以按照以下步骤将Libra添加到这两个帐户中。
给A添加110 LBR
libra% account mint 0 110
0是A帐户的索引。
110是Libra要添加到A帐户的数量。
成功的mint命令还将在区块链上创建A的帐户。
成功的输出如下:
>> Minting coins
Mint request submitted
请注意,提交请求后,这意味着已将其成功添加到(测试网中验证者节点的)内存池中。 它不一定意味着它将成功完成。 稍后,我们将查询帐户余额以确认mint是否成功。
给B添加40 LBR
同样的我们给B也添加40 LBR。
libra% account mint 1 40
查询余额
我们可以输入如下命令来查询上面的mint是否成功执行:
libra% query balance 0
Balance is: 110
libra% query balance 1
Balance is: 40
转账
最激动人心的时刻到了,我们要开始转账了。 我们会将10 LBR从A的账户转给B。 看下如何操作:
libra% transfer 0 1 10
0 是A的index。
1 是B的index。
10 是要转账的LBR数目。
是不是很简单。它的输出如下:
>> Transferring
Transaction submitted to validator
To query for transaction status, run: query txn_acc_seq 0 0 <fetch_events=true|false>
你可以使用命令查询txn_acc_seq 0 0 true(通过帐户和序列号进行交易)来检索有关刚提交的交易的信息。第一个参数是发送者帐户的本地索引,第二个参数是帐户的序列号。
你刚刚将事务提交到testnet上的验证器节点,该事务已包含在验证器的内存池中。这不一定意味着你的交易已执行。从理论上讲,如果系统运行缓慢或过载,则需要花费一些时间才能看到结果,并且你可能必须通过查询帐户进行多次检查。要查询索引为0的帐户,可以使用命令query account_state 0。
如果你想立马返回交易结果,那么可以使用transferb命令(如下所示)代替transfer命令。它仅在将交易提交到区块链后,transferb才会提交交易并返回到客户端提示。一个例子如下所示:
libra% transferb 0 1 10
查看是否转账成功
libra% query balance 0
Balance is: 100
libra% query balance 1
Balance is: 50
好啦,你的第一个交易完成了。就是这么简单。
搭建私链
如果你不想使用testnet, 那么可以参照如下方法来搭建一个私链。
转到Libra Core repository的根目录,然后运行libra_swarm,如下所示:
$ cd ~/libra
$ cargo run -p libra_swarm -- -s
-p libra_swarm 使用cargo来运行libra_swarm软件包,该软件包启动由一个节点组成的本地区块链。
-s选项启动本地客户端以连接到本地区块链。
要查看用于启动节点并连接到Libra区块链的其他选项,请运行:
$cargo -p libra_swarm – -h
cargo运行命令可能需要一些时间才能运行。 如果该命令的执行没有错误,则说明你的系统上正在运行Libra CLI客户端实例和Libra验证器节点。 成功执行后,你应该看到包含CLI客户端菜单和libra%提示符的输出。
更多教程请参考 flydean的博客
Libra教程之:Libra testnet使用指南的更多相关文章
- Libra教程之:Libra protocol的逻辑数据模型
文章目录 Libra protocol简介 逻辑数据模型 账本状态 交易 账本历史 Libra protocol简介 Libra区块链本质上是一个加密数据库,这个数据库是通过Libra protoco ...
- Libra教程之:Libra协议的关键概念
文章目录 Libra协议 交易和状态 交易详解 账本状态详解 版本数据库 账户 账户地址 Proof 验证节点 存储 Libra协议 Libra协议是Libra区块链的基础,本文主要讲解Libra协议 ...
- Libra教程之:运行自定义move modules
文章目录 简介 创建Move modules 启动本地网络 创建账号并送测试币 编译Move Module 发布编译好的Module 创建交易脚本 编译编译脚本 执行脚本 简介 因为Libra和Mov ...
- Libra教程之:执行Transactions
文章目录 Transactions是什么 Transactions运行的基础条件 Transactions的结构 执行Transactions Transactions是什么 我们讲到了Libra是一 ...
- Libra教程之:来了,你最爱的Move语言
文章目录 Move语言 Move的核心概念 Move交易脚本 Move modules Move resources 写一个Move程序 编写交易脚本 编写自己的Modules Move语言 Move ...
- Libra教程之:Transaction的生命周期
文章目录 Transaction的生命周期 提交一个Transaction 交易入链的详细过程 接收Transaction 和其他Validators共享这个Transaction 区块Proposi ...
- Libra教程之:move语言的特点和例子
文章目录 move语言的特点 资源优先 灵活性 安全性 可验证性 Move语句初探 点对点支付交易脚本 Currency Module move语言的特点 Libra的目标是打造一个全球话的金融和货币 ...
- Libra教程之:数据结构和存储
文章目录 存储的数据结构 账本历史 账本状态 账户 事件 前面的文章我们知道,libra会把所有的数据都存储在账本中.为了方便业务逻辑和数据的校验,这个存储是以特定的数据结构来实现的,这里我们叫做验证 ...
- 新手教程之:循环网络和LSTM指南 (A Beginner’s Guide to Recurrent Networks and LSTMs)
新手教程之:循环网络和LSTM指南 (A Beginner’s Guide to Recurrent Networks and LSTMs) 本文翻译自:http://deeplearning4j.o ...
随机推荐
- PTA数据结构与算法题目集(中文) 7-3
PTA数据结构与算法题目集(中文) 7-3 树的同构 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的.例如图1给出的两棵树就是同构的,因为我们把其中一 ...
- C++ 同类不同对象的互相访问
C++ 同类不同对象的互相访问 C++ 允许同一个类的不同对象(实例)访问彼此的私有成员. 示例 #include <iostream> using namespace std; clas ...
- 少儿编程Scratch第一讲:Scratch完美的初体验
素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8 都说未来是人工智能.计算机程式控制的时代,如何让青少年接触计算机编 ...
- vue技术栈进阶(02.路由详解—基础)
路由详解(一)--基础: 1)router-link和router-view组件 2)路由配置 3)JS操作路由
- Array(数组)对象-->数组的访问
1.访问数组: 通过指定数组名以及索引号码,你可以访问某个特定的元素. 格式: 数组对象名[下标] 例如:arr[0] 就是访问数组第一个值 var arr = new Array(3); arr[ ...
- JVM日常排查问题。基本操作和命令
1.jstat jstat -gcutil pid 5s //pid进程号 每隔5s监控一次内存回收情况 E 代表 Eden 区使用率:O(Old)代表老年代使用率 :P(Permanen ...
- web自动化测试中的PO模式(一)
1.PO模式的思想 原理: 将页面的元素定位和元素行为封装成一个page类 类的属性:元素的定位 类的行为:元素的操作 页面对象和测试用例分离 测试用例: 调用所需要页面对象中的行为,组成测试用例 测 ...
- Kubectl patch命令使用
kubectl patch 使用(patch)补丁修改.更新资源的字段. 支持JSON和YAML格式. 请参阅https://htmlpreview.github.io/?https://github ...
- 文件上传——客户端检测绕过(JavaScript检测)(一)
前言 通常再一个web程序中,一般会存在登陆注册功能,登陆后一般会有上传头像等功能,如果上传验证不严格就可能造成攻击者直接上传木马,进而控制整个web业务控制权.下面通过实例,如果程序只进行了客户端J ...
- SaaS、PaaS、IaaS的含义与区别
先上个图,直观的了解一下 云计算有SPI,即SaaS.PaaS和IaaS三大服务模式. PaaS和IaaS源于SaaS SaaS Software as a Service 软件即服务,提供给客户的服 ...