IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> EOS (2)石墨烯介绍 -> 正文阅读

[系统运维]EOS (2)石墨烯介绍

1. 区块结构

链式区块的基本数据结构都是一棵树(考虑有分叉的情况),石墨烯的区块链也不例外,一个区块中包含上一个区块的id,每个区块的id为区块内容的MAC。
在这里插入图片描述

block由block header和transaction list构成。
1.1 block header

  • previous:前一个块的id
  • block_num
  • digest:块id
  • witness:出块者
  • transaction_merkle_root

1.2 transaction list
为本块打包的交易集合,transaction list的结构与其他区块链不一样。石墨烯的transaction list中的每个transaction并不只是一个交易的操作,而是支持多个operation的集合。
一个operation是一个基本操作的定义,如转账、投票等。
一个transaction里可以包含多个operation。但是这些在一个transaction里的operations依然保持事务的特性,也就是在同一个transaction里的operation要么都执行,要么都不执行。

石墨烯区块链没有独立的虚拟机,不支持智能合约。所有操作都由operation来定义,如gas计算、撮单等。如果需要扩展operation,只需要实现相应的接口即可。

2. 存储

石墨烯中的存储使用的是文件存储。

  • 所有数据都以文件的形式进行组织和管理,并没有使用数据库。
  • 存储框架需要实现数据的管理功能,石墨烯框架在启动和运行时,需要将大部分数据加载到内存,因此对内存的要求非常之高。

2.1 对象模型和索引模型

所有的对象实例都有一个全局唯一的id编号。
在这里插入图片描述

2.2 一个对象编号包括三部分内容

  • space_id:标识是否协议对象,正常都为1
  • type_id:表示对象类型
  • id为此类型是第几个创建的实例。

space id 占最高 8 位, type id 占中间 8 位, 最低 48 位是 id。
eg. id为1.2.12376。

石墨烯的对象索引实现其实使用的是vector和map,由于所有的索引数据都会加载到内存,所以B+树无法发挥减少IO的优势。

3. 共识

石墨烯的共识算法使用的是Dpos,系统中最重要的角色是witness和committee。

  • witness:通过投票产生的,系统有个witness维护时间周期,没到周期进行一次witness、committee等的更新。
  • Committee由得票最多的11个人组成,Committee的职责是修改系统参数,无法左右出块。
  • Witness负责出块。其中投票统计和洗牌过程决定了出块的witness。

在收到一个new block时,如果new block前一个block不是当前块,并且块高高于当前块高会进行分叉判断和处理:
step1. 找到两个叉的LCA。
step2. 回滚到LCA。
step3. 沿最长链,依次push_block()。
石墨烯通过记录每一步的undo日志,实现了操作的回滚。每出现切换分支时,先找到最近公共祖先进行回滚操作,然后执行新的block的操作。
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 12:07:58  更:2021-08-16 12:08:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:54:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计