聯盟鏈的“圓桌會議”:誰可以參與決策?如何進行決策?如何執行決策?

【導讀】

在前文《誰允許你訪問了?》中,介紹了區塊鏈中的權限層級、基於提案投票的權限管理模型,那麼基於提案投票的權限管理模型在區塊鏈中是如何使用的呢?下文將進行介紹。

隨着區塊鏈系統的運行,節點網絡拓撲、用戶數量會不斷的變化,運行在區塊鏈系統上的業務系統的形態與規模也會發生不斷的變化。區塊鏈系統的用戶會逐漸認識到現有的區塊鏈系統無法滿足需求,需要加以升級調整,以解決運行時遇到的問題並滿足一些新需求。

治理就是用戶對區塊鏈系統進行調整、決策,使系統整體發生相應改變。這裡就提出了三個問題:誰可以參與決策?如何進行決策?如何執行決策?

【聯盟自治】

根據決策系統的所處位置,可將區塊鏈治理分成:鏈下治理鏈上治理

▲鏈下治理

鏈下治理:依賴於區塊鏈系統以外的機制來完成治理。

大多時候依託於基金會,由核心開發者在社區中牽頭髮起某項提案,經過一定討論后,在區塊鏈系統中引入一些新的機制來達成某項目的,但這種機制往往和舊版系統不兼容,無法平滑過渡。

注意:這種方式往往會導致硬分叉,因為用戶對於新機制的引入存在支持和反對兩種觀點,而這種模式的治理需要更新區塊鏈程序,反對派可以選擇不更新加以抵制,就會導致用戶群體的割裂出現硬分叉,比較出名的事件就是以太坊的DAO事件,DAO之後以太坊也就分裂成了ETH和ETC兩個系統。

▲鏈上治理

鏈上治理:依賴於區塊鏈系統內部的機制來完成治理。

相比於鏈下治理,鏈上治理所提供的可調整能力是預定義的、有限的,但鏈上治理一般可以保證節點之間做統一、同步變更,不易導致用戶社群分裂,產生硬分叉,總結而言就是安全、受限。同時,通過鏈上治理可以來改變一些區塊鏈系統的運行時參數共識的各種參數(例如出塊時間、區塊內交易數量等)、區塊鏈系統公共組件的配置參數(例如區塊鏈賬號黑名單、域名服務等)。

聯盟鏈的“圓桌會議”:誰可以參與決策?如何進行決策?如何執行決策?

【鏈上治理提案投票模型】

前文提出三個問題:誰可以參與決策?如何進行決策?如何執行決策?基於提案投票的權限管理模型對其分別回答。

  • 誰能參與:基於提案投票的權限管理模型中,維護角色系統、具有特定角色的用戶可以參與。
  • 如何決策:去中心化決策。能參與決策的用戶可以發起提案,所有能參與決策的用戶在一定規則限制下進行投票,當投票超過一定閥值時出發執行。
  • 如何執行:通過RPC的提案基準來序列化提案,基於提案進行決策,決策完成後通過反序列化、反射RPC請求的方式執行。

▲角色系統

角色系統:基於區塊鏈的公鑰密碼學賬號系統,為賬號增加角色屬性,同時使用編寫的內置合約來進行賬號角色的管理。

由於區塊鏈賬本採用了鍵值對存儲的方式進行存儲設計,為了方便查詢,在各個賬號中保存了賬號到角色的映射關係,在內置合約狀態數據中保存了角色到賬號的映射關係。

聯盟鏈的“圓桌會議”:誰可以參與決策?如何進行決策?如何執行決策?

通過內置的一些角色來進行核心權限控制,當前最核心的內置角色是admin,在第一次調用內置合約時給特定的賬號賦予admin角色。一般情況下,這些被賦予admin角色的賬號是創世區塊中寫入的賬號,所謂的創世賬號admin賬號可以發起提案交易投票交易執行交易。node賬號可以發起提案執行提案
▲合約類型

