libra协议实现(学习笔记)
准入控制
是Libra的公共API接口,它用于接收来自客户端的公共gRPC请求。
接受两种类型的请求: 提交交易;更新最新分布式账本
字节码验证程序
用于检查堆栈使用、类型、资源及引用的安全性
CFG构建,通过将指令集拆解为一组基本块,构造一个控制流程图。
引用在字节码语言中是一等的。函数可以通过以下几种方式获得新的引用:
- 输入参数。
- 获取局部变量中地址值。
- 获取全局发布地址值。
- 从对包含结构的引用中获取地址的字段。
- 函数返回值。
共识协议
共识协议组件使用LibraBFT共识协议进行状态机复制。
选择HotStuff协议作为LibraBFT的基础有三个原因: (i) 简单和模块化; (ii) 方便将共识与执行集成的能力; (iii) 在早期实验中表现良好。HotStuff协议分解为安全模块(投票和提交规则)和存活模块(“复活起搏器”)。 这种解耦提供了开发和实验两套可独立并行运行环境的能力。
共识组件中的主要子组件是:TxnManager ,StateComputer,BlockStore,EventProcessor ,Pacemaker ,SafetyRules
加密组件
加密组件承载我们在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协议实现(学习笔记)相关推荐
- CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码
CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码 WEB-HTTP协议 1-请求方式 2-302跳转 3.cookie 4.基础认证 5.响 ...
- IPv6邻居发现协议ND学习笔记
我们都或多或少的听说过IPv6的地址是可以自动生成的吧,那么这个自动生成是怎么生成的大家知道吗,我们来ND协议里一起寻找答案吧! 一,ND协议定义 ND(邻居发现协议)协议是IPv6非常重要的基础协议 ...
- 《趣谈网络协议》学习笔记 DAY03
内容摘录自极客时间课程<趣谈网络协议>,如有侵权,请及时联系删除. 目录 软件定义网络SDN OpenFlow和OpenvSwitch实现SDN OpenFlow协议 OpenvSwitc ...
- 【常见总线接口协议】学习笔记2
https://www.cnblogs.com/zhjblogs/p/12422331.html https://www.cnblogs.com/zhjblogs/p/12464843.html ht ...
- IPSec IKE协商(图解协议+包分析)【IPSec协议簇学习笔记一】
本文作为学习 IPSec 的记录,感谢各位前辈的博客,我学习中将协议画成了脑图,便于理解记忆 1.协议脑图,整合了:协议概念部分 + 实际包分析 文档地址在文末(PDF+高清图) 我是通过以下两个博客 ...
- X/Open DTP模型与XA协议的学习笔记
最近的任务是里了解XA协议.要了解XA协议,必须先了解X/Open DTP模型,稍微总结一下: X/Open DTP(Distributed Transaction Process)是一个分布式事务模 ...
- 如何学习网络协议(学习笔记)
引: 抓包软件---tcp状态转换..构造包--->2011-12-31 15:51:26 一个前辈写的网络协议学习方法 分类: Linux开发c/c++2008-10-02 00:35 257 ...
- 物联网协议之CoAP协议开发学习笔记之术语解释
哪有什么天生如此,只是我们天天坚持. -Zhiyuan 此文章主要总结CoAP协议的术语解释: 只在网上找到了[RFC2616] 的解释,但是这些都是通用的 本文档要求读者熟悉[RFC2616]中讨论 ...
- HTTP协议从入门到大牛,初识HTTP协议(学习笔记)
HTTP数据传输协议 当访问一个网页时,浏览器会向服务器发起一条HTTP请求,接着服务器会去寻找相应的资源,如果请求成功,就会把这个对象,对象类型,对象长度以及其他的信息放在HTTP响应中,发送给客户 ...
- HTTP协议(学习笔记)
HTTP服务器与HTTP客户机之间的会话如下: 1 客户机与服务器建立联系 与服务器建立连接,就是与SOCKET建立连接,因此要指定机器名称.资源名称 和断口号,可以通过URL来提供这些信息.URL的 ...
最新文章
- mySQL笔记(1)
- ORACLE RAC 更改instance name完整步骤
- 【NLP】为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
- LinkedList源码剖析
- dmx计算机,DMX是什么意思
- oracle 报错pls 00405,oracle - 检查是否存在PLS-00405:在此上下文中不允许子查询 - 堆栈内存溢出...
- OutOfMemoryException异常解析
- java const关键字_const关键字:终于拥有真正的常量声明语句
- 程序员应具备的职业素质
- linux服务器架设--学习笔记
- 卸载注册表_3Dmax软件无法安装?3Dmax软件正确卸载方法,重装无忧
- 计算机软件专业代码表,2019-04-09计算机软件适用国民经济行业代码表
- 在线考试系统软件测试总结,基于智慧校园平台的在线考试系统应用研究
- 开源房产中介管理系统
- plupload上传文件 php,jQuery Plupload上传插件的使用方法详解
- struts2 ognl.OgnlException: target is null for setProperty(null, pageNO, [Ljava.lang.String;@c3bb57)
- 我是如何把一套GitLab CI/CD课程做到全网第一的?
- pytest【运行单个测试用例】
- A direct formulation for sparse PCA using semidefinite programming
- ZIP压缩包设置了密码怎么办?