【PlatONE联盟链使用指南】如何通过链交互工具platonecli进行用户和角色权限操作?

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 "alice@wx.bc.com" --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 "123@qq.com" --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更多信息。

上一篇:主路由用了namespace


下一篇:SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式