自治相關的合約都封裝在了內置合約中,內置合約採用一個統一的前端合約來封裝提案狀態機,後端則是不直接暴露合約接口的功能合約,包括負責權限合約、配置合約、節點合約,以後還會進行擴展。

  • 權限合約:提供角色增加、刪除的功能,以及賦予用戶角色和回收用戶角色的功能。如果要對角色系統進行維護,則需要通過提案調用權限合約。
  • 配置合約:提供修改鏈級配置的功能。如果要對鏈級配置做統一更改,需要通過提案調用配置合約更改共識配置,例如batch_size等來修改打包參數,也可以更改攔截器配置,打開攔截器,配置相應規則可以禁止具有某些角色的用戶調用某些合約,或者只允許具有某些角色的用戶調用某些合約,還可以變更提案配置,修改提案的超時時間、投票通過閾值等。
  • 節點合約:提供增加、刪除節點的功能。如果要對網絡拓撲進行更改,需要通過提案調用節點合約,節點合約提供對分佈式CA證書的支持,另外也提供共識節點集合變更的支持。
聯盟鏈的“圓桌會議”:誰可以參與決策?如何進行決策?如何執行決策?

使用自治合約,可以通過四類交易進行,分別是提案交易、投票交易、撤銷交易、執行交易。

  • 提案交易:封裝功能合約調用的多個方法名、參數構成的操作列表,用於創建提案。
  • 投票交易:對提案進行投票,有權投票的用戶可以通過投票交易對提案進行投票。同意此提案的操作內容,則投支持票,不同意則投反對票。
  • 撤銷交易:撤銷提案,通過提案交易創建提案的用戶,在提案沒有被執行時,可以通過撤銷交易撤銷此提案。
  • 執行交易:執行投票通過的交易,通過提案交易創建提案的用戶,通過執行交易來執行提案,執行交易可能會導致配置變更,也稱為配置交易。

▲業務流程

對於單個提案,有提案發起、提案審批、提案超時、提案禁止、提案通過、提案生效、提案銷毀這幾種狀態。其狀態的流轉如下圖所示:

聯盟鏈的“圓桌會議”:誰可以參與決策?如何進行決策?如何執行決策?

引發提案狀態發生變更的交易則是上文介紹到的提案交易、投票交易、執行交易、撤銷交易。

注意:系統中只能有一個提案。當一個提案交易在提案合約中處理時,首先檢查已有提案是否達到終止狀態(所謂終止狀態指的是超時、禁止或生效三個狀態)。如果已有提案已經達到終止狀態,那麼已有提案的數據會被從狀態數據中移除,取而代之的是新提案的數據,新提案進入審批狀態。

經過一段時間投票,如果支持票超過閾值則進入通過狀態,如果反對票超過閾值則進入禁止狀態。達到通過狀態的提案都可以通過執行提案交易來變更到生效狀態。在任何狀態下,一旦提案相關交易的打包時間超過一定範圍,就會導致提案超時。

當提案狀態發生變更時,會通過mq通知到客戶端。客戶端也可以主動使用輪詢的方式來主動查詢提案。

【總結】

本篇介紹了聯盟自治的鏈上、鏈下治理,講解了區塊鏈系統機制是如何完成治理的、鏈上治理提案投票模型部分角色系統是如何運作的、合約類型以及一條業務交易是如何流轉的等內容。聯盟自治是為了滿足靈活多變、迭代更替的業務規則而提出的一種具備聯盟協商迭代升級的技術。

綜上所述,鏈上自治主要作用幫助使用角色系統來控制誰可以參與決策,通過內置合約來管理決策系統,完善控制如何進行決策以及如何執行決策的機制。

作者簡介

劉明美 趣鏈科技基礎平台部 區塊鏈網絡研究小組

參考文獻

[1] 《區塊鏈技術指南》

本文鏈接:https://www.8btc.com/article/6702267

轉載請註明文章出處

(0)
上一篇 2021-10-27 21:24
下一篇 2021-10-27 22:30

相关推荐