EOS 區塊長啥樣?
對於一個區塊鏈項目來講,最核心的數據莫過於區塊數據,區塊數據結構是整個區塊鏈項目的技術基礎。不過因爲 EOS 項目一直在快速迭代,區塊數據結構也不斷更新,因此今天才向你們介紹。數據結構
首先是區塊頭數據結構,包括了哈希、時間戳、默克爾根、見證人帳戶等。區塊鏈
//區塊頭結構體 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; };
在區塊頭的基礎上,出塊見證人進行簽名,就是簽名區塊頭:ui
//簽名區塊頭結構體 struct signed_block_header : public block_header { 見證人簽名 signature_type producer_signature; };
簽名區塊摘要的目的是將區塊中的交易(Transactions)分配到各個層級中,這裏並無交易的完整信息,只展現了交易的層級和分組結構。spa
struct signed_block_summary : public signed_block_header { vector<region_summary> regions; };
EOS 白皮書裏說明了區塊摘要的結構:code
Region Cycles (sequential)(串行) Shards (parallel)(並行) Transactions (sequential)(串行)
能夠看到,多個 Transactions 組成了一個 Shards(片區),多個 Shards 組成了一個 Cycles(週期),多個週期組成一個 Region(區域)。每一個區塊所包含的交易就被這樣的層級結構組織起來,並將最終的組織結構單獨記錄在區塊中。這也是 EOS 之後開發並行執行的基礎。視頻
前面提到區塊摘要只說明瞭交易的組織結構,並無具體的交易信息,咱們要在區塊最後添加完整的交易信息,就造成了一個 EOS 完整區塊。排序
struct signed_block : public signed_block_summary { //完整交易信息 vector<packed_transaction> input_transactions; };
咱們用圖形繪出了 EOS 區塊數據結構,便於你們理解。開發
[【許曉笛】49行代碼就能發幣?並且EOS連例子都給你了]()get
圓方圓學院聚集大批區塊鏈名師,打造精品的區塊鏈技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。
公開課地址:https://ke.qq.com/course/345101input