日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

石墨烯区块链(2)核心功能

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 石墨烯区块链(2)核心功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 區塊結構

鏈式區塊的基本數據結構都是一棵樹(考慮有分叉的情況),石墨烯的區塊鏈也不例外,一個區塊中包含上一個區塊的id,每個區塊的id為區塊內容的MAC。

block由block header和transaction list構成。
1.1 block header

  • previous:前一個塊的id
  • block_num
  • digest:塊id
  • witness:出塊者
  • transaction_merkle_root

1.2 transaction list
為本塊打包的交易集合,transaction list的結構與其他區塊鏈不一樣。石墨烯的transaction list中的每個transaction并不只是一個交易的操作,而是支持多個operation的集合。
一個operation是一個基本操作的定義,如轉賬、投票等。
一個transaction里可以包含多個operation。但是這些在一個transaction里的operations依然保持事務的特性,也就是在同一個transaction里的operation要么都執行,要么都不執行。

石墨烯區塊鏈沒有獨立的虛擬機,不支持智能合約。所有操作都由operation來定義,如gas計算、撮單等。如果需要擴展operation,只需要實現相應的接口即可。

2. 存儲

石墨烯中的存儲使用的是文件存儲。

  • 所有數據都以文件的形式進行組織和管理,并沒有使用數據庫。
  • 存儲框架需要實現數據的管理功能,石墨烯框架在啟動和運行時,需要將大部分數據加載到內存,因此對內存的要求非常之高。

2.1 對象模型和索引模型

所有的對象實例都有一個全局唯一的id編號。

2.2 一個對象編號包括三部分內容

  • space_id:標識是否協議對象,正常都為1
  • type_id:表示對象類型
  • id為此類型是第幾個創建的實例。

space id 占最高 8 位, type id 占中間 8 位, 最低 48 位是 id。
eg. id為1.2.12376。

石墨烯的對象索引實現其實使用的是vector和map,由于所有的索引數據都會加載到內存,所以B+樹無法發揮減少IO的優勢。

3. 共識

石墨烯的共識算法使用的是Dpos,系統中最重要的角色是witness和committee。

  • witness:通過投票產生的,系統有個witness維護時間周期,沒到周期進行一次witness、committee等的更新。
  • Committee由得票最多的11個人組成,Committee的職責是修改系統參數,無法左右出塊。
  • Witness負責出塊。其中投票統計和洗牌過程決定了出塊的witness。

在收到一個new block時,如果new block前一個block不是當前塊,并且塊高高于當前塊高會進行分叉判斷和處理:
step1. 找到兩個叉的LCA。
step2. 回滾到LCA。
step3. 沿最長鏈,依次push_block()。
石墨烯通過記錄每一步的undo日志,實現了操作的回滾。每出現切換分支時,先找到最近公共祖先進行回滾操作,然后執行新的block的操作。

總結

以上是生活随笔為你收集整理的石墨烯区块链(2)核心功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。