Skip to content

Commit

Permalink
modify typos and add annotation (#896)
Browse files Browse the repository at this point in the history
* update doc of build_chain.sh (#895)
* modify typos and add annotation
Co-authored-by: Xingqang Bai <bxq2011hust@qq.com>
  • Loading branch information
sulenn committed Jul 29, 2020
1 parent 5288a55 commit eae8641
Show file tree
Hide file tree
Showing 22 changed files with 211 additions and 39 deletions.
2 changes: 1 addition & 1 deletion docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -1314,7 +1314,7 @@ FISCO BCOS RPC接口错误码及其对应的含义如下:
| -51001 | table name and address does not exist | |
| -51002 | table name overflow | |
| -51003 | contract not exist | |
| -51004 | committee member permission managed by ChainGoverance | |
| -51004 | committee member permission managed by ChainGovernance | |
| -51100 | invalid node ID | SDK错误码 |
| -51101 | the last sealer cannot be removed | |
| -51102 | the node is not reachable | SDK错误码 |
Expand Down
2 changes: 1 addition & 1 deletion docs/design/consensus/raft.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Raft算法将时间划分为不定长度的任期Terms,Terms为连续的数字
* **VoteReq**:投票请求,由Candidate节点主动发出,用于向网络中其他节点请求投票以竞选Leader;
* **VoteResp**:投票响应,在节点收到投票请求后,用于对投票请求进行响应,响应内容为同意或拒绝该投票请求;
* **Heartbeat**:心跳,由Leader节点主动周期发出,其作用有两个:(1) 用于维护Leader节点身份,只要Leader能够一直正常发送心跳且被其他节点响应,Leader身份就不会发生变化;(2) 区块数据复制,当Leader节点成功打包一个区块后,会将区块数据编码至心跳中以将区块进行广播,其他节点在收到该心跳后会解码出区块数据并将区块放入自己的缓冲区中;
* **HeartbeatResp**:心跳响应,在节点收到心跳后后,用于对心跳进行效应,特别的,当收到一个包含区块数据的心跳时,该心跳的响应中会带上该区块的哈希;
* **HeartbeatResp**:心跳响应,在节点收到心跳后,用于对心跳进行响应,特别的,当收到一个包含区块数据的心跳时,该心跳的响应中会带上该区块的哈希;

所有消息共有的字段如下表所示:

Expand Down
2 changes: 1 addition & 1 deletion docs/design/consensus/rpbft.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ rPBFT算法目前实现中,轮流将共识委员列表节点替换为验证节
**计算共识周期rotatingRound**

设当前块高为`blockNum``epoch_block_num`生效块高为`enableNum`,则共识周期为:
`rotatingRound = (blockNumber - enableNum) % epoch_block_num`
`rotatingRound = (blockNumber - enableNum) / epoch_block_num`

**确定共识委员起始节点索引**: `N`为共识节点总数,索引从`(rotatingRound * epoch_block_num) % N``(rotatingRound * epoch_block_num + epoch_sealer_num) % N`之间的节点均属于共识委员节点

Expand Down
2 changes: 1 addition & 1 deletion docs/design/protocol_description.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ v2.0.0-rc2以前的P2PMessage定义请[参考这里](https://fisco-bcos-document

#### AMOP消息包

AMOP消息包继承ChannelMessage包机构,在data字段添加了自定义内容。包括`0x30,0x31,0x35,0x1001`
AMOP消息包继承ChannelMessage包结构,在data字段添加了自定义内容。包括`0x30,0x31,0x35,0x1001`

||长度Byte|说明|
|:--|:--|:--|
Expand Down
7 changes: 6 additions & 1 deletion docs/manual/amop_protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,11 @@ public class Channel2Client {
}
```

```eval_rst
.. note::
- 如果使用 2.5.0 版本的 FISCO BCOS,那么服务端和客户端需要连接不同的节点
```

## Topic认证功能

在普通的配置下,任何一个监听了某topic的接收者都能接受到发送者推送的消息。但在某些场景下,发送者只希望特定的接收者能接收到消息,不希望无关的接收者能任意的监听此topic。在此场景下,需要使用Topic认证功能。
Expand Down Expand Up @@ -335,7 +340,7 @@ public class Channel2Client {
<property name="orgID" value="fisco" />
<property name="allChannelConnections" ref="groupChannelConnectionsConfig"></property>
<!-- topic认证功能的配置项 -->
<property name="topic2KeyInfo" ref="amopVerifyTopicToKeyInfo"></property>>
<property name="topic2KeyInfo" ref="amopVerifyTopicToKeyInfo"></property>
</bean>
<!-- 这里配置的是topic到公私钥配置信息的映射关系,这里只配置了一个topic,可以通过新增entry的方式来新增映射关系。-->
Expand Down
87 changes: 86 additions & 1 deletion docs/manual/build_chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,20 @@ FISCO BCOS提供了`build_chain.sh`脚本帮助用户快速搭建FISCO BCOS联
Usage:
-l <IP list> [Required] "ip1:nodeNum1,ip2:nodeNum2" e.g:"192.168.0.1:2,192.168.0.2:3"
-f <IP list file> [Optional] split by line, every line should be "ip:nodeNum agencyName groupList p2p_port,channel_port,jsonrpc_port". eg "127.0.0.1:4 agency1 1,2 30300,20200,8545"
-v <FISCO-BCOS binary version> Default is the latest v${default_version}
-e <FISCO-BCOS binary path> Default download fisco-bcos from GitHub. If set -e, use the binary at the specified location
-o <Output Dir> Default ./nodes/
-p <Start Port> Default 30300,20200,8545 means p2p_port start from 30300, channel_port from 20200, jsonrpc_port from 8545
-q <List FISCO-BCOS releases> List FISCO-BCOS released versions
-i <Host ip> Default 127.0.0.1. If set -i, listen 0.0.0.0
-v <FISCO-BCOS binary version> Default get version from https://github.com/FISCO-BCOS/FISCO-BCOS/releases. If set use specificd version binary
-s <DB type> Default rocksdb. Options can be rocksdb / mysql / scalable, rocksdb is recommended
-d <docker mode> Default off. If set -d, build with docker
-c <Consensus Algorithm> Default PBFT. Options can be pbft / raft /rpbft, pbft is recommended
-C <Chain id> Default 1. Can set uint.
-g <Generate guomi nodes> Default no
-z <Generate tar packet> Default no
-t <Cert config file> Default auto generate
-6 <Use ipv6> Default no. If set -6, treat IP as IPv6
-k <The path of ca root> Default auto generate, the ca.crt and ca.key must in the path, if use intermediate the root.crt must in the path
-K <The path of sm crypto ca root> Default auto generate, the gmca.crt and gmca.key must in the path, if use intermediate the gmroot.crt must in the path
-D <Use Deployment mode> Default false, If set -D, use deploy mode directory struct and make tar
Expand All @@ -53,9 +55,11 @@ e.g
## 选项介绍
### **`l`选项:**
用于指定要生成的链的IP列表以及每个IP下的节点数,以逗号分隔。脚本根据输入的参数生成对应的节点配置文件,其中每个节点的端口号默认从30300开始递增,所有节点属于同一个机构和群组。
### **`f`选项**
+ 用于根据配置文件生成节点,相比于`l`选项支持更多的定制。
+ 按行分割,每一行表示一个服务器,格式为`IP:NUM AgencyName GroupList`,每行内的项使用空格分割,**不可有空行**
+ `IP:NUM`表示机器的IP地址以及该机器上的节点数。`AgencyName`表示机构名,用于指定使用的机构证书。`GroupList`表示该行生成的节点所属的组,以`,`分割。例如`192.168.0.1:2 agency1 1,2`表示`ip``192.168.0.1`的机器上有两个节点,这两个节点属于机构`agency1`,属于group1和group2。
Expand Down Expand Up @@ -98,12 +102,19 @@ $ bash build_chain.sh -l "127.0.0.1:4" -e bin/fisco-bcos
$ bash build_chain.sh -l 127.0.0.1:2 -p 30300,20200,8545
```
### **`q`选项[**Optional**]**
列出FISCO BCOS已经发布的所有版本号。
### **`v`选项[**Optional**]**
用于指定搭建FISCO BCOS时使用的二进制版本。build_chain默认下载[Release页面](https://github.com/FISCO-BCOS/FISCO-BCOS/releases)最新版本,设置该选项时下载参数指定`version`版本并设置`config.ini`配置文件中的`[compatibility].supported_version=${version}`。如果同时使用`-e`选项,则配置`[compatibility].supported_version=${version}`为[Release页面](https://github.com/FISCO-BCOS/FISCO-BCOS/releases)最新版本号。
### **`d`选项[**Optional**]**
使用docker模式搭建FISCO BCOS,使用该选项时不再拉取二进制,但要求用户启动节点机器安装docker且账户有docker权限,即用户加入docker群组。
在节点目录下执行如下命令启动节点
```bash
$ ./start.sh
```
Expand All @@ -114,6 +125,7 @@ $ docker run -d --rm --name ${nodePath} -v ${nodePath}:/data --network=host -w=/
```
### **`s`选项[**Optional**]**
有参数选项,参数为db名,目前支持rocksdb、mysql、external、scalable。默认使用RocksDB。
- RocksDB模式,使用RocksDB作为后端数据库。
Expand All @@ -122,6 +134,7 @@ $ docker run -d --rm --name ${nodePath} -v ${nodePath}:/data --network=host -w=/
- scalable模式,区块数据和状态数据存储在不同的数据库中,区块数据根据配置存储在以块高命名的RocksDB实例中。如需使用裁剪数据的功能,必须使用scalable模式。
### **`c`选项[**Optional**]**
有参数选项,参数为共识算法类型,目前支持PBFT、Raft、rPBFT。默认共识算法是PBFT。
- `PBFT`:设置节点共识算法为[PBFT](../design/consensus/pbft.md)。
Expand All @@ -137,15 +150,23 @@ $ bash build_chain.sh -l 127.0.0.1:2 -C 2
```
### **`g`选项[**Optional**]**
无参数选项,设置该选项时,搭建国密版本的FISCO BCOS。**使用`g`选项时要求二进制fisco-bcos为国密版本**
### **`z`选项[**Optional**]**
无参数选项,设置该选项时,生成节点的tar包。
### **`t`选项[**Optional**]**
该选项用于指定生成证书时的证书配置文件。
### **`6`选项[**Optional**]**
该选项表示使用IPv6模式,监听`::`
### **`T`选项[**Optional**]**
无参数选项,设置该选项时,设置节点的log级别为DEBUG。log相关配置[参考这里](./configuration.html#id6)。
### **`k`选项[**Optional**]**
Expand Down Expand Up @@ -216,6 +237,42 @@ nodes/
│   └── cert.cnf
```
## 工具脚本
介绍由build_chain.sh生成的脚本。
### start_all.sh
启动当前目录下的所有节点。
### stop_all.sh
停止当前目录下的所有节点。
### download_console.sh
下载console的脚本。
- `v`选项支持下载指定版本的console
- `f`选项自动配置下载的console的证书和端口
### download_bin.sh
用于下载fisco-bcos二进制程序,选项如下。
```bash
Usage:
-v <Version> Download binary of spectfic version, default latest
-b <Branch> Download binary of spectfic branch
-o <Output Dir> Default ./bin
-l List FISCO-BCOS released versions
-m Download mini binary, only works with -b option
-h Help
e.g
./download_bin.sh -v 2.6.0
```
## 使用举例
### 无外网条件的单群组
Expand Down Expand Up @@ -320,6 +377,34 @@ bash gen_node_cert.sh -c ../cert/agency -o newNodeGm -g ../gmcert/agency/
5. 通过console将新节点加入群组1,请参考[这里](./console.html#addsealer)和[这里](./node_management.html#id7),`nodeID`可以通过命令`cat newNode/conf/node.nodeid`来获取
6. 检查连接和共识
### 为结构生成新的SDK证书
接下来的操作,都在上一节生成的`nodes/127.0.0.1`目录下进行
1. 获取证书生成脚本
```bash
curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh
```
```eval_rst
.. note::
- 如果因为网络问题导致长时间无法下载,请尝试 `curl -LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master/tools/gen_node_cert.sh`
```
2. 生成新节点私钥证书
```bash
# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中newSDK中会存在机构agency新签发的证书和私钥
bash gen_node_cert.sh -c ../cert/agency -o newSDK -s
```
国密版本请执行下面的指令生成证书。
```bash
bash gen_node_cert.sh -c ../cert/agency -o newSDK -g ../gmcert/agency/ -s
```
### 生成新机构证书
1. 获取机构证书生成脚本
Expand Down
5 changes: 3 additions & 2 deletions docs/manual/get_executable.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ sudo apt install -y g++ libssl-dev openssl cmake git build-essential autoconf te
推荐使用CentOS7以上版本。

```bash
$ sudo yum install -y epel-release
$ sudo yum install -y openssl-devel openssl cmake3 gcc-c++ git flex patch bison gmp-static
$ sudo yum install -y epel-release centos-release-scl
$ sudo yum install -y openssl-devel openssl cmake3 gcc-c++ git flex patch bison gmp-static devtoolset-7
```

- macOS
Expand All @@ -74,6 +74,7 @@ git clone https://github.com/FISCO-BCOS/FISCO-BCOS.git
$ cd FISCO-BCOS
$ git checkout master
$ mkdir -p build && cd build
$ source /opt/rh/devtoolset-7/enable # CentOS请执行此命令,其他系统不需要
# CentOS请使用cmake3
$ cmake ..
# 高性能机器可添加-j4使用4核加速编译
Expand Down
26 changes: 13 additions & 13 deletions docs/manual/permission_control.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
注意这里使用账户1对应的控制台操作。

#### 验证账号3无权限执行委员操作
在账号3的控制台种操作,此处以链配置操作为例。
在账号3的控制台中操作,此处以链配置操作为例。

```
[group:1]> setSystemConfigByKey tx_count_limit 100
Expand All @@ -124,7 +124,7 @@
#### 撤销账号2的委员权限
此时系统中有两个委员,默认投票生效阈值50%,所以需要两个委员都投票撤销账号2的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。

1. 账号1投票撤销账号2的委员权限
- 账号1投票撤销账号2的委员权限
```bash
[group:1]> revokeCommitteeMember 0x85961172229aec21694d742a5bd577bedffcfec3
{
Expand All @@ -141,7 +141,7 @@

```

2. 账号2投票撤销账号2的委员权限
- 账号2投票撤销账号2的委员权限
```bash
[group:1]> revokeCommitteeMember 0x85961172229aec21694d742a5bd577bedffcfec3
{
Expand All @@ -160,7 +160,7 @@
先添加账户1、账户3为委员。然后更新委员1的票数为2。


1. 使用账号1的控制台添加账号3为委员
- 使用账号1的控制台添加账号3为委员
```bash
[group:1]> grantCommitteeMember 0x0b6f526d797425540ea70becd7adac7d50f4a7c0
{
Expand All @@ -177,7 +177,7 @@

```

2. 使用账号1的控制台投票更新账号1的票数为2
- 使用账号1的控制台投票更新账号1的票数为2
```bash
[group:1]> updateCommitteeMemberWeight 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a 2
{
Expand All @@ -189,7 +189,7 @@
Account: 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a Weight: 1
```

3. 使用账号3的控制台投票更新账号1的票数为2
- 使用账号3的控制台投票更新账号1的票数为2
```bash
[group:1]> updateCommitteeMemberWeight 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a 2
{
Expand All @@ -204,7 +204,7 @@ Account: 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a Weight: 2
### 委员投票生效阈值修改
账户1和账户3为委员,账号1有2票,账号3有1票,使用账号1添加账号2为委员,由于2/3>0.5所以直接生效。使用账号1和账号2,更新生效阈值为75%。

1. 账户1添加账户2为委员
- 账户1添加账户2为委员
```bash
[group:1]> grantCommitteeMember 0x85961172229aec21694d742a5bd577bedffcfec3
{
Expand All @@ -221,7 +221,7 @@ Account: 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a Weight: 2
---------------------------------------------------------------------------------------------
```

2. 使用账户1控制台投票更新生效阈值为75%
- 使用账户1控制台投票更新生效阈值为75%
```bash
[group:1]> updateThreshold 75
{
Expand All @@ -234,7 +234,7 @@ Effective threshold : 50%

```

3. 使用账户2控制台投票更新生效阈值为75%
- 使用账户2控制台投票更新生效阈值为75%
```bash
[group:1]> updateThreshold 75
{
Expand All @@ -252,7 +252,7 @@ Effective threshold : 75%

基于职责权限分离的设计,委员角色不能兼有运维的权限,生成一个新的账号4`0x283f5b859e34f7fd2cf136c07579dcc72423b1b2.pem`

1. 添加账号4为运维角色
- 添加账号4为运维角色
```bash
[group:1]> grantOperator 0x283f5b859e34f7fd2cf136c07579dcc72423b1b2
{
Expand All @@ -267,20 +267,20 @@ Effective threshold : 75%
---------------------------------------------------------------------------------------------
```

2. 使用运维账号部署HelloWorld
- 使用运维账号部署HelloWorld
```bash
[group:1]> deploy HelloWorld
contract address: 0xac1e28ad93e0b7f9108fa1167a8a06585f663726
```

3. 使用账号1部署HelloWorld失败
- 使用账号1部署HelloWorld失败
```bash

[group:1]> deploy HelloWorld
permission denied
```

4. 使用账号1控制台撤销账号4的运维权限
- 使用账号1控制台撤销账号4的运维权限
```bash
[group:1]> revokeOperator 0x283f5b859e34f7fd2cf136c07579dcc72423b1b2
{
Expand Down
4 changes: 2 additions & 2 deletions docs/manual/smart_contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ FISCO BCOS平台目前支持Solidity及Precompiled两类合约形式。
```eval_rst
.. note::
为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在同一条链上的同一个群组中,创建多个表名相同的表
KVTable功能在2.3.0版本添加,2.3.0以上版本的链可以使用此功能。
- 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在同一条链上的同一个群组中,创建多个表名相同的表
- KVTable功能在2.3.0版本添加,2.3.0以上版本的链可以使用此功能。
```

KVTable合约实现键值型读写数据的方式,KVTable合约接口声明如下:
Expand Down

0 comments on commit eae8641

Please sign in to comment.