Quorum新的權限模型

博客鏈接:https://hello2mao.github.io/2019/12/02/quorum-permission-model/

1. 概述

Quorum在最新發布的v2.3.0中增強了區塊鏈的權限模型,詳見v.2.3.0

在以前的版本中,節點的許可管理是通過靜態文件管理的。當節點啓動時,如果設置了–permissioned參數,節點就會查找文件名爲permissioned-nodes.json的文件,此文件包含此節點可以連接並接受來自其連接的節點白名單。因此,啓用權限後,只有permissioned-nodes.json文件中列出的節點才能成爲網絡的一部分。如果指定了–permissioned參數,但沒有節點添加到permissioned-nodes.json文件,則該節點既不能連接到任何節點也不能接受任何接入的連接。

這一個基於靜態文件的權限模型顯然存在很多問題,所以在最新的v2.3.0中,quorum修改爲基於智能合約的RBAC權限模型,從而提供了更多的靈活性。

2. 新的權限模型概覽

基於智能合約的RBAC權限模型能夠把整個quorum網絡按如下圖所示的維度進行劃分:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oAQJVKu5-1575378668076)(https://docs.goquorum.com/en/latest/Permissioning/images/PermissionsModel.png)]
其中:

  • Network:整個quorum網絡
  • Organization:組織
  • Sub Organization:子組織
  • Account:賬戶
  • Voter:能夠進行投票的賬戶
  • Role:角色
  • Node:一個quorum節點

有以下幾點值得注意:

  1. 聯盟鏈劃分爲多個組織,組織內還可以劃分子組織
  2. 聯盟管理員通過投票表決來批准新的組織加入quorum網路。
  3. 組織管理員能夠進行RBAC的管理。
  4. 子組織也能進行自己的RBAC管理。

這樣以後,整個quorum網絡的組織管理的拓撲如下:
在這裏插入圖片描述

3. 實現原理

整個基於RBAC的權限模型的實現完全是基於智能合約實現的。

在智能合約的設計上,採取了邏輯和數據的分離,通過proxy來訪問,從而可以做到智能合約邏輯部分的升級。如下所示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BGqm44fV-1575378668085)(https://docs.goquorum.com/en/latest/Permissioning/images/ContractDesign.png)]

  • PermissionsUpgradable.sol:存儲邏輯合約地址的合約
  • PermissionsInterface.sol:對外提供接口,對內proxy到邏輯合約
  • PermissionsImplementation.sol:邏輯合約,合約實際邏輯都在這個合約內
  • OrgManager.sol:數據合約,存儲組織相關數據
  • AccountManager.sol:數據合約,存儲賬戶相關數據
  • NodeManager.sol:數據合約,存儲節點先關數據
  • RoleManager.sol:數據合約,存儲角色先關數據
  • VoterManager.sol:數據合約,存儲投票人先關數據

4. 啓動

  1. 部署所有智能合約
  2. 創建配置文件:permission-config.json
  3. 初始化PermissionsUpgradable.solinit方法

5. API

新的權限管理提供了很對新的API,詳見:https://docs.goquorum.com/en/latest/Permissioning/Permissioning%20apis/

發佈了68 篇原創文章 · 獲贊 40 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章