Libra协议:关键概念

Libra区块链是一个加密认证的分布式账本,它主要基于Libra协议。Libra区块链由分布式网络中的验证者节点维护。验证者通过共识协议来维护区块链上的交易达成一致。Libra测试网就是Libra core的原型的示例。

交易和状态

Libra协议的核心有两个概念,分别是交易和状态。在任何时刻,区块链都有一个“状态”。状态实际上代表着当前时刻的数据快照。执行交易会改变状态。
在这里插入图片描述

交易

Libra区块链客户端将交易提交来更新账本状态。区块链上一个签名的交易包括:

  • 发送者地址——交易发送者的账户地址。
  • 发送者公钥——用来对交易签名的私钥对应的公钥。
  • 程序——程序包括内容如下:
    - 一个Move字节交易脚本;
    - 输入脚本的选项列表,例如一个点对点的交易,输入就包括接受者以及转给接收者的金额的信息;
    - 公布的move字节模块的选项列表。
  • Gas价格——发送者愿意支付的用于执行交易的每单位gas的价格。Gas主要是用来对计算和存储付费。
  • 最大Gas量——一个交易允许消费的最大的gas的量。
  • 序列号——发送者账户会存储对应的号,有些类似于以太坊的nonce值。
  • Expiration时间——交易过期时间。
  • 签名——发送者的数字签名。

账本状态

账本状态,或者是Libra的全局状态,包括链上所有账户的状态。为了执行交易,每一个验证者必须知道区块链分布式数据库的最近全局状态。

版本化数据库

Libra中的所有数据都保存在单版本的分布式数据库中。 版本号是无符号的64位整数,对应于系统执行的交易数。
版本化数据库允许验证者:

  • 在最新的版本上执行交易;
  • 响应对应版本的查询。

账户

一个Libra账户包括move 模块和move资源。它由账户地址来确定。也就是说,每个账户的状态包括代码和数据:

  • move模块:包括代码(类型和过程声明),但是不包括数据。一个模块的过程是是对更新区块链全局状态规则的编码。
  • move资源:包括数据,但是不包括代码。

账户地址

Libra账户地址为256位。用户通过数字签名来声明地址。账户地址是用户公钥的hash值。用户对发送的交易进行签名时,必须使用和公钥匹配的私钥进行签名。
Libra对Libra用户可以申明的地址的数量没有限制。

证明

Libra区块链上所有数据都存储在单个版本的分布式数据库中。存储用于保持商定的交易的区块及其执行结果。 区块链被表示为不断增长的Merkle交易树。 对于在区块链上执行的每个交易,将“叶子”附加到树上。

  • 证明是Libra区块链验证数据真实性的一种方式。
  • 区块链上所有操作都能被验证。

在区块链上,客户端不需要相信它接受数据的实体。一个客户端也可以查询账户的余额、查询某个特定交易是否被处理等。像默克尔树一样,账本历史能提供一个特定交易的证明。

验证者节点

Libra的客户端创建交易并将它们提交给验证者节点。验证者节点运行共识协议,执行交易,并且将交易和交易的结果存储在区块链上。验证者节点决定哪个交易会被加入到区块链中以及以何种顺序加入。
在这里插入图片描述一个验证者节点包括以下组件:

入场控制

  • 入场控制(ac)是验证者节点唯一的外部接口。客户端的任何请求都必须先通过AC。
  • AC会对请求做初步的检查,以保护验证者节点的其它部分免受损坏和以及有高容量的输入。

内存池

实际上就是交易池。

  • 内存池是等待执行的交易的缓冲区。
  • 当一个新的交易加入到验证者节点的内存池中时,该节点的内存池会将交易共享给其它验证者节点的交易池。

共识

共识组件主要负责共识相关的工作:决定区块的前后顺序、交易的前后顺序等,和其它验证者达成共识。

执行

  • 执行组件通过虚拟机来执行交易。
  • 执行的工作是协调一个交易块的执行,并维持一个可以通过协商一致投票的过渡状态。
  • 执行维护执行结果的内存中表示,直到共识将块提交到分布式数据库。

虚拟机

  • AC和内存池使用VM组件 来对交易执行验证检查。
  • VM用来运行交易中包含的程序并确定结果。

存储

就是交易等执行结果的持久化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值