The Libra Blockchain开发者文档-(二)Libra协议:核心概念

2024-03-03 15:38

本文主要是介绍The Libra Blockchain开发者文档-(二)Libra协议:核心概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对应官方开发者文档:https://developers.libra.org/docs/libra-protocol

Libra协议:核心概念

Libra区块链是一个通过加密认证的分布式数据库,它基于Libra协议。本文档简要介绍了Libra协议中的关键概念,有关Libra协议中所有元素的详细说明,请参阅Libra区块链技术白皮书。 
Libra区块链分布式网络由验证器节点来维护。也称为验证器。验证人(验证节点)通过共同遵守共识协议来促成区块链中的交易的数据的一致。 
Libra testnet展示了Libra区块链软件的早期原型—即Libra Core。

交易和状态

Libra协议两个核心基本概念 - 交易和状态。 在任何时间点,区块链都具有一个“状态”。状态(或称为分布式账本状态)表示链上数据的当前快照。 在执行了交易后会更改区块链的一个状态。

transactions
图1.1交易状态变更.

图1.1表示执行交易时在Libra区块链上状态的一个变化。例:在状态SN-1时,Alice拥有110Libra Coin,Bob拥有52个Libra Coin。当交易(TN)发生后,区块链生成一个新的状态。交易TN(发送10Libra Coin从Alice到Bob)发生,状态从SN-1到SN。可以看到Alice的Libra Coin减少10,Bob的Libra Coin增加10。新的状态(SN)显示更新后的Libra Coin余额,在图1.1中可见。

  • A和B代表区块链中的Alice和Bob的帐户。
  • SN-1表示区块链中(N-1)的状态。
  • TN是区块链上执行的第n个交易。在图中例子是,TN表示是: “将10个Libra Coin从Alice的账户发送到Bob的账户”。
  • F是一个功能函数。F始终会返回一致的初始状态或者特定交易后的最终状态。如果区块链当前状态是SN-1,那么在状态SN-1上执行了交易TN,最后区块链的状态为SN。
  • SN是区块链的第n个状态。 SN是将F应用TN中与SN-1后的结果。

Libra协议使用Move语言来实现功能函数F的操作。

交易

Libra区块链的用户执行提交交易来请求更改分布式账本的状态,在区块链上交易包含如下:

  • 发送人地址 - 交易发起人的帐户地址。
  • 发送人的公钥 - 用于签署交易的私钥所对应的公钥。
  • 程序-该程序包含以下内容: 
    Move的交易字节码脚本。 
    脚本中相关选项,对于点对点的交易中,输入包含接收人的信息,交易发送给接收人的金额。 
    Move字节码模块可选列表。
  • Gas价格(以微Libra/Gas为单位)-发送方执行交易时所需要支付的Gas金额。Gas是支付的是在区块链上计算和存储的费用,这个单位是一个抽象浮动的计量,没有具体固定的真实价值。
  • Gas单位上限 - 允许交易消耗的最大Gas单位限制。
  • 序号 - 无符号整型,必须等于发送者帐户下存储的序列号。
  • 到期时间 - 交易有效截止的时间。
  • 签名 - 发送人的数字签名。

交易脚本是一个自定义的程序,脚本中交易逻辑与Libra区块链分布式数据中的相关内容进行交互。

分布式账本状态

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

数据库版本号

Libra区块链中的所有数据都保存在分布式节点的数据库中,那么每个节点中都会有一个版本号,版本号是64位无符号型整数,对应系统执行的交易数。 
数据库中的版本号允许验证者如下操作:

  • 在最新的版本中执行交易操作。
  • 响应用户针对当前版本和之前版本的相关分布式账本中历史记录的查询。

账户

Libra账户包含Move模块和Move资源(资产)。它由账户的地址来标识。这就意味上每个账户的状态都包含代码和数据:

  • Move模块包含代码(类型和程序声明),但他们不包含数据。程序中相关模块根据规则用于更新区块链的全局状态。
  • Move资源包含数据(资产),但是不包含代码。在区块链中相关的资源值都由分布式数据库中发布的模块来声明类型。 
    账户可以包含任意数量的Move资源和Move模块。

账户地址

Libra账户的是地址是256位值。用户使用数字签名后来发布地址。账户的地址需通过用户公钥Hash加密。用户(代表用户或者监管的客户端)要发送交易要求用户通过自己的私钥签名后进行发送, 
Libra用户发布的地址数量没有限制。申请账户需要拥有足够Libra Coin,才能支付创建账户的费用。

证明

Libra区块链中所有的数据都以数据库副本的模式存储在各个节点中,存储用于记录相关交易及交易函数执行后结果以及整体区块链的全局状态,区块链上执行的交易数据通过不断增长的Merkle交易树来保存,通过Merkle树中“叶”附加至树上。

  • 证明(验证)是一种验证Libra区块链中数据真实性的方式。
  • 存储在区块链上的每个操作都进行加密验证处理,结果验证也保证了没有数据被省略(删除)。例如:如果客户端从账户查询最新的几个交易,那么验证查询响应时没有交易被省略。

在区块链中,客户端无条件信任它从其他节点过来的接收的数据。客户端可以查询账户余额,可以请求是否处理了特定的交易,等等。和其他的Merkle树一样,分布式账本历史记录中可提供特定交易的O(logn)-sized(大小)的证明,其中n是处理的交易的总数。

验证器节点

Libra区块链的客户端创建建议,并将他们提交到验证器节点。验证器节点(和其他验证器节点一起)运行共识协议,执行交易,并将交易和执行结果存储在区块链中。验证器节点将决定筛选那些交易通过何种顺序添加到区块链中。

validator
图1.2验证器的逻辑组件图

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

准入控制(AC)

  • 准入控制是验证器节点的唯一的外部接口。客户端向验证器节点发出的任何请求都首先进入AC。
  • AC对请求进行初始的检查,以保护验证器节点的其他部分免受损坏或被高频输入攻击。

内存池

  • 内存池作为一个缓冲区,用于保存“等待”执行的交易。
  • 当新的交易添加到验证器节点内存池中,该验证器节点的内存池与系统中其他验证器共同处理该交易。

共识

网络中的验证器节点通过共识组件对交易数据块进行处理,且通过共识协议协商,达成执行结果一致。

执行

  • 执行组件利用虚拟机(VM)来执行交易操作。
  • 执行主要工作是协调一个交易块的执行,并维持在最终达成一致状态前的一个过渡状态。
  • 执行过程中的执行结果在内存中显示,直到共识将块提交到分布式数据库中。

虚拟机(VM)

  • AC和内存池使用虚拟机组件对交易执行验证检查。
  • 虚拟机用于运行交易中的程序代码,并确定执行后的结果。

存储

  • 存储用于保存最终交易数据块和执行的结果。
  • 存储每个验证器和其他组件交互的信息,请参阅交易的生命周期。

参考

  • 欢迎页
  • 我的第一笔交易 - 指导您使用Libra CLI客户端在Libra区块链上执行您的第一笔交易。
  • Move入门 - Move新区块链编程语言。
  • 交易的生命周期 - 提供交易提交和执行时“幕后”发生的事情。
  • Libra核心概述 - Libra核心组件的概念和实现细节。
  • CLI指南 - 列出Libra CLI客户端的命令及其用法。
  • Libra 词汇表 - 提供Libra术语的快速参考。

这篇关于The Libra Blockchain开发者文档-(二)Libra协议:核心概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/770088

相关文章

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备