数据结构论坛

首页 » 分类 » 常识 » 许晓笛EOS区块数据结构
TUhjnbcbe - 2025/4/8 17:10:00

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

区块头(block_header)

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

//区块头结构体structblock_header{//前一区块哈希block_id_typeprevious;//区块时间戳block_timestamp_typetimestam交易的默克尔根checksum_typetransaction_mroot;///mrootofcycles_summary//Action的默克尔根checksum_typeaction_mroot;//区块默克尔根checksum_typeblock_mroot;//见证人账号account_nameproducer;//见证人排序版本号uint32_tschedule_version=0;//下一个见证人(可以为空)optionalproducer_schedule_typenew_producers;};区块头(已签名)(signed_block_header)

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

//签名区块头结构体structsigned_block_header:publicblock_header{见证人签名signature_typeproducer_signature;};区块摘要(已签名)(signed_block_summary)

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

structsigned_block_summary:publicsigned_block_header{vectorregion_summaryregions;};EOS白皮书里说明了区块摘要的结构:

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

区块(已签名)(signed_block)

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

structsigned_block:publicsigned_block_summary{//完整交易信息vectorpacked_transactioninput_transactions;};总结

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

作者小笛,专注于EOS技术研究与区块链智能合约开发.是圆方圆区块链的导师,更多小笛老师的文章和视频请

1
查看完整版本: 许晓笛EOS区块数据结构