Skip to content

Commit

Permalink
<doc>(operation): add dynamic commitee doc. (#1680)
Browse files Browse the repository at this point in the history
  • Loading branch information
kyonRay committed May 4, 2023
1 parent 99ef35c commit 67187e3
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 24 deletions.
89 changes: 75 additions & 14 deletions 3.x/zh_CN/docs/operation_and_maintenance/committee_usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,33 @@ FISCO BCOS 3.x 引入了合约粒度的权限治理体系。治理委员会可

详细设计请参考链接:[权限治理体系设计](../design/committee_design.md)

## 开启权限治理模式
## 1. 开启权限治理模式

在区块链初始化启动之前,在配置中必须开启并设置好权限治理的配置,才能正确启动权限治理模式。区块链启动后再配置将不起作用。

开启权限治理模式的主要要点是:将`is_auth_check`选项置为`true``auth_admin_account`初始委员会账户地址需要配置正确的地址。

**更新:** 在3.3版本以后将支持在链启动以后动态开启权限模式,部署治理委员会合约。请关注本章动态开启权限模式小节。

FISCO BCOS不同的节点部署模式,开启权限治理的方式略有不同。本节将分开讨论不同的节点部署模式下开启权限治理的方式。

### FISCO BCOS Air版开启权限治理
### 1.1 FISCO BCOS Air版开启权限治理

FISCO BCOS Air版的建链部署工具详情请参考:[Air版部署工具](../tutorial/air/build_chain.md)。在这里以搭建四节点为例,开启权限治理设置。

建链部署工具有`-A``-a`两种模式,用于开启权限模式:

- `-A`: 将开启权限设置,并使用`get_account.sh``get_gm_account.sh`脚本随机生成一个账户地址,并将生成账户的公私密钥对放置在链的`ca`目录中,账户的创建和使用请参考:[创建和使用账户](./account.md)
**注意:** 3.3版本以后,`build_chain.sh`脚本将默认开启权限模式,不再有`-A`选项,若不指定账户地址,那么将默认生成一个账户公私钥对,放置在链的`ca`目录中,账户的创建和使用请参考:[创建和使用账户](../develop/account.md)

- `-A`: 将开启权限设置,并使用`get_account.sh``get_gm_account.sh`脚本随机生成一个账户地址,并将生成账户的公私密钥对放置在链的`ca`目录中,账户的创建和使用请参考:[创建和使用账户](../develop/account.md)
- `-a`:将开启权限设置,并指定一个账户地址作为初始化治理委员的唯一账户,**在指定时,必须确认账户是存在的且账户地址是正确的,否则将会因为没有治理委员权限而导致权限治理不可用的情况**

#### 开启权限治理举例
#### 1.1.1 开启权限治理举例

使用`-A`选项开启权限模式,可以看到`Auth Mode`已经开启,`Auth init account`初始账户为`0x976fe0c250181c7ef68a17d3bc34916978da103a`

**注意:** 3.3版本以后,`build_chain.sh`脚本将默认开启权限模式,若不指定账户地址,那么将默认生成一个账户公私钥对,放置在链的`ca`目录中,账户的创建和使用请参考:[创建和使用账户](../develop/account.md)

```shell
## 如果使用-A选项,则开启权限设置,并且随机生成一个账户地址,作为初始化治理委员的唯一admin账户
bash build_chain.sh -l 127.0.0.1:4 -o nodes -A
Expand Down Expand Up @@ -96,7 +102,7 @@ Processing IP:127.0.0.1 Total:4
[INFO] All completed. Files in nodes
```

#### 查看节点权限配置
#### 1.1.2 查看节点权限配置

无论是使用`-A`还是`-a`选项开启权限治理,均会体现在每个节点的配置中。节点在启动初始化的时候将会读取配置,对权限合约进行初始化。

Expand All @@ -113,7 +119,7 @@ Processing IP:127.0.0.1 Total:4
...
```

### FISCO BCOS Pro/Max 版开启权限治理
### 1.2 FISCO BCOS Pro/Max 版开启权限治理

FISCO BCOS Pro版的建链部署工具详情请参考:[搭建Pro版区块链网络](../tutorial/pro/installation.md)。在这里以BcosBuilder为例,开启权限治理设置。

Expand Down Expand Up @@ -147,7 +153,64 @@ init_auth_address="0x976fe0c250181c7ef68a17d3bc34916978da103a"

完成配置项之后,就可以继续部署RPC服务、GateWay服务和节点服务即可。继续流程参考:[部署RPC服务](../tutorial/pro/installation.html#rpc)

## 控制台使用
### 1.3 动态开启权限

**注意:** 本小节仅仅适用于3.3.0及以后的二进制版本与链版本。

在区块链启动之后,若区块链之前的数据未曾配置过权限部分的功能,那么可通过控制台的 `initAuth` 命令初始化链的治理委员会,再使用`setSystemConfigByKey`开启权限检查。具体步骤如下:

**在指定第一个治理委员时,必须确认账户是存在的且账户地址是正确的,否则将会因为没有治理委员权限而导致权限治理不可用的情况**

```shell
# 首先必须将链的数据版本号升级到3.3.0及以上,若已经是3.3.0以上则跳过这一步
[group0]: /apps> setSystemConfigByKey compatibility_version 3.3.0
{
"code":0,
"msg":"Success"
}
Switched to group group0.

# 使用initAuth 初始化治理委员会
[group0]: /apps> initAuth 0xf4a3d4177ce2bad732a63702a751a8e41ea6bce4
{
"code":0,
"msg":"Success"
}

# 重启控制台之后,查看治理委员会信息
[group0]: /apps> getCommitteeInfo
---------------------------------------------------------------------------------------------
Committee address : 0xd04cfe0e4a8c9cafe504bbd68d665471d1ce5010
ProposalMgr address : 0x0fb8268e0f749097844639dff0fc938d44fa55ba
---------------------------------------------------------------------------------------------
ParticipatesRate: 0% , WinRate: 0%
---------------------------------------------------------------------------------------------
Governor Address | Weight
index0 : 0xf4a3d4177ce2bad732a63702a751a8e41ea6bce4 | 1

# 此时已经初始化权限治理委员会,还未开启权限检查,使用setSystemConfigByKey命令开启即可
[group0]: /apps> setSystemConfigByKey auth_check_status 1
{
"code":0,
"msg":"Success"
}
```

### 1.4 动态关闭权限检查

**注意:** 本小节仅仅适用于3.3.0及以后的二进制版本与链版本。
本小节描述的是关闭权限的检查,治理委员会仍然可用。

```shell
# 使用setSystemConfigByKey命令将auth_check_status配置设置为0即可
[group0]: /apps> setSystemConfigByKey auth_check_status 0
{
"code":0,
"msg":"Success"
}
```

## 2. 控制台使用

控制台有提供权限治理专属的命令,以及切换控制台账户的命令。用户可以通过控制台操作权限的治理,详情请参考:[权限操作命令](../operation_and_maintenance/console/console_commands.html#id14)。权限治理的命令只有控制台连入了开启权限治理的节点才会出现。

Expand All @@ -157,7 +220,7 @@ init_auth_address="0x976fe0c250181c7ef68a17d3bc34916978da103a"
- 治理委员专用命令,这些命令只能持有治理委员的账户才可以使用。
- 合约管理员专用命令,这些命令只有对某一个合约具有管理权限的管理员账户才可以访问。

## 使用举例
## 3. 使用举例

首先使用build_chain.sh脚本搭建权限模式的区块链:

Expand All @@ -169,7 +232,7 @@ init_auth_address="0x976fe0c250181c7ef68a17d3bc34916978da103a"
bash build_chain.sh -l 127.0.0.1:4 -o nodes4 -a 0x1cc06388cd8a12dcf7fb8967378c0aea4e6cf642
```

### 1. 治理委员使用
### 3.1 治理委员使用

使用`getCommitteeInfo`命令可以看到,初始化时治理委员只有一个,权重为1.

Expand Down Expand Up @@ -331,7 +394,7 @@ Against Voters:
Deploy strategy is White List Access.
```

### 2. 部署权限
### 3.2 部署权限

接上文,当前链的部署权限为白名单模式。

Expand Down Expand Up @@ -391,7 +454,7 @@ Admin for contract 0x33E56a083e135936C1144960a708c43A661706C0 is: 0x1cc06388cd8a

此时,HelloWorld合约 0x33E56a083e135936C1144960a708c43A661706C0 地址的合约管理员是 `0x1cc06388cd8a12dcf7fb8967378c0aea4e6cf642` 账户

### 3. 合约管理员使用
### 3.3 合约管理员使用

接上文,当前HelloWorld合约 0x33E56a083e135936C1144960a708c43A661706C0 地址的合约管理员是 `0xab835e87a86f94af10c81278bb9a82ea13d82d39` 账户

Expand Down Expand Up @@ -473,9 +536,7 @@ Return values:(May the flame guide thee.)
---------------------------------------------------------------------------------------------
```



### 4. 升级权限投票权重计算逻辑
### 3.4 升级权限投票权重计算逻辑

发起升级投票计算逻辑的提案。升级提案投票计算逻辑分为以下几步:

Expand Down
6 changes: 3 additions & 3 deletions 3.x/zh_CN/docs/sdk/java_sdk/event_sub.md
Original file line number Diff line number Diff line change
Expand Up @@ -417,22 +417,22 @@ contract Asset {
+ log.getTransactionIndex()
+ " data:"
+ log.getData());
ABICodec abiCodec = new ABICodec(client.getCryptoSuite());
ContractCodec abiCodec = new ContractCodec(client.getCryptoSuite(), false);
try {
List<Object> list = abiCodec.decodeEvent(abi, "TransferEvent", log);
logger.debug("decode event log content, " + list);
// list = [0, 0x81376b9868b292a46a1c486d344e427a3088657fda629b5f4a647822d329cd6a, 0x28cac318a86c8a0a6a9156c2dba2c8c2363677ba0514ef616592d81557e679b6, 0x0000000000000000000000000000000000000000000000000000000000000064]
// 后三个事件参数均为indexed属性
Assert.assertEquals(4, list.size());
} catch (ABICodecException e) {
} catch (ContractCodecException e) {
logger.error("decode event log error, " + e.getMessage());
}
try {
List<Object> list = abiCodec.decodeEvent(abi, "TransferAccountEvent", log);
logger.debug("decode event log content, " + list);
// list = [Alice, Bob]
Assert.assertEquals(2, list.size());
} catch (ABICodecException e) {
} catch (ContractCodecException e) {
logger.error("decode event log error, " + e.getMessage());
}
}
Expand Down
8 changes: 2 additions & 6 deletions 3.x/zh_CN/docs/tutorial/air/build_chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ $ bash build_chain.sh -p 30300,20200 -l 127.0.0.1:2 -L download_binary
$ bash build_chain.sh -p 30300,20200 -l 127.0.0.1:2 -L /bin/fisco-bcos-lightnode
```


### **`e`选项[**Optional**]**

指定Air版本FISCO BCOS的二进制可执行文件路径,若不指定,则默认拉取最新版本的FISCO BCOS。
Expand Down Expand Up @@ -140,6 +139,7 @@ $ bash build_chain.sh -p 30300,20200 -l 127.0.0.1:2
- **区块链节点之间采用国密SSL连接**

搭建单机四节点国密区块链节点的示例如下:

```shell
$ bash build_chain.sh -l 127.0.0.1:4 -s -o gm_nodes
```
Expand All @@ -159,7 +159,6 @@ $ bash build_chain.sh -l 127.0.0.1:4 -s -o gm_nodes

扩容节点选项,用于指定扩容节点的配置文件路径,此路径须包括`config.ini, config.genesis, nodes.json`


### **`d`扩容选项**

扩容节点选项,用于指定扩容节点的CA证书和CA私钥所在目录。
Expand Down Expand Up @@ -229,6 +228,7 @@ Processing IP:127.0.0.1 Total:4
[INFO] output dir : nodes
[INFO] All completed. Files in nodes
```

