准入控制

是Libra的公共API接口,它用于接收来自客户端的公共gRPC请求。

接受两种类型的请求: 提交交易;更新最新分布式账本

字节码验证程序

用于检查堆栈使用、类型、资源及引用的安全性

CFG构建,通过将指令集拆解为一组基本块,构造一个控制流程图。

引用在字节码语言中是一等的。函数可以通过以下几种方式获得新的引用:

  • 输入参数。
  • 获取局部变量中地址值。
  • 获取全局发布地址值。
  • 从对包含结构的引用中获取地址的字段。
  • 函数返回值。

共识协议

共识协议组件使用LibraBFT共识协议进行状态机复制。

选择HotStuff协议作为LibraBFT的基础有三个原因: (i) 简单和模块化; (ii) 方便将共识与执行集成的能力; (iii) 在早期实验中表现良好。HotStuff协议分解为安全模块(投票和提交规则)和存活模块(“复活起搏器”)。 这种解耦提供了开发和实验两套可独立并行运行环境的能力。

共识组件中的主要子组件是:TxnManagerStateComputerBlockStoreEventProcessorPacemakerSafetyRules

加密组件

加密组件承载我们在Libra中使用的关于加密所有实现:散列,签名和密钥派生/生成。 NextGen目录包含未来版本中要使加密的实现:新的加密API增强类型安全,可验证的随机函数,BLS签名。

执行组件

执行组件根据完全有序的交易,通过Move虚拟机来计算每个交易输出,然后将输出应用于先前的状态,并生成一个新的状态,执行组件和共识算法 — HotStuff 一种基于领导者的算法 — 协同工作, 帮助它提议对一组拟议的交易及其执行达成一致

内存池 Mempool

内存池是一个内存缓冲区,用于保存等待执行的交易。

在内部,内存池被建模为 HashMap<AccountAddress, AccountTransactions> 并在其上构建了各种索引。

Move IR 编译器

Move IR编译器将Move IR编译为其字节码表示形式。

Move 编程语言

Move 语言目录由五个部分组成:VM,字节码验证器,Move中间层表示 (IR: intermediate representation) 编译器,标准库,一些测试 。

网络

网络组件向验证器的其他组件提供点对点网络服务。

网络组件是专门为促进共识和共享内存池协议而设计的。目前,它为这些组件提供了两个主要接口:RPC,DirectSend。

网络组件使用:Multiaddr,TCP,Noise ,Yamux ,推送类型的 gossip

存储模块

存储模块为Libra区块链上的所有数据集以及Libra Core内部使用的必要数据提供可靠和高效的持久存储。

存储模块使用 RocksDB 作为其物理存储引擎。

虚拟机

MoveVM 有两个主要的包:核心VM(core VM)和VM运行环境(VM runtime)。

libra协议实现(学习笔记)相关推荐

  1. CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码

    CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码 WEB-HTTP协议 1-请求方式 2-302跳转 3.cookie 4.基础认证 5.响 ...

  2. IPv6邻居发现协议ND学习笔记

    我们都或多或少的听说过IPv6的地址是可以自动生成的吧,那么这个自动生成是怎么生成的大家知道吗,我们来ND协议里一起寻找答案吧! 一,ND协议定义 ND(邻居发现协议)协议是IPv6非常重要的基础协议 ...

  3. 《趣谈网络协议》学习笔记 DAY03

    内容摘录自极客时间课程<趣谈网络协议>,如有侵权,请及时联系删除. 目录 软件定义网络SDN OpenFlow和OpenvSwitch实现SDN OpenFlow协议 OpenvSwitc ...

  4. 【常见总线接口协议】学习笔记2

    https://www.cnblogs.com/zhjblogs/p/12422331.html https://www.cnblogs.com/zhjblogs/p/12464843.html ht ...

  5. IPSec IKE协商(图解协议+包分析)【IPSec协议簇学习笔记一】

    本文作为学习 IPSec 的记录,感谢各位前辈的博客,我学习中将协议画成了脑图,便于理解记忆 1.协议脑图,整合了:协议概念部分 + 实际包分析 文档地址在文末(PDF+高清图) 我是通过以下两个博客 ...

  6. X/Open DTP模型与XA协议的学习笔记

    最近的任务是里了解XA协议.要了解XA协议,必须先了解X/Open DTP模型,稍微总结一下: X/Open DTP(Distributed Transaction Process)是一个分布式事务模 ...

  7. 如何学习网络协议(学习笔记)

    引: 抓包软件---tcp状态转换..构造包--->2011-12-31 15:51:26 一个前辈写的网络协议学习方法 分类: Linux开发c/c++2008-10-02 00:35 257 ...

  8. 物联网协议之CoAP协议开发学习笔记之术语解释

    哪有什么天生如此,只是我们天天坚持. -Zhiyuan 此文章主要总结CoAP协议的术语解释: 只在网上找到了[RFC2616] 的解释,但是这些都是通用的 本文档要求读者熟悉[RFC2616]中讨论 ...

  9. HTTP协议从入门到大牛,初识HTTP协议(学习笔记)

    HTTP数据传输协议 当访问一个网页时,浏览器会向服务器发起一条HTTP请求,接着服务器会去寻找相应的资源,如果请求成功,就会把这个对象,对象类型,对象长度以及其他的信息放在HTTP响应中,发送给客户 ...

  10. HTTP协议(学习笔记)

    HTTP服务器与HTTP客户机之间的会话如下: 1 客户机与服务器建立联系 与服务器建立连接,就是与SOCKET建立连接,因此要指定机器名称.资源名称 和断口号,可以通过URL来提供这些信息.URL的 ...

最新文章

  1. mySQL笔记(1)
  2. ORACLE RAC 更改instance name完整步骤
  3. 【NLP】为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
  4. LinkedList源码剖析
  5. dmx计算机,DMX是什么意思
  6. oracle 报错pls 00405,oracle - 检查是否存在PLS-00405:在此上下文中不允许子查询 - 堆栈内存溢出...
  7. OutOfMemoryException异常解析
  8. java const关键字_const关键字:终于拥有真正的常量声明语句
  9. 程序员应具备的职业素质
  10. linux服务器架设--学习笔记
  11. 卸载注册表_3Dmax软件无法安装?3Dmax软件正确卸载方法,重装无忧
  12. 计算机软件专业代码表,2019-04-09计算机软件适用国民经济行业代码表
  13. 在线考试系统软件测试总结,基于智慧校园平台的在线考试系统应用研究
  14. 开源房产中介管理系统
  15. plupload上传文件 php,jQuery Plupload上传插件的使用方法详解
  16. struts2 ognl.OgnlException: target is null for setProperty(null, pageNO, [Ljava.lang.String;@c3bb57)
  17. 我是如何把一套GitLab CI/CD课程做到全网第一的?
  18. pytest【运行单个测试用例】
  19. A direct formulation for sparse PCA using semidefinite programming
  20. ZIP压缩包设置了密码怎么办?

热门文章

  1. android+后台健身管理系统
  2. 知乎个人答案获取 然后vscode 的文件夹搜索,因为知乎没有自己的答案搜索
  3. 【人体姿态】Stacked Hourglass算法详解
  4. 子曰:“吾十有五而志于学.......
  5. 解析C语言中数据在内存中的存储
  6. 数据库学习-连接/join
  7. 【密码学—菜狗的期末自救企划】
  8. js使用队列实现击鼓传花小游戏
  9. 【无标题】Jquery入门
  10. 推荐一个免费在线制作gif图片的网站。