Qtum DGP 分佈自治協議技術詳解

買賣虛擬貨幣

Qtum 量子鏈的分散式自治協議(Decentralized Governance Protocol,DGP)是基於 Qtum 實現的鏈上協議,協議允許透過鏈上提案和投票系統對共識引數進行更改。提案一旦投票透過,就可以在不分叉主鏈的情況下對引數進行無縫調整。目前在Qtum鏈上部署了4個DGP合約,分別用於對4個共識引數進行動態控制:

· 區塊大小: 區塊的最大容量· 預設是2 Mb, DGP 合約: 0000000000000000000000000000000000000081· 最小Gas價格: 區塊建立者可接受的最小Gas價格· 預設是 40 satoshis, DGP 合約:  0000000000000000000000000000000000000082
· 區塊Gas限制:一個區塊所能消耗的最大Gas數· 預設是4千萬, DGP 合約: 0000000000000000000000000000000000000084· EVM Gas排程: 每個EVM操作花費的Gas· DGP 合約: 0000000000000000000000000000000000000080將控制這4個常見的區塊鏈引數的智慧合約嵌入到 Qtum 主網的創世塊的原因是:這4個引數是Qtum鏈中最為關鍵的幾個引數,使用智慧合約對它們進行動態更改,可以最大程度地減少對區塊鏈網路的影響。可以使用DGP合約來新增更多的可控引數,但這個過程需要執行一次硬分叉。因為需要對共識編碼進行修改,才能讓鏈上已經儲存的引數值變得可控。
DGP 工作原理每一個可被 DGP 合約控制的引數都需要獨立部署一個相應的 DGP 合約。Qtum 客戶端會從控制引數的各個 DGP 合約中獲取每個區塊共識下的 DGP 合約所控引數的值。客戶端如果沒有讀取到DGP合約中儲存的引數值,就會直接返回在客戶端程式碼中所定義的該引數的初始值。DGP 合約管理席(管理人員)的任務是在需要時為每個 DGP 合約引數發起提案,並提交提案啟動投票。一旦某個提案獲得足夠的支援票數,該提案會自動生效,同時新的引數規則將作為新的共識規則作用於相應的引數。如果提案在21600個區塊內沒有獲得所需的票數,那麼它將被駁回,同時合約將接受新的提案。DGP合約
DGP 合約是 solidity 合約,允許管理以下內容:· 管理操作: 增加/刪除合約管理席位和治理席位· 設定管理操作所需的管理席位的票數· 設定接受 DGP 合約引數值席位提案所需的管理席位票數· 設定接受 DGP 合約引數值席位提案所需的治理席位票數· 針對提案啟動投票
· 獲取投票中的提案:當前的票數,以及 DGP 合約引數和所需投票的當前值首次部署DGP合約時,該合約是沒有管理席位的。因此必須呼叫相應的setter方法(只能呼叫一次):setInitialAdmin(),來設定初始的管理席位。該方法將首次呼叫的傳送者設定為第一個管理席位。設定完成後,該管理席位的代理人就可以發起提案並啟動投票。提案有以下三種型別:席位增加提案(3 種子型別):· 增加新的管理席位提案· 增加新的治理席位提案· 增加新的 DGP 合約引數值席位提案
席位刪除提案 (2種子型別):· 刪除當前管理席位提案· 刪除當前治理席位提案所需票數更改提案 (3 種子型別):· 更改接受 DGP 合約引數值席位增加提案所需的管理席票數· 更改接受 DGP 合約引數值席位增加提案所需的治理席票數
· 針對管理席或治理席提案:席位增加/刪除提案,或所需票數更改提案,更改接受這兩類提案所需的管理席票數提案一旦啟動投票,獲得的支援票數不能小於票數閾值,否則不能生效。除了增加第一個管理席位之外,其他的任何操作(不包括標識提案過期操作)都需要建立提案並啟動投票。當管理席位代理人建立提案時,提案在建立完成那一刻就自動獲得了該管理席位的投票。任意給定時間,每種提案型別最多隻能有一個提案啟動投票。治理席位代理人只能給增加新的DGP合約引數值席位提案進行投票。提案一旦透過,需要設定DGP合約所需的合約地址,用於獲取共識下的該引數的值。
管理席位代理人除了可以投票給增加新的DGP合約引數值席位提案之外,還可以投票給管理提案,其中包括所有其他型別的提案。示 例下面透過一個例子來解釋說明。在下面的例子中,我們將執行一個* qtumd regtest*節點並使用DGP合約來修改最小Gas價格這一引數的值  (DGP合約: 0000000000000000000000000000000000000082)。透過增加3個管理席位和2個治理席位,並將DGP合約引數席位增加提案生效所需的最少票數設定為2張管理席位投票和1張治理席位投票,從而將最小Gas價格引數修改為80 satoshi。我們還需要2張管理席位的投票,以便在新增第二個管理席之後能夠繼續新增更多管理席位或治理席位。為實現上述目標,我們需要執行以下步驟:· 設定初始的管理席位
· 由初始的管理席代理人建立提案,用於增加第2個管理席位· 由任一管理席代理人建立提案,用於獲取2張管理席投票從而使管理提案生效· 由任一管理席代理人建立提案,用於增加第3個管理席位· 由另一個管理席代理人對步驟4中建立的提案進行投票,因為需獲取2張管理席投票從而使管理提案生效(現在我們已經有了3個管理席位)· 由任一管理席代理人建立提案,用於增加第1個治理席位· 由另一個管理席代理人對步驟6中建立的提案進行投票
· 由任一管理席代理人建立提案,用於增加第2個治理席位· 由另一個管理席代理人對步驟8中建立的提案進行投票· 由任一管理席代理人建立提案,用於獲取2張管理席投票,以便接受DGP引數值席位增加提案· 由另一個管理席代理人對步驟10中建立的提案進行投票· 由任一管理席代理人建立提案,用於獲取1張治理席投票,以便接受DGP引數值席位增加提案· 由另一個管理席代理人對步驟12中建立的提案進行投票
· 基於minGasPrice-dgp-template模板建立引數值合約,並將最小Gas價格引數設定為80 satoshis,編譯合約並在鏈上部署· 由任一管理席代理人建立提案,使用步驟14中的合約地址增加一個新的DGP引數值席位· 由另一個管理席代理人對步驟15中建立的提案進行投票· 由任一治理席代理人對步驟15中建立的提案進行投票(使更改後的最小Gas價格引數的值生效,對於所有合約來說,新共識下的最小Gas價格現在是80 satoshis)更多區塊鏈資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;