Skip to content

Commit

Permalink
<doc>(develop): add account manager fix console docs. (#1594)
Browse files Browse the repository at this point in the history
  • Loading branch information
kyonRay committed Dec 5, 2022
1 parent 41ed64c commit 74c8876
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 14 deletions.
34 changes: 33 additions & 1 deletion 3.x/zh_CN/docs/develop/account.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 创建和使用账户
# 账户使用与账户管理

标签:``创建账户`` ``国密账户`` ``密钥文件``

Expand Down Expand Up @@ -262,3 +262,35 @@ openssl ec -in ecprivkey.pem -text -noout 2>/dev/null| sed -n '7,11p' | tr -d ":
```shell
dcc703c0e500b653ca82273b7bfad8045d85a470
```

## 账户管理

```eval_rst
.. important::
账户的管理冻结、解冻、废止操作以,均需要将开启区块链权限模式,详情请参考`【权限治理使用指南】 <https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/develop/committee_usage.html>`_
```

在开启区块链权限模式之后,每次发起合约调用均会检查账户状态是否正常(tx.origin),账户的状态以存储表的形式记录在BFS `/usr/` 目录下,存储表名为 `/usr/` + 账户地址,如果查不到账户状态默认该账户为正常。BFS `/usr/` 目录底下的账户状态只有在主动设置账户状态时才会创建。**账户状态管理的接口只有治理委员才能操作。**

治理委员可以通过AccountManagerPrecompiled的接口对账户进行操作,固定地址为0x10003。

```solidity
enum AccountStatus{
normal,
freeze,
abolish
}
abstract contract AccountManager {
// 设置账户状态,只有治理委员可以调用,0 - normal, others - abnormal, 如果账户不存在会先创建
function setAccountStatus(address addr, AccountStatus status) public virtual returns (int32);
// 任何用户都可以调用
function getAccountStatus(address addr) public view virtual returns (AccountStatus);
}
```

### 账户的冻结、解冻、废止

治理委员可以对固定地址0x10003的预编译合约发起交易、对账户的状态进行读写。在执行操作是,将会确定交易发起人msg.sender是否为治理委员会记录中的治理委员,若不是则会拒绝。值得注意的是,治理委员的账户地址不允许修改状态。

治理委员也可以通过控制台对账户进行冻结、解冻、废止等操作,详情请看:[冻结/解冻账户命令](./console/console_commands.html#freezeaccount-unfreezeaccount)[废止账户命令](./console/console_commands.html#abolishaccount)
75 changes: 65 additions & 10 deletions 3.x/zh_CN/docs/develop/console/console_commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -369,21 +369,24 @@ Event: {}
- 合约地址:(可选)在部署后的合约地址,listAbi会向节点发起getAbi的请求
```shell
[group0]: /apps> listAbi KVTableTest
[group0]: /apps> listAbi TableTest
Method list:
name | constant | methodId | signature
--------------------------------------------------------------
createTable | false | 56004b6a | createTable(string,string,string)
set | false | da465d74 | set(string,string,string)
get | true | 693ec85e | get(string)
createTable | false | 6a5bae4e | createTable(string,string,string[])
remove | false | 80599e4b | remove(string)
select | true | fcd7e3c1 | select(string)
update | false | 31c3e456 | update(string,string,string)
insert | false | 2fe99bdc | insert(string,string,string)
desc | true | 55f150f1 | desc()

Event list:
name | topic signature
--------------------------------------------------------------
remove | 0x0fe1160f9655e87c29e76aca1cab34fb2a644d375da7a900c7076bad17cad26b | remove(string,int256)
update | 0x49cc36b56a9320d20b2d9a1938a972c849191bceb97500bfd38fa8a590dac73a | update(string,int256,string)
select | 0x5b325d7821528d3b52d0cc7a83e1ecef0438f763796770201020ac8b8813ac0a | select(string)
insert | 0xe020d464e502c11b54a7e37e568c78f0fcd360213eb5f4ac0a25a17733fc19f7 | insert(string,int256,string)
InsertResult | 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce | InsertResult(int256)
CreateResult | 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210 | CreateResult(int256)
RemoveResult | 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112 | RemoveResult(int256)
UpdateResult | 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a | UpdateResult(int256)

# 使用地址参数
[group0]: /apps> listAbi cceef68c9b4811b32c75df284a1396c7c5509561
Expand Down Expand Up @@ -2276,6 +2279,24 @@ Against Voters:
该命令只有治理委员才可以调用。
```shell
# 冻结账户0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
[group0]: /apps> freezeAccount 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
{
"code":0,
"msg":"Success"
}

# 加载到已经冻结的账户 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
[group0]: /apps> loadAccount 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
Load account 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22 success!

# 部署调用都被拒绝
[group0]: /apps> deploy HelloWorld
deploy contract for HelloWorld failed!
return message: Account is frozen.
return code:22
Return values:null

[group0]: /apps> call HelloWorld 0xc8ead4b26b2c6ac14c9fd90d9684c9bc2cc40085 set test
transaction hash: 0x8844e61177f25cfafa9974525d6b8cb71f9ff2ec86cb40244018097bce8999bd
---------------------------------------------------------------------------------------------
Expand All @@ -2284,6 +2305,22 @@ transaction status: 22
Receipt message: Account is frozen.
Return message: Account is frozen.
---------------------------------------------------------------------------------------------

# 解冻账户0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
[group0]: /apps> unfreezeAccount 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
{
"code":0,
"msg":"Success"
}

# 加载账户0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
[group0]: /apps> loadAccount 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
Load account 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22 success!

[group0]: /apps> deploy HelloWorld
transaction hash: 0xd978585392114e2379be8c94250f5abceaf84538567d737db7dfbafcc0b7399c
contract address: 0xd24180cc0fef2f3e545de4f9aafc09345cd08903
currentAccount: 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
```
#### 2.16. abolishAccount
Expand All @@ -2292,8 +2329,26 @@ Return message: Account is frozen.
该命令只有治理委员才可以调用。
```shell
[group0]: /apps> call HelloWorld 0xc8ead4b26b2c6ac14c9fd90d9684c9bc2cc40085 set test
transaction hash: 0xcf5a5ceda91ac198cf0cf363da8646095a8ca5f4a1b2e3fc090127f388944030
# 废止账户0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
[group0]: /apps> abolishAccount 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
{
"code":0,
"msg":"Success"
}

# 加载账户0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
[group0]: /apps> loadAccount 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22
Load account 0x3d20a4e26f41b57c2061e520c825fbfa5f321f22 success!

# 部署和调用都被拒绝
[group0]: /apps> deploy HelloWorld
deploy contract for HelloWorld failed!
return message: Account is abolished.
return code:23
Return values:null

[group0]: /apps> call HelloWorld 0xd24180cc0fef2f3e545de4f9aafc09345cd08903 set test
transaction hash: 0xccfaffed1a329fdaaee8f23906be15bc64eadc9b1f47ba1fd25faf7e3fb572c4
---------------------------------------------------------------------------------------------
transaction status: 23
---------------------------------------------------------------------------------------------
Expand Down
6 changes: 3 additions & 3 deletions 3.x/zh_CN/docs/develop/contract_life_cycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ abstract contract AuthManagerPrecompiled {
}
```

### 5. 1智能合约冻结、解冻、废止
### 5.1 智能合约冻结、解冻、废止

合约管理员可以对固定地址0x1005的预编译合约发起交易,对合约的状态进行读写。

Expand All @@ -129,7 +129,7 @@ abstract contract AuthManagerPrecompiled {

合约管理员也可以通过控制台对合约进行冻结等操作,详情请看:[冻结合约命令](./console/console_commands.html#freezecontract)[解冻合约命令](./console/console_commands.html#unfreezecontract)

### 5.2. 智能合约部署权限控制
### 5.2 智能合约部署权限控制

部署合约的权限控制将由治理委员会统一控制,治理委员会将以投票表决的形式控制部署权限。治理委员会对某个部署权限的提案通过后,将会主动调用固定地址0x1005预编译合约的部署权限写接口,这些写接口也限定只能治理委员会合约调用。

Expand All @@ -139,7 +139,7 @@ abstract contract AuthManagerPrecompiled {

在检查部署权限时将会对交易发起地址tx.origin进行校验,若没有权限则会返回错误码 -5000。即,会对用户部署合约、用户通过合约部署合约都进行校验。

### 5.3. 智能合约调用权限控制
### 5.3 智能合约调用权限控制

合约管理员可以对固定地址0x1005的预编译合约发起交易,对合约接口的访问ACL进行读写。

Expand Down

0 comments on commit 74c8876

Please sign in to comment.