公链分析报告 - Libra

Libra 的使命是建立一套简单的、无国界的货币和为数十亿人服务的金融基础设施。

  • 2019年6月, 公布白皮书第1版
  • 2019年10月, 成立Libra协会
    • 该协会是一个独立的会员组织,总部位于瑞士日内瓦。
    • 该协会的目的是为Libra网络和储备金协调并提供治理决策的框架
  • Libra testnet 上线并开源
  • 2020年4月, 公布白皮书第2版

本文主要介绍Libra的货币机制,治理机制以及共识机制, 关于稳定币的介绍另见这篇文章

Libra vs BTC

在这里插入图片描述

Libra Payment System

现有的区块链系统, 受到其波动性和缺乏可扩展性的阻碍,尚未被主流采用。

Libra 将基于区块链的技术创新的最佳方面(分布式治理,开放访问和安全性)与强大的合规性和监管框架相结合。

  • 安全,可扩展且可靠的区块链作为支付系统的技术骨干;

  • 由Libra储备金支持的Libra硬币,其资产由现金或现金等价物以及非常短期的政府证券组成;

    • 储备金将以1:1的比例支持每种单一货币的稳定币 (100%储备金)
  • 独立的Libra协会及其子公司Libra网络的治理,负责开发和运营支付系统。

    在这里插入图片描述

    在这里插入图片描述

Libra Stablecoin Ecosystem

在这里插入图片描述

  • Issuance and stabilisation mechanism
    • 治理: 稳定币价值如何稳定的规则
    • 管理实体: 管理稳定币的发行和赎回
    • 可以使用智能合约来管理稳定性机制
  • Transfer mechanism
    • 确定如何验证交易,谁可以访问稳定币
  • User interface
    • 连接DLT的客户端软件
    • 命令行终端
    • 钱包
    • 使用户可以用法币买卖稳定币
  • Use Case
    • 跨境汇款
    • 支付工具
    • 金融服务
  • 网络参与者分类:
    • 协会或其子公司之一
    • 协会会员
    • 指定经销商
    • 受管制的虚拟资产服务提供商(“VASP”,包括交易所和托管钱包)
    • 未托管的电子钱包用户

Libra white paper 2.0

新白皮书增加了大量关于合规方面的设计, 为的是更容易获得监管批准

  1. 除了锚定多种资产的稳定币外, 还会提供锚定单一货币的稳定币;

    每种单一货币稳定币,都将有充分的储备金支持,储备金包括现金、现金等价物以及以该货币计价的非常短期的政府证券。

  2. 通过稳健的合规性框架提高 Libra 支付系统的安全性;

    金融合规性和全网范围的风险管理以及反洗钱(AML),打击资助恐怖主义(CFT),制裁合规以及防止非法活动。建立金融情报功能(FIU功能),以帮助支持和维护网络参与者的运营标准。

  3. 在保持 Libra 主要经济特性的同时,放弃未来向非许可链的过渡(只有获得许可的成员才能成为节点)

  4. 在 Libra 储备金的设计中加入强大的保护措施;

未来

随着央行数字货币(CBDC)的前景成为现实,对Libra支付系统将能够升级以支持这些公共部门创新的期望是旨在实现的设计原则。


Libra Block Chain

目标:

  • 能够扩展到数十亿个帐户,这需要高事务吞吐量,低延迟和高效,高容量的存储系统。
  • 高度安全,可确保资金和财务数据的安全。
  • 灵活,因此可以推动未来的金融服务创新。

实现:

  • 链代码使用Rust编程语言 (Rust: 编译型语言, 没有GC)
  • 智能合约 设计并使用Move编程语言 (基于Rust)
  • 使用拜占庭容错(BFT)共识方法。
  • 没有采用“区块+链”的组织结构

Data Structure

  • 使用RocksDB作为底层的存储引擎

  • 单一的数据结构,该数据结构记录了交易的历史和状态,而之前的区块链项目将区块链视为交易块的集合。

    在这里插入图片描述

Main Module:

在这里插入图片描述

  • 准入控制(admission control)模块:Libra的公共API(应用程序接口)接入点,接收客户端传来的公开gRPC请求。
  • 内存池(mempool):缓存待执行模块处理的交易。
  • 虚拟机:以编译好的Move语言程序的字节码来处理交易。
  • 执行(execution)模块:执行已排序好的交易,执行生成新的账本状态结果。
  • 存储(storage)模块:提供分布式账本的持久化存储以及内部运行所需要的数据存储。
  • 字节码验证器:检查合约字节码中的安全性,包括堆栈、类型、资源以及引用等。· 共识(consensus)模块:实现LibraBFT共识算法。
  • 密码学工具(crypto)模块:实现一些会使用到的密码学算法,包括哈希、签名、密钥生成与检验等。
  • Move的中间语言编译器(Move IR Compiler):将Move编译的中间语言进一步编译成虚拟机的字节码。
  • 网络(network)模块:提供P2P的网络连接功能。