生成完区块链节点文件,启动节点(nodes/127.0.0.1/start_all.sh)和节点监控(nodes/monitor/start_monitor.sh),根据提示登录grafana(用户名密码为admin/admin)导入Dashboard([github源码](https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/tools/template/Dashboard.json))和配置prometheus源(http://ip:9090/)查看各个指标实时展示。

### **`i`扩容节点监控选项[**Optional**]**
Expand All @@ -243,10 +243,6 @@ Processing IP:127.0.0.1 Total:4

可选参数,生成节点目录的同时生成相应的压缩包,方便多机部署时拷贝。

### **`z`生成节点目录压缩包[**Optional**]**

可选参数,生成节点目录的同时生成相应的压缩包,方便多机部署时拷贝。

### **`h`选项[**Optional**]**

查看脚本使用用法。
Expand Down
4 changes: 3 additions & 1 deletion 3.x/zh_CN/docs/tutorial/air/expand_node.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Air版本区块链扩容时,需要提前准备证书和配置文件,用于
.. note::
Air版本区块链节点根证书位于搭链时生成的目录下,可进入搭建节点时生成的文件夹(如:`搭建第一个区块链网络 <../../quick_start/air_installation.html>`_ 生成的节点配置文件夹是`nodes`),通过 ``find . -name ca`` 查找链的根证书
```

这里以[搭建第一个区块链网络](../quick_start.md)为基础,基于`node0`扩容一个新节点`node4`为例:

```shell
Expand Down Expand Up @@ -83,6 +84,7 @@ cd ~/fisco
# -o: 指定扩容节点配置所在目录
bash build_chain.sh -C expand -c config -d config/ca -o nodes/127.0.0.1/node4
```

当节点输出`All completed. Files in nodes/127.0.0.1/node4`说明生成扩容配置成功,输出的日志如下:

```shell
Expand Down Expand Up @@ -150,6 +152,7 @@ fisco 78968 3.6 0.1 5110764 19116 s005 S 6:16下午 0:21.27 /
```

**步骤2:确定节点NodeID**

```shell
# 进入操作目录
$ cd ~/fisco
Expand Down Expand Up @@ -191,7 +194,6 @@ Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.

## 4. 将扩容节点加入为共识节点


```eval_rst
.. note::
为了保证新节点加入不影响共识,须先将扩容节点加入为观察节点,当扩容节点同步到最新区块时,再将其加入到共识节点。
Expand Down

0 comments on commit 67187e3

Please sign in to comment.