Libra协议 - 概念

2019-08-13  本文已影响0人  www当下

Libra区块链是一个基于Libra协议,加密认证的分布式数据库。本文档简要描述了Libra协议中的关键概念。Libra协议中所有元素的详细说明,请参考Libra区块链技术白皮书

Libra区块链由多个验证节点组成的分布式网络来维护,也可以称为验证器。验证节点通过遵守共识协议来保证区块链中的交易顺序达成一致。

Libra 测试网络(testnet)是Libra区块链软件(Libra Core)的早期原型的演示。

交易和状态

Libra协议的核心是两个基本概念 — 交易和状态。 在任意时刻,区块链都有一个“状态”。状态(或称为账本状态)表示链上数据的当前快照。 执行交易后会改变区块链的状态。

image.png

图1.1交易改变状态

图1.1表示在Libra区块链上执行交易时状态的变化。例:在状态 SN-1 时,Alice拥有 110 Libra 币,Bob拥有52个Libra 币。当交易(TN)发生后,区块链生成一个新的状态。为了从状态从SN-1过渡到SN ,需要交易 TN应用于状态SN-1。这导致Alice的余额减少10个 Libra 币,Bob的账户增加 10个Libra 币。新的状态(SN)显示更新后的Libra 币余额,在图1.1中:

Libra协议使用 Move 语言 来实现函数F的确定性执行。

交易

Libra 区块链的客户端通过提交交易来请求更新账本的状态,在区块链上一个签名交易包含:

交易脚本是一个任意的程序,用于对交易逻辑进行编码,并与Libra区块链中发布的资源进行交互。

账本状态

账本或者称为Libra区块链的全局状态,它是由区块链中所有账户状态组成的。在执行交易时,每个验证节点必须知道区块链中的分布式数据库的最新版本的全局状态。 参考版本化数据库

版本数据库

Libra区块链中的所有数据都保存在单个版本化分布式数据库中。版本号是一个无符号的 64 位整数,与系统已执行的交易数相对应。

版本数据库(versioned database)允许验证器:

账户

Libra账户包含 Move 模块和Move 资源。它通过账户地址来标识。这本质上意味着每个账户的状态都包含代码和数据:

账户可以包含任意数量的Move资源和Move模块。

账户地址

Libra账户的地址是256位的值。用户使用数字签名来声明地址。账户的地址是用户公钥的加密Hash。用户(或者托管账户代表用户)必须通过账户相关的私钥签名才能发出交易。

Libra用户申请的地址数量是没有限制的,不过要想申请一个地址需要从一个有足够LIbra币的账户支付一笔创建账号的费用。

证明

Libra区块链的所有数据都存储在单一版本的分布式数据库中。存储是用于记录商定的区块交易及执行结果。区块链用一个不断增长的交易集的Merkle树来表示。区块链上执行的每个交易,都会有"叶子"被附加到Merkle树上。

在区块链中,客户端不需要信任从中接收数据的实体。客户端可以查询帐户的余额,询问一笔特定交易是否被处理了,等等。与其他的Merkle 树一样, 账本历史可以对一个特定的交易提供 O(log n)时间复杂度的证明,n 是已处理的总交易量。

验证器节点(验证器)

Libra 区块链的客户创建交易并将其提交到验证器节点。验证器节点运行共识协议(与其他验证器节点一起),执行交易,并将交易和执行结果存储到区块链中。验证器节点决定哪些交易以及这些交易按照什么顺序被添加到区块链中。译者:humyna

image.png

图 1.2 验证器的逻辑组件

一个验证器节点包含以下逻辑组件:

准入控制 (AC)

内存池

共识

执行

虚拟机(VM)

存储 Storage

存储用于保存已经商定过的交易块及其执行结果。

有关每个验证器组件与其他组件的交互信息,参考交易生命周期

参考

PS: 在接下来的时间我会对Libra的相关文章进行转载。 翻译原地址为 link 。本文之后面向的主要人群Libra兴趣爱好者以及币圈金融

原文链接:https://developers.libra.org/docs/libra-protocolain-paper

译者:humyna

日期:2019.07.13

版权及转载声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

上一篇 下一篇

猜你喜欢

热点阅读