Smart Contract

设计并使用Move编程语言,Move旨在防止克隆资产。它启用了将数字资产约束为与物理资产相同的属性的“资源类型”:资源只有一个所有者,只能使用一次,并且限制了新资源的创建。

对智能合约实施适当的审查和风险控制。首先,只有协会批准和发布的智能合约才能与Libra支付系统直接交互。随着时间的推移,协会将探索适当的控制措施,以允许第三方发布智能合约。

Move语言特点:

  • 基于Rust语言
  • 资源:面向数字资产
    • 资源只能被转移、消耗而无法被复制。资源的底层机制保证了数字资产不会因为合约代码级别的漏洞(bug)而被恶意增发,从编程语言层面杜绝了此类问题。
  • 静态类型:强调安全

共识机制 LibraBFT

  • 基于拜占庭容错(BFT)
  • 基于分布式共识协议 HotStuff 的基础上演化而来
  • 具有1/3的容错性,防止双花攻击问题,吞吐量高,稳定性较强
  • Libra还没有详细说明如何设计与权益证明共识相关的激励与经济模型,例如通货膨胀率、挖矿奖励等。

HotStuff 与 PBFT 对比

共识协议 HotStuff 由 VMware Research 等团队于2018年3月提出,其预印版经过五轮迭代修改,并将于并行与分布计算领域著名的国际会议 PODC 2019上正式发表。

HotStuff 是一个基于主节点(Leader)的拜占庭容错共识协议

共识协议的目标是在去中心化的网络中就系统的状态达成统一的认识,以便所有的(诚实)节点统一从一个状态迁移到另一个状态。

  • PBFT 采用了两轮2/3投票来完成这个目标
  • HotStuff 采用了3轮2/3投票来完成这个目标

HotStuff 特点:

  1. 将 PBFT 的网状通信网络拓扑变成了星形通信网络拓扑,即它每次通信都依靠主节点。
    在这里插入图片描述

  2. 3轮2/3投票

    • pre-commit 阶段
    • commit 阶段:
    • decide 阶段

    在这里插入图片描述

  3. 门限签名

    对于一个(k, n)-门限签名方案,假定存在一个公钥,而 n 个签名者每人都拥有自己的私钥(分片)。只要其中至少 k 个签名者对消息进行部分签名,那么由这 k 个部分签名可以导出对消息的完整签名,并且这个完整签名可以由公钥来验签。

    PBFT的一个问题是区块头内包含了大量的确认签名, 使用门限签名可减少共识协议中签名的个数.

    在 HotStuff 的三阶段确认中,所谓投票,就是其它节点即对某个消息进行门限签名并发送给主节点。当主节点收到足够多的投票时会导出完整签名。主节点向其它节点广播下一阶段消息时将附上这个签名,供其它节点将验证。

    在这里插入图片描述

  4. 共识过程的流水化处理 (与EOS相同机制)

    三个确认阶段的行为: 其它节点对某一消息进行投票,主节点合成投票意见并通知给其它节点。这些过程可以统一表示,并采用流水化来处理。 这本质上就是让下一个视图的 prepare 阶段为当前视图的 prepare 阶段进行确认,即下一个 prepare 阶段(隐含地)包含了对当前视图的 pre-commit 确认,并以此类推。

    在这里插入图片描述

交易的生命周期

在这里插入图片描述

Admission Control (AC)

准入控制是验证器的唯一外部接口。客户端对验证器的任何请求都将首先转到AC。
在这里插入图片描述

Virtual Machine (VM)

Move虚拟机(VM)验证并执行以Move字节码编写的事务脚本。
在这里插入图片描述

Mempool

内存池是一个共享缓冲区,其中包含“正在等待”执行的事务。将新事务添加到内存池后,该内存池将与系统中的其他验证程序共享此事务。为了减少“共享内存池”中的网络消耗,每个验证器负责将自己的事务传递给其他验证器。当验证者从另一个验证者的内存池接收到事务时,该事务将添加到接收者验证者的内存池中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EnfEVguL-1588522347404)(https://developers.libra.org/docs/assets/illustrations/mempool.svg)]

Consensus

共识组件负责通过与网络中的其他验证者一起参与共识协议来对交易块进行排序,并就执行结果达成一致。
在这里插入图片描述

Execution

执行的工作是协调一组事务的执行,并保持可以通过共识投票的临时状态。
在这里插入图片描述

Storage

存储组件将持久存储已商定的事务块及其执行结果。
在这里插入图片描述

参考:

猜你喜欢

转载自blog.csdn.net/wcc19840827/article/details/105911470