PlatONE是由萬向區塊鏈和矩陣元共同打造的以隱私計算爲特色的新一代聯盟區塊鏈平臺,支持企業級應用,已在2019年9月正式開源並在實際產品中投入使用。目前,PlatONE的單鏈TPS已超過5萬,已獲得國家工業及信息化部認可並通過了中國電子技術標準化研究院的功能認證和測試認證。
我們將通過一系列科普文章,帶領大家走進PlatONE,從入門到精通。本文主要講解通過鏈交互工具platonecil進行用戶和角色權限操作的方法,幫助大家實現用戶註冊、用戶信息更新、用戶信息查詢、設置不同角色權限等功能。
用戶操作 account
針對賬戶地址的相關操作。
用戶註冊 account add
描述:對擁有的賬戶進行用戶註冊(User),審覈通過的賬戶地址及其個人信息將被記錄在用戶平臺。
參數:
必選參數:
<account>: 用戶賬戶地址
<name>: 用戶名
可選參數:
--tel: 用戶電話信息
--email: 用戶郵箱信息
--organization string: 用戶所屬機構
操作:
./platonecli account add "0xb239401ecf8427f17c6de134d6a6bddd3100251f" "Alice" --phone "13111111111" --email "[email protected]" --organization wxbc --keyfile ../conf/keyfile.json
輸出結果:
{
"status": "Operation Succeeded",
"logs": [
"Event addUser: 0 Success "
],
"blockNumber": 227,
"GasUsed": 113404,
"From": "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"To": "0x1000000000000000000000000000000000000001",
"TxHash": ""
}
用戶信息更新 account update
描述: 更新用戶的電話、郵箱等相關信息,普通用戶(無角色/無權限用戶無法修改用戶的信息,僅管理員賬戶可操作。
參數:
必選參數:
<address>: (選擇進行更新的)用戶賬戶地址
可選參數:
--phone <number>: 用戶電話信息(更新)
--email string: 用戶郵箱信息(更新)
--organization string: 用戶所屬機構(更新)
操作:
# optional flags:
## 修改用戶電話
./platonecli account update "0xb239401ecf8427f17c6de134d6a6bddd3100251f" --phone "13241231233" --keyfile ../conf/keyfile.json
## 修改用戶郵箱
./platonecli account update "0xb239401ecf8427f17c6de134d6a6bddd3100251f" --email "[email protected]" --keyfile ../conf/keyfile.json
## 修改用戶所屬機構
./platonecli account update "0xb239401ecf8427f17c6de134d6a6bddd3100251f" --organization "wxbc" --keyfile ../conf/keyfile.json
輸出結果:
{
"status": "Operation Succeeded",
"logs": [
"Event updateUserDescInfo: 0 Success "
],
"blockNumber": 228,
"GasUsed": 110548,
"From": "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"To": "0x1000000000000000000000000000000000000001",
"TxHash": ""
}
用戶信息查詢 account query
描述: 根據查詢鍵值以及輔助選項進行信息的篩選查詢,返回所有匹配成功的數據對象
參數:
可選參數: 用戶信息查詢,用於用戶信息更新。
--user: 查詢鍵,通過用戶賬戶地址或賬戶名稱進行查詢(返回結果唯一)
--all: 查詢全部用戶
操作:
用戶信息和用戶角色信息分別來自不同系統合約的存儲中,重構後我們把用戶信息與角色信息在內部進行關聯後再反饋給用戶。
重構後:
# 1 通過用戶賬戶地址查詢用戶信息
./platonecli account query --user "0xb239401ecf8427f17c6de134d6a6bddd3100251f" --keyfile ../conf/keyfile.json
# 2 通過用戶賬戶名查詢用戶信息
./platonecli account query --user "Alice" --keyfile ../conf/keyfile.json
輸出結果:
{
"address":"0xb239401ecf8427f17c6de134d6a6bddd3100251f",
"authorizer":"0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"name":"Alice"
}
角色權限操作 role
針對角色權限的相關操作
設置超級管理員權限 role setSuperAdmin
警告:只能設置一次
描述: 鏈部署後可以調用該方法將當前賬戶進行超級管理員權限設置。
操作:
./platonecli role setSuperAdmin --keyfile ../conf/keyfile.json
輸出結果:
{
"status": "Operation Succeeded",
"logs": [
"Event setSuperAdmin: Set SuperAdmin Succeed "
],
"blockNumber": 2,
"GasUsed": 102184,
"From": "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"To": "0x1000000000000000000000000000000000000001",
"TxHash": ""
}
轉移超級管理員權限 role transferSuperAdmin
描述: 轉移超級管理員權限(調用者需爲當前的超級管理員)。
參數:
必選參數:
<address>: 轉移後的超級管理員地址
操作:
./platonecli role transferSuperAdmin "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18" --keyfile ../conf/keyfile.json
輸出結果:
{
"status": "Operation Succeeded",
"logs": [
"Event setSuperAdmin: Set SuperAdmin Succeed "
],
"blockNumber": 2,
"GasUsed": 102184,
"From": "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"To": "0x1000000000000000000000000000000000000001",
"TxHash": ""
}
角色添加 role addXXX
描述: 爲某個賬戶地址添加指定角色的權限。
參數:
必選參數:
<address>: 被賦予角色權限的賬戶地址
操作:
#鏈管理員
./platonecli role addChainAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#羣組管理員
./platonecli role addGroupAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#節點管理員
./platonecli role addNodeAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#合約管理員
./platonecli role addContractAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#普通合約部署者
./platonecli role addContractDeployer 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
輸出結果:
{
"status": "Operation Succeeded",
"logs": [
"Event addGroupAdminByAddress: 0 Success "
],
"blockNumber": 197,
"GasUsed": 105788,
"From": "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"To": "0x1000000000000000000000000000000000000001",
"TxHash": ""
}
角色刪除 role delXXX
描述: 爲某個賬戶地址刪除指定角色的權限。
參數:
必選參數:
<address>: 被賦予角色權限的賬戶地址
操作:
#鏈管理員
./platonecli role delChainAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#羣組管理員
./platonecli role delGroupAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#節點管理員
./platonecli role delNodeAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#合約管理員
./platonecli role delContractAdmin 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
#普通合約部署者
./platonecli role delContractDeployer 0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18 --keyfile ../conf/keyfile.json
輸出結果:
{
"status": "Operation Succeeded",
"logs": [
"Event delGroupAdminByAddress: 0 Success "
],
"blockNumber": 198,
"GasUsed": 105788,
"From": "0x8d4d2ed9ca6c6279bab46be1624cf7adbab89e18",
"To": "0x1000000000000000000000000000000000000001",
"TxHash": ""
}
獲取權限地址列表 role getAddrListOfRole
描述: 獲取權限地址列表。
參數:
必選參數:
<role>: 角色可以且只能爲"SUPER_ADMIN", "CHAIN_ADMIN", "GROUP_ADMIN", "NODE_ADMIN", "CONTRACT_ADMIN" , "CONTRACT_DEPLOYER"其中之一
操作:
#以SUPER_ADMIN爲例
./platonecli role getAddrListOfRole "SUPER_ADMIN" --keyfile ../conf/keyfile.json
輸出結果:
# 以SUPER_ADMIN爲例
["0x10ad2ec4831a1f89ec870a3224fead87cdb75931"]
權限檢查 role hasRole
描述: 檢查某賬戶地址是否擁有指定用戶權限。
參數:
必選參數:
<address>: 待檢查賬戶地址
<role>: 角色可以且只能爲"SUPER_ADMIN", "CHAIN_ADMIN", "GROUP_ADMIN", "NODE_ADMIN", "CONTRACT_ADMIN" , "CONTRACT_DEPLOYER"其中之一
操作:
#以SUPER_ADMIN爲例
./platonecli role hasRole 0x10ad2ec4831a1f89ec870a3224fead87cdb75931 SUPER_ADMIN --keyfile ../conf/keyfile.json
輸出結果:
# 以SUPER_ADMIN爲例
# 有權限
result: 1
# 無權限
result: 0
權限獲取 role getRoles
描述: 獲取某賬戶地址用戶權限。
參數:
必選參數:
<address>: 待檢查賬戶地址
操作:
#以SUPER_ADMIN爲例
./platonecli role getRoles 0x10ad2ec4831a1f89ec870a3224fead87cdb75931 --keyfile ../conf/keyfile.json
輸出結果:
["SUPER_ADMIN"]
點擊https://platone.wxblockchain.com/,可下載《PlatONE:一個基於隱私計算的新一代聯盟區塊鏈平臺》白皮書,瞭解PlatONE更多信息。