`

eos区块头结构

    博客分类:
  • EOS
 
阅读更多
block_header:区块头
struct block_header
{
      block_timestamp_type             timestamp;
      account_name                     producer;
      uint16_t                         confirmed = 1;  
      block_id_type                    previous;
      checksum256_type                 transaction_mroot; /// mroot of cycles_summary
      checksum256_type                 action_mroot; ///
      uint32_t                          schedule_version = 0;
      optional<producer_schedule_type>  new_producers;
      extensions_type                   header_extensions;
};

1.timestamp:时间戳
2.producer:生产者帐户名
3.confirmed:当前块生产者需要确认的最新的block数量
4.previous:区块链链式结构前一个区块的id
5.transaction_mroot:事务transaction的默克尔树根,一个区块中的transactions字段可以包含多笔交易,区块中transaction_mroot是所有该区块内包含的所有事务的Merkle Root,可以用于校验其中每笔事务的正确性.如果该区块中不包含任何交易,则该字段的值为0.节点同步数据时,会先获得区块事务的Merkle Tree,需要下载所有事务时通过该文件并行校验下载
6.schedule_version:生产者版本,表明之前包含new_producers->version的区块被标记为不可逆
7.new_producers:下一个生产者,producer_schedule_type类型,其中version字段为按顺序递增版本号.另一个字段producer_key保存了账户名与公钥的映射关系
8.header_extensions:区块头内容扩展

signed_block_header:签名区块头继承block_header,添加一个字段
struct signed_block_header : public block_header
{
   signature_type    producer_signature;
};

1.producer_signature:区块签名,由生产者签名

signed_block:签名区块继承signed_block_header,添加了两个字段
struct signed_block : public signed_block_header 
{
   using signed_block_header::signed_block_header;
   signed_block() = default;
   signed_block( const signed_block_header& h ):signed_block_header(h){}

   vector<transaction_receipt>   transactions; /// new or generated transactions
   extensions_type               block_extensions;
};

1.transactions:区块包含的事务数组,数组的元素参照下面事务体结构
2.block_extensions:区块内容扩展

producer_confirmation:结构体包含了区块生产者确认后添加的字段,会在producer_plugin中被调用,用于组装确权区块
struct producer_confirmation 
{
   block_id_type   block_id;
   digest_type     block_digest;
   account_name    producer;
   signature_type  sig;
};

1.block_id:区块的唯一主键id,block_id_type类型(别名),是sha256对象
2.block_digest:区块摘要信息,digest_type类型(别名),是checksum_type类型,sha256对象
3.producer:生产者帐户,account_name类型,背后是eosio::chain::string_to_name类型
4.sig:区块签名,signature_type类型,背后是fc::crypto::signature类型

分享到:
评论

相关推荐

    eos-voting:用于EOS区块生产者投票的Web UI

    【EOS区块生产者投票Web UI】是为EOS区块链生态系统中的节点选举提供的一种用户界面工具,主要功能是方便EOS持有者参与区块生产者的投票过程。在EOS网络中,区块生产者(Block Producers,简称BP)负责创建和验证...

    EOS错误代码集

    在区块链开发领域,EOS作为一种新兴的高性能区块链平台,其智能合约和链上操作涉及到大量的技术细节和状态检查。为了确保操作的正确性,EOS提供了丰富的错误代码以帮助开发者识别和定位问题。本文集整理了EOS区块链...

    EOS6 EOS管理员手册 ,介绍EOS6的相关文档,欢迎下载!

    见证人负责验证交易和生成新的区块,确保网络的稳定性和安全性。理解DPOS的工作原理对管理员至关重要,因为它关系到网络的决策过程和治理结构。 3. **资源管理** 在EOS6中,计算资源如CPU、RAM和存储空间是有限的...

    EOS6 Report参考手册 ,介绍EOS6的相关文档,欢迎下载!

    2. **委托权益证明(DPoS)共识机制**:EOS6采用了改进的DPoS共识机制,允许选定的代表节点(称为超级节点)进行区块生产,提高了交易速度和效率。 3. **资源管理**:EOS6引入了一种独特的资源模型,包括CPU时间、...

    eos培训资料

    这涉及到EOS的数据结构、abi(Application Binary Interface)文件的生成以及如何通过EOS CLI工具进行交互。 三、多表关联 多表关联是数据库设计中的常见需求。在EOS中,可以通过编写智能合约来实现多个表之间的...

    EOS rpc创建可投票账户

    2. **构建交易**:根据EOS RPC API文档构建交易JSON数据结构,其中包含交易的操作类型、参数等信息。 3. **发起并签名交易**:通过调用`push_transaction`或类似的方法发起交易,并使用导入的钱包中的私钥对其进行...

    EOS6中级开发实战.ppt

    1. **EOS.IO架构理解**:EOS采用DPOS(Delegate Proof of Stake)共识机制,与传统的PoW(Proof of Work)或PoS(Proof of Stake)不同,它通过21个区块生产者来确认交易,实现高效和快速的交易处理。 2. **智能...

    eos-tutorials-源码.rar

    1. **EOS项目结构** EOS源码通常按照模块进行组织,包括共识机制、网络通信、智能合约、账户系统等。在"eos-tutorials-源码"中,我们可以看到这些主要模块的实现。通过研究源码,你可以了解到每个模块的功能以及...

    一组 nodejs工具,用于拍摄当前快照并在 EOS 网络上部署令牌_JavaScript_代码_下载

    例如,它可能指导你如何配置 EOS 节点的连接信息,设置快照的参数,如时间戳或区块高度,以及如何指定要部署的令牌信息,如总量、精度和初始分配。此外,它可能还会介绍如何运行特定的脚本来拍摄快照,生成交易批次...

    EOS-Tutorials:循序渐进的EOS教程

    这包括分布式账本、共识机制(例如EOS采用的Delegated Proof of Stake, DPoS)、交易处理和区块创建等概念。EOS教程会介绍这些基础知识,以便初学者能够快速上手。 **2. EOS网络架构** EOS网络采用独特的架构,包括...

    php-eos-serializer:与PHP EOS RPC API一起使用的序列化器

    反序列化则是相反的过程,将接收到的二进制数据转换回可读的结构。`php-eos-serializer`库提供了这些功能,使得开发者在使用PHP与EOS的RPC API进行交互时,能更轻松地管理数据。 在`php-eos-serializer`库中,核心...

    基于区块链技术的制造企业内部控制的优化——以汽车制造业为例.pdf

    3. 数据层:描述区块链的物理形式,包括链式结构和区块上的随机数、时间戳、公私钥等数据。 4. 智能合约层:这个层次包括了各种脚本、代码、算法,是区块链可编程的基础,并通过智能合约实现自定义的、自动执行的...

Global site tag (gtag.js) - Google Analytics