中移鏈系統合約管控功能介紹

BSN研習社發表於2023-04-14

中移鏈是在滿足我國資訊化監管需求、合規可控的前提下,打造的中國移動區塊鏈服務平臺。如果把中移鏈類比為計算機系統,那麼系統合約就是中移鏈中的系統設定部分,用於配置和管理鏈的資源和行為。在計算機系統中,系統設定提供了對計算機系統的底層控制,使其能夠有效地執行各種應用程式。同樣,在中移鏈中,系統合約是中移鏈中的底層協議,負責賬戶、交易、RAM、CPU、網路頻寬等相關配置和管理。

01

賬戶和許可權體系介紹

在中移鏈中,賬戶與系統合約密切相關,所有賬戶都必須由系統合約建立和管理。系統合約執行需要鏈賬戶來進行發起。鏈賬戶是中移鏈中的重要參與者,用於管理使用者的資產、執行智慧合約和互動。中移鏈中鏈賬戶可以設定多個許可權和角色,這種靈活的許可權管理機制使得中移鏈賬戶可以更加安全地進行交易。而這一機制,正是由系統合約來實現的。

在建立新賬號時,預設需要指定以下引數:賬戶名稱,Active 和 Owner 許可權公鑰以及需要的資源(賬戶需要擁有一定數量的資源才能進行交易和操作,這些資源包括 RAM、CPU 和 NET)。

賬戶名:在中移鏈中,賬戶名是唯 一的識別符號,用於標識賬戶和接收中移鏈資源。賬戶名必須是 12 個字串,只能包含小寫字母 a-z 和數字 1-5。

公鑰和私鑰:賬戶可以有多個公鑰,不同的公鑰可以用於不同的場景來進行加密和簽署交易。私鑰是與公鑰相關聯的一個字串,它用於簽署交易和解密加密資訊。私鑰必須保持機密,不能被分享或洩露。   

許可權:中移鏈中的賬戶許可權有多種型別,例如活躍許可權(Active)、所有者許可權(Owner)和合約許可權等。這些許可權用於管理賬戶的訪問控制,例如限制誰可以訪問賬戶、對賬戶進行轉賬或修改賬戶資訊等。中移鏈中的許可權非常靈活,允許賬戶所有者定義自己的訪問規則和安全策略。

如果需要更復雜的簽名加密方式,可以透過多重簽名來實現,它允許多個簽名者進行多個公私鑰對的協作,實現多方授權的目的。例如,一個企業賬戶可以設定 3 個簽名者,當進行敏感操作時,需要至少有 2 個簽名者共同授權才能完成操作。下圖簡單說明了一下多重簽名的概念。

我們可以把 Alice 在區塊鏈中的許可權和授權表看作一張清單,這張清單告訴我們她需要多少權重才能使用自己的 Active 許可權進行簽名。假設她的 Active 許可權閾值是 2,那麼只有當權重達到 2 時,才能使用她的 Active 許可權進行簽名。如果我們把 Bob 和 Stacy 在 Alice 的 Active 許可權表中的權重都改為 1,那麼他們兩個的許可權加起來才能達到 2,才可以使用 Alice 的 Active 許可權進行簽名。

02

系統合約與交易介紹

目前中移鏈的主要的系統合約有如下幾個:

中移鏈系統合約中的各個子合約之間相互協作,共同維護系統的正常執行。要執行中移鏈的系統合約,使用者需要使用其私鑰對其進行簽名併發起交易請求。交易隨後廣播到網路並由網路參與者進行驗證。以轉賬合約為例,整體的執行過程如下:

1、使用者發起交易,使用對應許可權的公私鑰簽名;

2、節點收到交易後,傳送給共識節點;

3、共識節點接收到交易後,進行交易排序;

4、交易執行;

5、交易打包出塊;

6、區塊同步全網,交易在每個節點上執行;

7、區塊鏈網路中每個節點資料同步一致;

為了保證合約的執行安全,合約的執行都需要使用賬戶進行簽名,簽名的賬戶許可權必須滿足合約執行的需求。比如,一個合約需要執行一個轉賬操作,那麼它所依賴的賬戶就需要擁有相應的轉賬許可權。如果賬戶沒有這樣的許可權,那麼合約的執行就會失敗。

03

系統合約許可權管控功能改造

透過對賬戶許可權和系統合約執行過程的瞭解,不難發現雖然有靈活的組合許可權來確認賬戶許可權的歸屬,但是在系統合約層面,無法對重要系統合約的執行進行有效管控,比如新建鏈賬戶、資源購買、贖回和選舉共識節點等重要操作,只需要簽名透過並滿足建立資源的需求即可呼叫,無法指定管理員來管理這些系統合約的許可權,這顯然也不符合開放聯盟鏈的管理模式。

為了增強安全性,滿足開放聯盟鏈的需求,中移鏈在系統合約的主要函式中加入了許可權組的校驗邏輯。當呼叫轉賬和購買資源等需要許可權的合約時,需要先校驗許可權是否透過。如下為提前設定管理員的命令:

以購買資源的合約為例,在購買資源前,中移鏈會在購買資源的系統合約中預先設定管理員許可權表,為不同系統資源分配不同的管理員。當使用者購買記憶體時,會校驗當前使用者是否在的許可權組中。這樣,當呼叫賬戶沒有管理員許可權時,將丟擲異常並拒絕呼叫該合約。這種修改只是增加了管理員,縮小了許可權範圍,因此是向後相容的,不會造成硬分叉。這樣升級的好處是可以在不中斷鏈的情況下,引入新的功能和升級系統,使得整個系統更加安全和可靠。

透過許可權表的靈活配置,中移鏈實現了系統合約管控功能,敏感合約只允許許可權表中對應的管理員進行操作。比如新建鏈賬戶,只允許鏈賬戶管理員進行操作,資源的買賣和贖回,只允許資源管理員進行操作,確保鏈上資料和系統合約的安全和穩定,也符合 BSN 開放聯盟鏈的需求和目標。

04

系統合約許可權管控功能驗證

1、使用管理員賬號分別建立兩個測試賬號:testaccount2 和 testaccount5,賬號資訊如下:

2、將測試賬號 testaccount2 設定成為管理員賬號

3、測試管理員 testaccount2 進行購買資源,購買成功。

4、接著使用普通賬號的 testaccount5 進行購買資源測試,購買失敗。

5、現在將 testaccount2 從許可權表中移除,再次進行購買資源測試。

6、移除許可權後,testaccount2 變成普通賬號,購買資源失敗。

中移鏈致力於構建一個開放、安全、高效、易用的區塊鏈基礎設施網路,以滿足各種企業和開發者的需求。後續將持續對中移鏈底層框架進行能力增強,為 BSN 生態中的企業和開發者使用者提供更加多元化的技術選擇與更加可靠的基礎設施保障。

05

參考資料

[1]BSN 開放聯盟鏈:


[2]官方 EOSIO 賬號和許可權介紹:

https://developers.eos.io/welcome/latest/protocol-guides/accounts_and_permissions

[3]官方 EOSIO 交易介紹:

https://developers.eos.io/welcome/latest/protocol-guides/transactions_protocol

[4]官方 EOSIO 智慧合約介紹:

https://developers.eos.io/welcome/latest/smart-contract-guides/index

-END-



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012206/viewspace-2945773/,如需轉載,請註明出處,否則將追究法律責任。

相關文章