版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010986776/article/details/84843226
1.EOS核心框架介绍
- 架构图
- EOSIO程序模块图
2.区块结构
- Merkel Tree:比较两个节点数据是否同步,直接比较树根是否一样就可以,EOS节点数据是用Merkel Tree组织的
- 如果2个节点比较不一样,可以快速查找树中哪个节点不一样,能快速定位修改
- 互相验证时,密码学中叫零知识证明,比较Merkel Tree是否相同就可以
- EOS通过Merkle Tree做验证,成本比比特币低的多
- 定义区块的文件位置:eos\libraries\chain\include\eosio\chain\block_header.hpp
struct block_header
{
//时间戳
block_timestamp_type timestamp;
//哪个超级节点生产的区块
account_name producer;
//确认节点的数量
//默认自己是确认的
//达到15就是21节点的一多半,就不可逆了
uint16_t confirmed = 1;
//指向前一个区块
block_id_type previous;
//EOS包含了两个Merkel Tree的根
checksum256_type transaction_mroot;
checksum256_type action_mroot;
//版本号
uint32_t schedule_version = 0;
//下一个producer是谁
optional<producer_schedule_type> new_producers;
//扩展字段
extensions_type header_extensions;
//指纹信息
digest_type digest()const;
block_id_type id() const;
uint32_t block_num() const { return num_from_id(previous) + 1; }
static uint32_t num_from_id(const block_id_type& id);
};
3.区块结构并行化设计
- EOS目标是使两个账户能够在同一个区块内来回进行交换的操作,不必为每次操作都等待0.5秒
- 只读操作可以并行处理,写操作必须串行
- 允许多账户之间原子交易执行
- 超级节点自主优化并行调度