导读:Libra作为脸书发布的区块链系统,自开源以来受到了大家的广泛关注。本文作者首先简单介绍了Libra的一些特点和基本使用方法,适合对区块链感兴趣的工程师阅读。
天秤座已经放了一段时间了。尽管美国国会存在各种危险,但脸书在此期间仍对其进行了大量改进。比如Libra发布的时候用的是move ir,现在基本上增强了,把move语言公开了。天秤座本身的目的就在于支付手段,零成本转账非常方便。
天秤座是用Rust语言开发的。个人猜测Libra开发团队使用Rust语言的主要原因是Rust语言的安全性。移动语言是天秤座的智能契约语言。因为天秤座的目标是支付手段,所以在设计Move的时候首先考虑的就是安全性。对于普通开发者来说,理解和学习Libra并不需要掌握Rust语言。不过,如果你需要了解天秤座的细节,可以考虑学Rust。网上有很多关于如何学习Rust语言的资料,这里就不赘述了。
接下来从源代码简单介绍一下如何编译和使用Libra。这里所有的操作都是基于macOS或者Linux,需要提前安装git。对于macOS,需要提前安装homebrew,对于Linux,需要安装yum或者apt-get。
编译github克隆libra的源代码。
git clone https://github.com/libra/libra.git然后,执行下面的命令,使安装依赖。
Cd天秤座。/scripts/dev_setup.sh通过安装脚本,它主要完成以下工作:
安装rustup,这是rust语言的安装程序。
安装相应版本的rust-toolchain(记录在rust-toolchain文件中)。
安装cmake
安装协议。从系统架构来看,libra实际上是典型的微服务架构,多个微服务通过grpc进行通信,所以需要protoc。
你需要安装go,编译protobuf。
执行以下命令进行编译。
来源~/。cargo/env cargo build cargo测试如果以上步骤成功,恭喜你,然后你就可以玩天秤座了。通常如果PB的本地版本太低,可能会编译失败,解决方法就是升级PB。如果有其他问题,可以通过谷歌解决。如果解决不了,可以在本文末尾留言。
使用测试网络libra测试网络是否在线。您可以使用Libra通过以下脚本测试网络。/scripts/CLI/start _ CLI _ testnet . sh一旦连接到testnet,如下图所示:如果不想用libra测试网络,也可以自己启动本地网络。
使用本地网络您可以通过以下命令使用本地网络。
如果CD Libra Cargo Run-p Libra _ swarm-S-N 4运行成功,类似的输出会出现在上图中。
仅通过libra_swarm启动本地单节点网络,通常用于方便测试。对于区块链,正常网络有多个节点,构建多个测试节点的步骤更复杂。
第一个老师变成了水龙头的钥匙。/target/debug/generate-key pair-odata/Libra _ local _ network/mint . key生成节点配置。这里我们使用三节点网络。/target/debug/Libra-config-bconfig/data/configs/node . config . toml-mdata/Libra _ local _ network/mint . key-n3-odata/nodes分别启动节点:/target/debug/Libra-node-fdata/nodes/0/node . config . toml ./target/debug/Libra-node-fdata/nodes/1/node . config . toml ./target/debug/Libra-node-fdata/nodes/3/。/target/debug/client-a localhost-p 49479-s ' data/nodes/0/consensus _ peers . config . toml '-m ' data/Libra _ local _ network/mint . key '需要注意的是,端口号应该与data/nodes data/nodes/0/node . config . toml的admission_control部分中的admission_control _ service _ port一致,正常启动后也可以看到类似上图的输出。
创建账户完成以上步骤后,我们就可以创建账户了。
libra% account create命令成功运行后,将产生以下输出:
#0表示帐户索引,十六进制字符串是帐户地址。您可以使用帐户列表命令查看已创建的帐户。
然后使用帐户薄荷命令挖钱的帐户。
账户薄荷0.100000是账户指数,10000是我们要挖的10000个天秤币。这个命令是为了方便测试而存在的。完成后,您可以查看帐户余额:
查询余额0,其中0也是账户索引。
转账然后通过以上步骤创建一个新账户,然后把钱从第一个账户转到第二个账户:
转账0 1 10和之前一样,0和1都是账户指标,10是转账金额。这个指令的作用是从第一个账户转10个天秤币到第二个账户。可以通过查询余额查看转账是否成功,读者自行验证。
使用移动语言。关于move语言的语法细节,可以参考libra的官方文档,这里就不赘述了。Move将其基本组织结构分为模块和脚本。模块相当于其他语言中的一个库,脚本中包含的主函数可以引用多个模块,是执行契约的入口。该模块如下所示,其主要功能是将libra货币转移到另一个账户:
模块MyModule {导入0x0。LibraCoin//介绍官方模块Public ID(c:Libra cooin . t):Libra cooin . t { Return Move(c);} }脚本如下所示,其主要功能是将libra币从交易发送方移出,然后移回交易发送方:
导入0x0。LibraAccount导入0x0。LibraCoin导入{{sender}}。MyModule主币(金额:u64) {让币:LibraCoin。t;coin=Libra account . retract _ from _ sender(move(amount));Libra account . deposit(get _ txn _ sender,my module . id(move(coin)));返回;}您可以通过以下命令编译该模块:
dev compile 0 my _ module的路径。mvir模块在/var/folders/TQ/8 gxrmhx 16376 zxd 5 r 4h 9 hhn _ x1zq 3/t/成功编译了一个程序。tmpigazcx,然后发布模块:
dev publish 0/var/Folders/TQ/8 gxrmhx 16376 zxd 5 R4 H9 hhn _ x1zq 3/t/。tmpigazcx将输出成功发布的模块。通过以下命令编译脚本:
devcompile 0 path _ to _ custom _ script . mvirscript成功编译了位于/var/folders/TQ/8 gxrmhx 16376 zxd 5 r 4h 9 hhn _ x1zq 3/t/. tmpdzhl 21的程序通过以下命令执行脚本:
devexecute 0/var/Folders/TQ/8 gxrmhx 16376 zxd 5 R4 H9 hhn _ x1zq 3/t/. tmpdzhl 2110其中0代表金额指标,/var/Folders/TQ/8 gxrmhx 16376 zxd 5 R4 H9 hhn _ x1zq 3/t/. tmpdzhl 21 .如果脚本执行成功,也会输出执行成功结束。
关于天秤座本身就说到这里吧,最后简单介绍一下我们团队目前的项目——Stargate[1]。现在是基于libra的两层项目,主要致力于开发libra以上的交易通道。以后我们会用自己的一层网络代替Libra。欢迎有识之士做砖。
文本中的链接:
[1]https://github . com/starcoinorg/stargate
高可用性架构
改变互联网的构建方式。