1. 程式人生 > >3.02 EOS核心框架

3.02 EOS核心框架

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秒
  • 只讀操作可以並行處理,寫操作必須序列
  • 允許多賬戶之間原子交易執行
  • 超級節點自主優化並行排程