首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【许晓笛】EOS 区块数据结构

【许晓笛】EOS 区块数据结构

作者头像
圆方圆学院
发布2019-03-14 14:44:07
发布2019-03-14 14:44:07
34300
代码可运行
举报
运行总次数:0
代码可运行

对于一个区块链项目来说,最核心的数据莫过于区块数据,区块数据结构是整个区块链项目的技术基础。不过由于 EOS 项目一直在快速迭代,区块数据结构也不断更新,所以今天才向大家介绍。

区块头(block_header)

首先是区块头数据结构,包括了哈希、时间戳、默克尔根、见证人账户等。

代码语言:javascript
代码运行次数:0
运行
复制
//区块头结构体
struct block_header
{
//前一区块哈希  
   block_id_type           previous;
//区块时间戳
   block_timestamp_type    timestam
   交易的默克尔根
   checksum256_type        transaction_mroot; /// mroot of cycles_summary
//Action 的默克尔根
   checksum256_type        action_mroot;
//区块默克尔根
   checksum256_type        block_mroot;
//见证人账号
   account_name            producer;
//见证人排序版本号
uint32_t                 schedule_version = 0;
//下一个见证人(可以为空)
   optional<producer_schedule_type>  new_producers;
};

区块头(已签名)(signed_block_header)

在区块头的基础上,出块见证人进行签名,就是签名区块头:

代码语言:javascript
代码运行次数:0
运行
复制
//签名区块头结构体
struct signed_block_header : public block_header
{
   见证人签名
   signature_type             producer_signature;
};

区块摘要(已签名)(signed_block_summary)

签名区块摘要的目的是将区块中的交易(Transactions)分配到各个层级中,这里并没有交易的完整信息,只展示了交易的层级和分组结构。

代码语言:javascript
代码运行次数:0
运行
复制
   struct signed_block_summary : public signed_block_header {

vector<region_summary>    regions;
   };

EOS 白皮书里说明了区块摘要的结构:

代码语言:javascript
代码运行次数:0
运行
复制
    Region
      Cycles (sequential)(串行)
        Shards (parallel)(并行)
          Transactions (sequential)(串行)

可以看到,多个 Transactions 组成了一个 Shards(片区),多个 Shards 组成了一个 Cycles(周期),多个周期组成一个 Region(区域)。每个区块所包含的交易就被这样的层级结构组织起来,并将最终的组织结构单独记录在区块中。这也是 EOS 以后开发并行执行的基础。

区块(已签名)(signed_block)

前面提到区块摘要只说明了交易的组织结构,并没有具体的交易信息,我们要在区块最后添加完整的交易信息,就形成了一个 EOS 完整区块。

代码语言:javascript
代码运行次数:0
运行
复制
struct signed_block : public signed_block_summary {
//完整交易信息
vector<packed_transaction>   input_transactions;
};

总结

我们用图形绘出了 EOS 区块数据结构,便于大家理解。

End 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/04/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 区块头(block_header)
  • 区块头(已签名)(signed_block_header)
  • 区块摘要(已签名)(signed_block_summary)
  • 区块(已签名)(signed_block)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档