diff --git a/conf.py b/conf.py
index 56d933ba..a430f055 100644
--- a/conf.py
+++ b/conf.py
@@ -110,7 +110,7 @@
# The short X.Y version.
version = '1.4'
# The full version, including alpha/beta/rc tags.
-release = 'v1.4.0'
+release = 'v1.4.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/docs/WeBASE-Console-Suit/index.md b/docs/WeBASE-Console-Suit/index.md
index 54949bec..b9db2417 100644
--- a/docs/WeBASE-Console-Suit/index.md
+++ b/docs/WeBASE-Console-Suit/index.md
@@ -226,7 +226,34 @@ CRUD:CRUD通过在Solidity合约中支持分布式存储预编译合约,可
系统管理目前支持权限管理、系统配置管理、证书管理的功能。
-**权限管理**:支持链权限管理和普通权限(四种)管理:(基于FISCO BCOS 2.0.0 - 2.4.x的权限管理)
+**权限管理**
+
+**基于FISCO BCOS 2.5.0及以上版本的基于角色的权限管理**:支持链委员会管理和运维管理员管理:
+- **链委员会管理**:链委员会的修改操作均需要通过多个委员投票完成,链委员拥有投票权,可以增删节点、修改链配置、添加撤销运维、冻结解冻合约、对用户表的写权限控制;
+ - 修改委员会成员(新增/撤销委员)、修改委员投票阈值、修改委员投票权重值等操作均需要通过投票进行修改;
+ - 投票阈值为投票生效的阈值,**有效投票权重数/委员总权重数>生效阈值**投票才能生效,阈值为开区间,即:投票权重比例必须大于阈值(不包含等于);
+ - 每次投票操作,如果是委员投票,则记录操作内容和投票委员,不重复计票;
+ - 投票设置过期时间,根据块高,blockLimit的10倍(即10000),固定不可改;
+ - 用户不能同时成为链委员和运维管理员;
+- **运维管理**: 运维由链委员直接赋予(无需通过投票赋予),运维可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约;
+
+> **注:**链委员会为空时,不作链委员会权限限制,所有用户拥有委员权限,可以自由给自身或其他用户添加链委员权限;设置了第一个链委员后,非链委员用户无权限;请妥善保管链委员的私钥!
+>
+> 运维管理员为空时,所有用户拥有运维权限;同理,设置了第一个运维管理员后,非运维用户无权限;
+
+FISCO-BCOS基于角色的权限管理机制详情可以参考文档[使用手册-基于角色的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html#id2),具体的设计原理可以参考文档
+[系统设计-基于角色的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/security_control/chain_governance.html)
+
+链委员会管理:
+
+![](../../images/WeBASE-Console-Suit/governance_committee.png)
+
+运维管理员管理:
+
+![](../../images/WeBASE-Console-Suit/governance_operator.png)
+
+
+**基于FISCO BCOS 2.0.0 - 2.4.x版本的基于表的权限管理**:支持链权限管理和普通权限(四种)管理:
- 链权限管理为分配权限的链管理员,可以使用权限分配功能,非链管理员账户无权限分配功能;
- 普通权限管理包含四种权限: 部署合约和创建用户表权限, 节点管理权限, CNS管理权限, 系统参数管理权限;
@@ -234,7 +261,7 @@ CRUD:CRUD通过在Solidity合约中支持分布式存储预编译合约,可
>
> 普通权限管理员为空时,所有用户拥有特定功能,如:节点管理员为空时,所有用户可以管理节点状态,设置了第一个节点管理员后,非节点管理员不可管理节点状态;
-FISCO-BCOS权限管理机制详情可以参考文档[FISCO-BCOS权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html)
+FISCO-BCOS基于表的权限管理机制详情可以参考文档[FISCO-BCOS基于表的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html)
链权限管理:
@@ -377,10 +404,17 @@ FISCO-BCOS证书说明可以参考FISCO-BCOS使用手册的[证书说明](https:
### 账号管理
-账号管理提供管理台登陆账号的管理功能。管理台用户分为两种角色:
+账号管理提供管理台登陆账号的管理功能。管理台用户分为三种角色:
- 普通用户,只有查看权限;
+
- 管理员用户,拥有管理平台的读写权限;
+- 开发者用户,拥有开发者自身的合约和私钥用户的读写权限,数据概览权限;
+
+ 开发者模式默认关闭。如需开启此功能,可以在WeBASE-Node-Manager配置文件application.yml中修改developerModeEnable为true,然后重启服务。
+
+ ![](../../images/WeBASE-Console-Suit/developer_mode_enable.png)
+
注:此处账号与私钥管理的私钥用户为两种不同的概念,账号用于管理台权限控制,私钥用户为区块链账户。
账号管理:
diff --git a/docs/WeBASE-Front/appendix.md b/docs/WeBASE-Front/appendix.md
index 4666de3b..9f1f5b3e 100644
--- a/docs/WeBASE-Front/appendix.md
+++ b/docs/WeBASE-Front/appendix.md
@@ -2,46 +2,45 @@
## 1. 安装问题
+
### 1.1 Java部署
-此处给出OpenJDK安装简单步骤,供快速查阅。更详细的步骤,请参考[官网](https://openjdk.java.net/install/index.html)。
+#### CentOS环境安装Java
+
-#### ① 安装包下载
+**注意:CentOS下OpenJDK无法正常工作,需要安装OracleJDK[下载链接](https://www.oracle.com/technetwork/java/javase/downloads/index.html)。**
-从[官网](https://jdk.java.net/java-se-ri/11)下载对应版本的java安装包,并解压到服务器相关目录
-
-```shell
-mkdir /software
-tar -zxvf openjdkXXX.tar.gz /software/
```
+# 创建新的文件夹,安装Java 8或以上的版本,将下载的jdk放在software目录
+# 从Oracle官网(https://www.oracle.com/technetwork/java/javase/downloads/index.html)选择Java 8或以上的版本下载,例如下载jdk-8u201-linux-x64.tar.gz
+$ mkdir /software
-#### ② 配置环境变量
-
-- 修改/etc/profile
-
-```
-sudo vi /etc/profile
-```
+# 解压jdk
+$ tar -zxvf jdk-8u201-linux-x64.tar.gz
-- 在/etc/profile末尾添加以下信息
+# 配置Java环境,编辑/etc/profile文件
+$ vim /etc/profile
-```shell
-JAVA_HOME=/software/jdk-11
-PATH=$PATH:$JAVA_HOME/bin
-CLASSPATH==.:$JAVA_HOME/lib
-export JAVA_HOME CLASSPATH PATH
-```
+# 打开以后将下面三句输入到文件里面并保存退出
+export JAVA_HOME=/software/jdk-8u201 #这是一个文件目录,非文件
+export PATH=$JAVA_HOME/bin:$PATH
+export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-- 重载/etc/profile
+# 生效profile
+$ source /etc/profile
-```
-source /etc/profile
+# 查询Java版本,出现的版本是自己下载的版本,则安装成功。
+java -version
```
-#### ③ 查看版本
+#### Ubuntu环境安装Java
+
```
-java -version
+ # 安装默认Java版本(Java 8或以上)
+ sudo apt install -y default-jdk
+ # 查询Java版本
+ java -version
```
### 1.2 Gradle部署
@@ -152,7 +151,8 @@ FAILURE: Build failed with an exception.
nested exception is javax.net.ssl.SSLException: Failed to initialize the client-side SSLContext: Input stream not contain valid certificates.
```
-答:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点,因此在使用CentOS操作系统时,推荐从[OpenJDK网站](https://jdk.java.net/java-se-ri/11)自行下载。
+答:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点,因此在使用CentOS操作系统时,推荐使用[OracleJDK](#jdk)。
+
- 7:启动报错“Processing bcos message timeout”
@@ -163,7 +163,7 @@ org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating
...
```
-答:一些Oracle JDK版本缺少相关包,导致节点连接异常。推荐使用OpenJDK,从[OpenJDK网站](https://jdk.java.net/java-se-ri/11)自行下载。
+答:一些OpenJDK版本缺少相关包,导致节点连接异常。推荐使用[OracleJDK](#jdk)。
- 8:启动失败,日志却没有异常
diff --git a/docs/WeBASE-Front/install.md b/docs/WeBASE-Front/install.md
index b13ebf27..c2c86eac 100644
--- a/docs/WeBASE-Front/install.md
+++ b/docs/WeBASE-Front/install.md
@@ -7,7 +7,7 @@
| Java | JDK8或以上版本 |
| FISCO-BCOS | V2.0.x版本 |
-**备注:** Java推荐使用[OpenJDK](./appendix.html#java ),建议从[OpenJDK网站](https://jdk.java.net/java-se-ri/11) 自行下载(CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点)
+**备注:** Java推荐使用[OracleJDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html),可参考[JDK配置指引](./appendix.html#jdk)(CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点)
### 国密支持
diff --git a/docs/WeBASE-Front/interface.md b/docs/WeBASE-Front/interface.md
index af2f7b6f..6be8aef0 100644
--- a/docs/WeBASE-Front/interface.md
+++ b/docs/WeBASE-Front/interface.md
@@ -3139,6 +3139,9 @@ b、正确发送数据上链返回值信息(交易收据)
## 6. 系统管理接口
+使用FISCO BCOS v2.5.0 与 WeBASE-Front v1.4.1 (及)以上版本将使用预编译合约中的ChainGovernance接口(从本章节[接口6.13](#governance)开始),详情可参考[FISCO BCOS基于角色的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html#id2)
+
+
### 6.1. 查询权限接口
#### 6.1.1 查询权限接口
@@ -3970,7 +3973,7 @@ HTTP POST
| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
| 1 | groupId | Int | 否 | 群组编号 |
-| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号,当`handleType`为`getStatus`或`listManager`时,可不传 |
| 3 | contractAddress | String | 否 | 已部署的合约地址 |
| 4 | handleType | String | 否 | 操作类型:freeze-冻结;unfreeze-解冻;grantManager-授权;getStatus-查询合约状态;listManager-查询合约权限列表 |
| 5 | grantAddress | String | 是 | 授权用户地址,操作类型为grantManager时需传入 |
@@ -3999,6 +4002,481 @@ HTTP POST
}
```
+
+### 6.13. 基于角色的权限管理
+
+
+使用FISCO BCOS v2.5.0 与 WeBASE-Front v1.4.1 (及)以上版本将使用预编译合约中的ChainGovernance接口(本章节[接口6.13](#governance)),详情可参考[FISCO BCOS基于角色的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html#id2)
+
+包含链治理委员管理、链运维管理等功能
+
+### 6.13.1. 查看链治理委员列表
+
+#### 接口描述
+
+委员的权限包括治理投票、增删节点、冻结解冻合约、冻结解冻账号、修改链配置和增删运维账号。
+
+增加委员需要链治理委员会投票,有效票大于阈值才可以生效,且不重复计票
+- 委员默认的投票权重为1,默认投票生效阈值50%,若有两个委员,则需要两个委员都投票增加/撤销的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。
+- 投票有过期时间,根据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。‘
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/committee/list**
+
+#### 调用方法
+
+HTTP GET
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+
+***2)入参示例***
+
+```
+http://localhost:5002/WeBASE-Front/governance/committee/list?groupId=1
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+```
+[
+ {
+ "address": "0xd031e61f6dc4dedd7d77f90128ed33caafbed0af",
+ "enable_num": "2"
+ }
+]
+```
+
+
+### 6.13.2. 增加链治理委员
+
+#### 接口描述
+
+委员的权限包括治理投票、增删节点、冻结解冻合约、冻结解冻账号、修改链配置和增删运维账号。
+
+增加委员需要链治理委员会投票,有效票大于阈值才可以生效,且不重复计票
+- 委员默认的投票权重为1,默认投票生效阈值50%,若有两个委员,则需要两个委员都投票增加/撤销的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。
+- 投票有过期时间,根据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。‘
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/committee**
+
+#### 调用方法
+
+HTTP POST
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 3 | address | String | 否 | 新的链治理委员地址
+
+***2)入参示例***
+
+```
+{
+ "groupId": 1,
+ "signUserId": "user1001",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+透传链上返回结果
+```
+{
+ "code":0,
+ "msg":"success"
+}
+```
+
+
+### 6.13.3. 取消链治理委员
+
+#### 接口描述
+
+委员的权限包括治理投票、增删节点、冻结解冻合约、冻结解冻账号、修改链配置和增删运维账号。
+
+增加委员需要链治理委员会投票,有效票大于阈值才可以生效,且不重复计票
+- 委员默认的投票权重为1,默认投票生效阈值50%,若有两个委员,则需要两个委员都投票增加/撤销的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。
+- 投票有过期时间,根据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。‘
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/committee**
+
+#### 调用方法
+
+HTTP DELETE
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 3 | address | String | 否 | 待取消的链治理委员地址
+
+***2)入参示例***
+
+```
+{
+ "groupId": 1,
+ "signUserId": "user1001",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+透传链上返回结果
+```
+{
+ "code":0,
+ "msg":"success"
+}
+```
+
+
+### 6.13.4. 查看链治理委员投票权重
+
+#### 接口描述
+
+委员默认的投票权重为1
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/committee/weight**
+
+#### 调用方法
+
+HTTP GET
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | address | String | 否 | 链治理委员地址
+
+***2)入参示例***
+
+```
+http://localhost:5002/WeBASE-Front/governance/committee/weight?groupId=1&address=0x009fb217b6d7f010f12e7876d31a738389fecd51
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+成功时:直接返回权重值
+```
+2
+```
+
+失败时,如查询非委员用户的权重值:
+
+```
+{
+ "code": -52001,
+ "msg": "address not committee"
+}
+```
+
+### 6.13.5. 更新链治理委员投票权重
+
+#### 接口描述
+
+委员默认的投票权重为1
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/committee/weight**
+
+#### 调用方法
+
+HTTP PUT
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 3 | address | String | 否 | 链治理委员地址
+| 4 | weight | Int | 否 | 权重值 |
+
+***2)入参示例***
+
+```
+{
+ "groupId": 1,
+ "signUserId": "user1001",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e",
+ "weight": 2
+}
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+透传链上返回结果
+```
+{
+ "code":0,
+ "msg":"success"
+}
+```
+
+
+
+### 6.13.6. 查看链投票阈值
+
+#### 接口描述
+
+阈值默认为50,即票数>50%
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/threshold**
+
+#### 调用方法
+
+HTTP GET
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+
+***2)入参示例***
+
+```
+http://localhost:5002/WeBASE-Front/governance/threshold?groupId=1
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+直接返回threshold值
+```
+50
+```
+
+
+### 6.13.7. 更新链投票阈值
+
+#### 接口描述
+
+阈值默认为50,即票数>50%
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/threshold**
+
+#### 调用方法
+
+HTTP PUT
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 3 | address | String | 否 | 新的链治理委员地址
+| 4 | threshold | Int | 否 | 群组投票阈值 |
+
+***2)入参示例***
+
+```
+{
+ "groupId": 1,
+ "signUserId": "user1001",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e",
+ "threshold": 60
+}
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+透传链上返回结果
+```
+{
+ "code":0,
+ "msg":"success"
+}
+```
+
+
+### 6.13.8. 查看运维列表
+
+#### 接口描述
+
+由链治理委员添加运维账号,运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/operator/list**
+
+#### 调用方法
+
+HTTP GET
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+
+***2)入参示例***
+
+```
+http://localhost:5002/WeBASE-Front/governance/operator/list?groupId=1
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+```
+[
+ {
+ "address": "0x304852a7cc6511e62c37b6e189850861e41282b0",
+ "enable_num": "3"
+ }
+]
+```
+
+
+### 6.13.9. 增加运维接口
+
+#### 接口描述
+
+由链治理委员添加运维账号,运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/operator**
+
+#### 调用方法
+
+HTTP POST
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 3 | address | String | 否 | 新的运维地址
+
+***2)入参示例***
+
+```
+{
+ "groupId": 1,
+ "signUserId": "user1001",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+透传链上返回结果
+```
+{
+ "code":0,
+ "msg":"success"
+}
+```
+
+### 6.13.10. 取消运维接口
+
+#### 接口描述
+
+由链治理委员添加/取消运维账号;运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
+据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。
+
+#### 接口URL
+
+**http://localhost:5002/WeBASE-Front/governance/operator**
+
+#### 调用方法
+
+HTTP DELETE
+
+#### 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | groupId | Int | 否 | 群组编号 |
+| 2 | signUserId | String | 否 | WeBASE-Sign签名用户编号 |
+| 3 | address | String | 否 | 待取消的运维地址
+
+***2)入参示例***
+
+```
+{
+ "groupId": 1,
+ "signUserId": "user1001",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+#### 响应参数
+
+**1)数据格式**
+
+透传链上返回结果
+```
+{
+ "code":0,
+ "msg":"success"
+}
+```
+
## 7. 链上事件订阅接口
### 7.1. 获取出块事件的订阅信息列表
@@ -5229,7 +5707,7 @@ b、正确发送数据上链返回值信息(交易收据)
## 11. 附录
### 1. 返回码信息列表
-
+
| code | message | 描述 |
| ------ | -------------------------------------------- | -------------------------- |
@@ -5282,6 +5760,10 @@ b、正确发送数据上链返回值信息(交易收据)
| 201042 | There is no sol files in source | solidity文件不存在 |
| 201043 | invalid group operate type | 群组操作类型不正确 |
| 201044 | invalid data type | 不正确的数据类型 |
+| 201045 | encode string can not be empty | 已签名的参数内容不能为空 |
+| 201046 | transaction failed | 交易上链失败 |
+| 201050 | Fail to parse json | 链上返回值反序列化失败 |
+| 201051 | get consensus status fail | 交易上链失败 |
| 201101 | groupId cannot be empty | 群组编号不能为空 |
| 201102 | tableName cannot be empty | 表名不能为空 |
| 201103 | permissionType cannot be empty | 权限类型不能为空 |
@@ -5316,11 +5798,9 @@ b、正确发送数据上链返回值信息(交易收据)
| 201151 | Unsupported contract param type to encoded | 不支持编码的合约参数类型 |
| 201152 | Unsupported contract param type to decoded | 不支持解码的合约参数类型 |
| 201153 | unable to create instance of type, check input params | 无法创建该合约参数类型的实例,请检查入参 |
-
| 201200 | params not fit | 参数不符合要求 |
| 201201 | address is invalid | 账户地址不正确 |
| 201202 | permission denied, please check chain administrator permission | 权限不足,请检查用户 |
-
| 201208 | unsupported for this system config key | 不支持设置该系统配置 |
| 201209 | provide value by positive integer mode, from 100000 to 2147483647 | 请输入正值或[100000, 2147483647]范围的值 |
| 201210 | set system config value fail for params error or permission denied | 设置系统配置失败,请检查权限 |
@@ -5349,7 +5829,25 @@ b、正确发送数据上链返回值信息(交易收据)
| 201248 | Contract abi invalid, please check abi | 合约ABI格式错误,请检查入参 |
| 201255 | contract address already exists | 合约地址已存在 |
| 201256 | abi info of this id not exists | abi不存在 |
-| 201257 | Abi Id cannot be empty | abi编号不能为空 |
+| 201301 | threshold must be greater than zero | 链阈值必须大于0 |
+| 201302 | committee weight must be greater than zero | 链委员权重必须大于0 |
+| 201303 | chain governance address cannot be blank | 链管理委员/运维地址不能为空 |
+| 201501 | web3sdk create key pair fail and return null | sdk创建私钥对失败并返回Null |
+| 201502 | pem/p12 manager get key pair error for input params | pem/p12证书获取私钥对失败,检查入参 |
+| 201503 | pem/p12 manager get key pair error for bc dependency error | pem/p12证书获取私钥对失败,检查bc依赖包版本 |
+| 201504 | sign service return error | 签名服务并返回异常 |
+| 201510 | transaction receipt status return error | 交易回执状态码非0x0,交易执行失败 |
+| 201511 | contract abi parse json error | 合约ABI转JSON失败 |
+| 201512 | call contract error for io exception | 调用合约的交易上链失败 |
+| 201513 | get transaction receipt fail for exec | 获取交易回执失败,返回执行错误 |
+| 201514 | get transaction receipt fail for time out | 获取交易回执失败,链上链下请求超时 |
+| 201515 | transaction receipt fail and parse output fail | 转化交易回执中output输出值失败 |
+| 201516 | transaction receipt fail and output is null | 交易回执output为空 |
+| 201517 | call contract constant method fail | 合约状态异常,调用合约constant方法失败 |
+| 201521 | get list of manager on chain fail | 获取链上管理员列表失败 |
+| 201522 | table key length error | 用户表的键值长度大于最大值255 |
+| 201523 | crud's param parse json error | CRUD方法的入参转Entry/Condition失败,请检查入参 |
+| 201524 | precompiled common transfer to json fail | 预编译错误码转JSON失败 |
### 2. Precompiled Service说明
@@ -5402,4 +5900,25 @@ contract TableFactory {
| -51500 | contract name and version already exist | |
| -51501 | condition parse error | |
| -51502 | condition operation undefined | |
-
+| -51600 | invalid ciphers | |
+| -51700 | group sig failed | |
+| -51800 | ring sig failed | |
+| -51900 | contract frozen | |
+| -51901 | contract available | |
+| -51902 | contract repeat authorization | |
+| -51903 | invalid contract address | |
+| -51904 | table not exist | |
+| -51905 | no authorized | |
+| -52000 | committee member exist | |
+| -52001 | committee member not exist | |
+| -52002 | invalid request permission denied | |
+| -52003 | invalid threshold | |
+| -52004 | operator can't be committee member | |
+| -52005 | committee member can't be operator | |
+| -52006 | operator exist | |
+| -52007 | operator not exist | |
+| -52008 | account not exist | |
+| -52009 | invalid account address | |
+| -52010 | account already available | |
+| -52011 | account frozen | |
+| -52012 | current value is expected value | |
diff --git a/docs/WeBASE-Front/upgrade.md b/docs/WeBASE-Front/upgrade.md
index b48b716e..0c6efe27 100644
--- a/docs/WeBASE-Front/upgrade.md
+++ b/docs/WeBASE-Front/upgrade.md
@@ -2,6 +2,12 @@
WeBASE-Front升级的兼容性说明,请结合[WeBASE-Front Changelog](https://github.com/WeBankFinTech/WeBASE-Front)进行阅读
+#### v1.4.1
+
+##### 新增链权限接口与web3接口
+- 新增ChainGovernance接口
+- 新增getBlockHeaderByHash与getBlockHeaderByNumber接口
+
#### v1.4.0
##### 增加版本号接口
diff --git a/docs/WeBASE-Install/developer.md b/docs/WeBASE-Install/developer.md
index d273188c..c1095608 100644
--- a/docs/WeBASE-Install/developer.md
+++ b/docs/WeBASE-Install/developer.md
@@ -17,7 +17,7 @@
1. 下载安装包
```shell
- wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.0/webase-front.zip
+ wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.1/webase-front.zip
```
diff --git a/docs/WeBASE-Install/visual_deploy.md b/docs/WeBASE-Install/visual_deploy.md
index 01c35be1..6ec562c8 100644
--- a/docs/WeBASE-Install/visual_deploy.md
+++ b/docs/WeBASE-Install/visual_deploy.md
@@ -11,8 +11,6 @@
在进行可视化部署之前,请按照部署要求,准备相应的部署环境。
-
-
#### 系统环境
##### 硬件配置
@@ -273,7 +271,6 @@ http://{deployIP}:{webPort}
- 删除节点时,节点必须处于停止状态;
-
### 常见问题
@@ -317,8 +314,8 @@ yum localinstall containerd.io-1.2.13-3.2.el7.x86_64.rpm
#### 拉取 Docker 镜像
镜像版本:
-- v2.5.0
-- v2.5.0-gm
+- v2.6.0
+- v2.6.0-gm
**提示:**
- 最近的镜像版本,请参考:[https://hub.docker.com/r/fiscoorg/fisco-webase/tags](https://hub.docker.com/r/fiscoorg/fisco-webase/tags)
@@ -329,12 +326,12 @@ yum localinstall containerd.io-1.2.13-3.2.el7.x86_64.rpm
```Bash
# 检查本地是否有镜像
-docker images -a |grep -i "fiscoorg/fisco-webase" | grep -i v2.5.0
+docker images -a |grep -i "fiscoorg/fisco-webase" | grep -i v2.6.0
# 如果有如下输出,表示本地已有镜像;否则表示本地没有镜像
-fiscoorg/fisco-webase v2.5.0 bf4a26d5d389 5 days ago 631MB
+fiscoorg/fisco-webase v2.6.0 bf4a26d5d389 5 days ago 631MB
# 如果是国密,版本号会带 -gm
-fiscoorg/fisco-webase v2.5.0-gm bf4a26d5d389 5 days ago 631MB
+fiscoorg/fisco-webase v2.6.0-gm bf4a26d5d389 5 days ago 631MB
```
* 如果本地没有镜像(如果本地有镜像,跳过)
@@ -344,9 +341,9 @@ fiscoorg/fisco-webase v2.5.0-gm bf4a26d5d389 5 days ago 631MB
```Bash
# 从 CDN 拉取镜像 tar 文件
# 非国密
- wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.0/docker-fisco-webase.tar
+ wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.1/docker-fisco-webase.tar
# 国密
- wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.0/docker-fisco-webase-gm.tar
+ wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.1/docker-fisco-webase-gm.tar
# 解压镜像 tar 文件
docker load -i docker-fisco-webase.tar
@@ -356,14 +353,16 @@ fiscoorg/fisco-webase v2.5.0-gm bf4a26d5d389 5 days ago 631MB
```Bash
# 执行 Docker 拉取命令
- docker pull fiscoorg/fisco-webase:v2.5.0
+ docker pull fiscoorg/fisco-webase:v2.6.0
+ # 国密
+ docker pull fiscoorg/fisco-webase:v2.6.0-gm
```
* 压缩镜像到 `tar` 文件
```Bash
# 压缩镜像为 tar 文件
-docker save -o docker-fisco-webase.tar fiscoorg/fisco-webase:v2.5.0
+docker save -o docker-fisco-webase.tar fiscoorg/fisco-webase:v2.6.0
```
* 发送镜像 `tar` 文件到部署节点的主机
@@ -387,9 +386,9 @@ docker load -i docker-fisco-webase.tar
docker images -a |grep -i "fiscoorg/fisco-webase"
# 如果有如下输出,表示拉取成功
-fiscoorg/fisco-webase v2.5.0 bf4a26d5d389 5 days ago 631MB
+fiscoorg/fisco-webase v2.6.0 bf4a26d5d389 5 days ago 631MB
# 如果是国密,版本号会带 -gm
-fiscoorg/fisco-webase v2.5.0-gm bf4a26d5d389 5 days ago 631MB
+fiscoorg/fisco-webase v2.6.0-gm bf4a26d5d389 5 days ago 631MB
```
#### 手动下载 TASSL
diff --git a/docs/WeBASE-Node-Manager/appendix.md b/docs/WeBASE-Node-Manager/appendix.md
index 4adbf210..b3cabc04 100644
--- a/docs/WeBASE-Node-Manager/appendix.md
+++ b/docs/WeBASE-Node-Manager/appendix.md
@@ -1,7 +1,76 @@
## 附录
-### 1. 问题及方案
-#### 一般问题
+
+### 1. 安装问题
+
+#### 1.1 Java部署
+
+
+##### CentOS环境安装Java
+
+
+**注意:CentOS下OpenJDK无法正常工作,需要安装OracleJDK[下载链接](https://www.oracle.com/technetwork/java/javase/downloads/index.html)。**
+
+```
+# 创建新的文件夹,安装Java 8或以上的版本,将下载的jdk放在software目录
+# 从Oracle官网(https://www.oracle.com/technetwork/java/javase/downloads/index.html)选择Java 8或以上的版本下载,例如下载jdk-8u201-linux-x64.tar.gz
+$ mkdir /software
+
+# 解压jdk
+$ tar -zxvf jdk-8u201-linux-x64.tar.gz
+
+# 配置Java环境,编辑/etc/profile文件
+$ vim /etc/profile
+
+# 打开以后将下面三句输入到文件里面并保存退出
+export JAVA_HOME=/software/jdk-8u201 #这是一个文件目录,非文件
+export PATH=$JAVA_HOME/bin:$PATH
+export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
+
+# 生效profile
+$ source /etc/profile
+
+# 查询Java版本,出现的版本是自己下载的版本,则安装成功。
+java -version
+```
+
+##### Ubuntu环境安装Java
+
+
+```
+ # 安装默认Java版本(Java 8或以上)
+ sudo apt install -y default-jdk
+ # 查询Java版本
+ java -version
+```
+
+#### 1.2 Gradle部署
+
+此处给出简单步骤,供快速查阅。更详细的步骤,请参考[官网](http://www.gradle.org/downloads)。
+
+(1)从[官网](http://www.gradle.org/downloads)下载对应版本的Gradle安装包,并解压到相应目录
+
+```shell
+mkdir /software/
+unzip -d /software/ gradleXXX.zip
+```
+
+(2)配置环境变量
+
+```shell
+export GRADLE_HOME=/software/gradle-4.9
+export PATH=$GRADLE_HOME/bin:$PATH
+```
+
+(3)查看版本
+
+```
+gradle -version
+```
+
+
+### 2. 常见问题及方案
+##### 一般问题
* 问:执行shell脚本报下面错误:
```
[app@VM_96_107_centos deployInputParam]$ bash start.sh
@@ -16,7 +85,7 @@ dos2unix *.sh
```
-#### 数据库问题
+##### 数据库问题
* 问:服务访问数据库抛出异常:
```
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
@@ -38,7 +107,7 @@ ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (110)
GRANT ALL PRIVILEGES ON *.* TO 'TestUser'@'%' IDENTIFIED BY '此处为TestUser的密码’' WITH GRANT OPTION;
```
-#### WeBASE-Node-Manager服务搭建问题
+##### WeBASE-Node-Manager服务搭建问题
* 问:执行构建命令`gradle build -x test`抛出异常:
```
A problem occurred evaluating root project 'WeBASE-Node-Manager'.
@@ -48,7 +117,7 @@ Could not find method compileOnly() for arguments [[org.projectlombok:lombok:1.1
方法1、已安装的Gradle版本过低,升级Gradle版本到4.10以上即可。
方法2、直接使用命令:`./gradlew build -x test`,如果提示gradlew为非可执行文件,执行`chmod +x ./gradlew`再次执行build操作即可。
-#### 启动问题
+##### 启动问题
* 问:启动Node-Manager进程后,后台日志显示`not found any front`:
@@ -114,7 +183,7 @@ Could not find method compileOnly() for arguments [[org.projectlombok:lombok:1.1
| scheduler.awaitTerminationSeconds | 600 | 定时任务的线程等待超时时长(秒) |
| scheduler.waitForTasksToCompleteOnShutdown | true | 定时任务完成后再停止线程 |
-### 3. 升级兼容性
+#### 3. 升级兼容性
请查看[升级说明](upgrade.md)
diff --git a/docs/WeBASE-Node-Manager/install.md b/docs/WeBASE-Node-Manager/install.md
index 7fb3d70c..ed81c7f4 100644
--- a/docs/WeBASE-Node-Manager/install.md
+++ b/docs/WeBASE-Node-Manager/install.md
@@ -11,8 +11,8 @@
## 2. 注意事项
-* Java推荐使用[OpenJDK](https://openjdk.java.net/ ),建议从OpenJDK网站自行下载(CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点)[下载地址](https://jdk.java.net/java-se-ri/11) [安装指南](https://openjdk.java.net/install/index.html)
-* 在服务搭建的过程中,如碰到问题,请查看 [常见问题解答](./install_FAQ.md)
+* Java推荐使用[OracleJDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html),[JDK配置指引](./appendix.html#jdk)
+* 在服务搭建的过程中,如碰到问题,请查看 [常见问题解答](./install_FAQ.html)
* 安全温馨提示: 强烈建议设置复杂的数据库登录密码,且严格控制数据操作的权限和网络策略
**通过WeBASE-Sign私钥管理**
diff --git a/docs/WeBASE-Node-Manager/interface.md b/docs/WeBASE-Node-Manager/interface.md
index c8b43dff..9bdfd9c1 100644
--- a/docs/WeBASE-Node-Manager/interface.md
+++ b/docs/WeBASE-Node-Manager/interface.md
@@ -189,10 +189,10 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/front/find
}
```
-
### 1.3 删除前置信息
#### 1.3.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/front/{frontId}**
* 请求方式:DELETE
@@ -203,9 +203,9 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/front/find
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | frontId | int | 否 | 前置编号 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | -------- | ---- | ------ | -------- |
+| 1 | frontId | int | 否 | 前置编号 |
***2)入参示例***
@@ -219,15 +219,74 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/front/500001
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(空) |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(空) |
+
+
+***2)出参示例***
+
+* 成功:
+
+```
+{
+ "code": 0,
+ "data": {},
+ "message": "Success"
+}
+```
+
+* 失败:
+
+```
+{
+ "code": 102000,
+ "message": "system exception",
+ "data": {}
+}
+```
+
+### 1.4 刷新前置信息
+
+#### 1.3.1 传输协议规范
+
+* 网络传输协议:使用HTTP协议
+* 请求地址:**/front/refresh**
+* 请求方式:GET
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 1.3.2 请求参数
+
+***1)入参表***
+
+无
+
+
+***2)入参示例***
+
+```
+http://127.0.0.1:5001/WeBASE-Node-Manager/front/refresh
+```
+
+
+#### 1.3.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(空) |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -237,6 +296,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/front/500001
```
* 失败:
+
```
{
"code": 102000,
@@ -1258,11 +1318,11 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/block/blockByNumber/1/11
## 5 合约管理模块
-
### 5.1 查询合约列表
#### 5.1.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/contract/contractList/{groupId}/{pageNumber}/{pageSize}**
* 请求方式:POST
@@ -1273,14 +1333,15 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/block/blockByNumber/1/11
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 群组id |
-| 2 | contractName | String | 否 | 合约名 |
-| 3 | contractAddress | String | 否 | 合约地址 |
-| 4 | pageSize | int | 否 | 每页记录数 |
-| 5 | pageNumber | int | 否 | 当前页码 |
-| 6 | contractStatus | int | 否 | 1未部署,2已部署 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ---------------- |
+| 1 | groupId | int | 否 | 群组id |
+| 2 | contractName | String | 是 | 合约名 |
+| 3 | contractAddress | String | 是 | 合约地址 |
+| 4 | pageSize | int | 否 | 每页记录数 |
+| 5 | pageNumber | int | 否 | 当前页码 |
+| 6 | contractStatus | int | 是 | 1未部署,2已部署 |
+| 7 | account | String | 是 | 关联账户 |
***2)入参示例***
@@ -1288,36 +1349,43 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/block/blockByNumber/1/11
http://127.0.0.1:5001/WeBASE-Node-Manager/contract/contractList
```
+```
+{"groupId":"1","pageNumber":1,"pageSize":500}
+```
+
#### 5.1.3 返回参数
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | totalCount | Int | 否 | 总记录数 |
-| 4 | data | List | 是 | 列表 |
-| 5.1 | | Object | | 返回信息实体 |
-| 5.1.1 | contractId | int | 否 | 合约编号 |
-| 5.1.2 | contractPath | String | 否 | 合约所在目录 |
-| 5.1.3 | contractName | String | 否 | 合约名称 |
-| 5.1.4 | groupId | Int | 否 | 所属群组编号 |
-| 5.1.5 | contractStatus | int | 否 | 1未部署,2已部署 |
-| 5.1.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
-| 5.1.7 | contractSource | String | 否 | 合约源码base64 |
-| 5.1.8 | contractAbi | String | 是 | 合约编译后生成的abi文件内容 |
-| 5.1.9 | contractBin | String | 是 | 合约编译后生成的bin,可用于交易解析 |
-| 5.1.10 | bytecodeBin | String | 是 | 合约编译后生成的bytecodeBin,可用于合约部署 |
-| 5.1.11 | contractAddress | String | 是 | 合约地址 |
-| 5.1.12 | deployTime | LocalDateTime | 是 | 部署时间 |
-| 5.1.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
-| 5.1.14 | description | String | 是 | 备注 |
-| 5.1.15 | createTime | LocalDateTime | 否 | 创建时间 |
-| 5.1.16 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ------ | --------------- | ------------- | ---- | ------------------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | totalCount | Int | 否 | 总记录数 |
+| 4 | data | List | 是 | 列表 |
+| 5.1 | | Object | | 返回信息实体 |
+| 5.1.1 | contractId | int | 否 | 合约编号 |
+| 5.1.2 | contractPath | String | 否 | 合约所在目录 |
+| 5.1.3 | contractName | String | 否 | 合约名称 |
+| 5.1.4 | groupId | Int | 否 | 所属群组编号 |
+| 5.1.5 | contractStatus | int | 否 | 1未部署,2已部署 |
+| 5.1.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
+| 5.1.7 | contractSource | String | 否 | 合约源码base64 |
+| 5.1.8 | contractAbi | String | 是 | 合约编译后生成的abi文件内容 |
+| 5.1.9 | contractBin | String | 是 | 合约编译后生成的bin,可用于交易解析 |
+| 5.1.10 | bytecodeBin | String | 是 | 合约编译后生成的bytecodeBin,可用于合约部署 |
+| 5.1.11 | contractAddress | String | 是 | 合约地址 |
+| 5.1.12 | deployTime | LocalDateTime | 是 | 部署时间 |
+| 5.1.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
+| 5.1.14 | description | String | 是 | 备注 |
+| 5.1.15 | account | String | 是 | 关联账户 |
+| 5.1.16 | createTime | LocalDateTime | 否 | 创建时间 |
+| 5.1.17 | modifyTime | LocalDateTime | 是 | 修改时间 |
+
***2)出参示例***
* 成功:
+
```
{
"code": 0,
@@ -1337,6 +1405,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/contractList
"bytecodeBin": "60806040526004361061004c576000398de7e4ddf5fdc9ccbcfd44565fed695cd960b0029",
"deployTime": "2019-06-11 18:11:33",
"description": null,
+ "account": "admin",
"createTime": "2019-06-05 16:40:40",
"modifyTime": "2019-06-11 18:11:33"
}
@@ -1346,6 +1415,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/contractList
```
* 失败:
+
```
{
"code": 102000,
@@ -1359,6 +1429,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/contractList
#### 5.2.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/contract/{contractId}**
* 请求方式:GET
@@ -1368,10 +1439,10 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/contractList
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 群组id |
-| 2 | contractId | int | 否 | 合约编号 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ---------- | ---- | ------ | -------- |
+| 1 | groupId | int | 否 | 群组id |
+| 2 | contractId | int | 否 | 合约编号 |
***2)入参示例***
@@ -1384,31 +1455,34 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/200001
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | | Object | | 返回信息实体 |
-| 3.1 | contractId | int | 否 | 合约编号 |
-| 3.2 | contractPath | String | 否 | 合约所在目录 |
-| 3.3 | contractName | String | 否 | 合约名称 |
-| 3.4 | groupId | Int | 否 | 所属群组编号 |
-| 3.5 | contractStatus | int | 否 | 1未部署,2已部署 |
-| 3.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
-| 3.7 | contractSource | String | 否 | 合约源码 |
-| 3.8 | contractAbi | String | 是 | 编译合约生成的abi文件内容 |
-| 3.9 | contractBin | String | 是 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析|
-| 3.10 | bytecodeBin | String | 是 | 合约编译的bytecode(bin),用于部署合约 |
-| 3.11 | contractAddress | String | 是 | 合约地址 |
-| 3.12 | deployTime | LocalDateTime | 是 | 部署时间 |
-| 3.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
-| 3.14 | description | String | 是 | 备注 |
-| 3.15 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.16 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | --------------- | ------------- | ---- | ----------------------------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | contractId | int | 否 | 合约编号 |
+| 3.2 | contractPath | String | 否 | 合约所在目录 |
+| 3.3 | contractName | String | 否 | 合约名称 |
+| 3.4 | groupId | Int | 否 | 所属群组编号 |
+| 3.5 | contractStatus | int | 否 | 1未部署,2已部署 |
+| 3.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
+| 3.7 | contractSource | String | 否 | 合约源码 |
+| 3.8 | contractAbi | String | 是 | 编译合约生成的abi文件内容 |
+| 3.9 | contractBin | String | 是 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析 |
+| 3.10 | bytecodeBin | String | 是 | 合约编译的bytecode(bin),用于部署合约 |
+| 3.11 | contractAddress | String | 是 | 合约地址 |
+| 3.12 | deployTime | LocalDateTime | 是 | 部署时间 |
+| 3.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
+| 3.14 | description | String | 是 | 备注 |
+| 3.15 | account | String | 是 | 关联账户 |
+| 3.16 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.17 | modifyTime | LocalDateTime | 是 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -1427,6 +1501,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/200001
"contractBin": "608060405234801561001057600080004d4c",
"deployTime": "2019-06-11 18:11:33",
"description": null,
+ "account": "admin",
"createTime": "2019-06-05 16:40:40",
"modifyTime": "2019-06-11 18:11:33"
}
@@ -1434,6 +1509,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/200001
```
* 失败:
+
```
{
"code": 102000,
@@ -1455,6 +1531,7 @@ constructor(bytes b,address[] a) -> ["0x1a",["0x7939E26070BE44E6c4Fc759Ce55C6C8b
#### 5.3.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/contract/deploy**
* 请求方式:POST
@@ -1465,18 +1542,19 @@ constructor(bytes b,address[] a) -> ["0x1a",["0x7939E26070BE44E6c4Fc759Ce55C6C8b
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | Int | 否 | 所属群组编号 |
-| 2 | contractName | String | 否 | 合约名称 |
-| 3 | contractSource | String | 否 | 合约源码 |
-| 4 | contractAbi | String | 否 | 编译合约生成的abi文件内容 |
-| 5 | contractBin | String | 否 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析 |
-| 6 | bytecodeBin | String | 否 | 合约编译的bytecode(bin),用于部署合约 |
-| 7 | contractId | String | 否 | 合约名称 |
-| 8 | contractPath | String | 否 | 合约所在目录 |
-| 9 | user | String | 否 | 私钥用户的地址 |
-| 10 | constructorParams | List | 是 | 构造函数入参 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------------- | ------ | ------ | ----------------------------------------------------- |
+| 1 | groupId | Int | 否 | 所属群组编号 |
+| 2 | contractName | String | 否 | 合约名称 |
+| 3 | contractSource | String | 否 | 合约源码 |
+| 4 | contractAbi | String | 否 | 编译合约生成的abi文件内容 |
+| 5 | contractBin | String | 否 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析 |
+| 6 | bytecodeBin | String | 否 | 合约编译的bytecode(bin),用于部署合约 |
+| 7 | contractId | String | 否 | 合约名称 |
+| 8 | contractPath | String | 否 | 合约所在目录 |
+| 9 | user | String | 否 | 私钥用户的地址 |
+| 10 | account | String | 是 | 关联账户 |
+| 11 | constructorParams | List | 是 | 构造函数入参 |
***2)入参示例***
@@ -1493,6 +1571,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/deploy
"contractAbi": "[]",
"contractSource": "cHJhZ21hIHNvbGlkaXR5IF4wLICAJbmFtZSA9IG47CiAgICB9Cn0=",
"user": "0x2db346f9d24324a4b0eac7fb7f3379a2422704db",
+ "account": "admin",
"contractName": "HeHe",
"contractId": 200008,
"contractPath": "Hi",
@@ -1504,31 +1583,34 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/deploy
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | | Object | | 返回信息实体 |
-| 3.1 | contractId | int | 否 | 合约编号 |
-| 3.2 | contractPath | String | 否 | 合约所在目录 |
-| 3.3 | contractName | String | 否 | 合约名称 |
-| 3.4 | groupId | Int | 否 | 所属群组编号 |
-| 3.5 | contractStatus | int | 否 | 1未部署,2已部署 |
-| 3.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
-| 3.7 | contractSource | String | 否 | 合约源码 |
-| 3.8 | contractAbi | String | 是 | 编译合约生成的abi文件内容 |
-| 3.9 | contractBin | String | 是 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析|
-| 3.10 | bytecodeBin | String | 是 | 合约编译的bytecode(bin),用于部署合约 |
-| 3.11 | contractAddress | String | 是 | 合约地址 |
-| 3.12 | deployTime | LocalDateTime | 是 | 部署时间 |
-| 3.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
-| 3.14 | description | String | 是 | 备注 |
-| 3.15 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.16 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | --------------- | ------------- | ---- | ----------------------------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | contractId | int | 否 | 合约编号 |
+| 3.2 | contractPath | String | 否 | 合约所在目录 |
+| 3.3 | contractName | String | 否 | 合约名称 |
+| 3.4 | groupId | Int | 否 | 所属群组编号 |
+| 3.5 | contractStatus | int | 否 | 1未部署,2已部署 |
+| 3.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
+| 3.7 | contractSource | String | 否 | 合约源码 |
+| 3.8 | contractAbi | String | 是 | 编译合约生成的abi文件内容 |
+| 3.9 | contractBin | String | 是 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析 |
+| 3.10 | bytecodeBin | String | 是 | 合约编译的bytecode(bin),用于部署合约 |
+| 3.11 | contractAddress | String | 是 | 合约地址 |
+| 3.12 | deployTime | LocalDateTime | 是 | 部署时间 |
+| 3.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
+| 3.14 | description | String | 是 | 备注 |
+| 3.15 | account | String | 是 | 关联账户 |
+| 3.16 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.17 | modifyTime | LocalDateTime | 是 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -1548,6 +1630,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/deploy
"contractAddress": "0xa2ea2280b3a08a3ae2e1785dff09561e13915fb2",
"deployTime": "2019-06-11 18:58:33",
"description": null,
+ "account": "admin",
"createTime": null,
"modifyTime": null
}
@@ -1555,6 +1638,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/deploy
```
* 失败:
+
```
{
"code": 102000,
@@ -1568,6 +1652,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/deploy
方法入参(funcParam)为JSON数组,多个参数以逗号分隔(参数为数组时同理),示例:
+
```
function set(string s) -> ["aa,bb\"cc"] // 双引号要转义
function set(uint n,bool b) -> [1,true]
@@ -1576,6 +1661,7 @@ function set(bytes b,address[] a) -> ["0x1a",["0x7939E26070BE44E6c4Fc759Ce55C6C8
#### 5.4.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/contract/transaction**
* 请求方式:POST
@@ -1587,16 +1673,16 @@ function set(bytes b,address[] a) -> ["0x1a",["0x7939E26070BE44E6c4Fc759Ce55C6C8
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | Int | 否 | 所属群组编号 |
-| 2 | user | String | 否 | 私钥用户的地址 |
-| 3 | contractName | String | 否 | 合约名称 |
-| 4 | contractId | Int | 否 | 合约编号 |
-| 5 | funcName | String | 否 | 合约方法名 |
-| 6 | contractAddress | String | 是 | 合约地址 |
-| 7 | funcParam | List | 是 | 合约方法入参 |
-| 8 | contractAbi | List | 否 | 合约abi/合约单个函数的abi |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | ------------------------- |
+| 1 | groupId | Int | 否 | 所属群组编号 |
+| 2 | user | String | 否 | 私钥用户的地址 |
+| 3 | contractName | String | 否 | 合约名称 |
+| 4 | contractId | Int | 否 | 合约编号 |
+| 5 | funcName | String | 否 | 合约方法名 |
+| 6 | contractAddress | String | 是 | 合约地址 |
+| 7 | funcParam | List | 是 | 合约方法入参 |
+| 8 | contractAbi | List | 否 | 合约abi/合约单个函数的abi |
***2)入参示例***
@@ -1622,15 +1708,17 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/transaction
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(空) |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(空) |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -1640,6 +1728,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/transaction
```
* 失败:
+
```
{
"code": 102000,
@@ -1653,6 +1742,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/transaction
#### 5.5.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址: **/contract/findByPartOfBytecodeBin**
* 请求方式:GET
@@ -1662,10 +1752,10 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/transaction
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 所属群组编号 |
-| 2 | partOfBytecodeBin | String | 否 | 包含合约bytecodeBin的的字符串 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------------- | ------ | ------ | ----------------------------- |
+| 1 | groupId | int | 否 | 所属群组编号 |
+| 2 | partOfBytecodeBin | String | 否 | 包含合约bytecodeBin的的字符串 |
***2)入参示例***
@@ -1685,29 +1775,32 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | | Object | | 返回信息实体 |
-| 3.1 | contractId | int | 否 | 合约编号 |
-| 3.2 | contractName | String | 否 | 合约名称 |
-| 3.3 | groupId | Int | 否 | 所属群组编号 |
-| 3.4 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
-| 3.5 | contractSource | String | 否 | 合约源码 |
-| 3.6 | contractAbi | String | 是 | 编译合约生成的abi文件内容 |
-| 3.7 | contractBin | String | 是 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析|
-| 3.8 | bytecodeBin | String | 是 | 合约编译的bytecode(bin),用于部署合约 |
-| 3.9 | contractAddress | String | 是 | 合约地址 |
-| 3.10 | deployTime | LocalDateTime | 是 | 部署时间 |
-| 3.11 | contractVersion | String | 否 | 合约版本 |
-| 3.12 | description | String | 是 | 备注 |
-| 3.13 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.14 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | --------------- | ------------- | ---- | ----------------------------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | contractId | int | 否 | 合约编号 |
+| 3.2 | contractName | String | 否 | 合约名称 |
+| 3.3 | groupId | Int | 否 | 所属群组编号 |
+| 3.4 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
+| 3.5 | contractSource | String | 否 | 合约源码 |
+| 3.6 | contractAbi | String | 是 | 编译合约生成的abi文件内容 |
+| 3.7 | contractBin | String | 是 | 合约编译的runtime-bytecode(runtime-bin),用于交易解析 |
+| 3.8 | bytecodeBin | String | 是 | 合约编译的bytecode(bin),用于部署合约 |
+| 3.9 | contractAddress | String | 是 | 合约地址 |
+| 3.10 | deployTime | LocalDateTime | 是 | 部署时间 |
+| 3.11 | contractVersion | String | 否 | 合约版本 |
+| 3.12 | description | String | 是 | 备注 |
+| 3.13 | account | String | 是 | 关联账户 |
+| 3.14 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.15 | modifyTime | LocalDateTime | 是 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -1726,6 +1819,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
"deployTime": null,
"contractVersion": "v6.0",
"description": null,
+ "account": "admin",
"createTime": "2019-04-15 21:14:40",
"modifyTime": "2019-04-15 21:14:40"
}
@@ -1733,6 +1827,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
```
* 失败:
+
```
{
"code": 102000,
@@ -1744,31 +1839,29 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
### 5.6. 保存合约接口
#### 5.6.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/contract/save**
* 请求方式:POST
* 请求头:Content-type: application/json
* 返回格式:JSON
-
-
#### 5.6.2 请求参数
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 所属群组编号 |
-| 2 | contractId | int | 是 | 合约编号,传入contractId表示更新,否则新增 |
-| 3 | contractName | String | 否 | 合约名称 |
-| 4 | contractPath | String | 否 | 合约所在目录 |
-| 5 | contractSource | String | 是 | 合约源码的base64 |
-| 6 | contractAbi | String | 是 | 合约编译后生成的abi文件内容 |
-| 7 | contractBin | String | 是 | 合约编译后生成的bin,可用于交易解析 |
-| 8 | bytecodeBin | String | 是 | 合约编译后生成的bytecodeBin,可用于合约部署 |
-
-
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | -------------- | ------ | ------ | ------------------------------------------- |
+| 1 | groupId | int | 否 | 所属群组编号 |
+| 2 | contractId | int | 是 | 合约编号,传入contractId表示更新,否则新增 |
+| 3 | contractName | String | 否 | 合约名称 |
+| 4 | contractPath | String | 否 | 合约所在目录 |
+| 5 | contractSource | String | 是 | 合约源码的base64 |
+| 6 | contractAbi | String | 是 | 合约编译后生成的abi文件内容 |
+| 7 | contractBin | String | 是 | 合约编译后生成的bin,可用于交易解析 |
+| 8 | bytecodeBin | String | 是 | 合约编译后生成的bytecodeBin,可用于合约部署 |
+| 9 | account | String | 是 | 关联账户,新建时不能为空 |
***2)入参示例***
@@ -1782,7 +1875,8 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
"contractAbi": “[]”
"contractBin": "60806040526004361061004c576000357c0100000000000000000000000029",
"bytecodeBin": "6080604052348015610010572269b80029",
- "contractId": 1
+ "contractId": 1,
+ "account": "admin"
}
```
@@ -1790,33 +1884,34 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | | Object | | 返回信息实体 |
-| 3.1 | contractId | int | 否 | 合约编号 |
-| 3.2 | contractPath | String | 否 | 合约所在目录 |
-| 3.3 | contractName | String | 否 | 合约名称 |
-| 3.4 | groupId | Int | 否 | 所属群组编号 |
-| 3.5 | contractStatus | int | 否 | 1未部署,2已部署 |
-| 3.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
-| 3.7 | contractSource | String | 否 | 合约源码base64 |
-| 3.8 | contractAbi | String | 是 | 合约编译后生成的abi文件内容 |
-| 3.9 | contractBin | String | 是 | 合约编译后生成的bin,可用于交易解析 |
-| 3.10 | bytecodeBin | String | 是 | 合约编译后生成的bytecodeBin,可用于合约部署 |
-| 3.11 | contractAddress | String | 是 | 合约地址 |
-| 3.12 | deployTime | LocalDateTime | 是 | 部署时间 |
-| 3.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
-| 3.14 | description | String | 是 | 备注 |
-| 3.15 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.16 | modifyTime | LocalDateTime | 是 | 修改时间
-
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | --------------- | ------------- | ---- | ------------------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | contractId | int | 否 | 合约编号 |
+| 3.2 | contractPath | String | 否 | 合约所在目录 |
+| 3.3 | contractName | String | 否 | 合约名称 |
+| 3.4 | groupId | Int | 否 | 所属群组编号 |
+| 3.5 | contractStatus | int | 否 | 1未部署,2已部署 |
+| 3.6 | contractType | Int | 否 | 合约类型(0-普通合约,1-系统合约) |
+| 3.7 | contractSource | String | 否 | 合约源码base64 |
+| 3.8 | contractAbi | String | 是 | 合约编译后生成的abi文件内容 |
+| 3.9 | contractBin | String | 是 | 合约编译后生成的bin,可用于交易解析 |
+| 3.10 | bytecodeBin | String | 是 | 合约编译后生成的bytecodeBin,可用于合约部署 |
+| 3.11 | contractAddress | String | 是 | 合约地址 |
+| 3.12 | deployTime | LocalDateTime | 是 | 部署时间 |
+| 3.13 | contractVersion | String | 否 | 合约版本(会去除该字段) |
+| 3.14 | description | String | 是 | 备注 |
+| 3.15 | account | String | 是 | 关联账户 |
+| 3.16 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.17 | modifyTime | LocalDateTime | 是 | 修改时间 |
### 5.7 获取Abi信息
#### 5.7.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址: **/abi/{abiId}**
* 请求方式:GET
@@ -1826,9 +1921,9 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/contract/findByPartOfBytecodeBin
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | abiId | Long | 否 | abi编号 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | -------- | ---- | ------ | ------- |
+| 1 | abiId | Long | 否 | abi编号 |
***2)入参示例***
@@ -1841,23 +1936,26 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/1
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | | Object | | 返回信息实体 |
-| 3.1 | abiId | int | 否 | 合约编号 |
-| 3.2 | contractName | String | 否 | 合约名称 |
-| 3.3 | groupId | Int | 否 | 所属群组编号 |
-| 3.4 | contractAddress | String | 否 | 合约地址 |
-| 3.5 | contractAbi | String | 是 | 导入的abi文件内容 |
-| 3.6 | contractBin | String | 是 | 合约runtime-bytecode(runtime-bin)|
-| 3.7 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.8 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | --------------- | ------------- | ---- | --------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | abiId | int | 否 | 合约编号 |
+| 3.2 | contractName | String | 否 | 合约名称 |
+| 3.3 | groupId | Int | 否 | 所属群组编号 |
+| 3.4 | contractAddress | String | 否 | 合约地址 |
+| 3.5 | contractAbi | String | 是 | 导入的abi文件内容 |
+| 3.6 | contractBin | String | 是 | 合约runtime-bytecode(runtime-bin) |
+| 3.7 | account | String | 否 | 所属账号 |
+| 3.8 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.9 | modifyTime | LocalDateTime | 是 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -1869,6 +1967,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/1
"contractAddress": "0x3214227e87bccca63893317febadd0b51ade735e",
"contractAbi": "[{\"constant\":false,\"inputs\":[{\"name\":\"n\",\"type\":\"string\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"n\",\"type\":\"string\"}],\"name\":\"setSender\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"SetName\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"\",\"type\":\"uint256[2]\"}],\"name\":\"EventList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SetSender\",\"type\":\"event\"}]",
"contractBin": "608060405260043610610057576000357...",
+ "account": "admin",
"createTime": "2020-05-18 10:59:02",
"modifyTime": "2020-05-18 10:59:02"
}
@@ -1880,8 +1979,9 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/1
#### 5.8.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
-* 请求地址: **/abi/list/{groupId}/{pageNumber}/{pageSize}**
+* 请求地址: **/abi/list/{groupId}/{pageNumber}/{pageSize}?account={account}**
* 请求方式:GET
* 返回格式:JSON
@@ -1889,17 +1989,18 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/1
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 群组编号 |
-| 2 | pageNumber | int | 否 | 页码,从1开始 |
-| 3 | pageSize | int | 否 | 页大小 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ---------- | ------ | ------ | ------------- |
+| 1 | groupId | int | 否 | 群组编号 |
+| 2 | pageNumber | int | 否 | 页码,从1开始 |
+| 3 | pageSize | int | 否 | 页大小 |
+| 4 | account | String | 是 | 所属账号 |
***2)入参示例***
```
-http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
+http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5?account=
```
@@ -1907,23 +2008,26 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | | Object | | 返回信息实体 |
-| 3.1 | abiId | int | 否 | 合约编号 |
-| 3.2 | contractName | String | 否 | 合约名称 |
-| 3.3 | groupId | Int | 否 | 所属群组编号 |
-| 3.4 | contractAddress | String | 否 | 合约地址 |
-| 3.5 | contractAbi | String | 是 | 导入的abi文件内容 |
-| 3.6 | contractBin | String | 是 | 合约runtime-bytecode(runtime-bin)|
-| 3.7 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.8 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | --------------- | ------------- | ---- | --------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | abiId | int | 否 | 合约编号 |
+| 3.2 | contractName | String | 否 | 合约名称 |
+| 3.3 | groupId | Int | 否 | 所属群组编号 |
+| 3.4 | contractAddress | String | 否 | 合约地址 |
+| 3.5 | contractAbi | String | 是 | 导入的abi文件内容 |
+| 3.6 | contractBin | String | 是 | 合约runtime-bytecode(runtime-bin) |
+| 3.7 | account | String | 否 | 所属账号 |
+| 3.8 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.9 | modifyTime | LocalDateTime | 是 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -1932,6 +2036,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
{
"abiId": 1,
"groupId": 1,
+ "account": "admin",
"contractName": "TTT",
"contractAddress": "0x3214227e87bccca63893317febadd0b51ade735e",
"contractAbi": "[{\"constant\":false,\"inputs\":[{\"name\":\"n\",\"type\":\"string\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"n\",\"type\":\"string\"}],\"name\":\"setSender\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"SetName\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"\",\"type\":\"uint256[2]\"}],\"name\":\"EventList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SetSender\",\"type\":\"event\"}]",
@@ -1950,6 +2055,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
> 将其他平台已部署的合约导入到本平台进行管理
#### 5.9.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/abi**
* 请求方式:POST
@@ -1961,14 +2067,13 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 所属群组编号 |
-| 2 | contractAddress | String | 否 | 合约地址 |
-| 3 | contractName | String | 否 | 合约名称 |
-| 4 | contractAbi | String | 否 | 合约编译后生成的abi文件内容 |
-
-
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | --------------------------- |
+| 1 | groupId | int | 否 | 所属群组编号 |
+| 2 | contractAddress | String | 否 | 合约地址 |
+| 3 | contractName | String | 否 | 合约名称 |
+| 4 | contractAbi | String | 否 | 合约编译后生成的abi文件内容 |
+| 5 | account | String | 否 | 所属账号 |
***2)入参示例***
@@ -1976,6 +2081,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
```
{
"groupId": 1,
+ "account": "admin",
"contractAddress": "0x3214227e87bccca63893317febadd0b51ade735e",
"contractName": "HelloWorld",
"contractAbi": [{"constant":false,"inputs":[{"name":"n","type":"string"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"}],"name":"SetName","type":"event"}]
@@ -1986,15 +2092,17 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(空) |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(空) |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -2003,11 +2111,12 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
```
-### 5.10. 导入已部署合约的abi
+### 5.10. 修改已部署合约的abi
> 将其他平台已部署的合约导入到本平台进行管理
#### 5.10.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/abi**
* 请求方式:PUT
@@ -2019,15 +2128,13 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | abiId | long | 否 | abi编号 |
-| 2 | groupId | int | 否 | 所属群组编号 |
-| 3 | contractAddress | String | 否 | 合约地址 |
-| 4 | contractName | String | 否 | 合约名称 |
-| 5 | contractAbi | String | 否 | 合约编译后生成的abi文件内容 |
-
-
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | --------------- | ------ | ------ | --------------------------- |
+| 1 | abiId | long | 否 | abi编号 |
+| 2 | groupId | int | 否 | 所属群组编号 |
+| 3 | contractAddress | String | 否 | 合约地址 |
+| 4 | contractName | String | 否 | 合约名称 |
+| 5 | contractAbi | String | 否 | 合约编译后生成的abi文件内容 |
***2)入参示例***
@@ -2046,15 +2153,17 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/abi/list/1/1/5
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(空) |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(空) |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -2415,7 +2524,7 @@ http://localhost:5001/WeBASE-Node-Manager/mailServer/config/1
|------|-------------|---------------|--------|-------------------------------|
| - | - | - | - | - |
-
+
***2)入参示例***
@@ -2722,7 +2831,7 @@ http://localhost:5001/WeBASE-Node-Manager/alert/1
|------|-------------|---------------|--------|-------------------------------|
| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
| 2 | message | String | 否 | 描述 |
-| 3 | data | Object | 否 | 成功时返回 |
+| 3 | data | Object | 否 | 成功时返回 |
| 3.1 | | Object | |返回信息实体 |
| 3.1.1 | ruleId | Int | 否 | 告警类型配置的编号 |
| 3.1.2 | ruleName | String | 否 | 告警类型的名字/告警邮件标题 |
@@ -2788,7 +2897,7 @@ http://localhost:5001/WeBASE-Node-Manager/alert/1
|------|-------------|---------------|--------|-------------------------------|
| - | - | - | - | - |
-
+
***2)入参示例***
@@ -3813,7 +3922,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/group/generate/78e467957af3d0f77e19b95
### 8.5 向多个节点生成新群组
-向`nodeList`中所有节点的前置发起请求,以当前时间生成`timestamp`时间戳,以`nodeList`为创世块的**共识节点列表**,生成新群组配置信息;节点和前置一一对应,节点编号可以从前置列表获取。
+向`nodeList`中所有节点的前置发起请求,以当前时间生成`timestamp`时间戳,以`nodeList`为创世块的**共识节点列表**,生成新群组配置信息;节点和前置一一对应,节点编号可以从前置列表获取。
**群组生成后,需对应调用新群组启动的接口,并确保新节点加入新群组的共识节点/观察节点**
@@ -3898,9 +4007,9 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/group/generate
### 8.6 动态操作群组
-可以对已存在的群组或新生成的群组进行动态操作,包括启动、停止、删除、恢复、状态查询。
+可以对已存在的群组或新生成的群组进行动态操作,包括启动、停止、删除、恢复、状态查询。
-**说明:** 生成新群组后,需要向每个前置调用启动群组的操作,并确保新节点是新群组中的共识节点/观察节点
+**说明:** 生成新群组后,需要向每个前置调用启动群组的操作,并确保新节点是新群组中的共识节点/观察节点
节点加入已存在群组并启动后,可调用`POST /precompiled/consensus`接口将该节点加入到新加入群组的共识节点或观察节点中
@@ -3966,7 +4075,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/group/operate/78e467957af3d0f77e19b952
### 8.7 批量启动群组
-批量启动多个节点的群组,向`nodeList`中所有节点批量发起启动群组的请求;nodeId可以从前置列表获取。
+批量启动多个节点的群组,向`nodeList`中所有节点批量发起启动群组的请求;nodeId可以从前置列表获取。
#### 8.7.1 传输协议规范
@@ -4044,7 +4153,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/group/batchStart
### 8.8 多个节点获取该节点的多个群组状态
-向多个节点获取该**节点视角下**`groupIdList`中所有群组的状态;nodeId可以从前置列表获取。
+向多个节点获取该**节点视角下**`groupIdList`中所有群组的状态;nodeId可以从前置列表获取。
群组状态包含:群组不存在"INEXISTENT"、群组正在停止"STOPPING"、群组运行中"RUNNING"、群组已停止"STOPPED"、群组已删除"DELETED"
@@ -4598,11 +4707,11 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/role/roleList?groupId=300001&pageNumbe
## 11 用户管理模块
-
### 11.1 新增私钥用户
#### 11.1.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/userInfo**
* 请求方式:POST
@@ -4613,11 +4722,12 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/role/roleList?groupId=300001&pageNumbe
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | userName | string | 否 | 用户名称 |
-| 2 | description | string | 是 | 备注 |
-| 3 | groupId | Int | 否 | 所属群组 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------- | ------ | ------ | -------- |
+| 1 | userName | string | 否 | 用户名称 |
+| 2 | description | string | 是 | 备注 |
+| 3 | groupId | Int | 否 | 所属群组 |
+| 4 | account | string | 否 | 关联账户 |
***2)入参示例***
@@ -4629,7 +4739,8 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
{
"groupId": "300001",
"description": "密钥拥有者",
- "userName": "user1"
+ "userName": "user1",
+ "account": "admin"
}
```
@@ -4638,25 +4749,28 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(成功时不为空) |
-| 3.1 | userId | int | 否 | 用户编号 |
-| 3.2 | userName | string | 否 | 用户名称 |
-| 3.3 | groupId | int | 否 | 所属群组编号 |
-| 3.4 | description | String | 是 | 备注 |
-| 3.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
-| 3.6 | publicKey | String | 否 | 公钥信息 |
-| 3.7 | address | String | 是 | 在链上位置的hash |
-| 3.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
-| 3.9 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.10 | modifyTime | LocalDateTime | 否 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | ----------- | ------------- | ---- | ---------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(成功时不为空) |
+| 3.1 | userId | int | 否 | 用户编号 |
+| 3.2 | userName | string | 否 | 用户名称 |
+| 3.3 | groupId | int | 否 | 所属群组编号 |
+| 3.4 | description | String | 是 | 备注 |
+| 3.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
+| 3.6 | publicKey | String | 否 | 公钥信息 |
+| 3.7 | address | String | 是 | 在链上位置的hash |
+| 3.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
+| 3.9 | account | string | 否 | 关联账户 |
+| 3.10 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.11 | modifyTime | LocalDateTime | 否 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -4671,6 +4785,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
"address": "0x40ec3c20b5178401ae14ad8ce9c9f94fa5ebb86a",
"hasPk": 1,
"description": "sda",
+ "account": "admin",
"createTime": "2019-03-15 18:00:27",
"modifyTime": "2019-03-15 18:00:27"
}
@@ -4678,6 +4793,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
```
* 失败:
+
```
{
"code": 102000,
@@ -4691,6 +4807,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
#### 11.2.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/bind**
* 请求方式:POST
@@ -4701,11 +4818,12 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | userName | string | 否 | 用户名称 |
-| 2 | description | string | 是 | 备注 |
-| 3 | groupId | Int | 否 | 所属群组 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------- | ------ | ------ | -------- |
+| 1 | userName | string | 否 | 用户名称 |
+| 2 | description | string | 是 | 备注 |
+| 3 | groupId | Int | 否 | 所属群组 |
+| 4 | account | string | 否 | 关联账户 |
***2)入参示例***
@@ -4719,7 +4837,8 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
"userName": "sdfasd",
"publicKey": "0x4189fdacff55fb99172e015e1adb96dc77b0cae1619b1a41cc360777bee6682fcc9752d8aabf144fbf610a3057fd4b5",
"groupId": "300001",
- "description": "sdfa"
+ "description": "sdfa",
+ "account": "admin"
}
```
@@ -4728,25 +4847,28 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(成功时不为空) |
-| 3.1 | userId | int | 否 | 用户编号 |
-| 3.2 | userName | string | 否 | 用户名称 |
-| 3.3 | groupId | int | 否 | 所属群组编号 |
-| 3.4 | description | String | 是 | 备注 |
-| 3.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
-| 3.6 | publicKey | String | 否 | 公钥信息 |
-| 3.7 | address | String | 是 | 在链上位置的hash |
-| 3.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
-| 3.9 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.10 | modifyTime | LocalDateTime | 否 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | ----------- | ------------- | ---- | ---------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(成功时不为空) |
+| 3.1 | userId | int | 否 | 用户编号 |
+| 3.2 | userName | string | 否 | 用户名称 |
+| 3.3 | groupId | int | 否 | 所属群组编号 |
+| 3.4 | description | String | 是 | 备注 |
+| 3.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
+| 3.6 | publicKey | String | 否 | 公钥信息 |
+| 3.7 | address | String | 是 | 在链上位置的hash |
+| 3.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
+| 3.9 | account | string | 否 | 关联账户 |
+| 3.10 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.11 | modifyTime | LocalDateTime | 否 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -4761,6 +4883,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
"address": "0x40ec3c20b5178401ae14ad8ce9c9f94fa5ebb86a",
"hasPk": 1,
"description": "sda",
+ "account": "admin",
"createTime": "2019-03-15 18:00:27",
"modifyTime": "2019-03-15 18:00:27"
}
@@ -4768,6 +4891,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
```
* 失败:
+
```
{
"code": 102000,
@@ -4781,6 +4905,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
#### 11.3.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/userInfo**
* 请求方式:PUT
@@ -4792,10 +4917,10 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | userId | int | 否 | 用户编号 |
-| 2 | description | String | 是 | 备注 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------- | ------ | ------ | -------- |
+| 1 | userId | int | 否 | 用户编号 |
+| 2 | description | String | 是 | 备注 |
***2)入参示例***
@@ -4815,25 +4940,28 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | object | 是 | 返回信息实体(成功时不为空) |
-| 3.1 | userId | int | 否 | 用户编号 |
-| 3.2 | userName | string | 否 | 用户名称 |
-| 3.3 | groupId | int | 否 | 所属群组编号 |
-| 3.4 | description | String | 是 | 备注 |
-| 3.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
-| 3.6 | publicKey | String | 否 | 公钥信息 |
-| 3.7 | address | String | 是 | 在链上位置的hash |
-| 3.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
-| 3.9 | createTime | LocalDateTime | 否 | 创建时间 |
-| 3.10 | modifyTime | LocalDateTime | 否 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | ----------- | ------------- | ---- | ---------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | object | 是 | 返回信息实体(成功时不为空) |
+| 3.1 | userId | int | 否 | 用户编号 |
+| 3.2 | userName | string | 否 | 用户名称 |
+| 3.3 | groupId | int | 否 | 所属群组编号 |
+| 3.4 | description | String | 是 | 备注 |
+| 3.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
+| 3.6 | publicKey | String | 否 | 公钥信息 |
+| 3.7 | address | String | 是 | 在链上位置的hash |
+| 3.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
+| 3.9 | account | string | 否 | 关联账户 |
+| 3.10 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.11 | modifyTime | LocalDateTime | 否 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -4848,6 +4976,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
"address": "0x40ec3c20b5178401ae14ad8ce9c9f94fa5ebb86a",
"hasPk": 1,
"description": "newDescription",
+ "account": "admin",
"createTime": "2019-03-15 18:00:27",
"modifyTime": "2019-03-15 18:00:27"
}
@@ -4855,6 +4984,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
```
* 失败:
+
```
{
"code": 102000,
@@ -4867,6 +4997,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
#### 11.4.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/privateKey/{userId}**
* 请求方式:GET
@@ -4876,9 +5007,9 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userInfo
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | userId | int | 否 | 用户编号 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | -------- | ---- | ------ | -------- |
+| 1 | userId | int | 否 | 用户编号 |
***2)入参示例***
@@ -4892,17 +5023,19 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/privateKey/4585
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | data | Object | 否 | 返回私钥信息实体 |
-| 3.1 | privateKey | String | 否 | 私钥 |
-| 3.2 | address | String | 否 | 用户链上地址 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | ---------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | data | Object | 否 | 返回私钥信息实体 |
+| 3.1 | privateKey | String | 否 | 私钥 |
+| 3.2 | address | String | 否 | 用户链上地址 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -4915,6 +5048,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/privateKey/4585
```
* 失败:
+
```
{
"code": 102000,
@@ -4927,6 +5061,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/privateKey/4585
#### 11.5.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/userList/{groupId}/{pageNumber}/{pageSize}?userParam={userName}**
* 请求方式:GET
@@ -4936,12 +5071,13 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/privateKey/4585
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | groupId | int | 否 | 所属群组id |
-| 2 | pageSize | Int | 否 | 每页记录数 |
-| 3 | pageNumber | Int | 否 | 当前页码 |
-| 4 | userParam | String | 是 | 查询参数(用户名或公钥地址) |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ---------- | ------ | ------ | ---------------------------- |
+| 1 | groupId | int | 否 | 所属群组id |
+| 2 | pageSize | Int | 否 | 每页记录数 |
+| 3 | pageNumber | Int | 否 | 当前页码 |
+| 4 | userParam | String | 是 | 查询参数(用户名或公钥地址) |
+| 5 | account | string | 是 | 关联账户 |
***2)入参示例***
@@ -4955,27 +5091,30 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userList/300001/1/10?userParam=as
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
-| 3 | totalCount | Int | 否 | 总记录数 |
-| 4 | data | List | 是 | 用户列表 |
-| 4.1 | | Object | | 用户信息对象 |
-| 4.1.1 | userId | int | 否 | 用户编号 |
-| 4.1.2 | userName | string | 否 | 用户名称 |
-| 4.1.3 | groupId | int | 否 | 所属群组编号 |
-| 4.1.4 | description | String | 是 | 备注 |
-| 4.1.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
-| 4.1.6 | publicKey | String | 否 | 公钥信息 |
-| 4.1.7 | address | String | 是 | 在链上位置的hash |
-| 4.1.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
-| 4.1.9 | createTime | LocalDateTime | 否 | 创建时间 |
-| 4.1.10 | modifyTime | LocalDateTime | 否 | 修改时间 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ------ | ----------- | ------------- | ---- | ---------------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | totalCount | Int | 否 | 总记录数 |
+| 4 | data | List | 是 | 用户列表 |
+| 4.1 | | Object | | 用户信息对象 |
+| 4.1.1 | userId | int | 否 | 用户编号 |
+| 4.1.2 | userName | string | 否 | 用户名称 |
+| 4.1.3 | groupId | int | 否 | 所属群组编号 |
+| 4.1.4 | description | String | 是 | 备注 |
+| 4.1.5 | userStatus | int | 否 | 状态(1-正常 2-停用) 默认1 |
+| 4.1.6 | publicKey | String | 否 | 公钥信息 |
+| 4.1.7 | address | String | 是 | 在链上位置的hash |
+| 4.1.8 | hasPk | Int | 否 | 是否拥有私钥信息(1-拥有,2-不拥有) |
+| 4.1.9 | account | string | 否 | 关联账户 |
+| 4.1.10 | createTime | LocalDateTime | 否 | 创建时间 |
+| 4.1.11 | modifyTime | LocalDateTime | 否 | 修改时间 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -4992,6 +5131,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userList/300001/1/10?userParam=as
"address": "0x40ec3c20b5178401ae14ad8ce9c9f94fa5ebb86a",
"hasPk": 1,
"description": "sda",
+ "account": "admin",
"createTime": "2019-03-15 18:00:27",
"modifyTime": "2019-03-15 18:00:28"
}
@@ -5000,6 +5140,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userList/300001/1/10?userParam=as
```
* 失败:
+
```
{
"code": 102000,
@@ -5016,6 +5157,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userList/300001/1/10?userParam=as
其中私钥字段用Base64加密
#### 11.6.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/import**
* 请求方式:POST
@@ -5026,12 +5168,13 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/userList/300001/1/10?userParam=as
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | privateKey | string | 否 | Base64加密后的私钥内容 |
-| 2 | userName | string | 否 | 用户名称 |
-| 3 | description | string | 是 | 备注 |
-| 4 | groupId | Int | 否 | 所属群组 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------- | ------ | ------ | ---------------------- |
+| 1 | privateKey | string | 否 | Base64加密后的私钥内容 |
+| 2 | userName | string | 否 | 用户名称 |
+| 3 | description | string | 是 | 备注 |
+| 4 | groupId | Int | 否 | 所属群组 |
+| 5 | account | string | 否 | 关联账户 |
***2)入参示例***
@@ -5044,7 +5187,8 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/import
"privateKey": "OGFmNWIzMzNmYTc3MGFhY2UwNjdjYTY3ZDRmMzE4MzU4OWRmOThkMjVjYzEzZGFlMGJmODhkYjhlYzVhMDcxYw==",
"groupId": "300001",
"description": "密钥拥有者",
- "userName": "user1"
+ "userName": "user1",
+ "account": "admin"
}
```
@@ -5053,14 +5197,16 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/import
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -5069,6 +5215,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/import
```
* 失败:
+
```
{
"code": 201031,
@@ -5083,6 +5230,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/import
可导入控制台所生成的私钥.pem文件
#### 11.7.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/importPem**
* 请求方式:POST
@@ -5093,12 +5241,13 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/import
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | pemContent | string | 否 | pem文件的内容,必须以`-----BEGIN PRIVATE KEY-----\n`开头,以`\n-----END PRIVATE KEY-----\n`结尾的格式 |
-| 2 | userName | string | 否 | 用户名称 |
-| 3 | description | string | 是 | 备注 |
-| 4 | groupId | Int | 否 | 所属群组 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------- | ------ | ------ | ------------------------------------------------------------ |
+| 1 | pemContent | string | 否 | pem文件的内容,必须以`-----BEGIN PRIVATE KEY-----\n`开头,以`\n-----END PRIVATE KEY-----\n`结尾的格式 |
+| 2 | userName | string | 否 | 用户名称 |
+| 3 | description | string | 是 | 备注 |
+| 4 | groupId | Int | 否 | 所属群组 |
+| 5 | account | string | 否 | 关联账户 |
***2)入参示例***
@@ -5111,7 +5260,8 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importPem
"pemContent":"-----BEGIN PRIVATE KEY-----\nMIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgC8TbvFSMA9y3CghFt51/\nXmExewlioX99veYHOV7dTvOhRANCAASZtMhCTcaedNP+H7iljbTIqXOFM6qm5aVs\nfM/yuDBK2MRfFbfnOYVTNKyOSnmkY+xBfCR8Q86wcsQm9NZpkmFK\n-----END PRIVATE KEY-----\n",
"groupId": "1",
"description": "密钥拥有者",
- "userName": "user2"
+ "userName": "user2",
+ "account": "admin"
}
```
@@ -5120,14 +5270,16 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importPem
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -5136,6 +5288,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importPem
```
* 失败:
+
```
{
"code": 201232,
@@ -5150,6 +5303,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importPem
可导入控制台生成的私钥.p12文件
#### 11.8.1 传输协议规范
+
* 网络传输协议:使用HTTP协议
* 请求地址:**/user/importP12**
* 请求方式:POST
@@ -5160,13 +5314,14 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importPem
***1)入参表***
-| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | p12File | MultipartFile | 否 | .p12文件 |
-| 2 | p12Password | string | 是 | .p12文件的密码,缺省时默认为"",即空密码;p12无密码时,可传入空值或不传;不包含中文 |
-| 3 | userName | string | 否 | 用户名称 |
-| 4 | description | string | 是 | 备注 |
-| 5 | groupId | Int | 否 | 所属群组 |
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+| ---- | ----------- | ------------- | ------ | ------------------------------------------------------------ |
+| 1 | p12File | MultipartFile | 否 | .p12文件 |
+| 2 | p12Password | string | 是 | .p12文件的密码,缺省时默认为"",即空密码;p12无密码时,可传入空值或不传;不包含中文 |
+| 3 | userName | string | 否 | 用户名称 |
+| 4 | description | string | 是 | 备注 |
+| 5 | groupId | Int | 否 | 所属群组 |
+| 6 | account | string | 否 | 关联账户 |
***2)入参示例***
@@ -5180,14 +5335,16 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importP12
***1)出参表***
-| 序号 | 输出参数 | 类型 | | 备注 |
-|------|-------------|---------------|--------|-------------------------------|
-| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
-| 2 | message | String | 否 | 描述 |
+| 序号 | 输出参数 | 类型 | | 备注 |
+| ---- | -------- | ------ | ---- | -------------------------- |
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
***2)出参示例***
+
* 成功:
+
```
{
"code": 0,
@@ -5196,6 +5353,7 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/user/importP12
```
* 失败:(p12文件的密码错误)
+
```
{
"code": 201236,
@@ -5354,6 +5512,9 @@ http://127.0.0.1:5001/WeBASE-Node-Manager/method/findById/2/methodIasdfdttttt
## 13 系统管理模块
+系统管理中的权限管理接口
+- 使用FISCO BCOS v2.5.0 与 WeBASE-Node-Manager v1.4.1 (及)以上版本将使用预编译合约中的ChainGovernance接口(本章节[接口13.14](#governance)开始),详情可参考[FISCO BCOS基于角色的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html#id2)
+- 使用低于FISCO BCOS v2.5.0 与 WeBASE-Node-Manager v1.4.1版本,则使用接口13.1至13.4接口
### 13.1 查看权限管理
@@ -5966,7 +6127,7 @@ http://localhost:5001/WeBASE-Node-Manager/sys/config/list?groupId=1&pageSize=10&
| 4 | configValue | String | 否 |
| 5 | useAes | Boolean | 是 | 发交易的私钥是否为加密私钥,默认为false
-
+
***2)入参示例***
@@ -6038,7 +6199,7 @@ http://localhost:5001/WeBASE-Node-Manager/sys/config
| 2 | pageSize | int | 否 |
| 3 | pageNumber | int | 否 |
-
+
***2)入参示例***
@@ -6256,15 +6417,956 @@ http://localhost:5001/WeBASE-Node-Manager/precompiled/crud
}
```
-## 14 证书管理模块
-### 14.1 获取证书列表接口
-获取证书的list列表,返回的列表包含证书指纹、证书内容、证书名字、证书的父证书、证书对应nodeid(节点证书)、证书有效期
+### 13.14 获取链治理委员列表
+
-注:首次启动项目会自动拉取每一个Front的证书
+使用FISCO BCOS v2.5.0 与 WeBASE-Node-Manager v1.4.1 (及)以上版本将使用预编译合约中的ChainGovernance接口(本章节[接口13.14](#governance)开始),详情可参考[FISCO BCOS基于角色的权限控制](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html#id2)
-#### 14.1.1 传输协议规范
+委员的权限包括治理投票、增删节点、冻结解冻合约、冻结解冻账号、修改链配置和增删运维账号。
+
+增加委员需要链治理委员会投票,有效票大于阈值才可以生效,且不重复计票
+- 委员默认的投票权重为1,默认投票生效阈值50%,若有两个委员,则需要两个委员都投票增加/撤销的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。
+- 投票有过期时间,根据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。
+- 一个用户不能同时作为委员和运维
+
+#### 13.14.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/committee/list**
+* 请求方式:GET
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.14.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | pageSize | int | 否 |
+| 3 | pageNumber | int | 否 |
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/committee/list?groupId=1&pageSize=5&pageNumber=1
+```
+
+#### 13.14.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | | 返回码,0:成功 其它:失败 |
+| 2 | message | String | | 描述
+| 3 | data | List数组 | | 直接返回数组
+| 4 | totalCount | int | | 总数目
+
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": [
+ {
+ "address": "0x009fb217b6d7f010f12e7876d31a738389fecd51",
+ "enable_num": "84"
+ }
+ ],
+ "totalCount": 1
+}
+```
+
+
+### 13.15 增加链治理委员
+
+增加委员需要链治理委员会投票,有效票大于阈值才可以生效,且不重复计票
+- 委员默认的投票权重为1,默认投票生效阈值50%,若有两个委员,则需要两个委员都投票增加/撤销的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。
+- 投票有过期时间,根据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。
+
+#### 13.15.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/committee**
+* 请求方式:POST
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.15.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | fromAddress | String | 否 | 链治理委员地址 |
+| 3 | address | String | 否 | 新的链治理委员地址
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/committee
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+
+#### 13.15.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败:
+```
+{
+ "code": -52000,
+ "message": "committee member already exist"
+}
+```
+
+
+### 13.16 去除链管理委员接口
+
+增加委员需要链治理委员会投票,有效票大于阈值才可以生效,且不重复计票
+- 委员默认的投票权重为1,默认投票生效阈值50%,若有两个委员,则需要两个委员都投票增加/撤销的委员权限,`有效票/总票数=2/2=1>0.5`才满足条件。
+- 投票有过期时间,根据块高,过期时间为块高超过blockLimit的10倍时过期;过期时间固定不可改。
+
+#### 13.16.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/committee**
+* 请求方式:DELETE
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.16.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | fromAddress | String | 否 | 链治理委员地址 |
+| 3 | address | String | 否 | 待取消的链治理委员地址
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/committee
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+
+#### 13.16.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败:
+```
+{
+ "code": -52001,
+ "message": "committee member not exist"
+}
+```
+
+
+### 13.17 获取链治理委员投票权重
+
+委员默认的投票权重为1
+
+#### 13.17.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/committee/weight**
+* 请求方式:GET
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.17.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | address | String | 否 |
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/committee/weight?groupId=1&address=0x009fb217b6d7f010f12e7876d31a738389fecd51
+```
+
+#### 13.17.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | | 返回码,0:成功 其它:失败 |
+| 2 | message | String | | 描述
+| 3 | data | Integer | | 权重值
+
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": 2
+}
+```
+
+### 13.18 更新链治理委员投票权重值
+
+委员默认的投票权重为1
+
+#### 13.18.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/committee/weight**
+* 请求方式:PUT
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.18.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | fromAddress | String | 否 | 链治理委员地址 |
+| 3 | address | String | 否 | 新的链治理委员地址
+| 4 | weight | int | 否 | 投票权重值
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/committee/weight
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e",
+ "weight": 2
+}
+```
+
+
+#### 13.18.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败:
+```
+{
+ "code": -52001,
+ "message": "committee member not exist"
+}
+```
+
+
+### 13.19 获取链治理投票阈值
+
+默认投票阈值为50,即超过(不包括)50%的票数权重即可通过
+
+#### 13.19.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/threshold**
+* 请求方式:GET
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.19.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/threshold?groupId=1
+```
+
+#### 13.19.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | | 返回码,0:成功 其它:失败 |
+| 2 | message | String | | 描述
+| 3 | data | Integer | | 阈值
+
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": 50
+}
+```
+
+### 13.19 更新链治理投票阈值
+
+委员默认的投票权重为1
+
+#### 13.19.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/threshold**
+* 请求方式:PUT
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.19.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | fromAddress | String | 否 | 链治理委员地址 |
+| 3 | threshold | int | 否 | 投票阈值
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/threshold
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "threshold": 60
+}
+```
+
+
+#### 13.19.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败,如非委员更新阈值:
+```
+{
+ "code": -52001,
+ "message": "committee member not exist"
+}
+```
+
+
+### 13.20 查看运维列表
+
+由链治理委员添加运维账号,运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
+
+#### 13.20.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/operator/list**
+* 请求方式:GET
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.20.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | pageSize | int | 否 |
+| 3 | pageNumber | int | 否 |
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/operator/list?groupId=1&pageSize=5&pageNumber=1
+```
+
+#### 13.20.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | | 返回码,0:成功 其它:失败 |
+| 2 | message | String | | 描述
+| 3 | data | List数组 | | 直接返回数组
+| 4 | totalCount | int | | 总数目
+
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": [
+ {
+ "address": "0x009fb217b6d7f010f12e7876d31a738389fecd51",
+ "enable_num": "4"
+ }
+ ],
+ "totalCount": 1
+}
+```
+
+
+### 13.21 增加运维接口
+
+由链治理委员添加/去除运维账号,运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
+
+#### 13.21.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/operator**
+* 请求方式:POST
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.21.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 3 | fromAddress | String | 否 | 链治理委员地址 |
+| 4 | address | String | 否 | 运维地址
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/operator
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+
+#### 13.21.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败:
+```
+{
+ "code": -52001,
+ "message": "committee member not exist"
+}
+```
+
+或
+
+```
+{
+ "code": -52005,
+ "message": "committee member cannot be operator"
+}
+```
+
+
+### 13.22 去除运维接口
+
+由链治理委员添加/去除运维账号,运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
+
+#### 13.22.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/operator**
+* 请求方式:DELETE
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.22.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 3 | fromAddress | String | 否 | 链治理委员地址 |
+| 4 | address | String | 否 | 运维地址
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/governance/operator
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "address": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e"
+}
+```
+
+
+#### 13.22.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败:
+```
+{
+ "code": -52001,
+ "message": "committee member not exist"
+}
+```
+
+
+### 13.23 合约状态管理
+
+由**合约部署者**(一般由运维所部属)与链治理委员共同管理合约的状态,包含冻结/解冻合约、查询合约状态功能
+
+#### 13.23.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/precompiled/contract/status**
+* 请求方式: POST
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.23.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | fromAddress | String | 否 | 合约管理者地址 |
+| 3 | contractAddress | String | 否 | 已部署的合约地址 |
+| 4 | handleType | String | 否 | 操作类型:freeze-冻结;unfreeze-解冻;getStatus-查询合约状态; |
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/precompiled/contract/status
+```
+
+```
+{
+ "groupId": 1,
+ "fromAddress": "0xd5bba8fe456fce310f529edecef902e4b63129b1",
+ "contractAddress": "0x2357ad9d97027cd71eea1d639f1e5750fbdfd38e",
+ "handleType": "freeze"
+}
+```
+
+
+#### 13.23.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+* 失败:
+```
+{
+ "code": -52007,
+ "message": "operator member not exist"
+}
+```
+
+
+### 13.24 批量查看合约冻结状态
+
+传入多个合约地址的List,查看该合约地址的冻结状态
+
+#### 13.24.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/precompiled/contract/status/list**
+* 请求方式:POST
+* 请求头:Content-type: application/json
+* 返回格式:JSON
+
+#### 13.24.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组id
+| 2 | addressList | List | 否 | 多个合约地址的列表
+
+
+***2)入参示例***
+
+```
+http://localhost:5001/WeBASE-Node-Manager/precompiled/contract/status/list
+```
+
+```
+{
+ "groupId": 1,
+ "addressList": ["0x009fb217b6d7f010f12e7876d31a738389fecd51", "0x6b9fb217b6d7f010f12e7876d31a738389feef62"]
+}
+```
+
+#### 13.24.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | | 返回码,0:成功 其它:失败 |
+| 2 | message | String | | 描述
+| 3 | data | Map | | 直接返回Map, 0-正常,1-冻结 如:["0x009fb217b6d7f010f12e7876d31a738389fecd51": 0, "0x6b9fb217b6d7f010f12e7876d31a738389feef62": 1]
+
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": [
+ "0x009fb217b6d7f010f12e7876d31a738389fecd51": 0,
+ "0x6b9fb217b6d7f010f12e7876d31a738389feef62": 1
+ ],
+ "totalCount": 1
+}
+```
+
+
+
+### 13.25 获取链委员会投票记录列表
+
+当链委员会发起一笔交易时会产生一条投票记录,此接口返回某群组下的修改记录列表
+
+#### 13.25.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/vote/record/list**
+* 请求方式:GET
+* 返回格式:JSON
+
+#### 13.25.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组编号 |
+| 2 | pageNumber | int | 否 | 页码,从1开始 |
+| 3 | pageSize | int | 否 | 页大小 |
+
+
+***2)入参示例***
+
+```
+http://127.0.0.1:5001/WeBASE-Node-Manager/vote/record/list?groupId=1&pageNumber=1&pageSize=10
+```
+
+
+#### 13.25.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | id | int | 否 | 合约记录编号 |
+| 3.2 | groupId | Int | 否 | 所属群组编号 |
+| 3.3 | timeLimit | Long | 否 | 投票块高限制范围 |
+| 3.4 | fromAddress | String | 否 | 链委员的地址 |
+| 3.5 | type | Int | 否 | 投票类型,1-增加委员,2-去除委员,3-更新委员权重,4-更新阈值 |
+| 3.6 | toAddress | String | 否 | 被修改的外部账户地址,当类型为1,2,3时为非空 |
+| 3.7 | detail | String | 否 | 投票内容详情,当类型为3,4时为非空;3-`{weight: 2}`,4-`{threshold: 2}` |
+| 3.8 | createTime | LocalDateTime | 否 | 创建时间 |
+| 3.9 | modifyTime | LocalDateTime | 是 | 修改时间 |
+| 4 | totalCount | Int | | 总数 |
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": [
+ {
+ "id": 1,
+ "groupId": 1,
+ "timeLimit": 200,
+ "fromAddress": "0x2ac4227e87bccca63893317febadd0b51ad33e1",
+ "type": 3,
+ "toAddress": "0x3214227e87bccca63893317febadd0b51ade735e",
+ "detail": "{weight: 2}",
+ "createTime": "2020-09-18 10:59:02",
+ "modifyTime": "2020-09-18 10:59:02"
+ }
+ ],
+ "totalCount": 1
+}
+```
+
+
+### 13.26 删除链委员会投票记录
+
+删除投票记录
+
+#### 13.26.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/vote/record/{voteId}**
+* 请求方式:DELETE
+* 返回格式:JSON
+
+#### 13.26.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | voteId | int | 否 | 投票记录编号 |
+
+
+***2)入参示例***
+
+```
+http://127.0.0.1:5001/WeBASE-Node-Manager/vote/record/{voteId}
+```
+
+
+#### 13.26.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success"
+}
+```
+
+
+
+### 13.27 获取链治理委员列表(包含权重)
+
+获取链治理委员列表,同时返回委员投票的权重值
+
+#### 13.27.1 传输协议规范
+* 网络传输协议:使用HTTP协议
+* 请求地址: **/governance/committee/list/sorted**
+* 请求方式:GET
+* 返回格式:JSON
+
+#### 13.27.2 请求参数
+
+***1)入参表***
+
+| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | groupId | int | 否 | 群组编号 |
+| 2 | pageNumber | int | 否 | 页码,从1开始 |
+| 3 | pageSize | int | 否 | 页大小 |
+
+
+***2)入参示例***
+
+```
+http://127.0.0.1:5001/WeBASE-Node-Manager/governance/committee/list/sorted?groupId=1&pageNumber=1&pageSize=10
+```
+
+
+#### 13.27.3 返回参数
+
+***1)出参表***
+
+| 序号 | 输出参数 | 类型 | | 备注 |
+|------|-------------|---------------|--------|-------------------------------|
+| 1 | code | Int | 否 | 返回码,0:成功 其它:失败 |
+| 2 | message | String | 否 | 描述 |
+| 3 | | Object | | 返回信息实体 |
+| 3.1 | weight | Int | 否 | 委员投票权重值 |
+| 3.2 | weightRate | BigDecimal | 否 | 权重比 |
+| 3.3 | address | String | 否 | 委员的用户地址 |
+| 3.4 | enable_num | Int | 否 | 委员生效块高 |
+| 4 | totalCount | Int | | 总数 |
+
+
+***2)出参示例***
+* 成功:
+```
+{
+ "code": 0,
+ "message": "success",
+ "data": [
+ {
+ "weight": 1,
+ "weightRate": 33.3
+ "address": "0x2ac4227e87bccca63893317febadd0b51ad33e1",
+ "enable_num": 3
+ }
+ ],
+ "totalCount": 1
+}
+```
+
+
+
+## 14 证书管理模块
+
+### 14.1 获取证书列表接口
+
+获取证书的list列表,返回的列表包含证书指纹、证书内容、证书名字、证书的父证书、证书对应nodeid(节点证书)、证书有效期
+
+注:首次启动项目会自动拉取每一个Front的证书
+
+#### 14.1.1 传输协议规范
* 网络传输协议:使用HTTP协议
* 请求地址: **/cert/list**
* 请求方式:GET
@@ -6277,9 +7379,9 @@ http://localhost:5001/WeBASE-Node-Manager/precompiled/crud
| 序号 | 输入参数 | 类型 | 可为空 | 备注 |
|------|-------------|---------------|--------|-------------------------------|
-| | - | - | |
+| | - | - | |
-
+
***2)入参示例***
@@ -6357,7 +7459,7 @@ http://localhost:5001/WeBASE-Node-Manager/cert/list
|------|-------------|---------------|--------|-------------------------------|
| 1 | fingerPrint | String | 否 | 证书指纹,证书唯一标识 |
-
+
***2)入参示例***
@@ -6556,7 +7658,7 @@ http://localhost:5001/WeBASE-Node-Manager/cert
| 2 | pageNumber | Integer | 否 | 页码,从1开始 |
| 3 | pageSize | Integer | 否 | 页容量 |
-
+
***2)入参示例***
@@ -6630,7 +7732,7 @@ http://localhost:5001/WeBASE-Node-Manager/event/newBlockEvent/list/{groupId}/{pa
| 2 | pageNumber | Integer | 否 | 页码,从1开始 |
| 3 | pageSize | Integer | 否 | 页容量 |
-
+
***2)入参示例***
@@ -7390,7 +8492,7 @@ http://localhost:5001/WeBASE-Node-Manager/deploy/type
|------|-------------|---------------|--------|-------------------------------|
| 1 | -- | - | 否 | -
-
+
***2)入参示例***
@@ -7441,7 +8543,7 @@ http://localhost:5001/WeBASE-Node-Manager/encrypt
|------|-------------|---------------|--------|-------------------------------|
| 1 | -- | - | 否 | -
-
+
***2)入参示例***
@@ -7456,7 +8558,7 @@ http://localhost:5001/WeBASE-Node-Manager/version
| 序号 | 输出参数 | 类型 | | 备注 |
|------|-------------|---------------|--------|-------------------------------|
-| 1 | - | String | 否 | 版本号 |
+| 1 | - | String | 否 | 版本号 |
***2)出参示例***
@@ -7468,6 +8570,161 @@ v1.4.0
## 附录
+### 1. 返回码信息列表
+
+
+`X01XXX`为WeBASE-Front[节点前置错误码](../WeBASE-Front/interface.html#code),`X02XXX`为WeBASE-Node-Manager节点管理服务错误码,`X03XXX`为WeBASE-Sign[签名服务错误码](../WeBASE-Sign/interfaces.html#code)。
+
+
+| code | message | 描述 |
+| ------ | -------------------------------------------- | -------------------------- |
+| 0 | success | 成功 |
+| 102001 | system error | 系统异常 |
+| 102002 | system exception: please check front | 系统异常,请检查前置状态 |
+| 102003 | No group belongs to this groupId(node not belongs to this group) | 当前节点不属于当前群组 |
+| 202000 | invalid front id | 不正确的前置ID(添加节点前置失败) |
+| 202001 | database exception | 数据库异常 |
+| 202002 | not found any front for this group | 找不到此群组的任何前置 |
+| 202003 | not support this ip | 不支持该ip |
+| 202004 | front already exists | 前置已经存在 |
+| 202005 | group id cannot be empty | 群组不能为空 |
+| 202006 | invalid group id | 无效的网络编号 |
+| 202007 | checkCode is null | 校验码为空 |
+| 202008 | invalid checkCode | 无效的校验码 |
+| 202009 | save front fail | 保存前置失败 |
+| 202010 | request front fail | 请求前置失败 |
+| 202011 | abiInfo cannot be empty | abi信息不能为空 |
+| 202012 | user id cannot be empty | 用户编号不能为空 |
+| 202013 | invalid user | 无效的用户编号 |
+| 202014 | user already exists | 用户信息已经存在 |
+| 202015 | contract already exists | 合约信息已经存在 |
+| 202017 | invalid contract id | 无效的合约编号 |
+| 202018 | invalid param info | 无效的入参信息 |
+| 202019 | contract name cannot be repeated | 合约名称不能重复 |
+| 202023 | contract has not deploy | 合约尚未部署 |
+| 202026 | account info already exists | 该帐号已经存在 |
+| 202027 | account info not exists | 该帐号不存在 |
+| 202028 | account name empty | 帐号名称不能为空 |
+| 202029 | invalid account name | 无效的账号名称 |
+| 202030 | password error | 密码错误 |
+| 202031 | role id cannot be empty | 角色编号不能为空 |
+| 202032 | invalid role id | 无效的角色编号 |
+| 202033 | invalid contract address | 无效的合约地址 |
+| 202034 | login fail | 登录失败 |
+| 202035 | contract has been deployed | 该合约已经部署 |
+| 202036 | publicKey cannot be empty | 公钥不能为空 |
+| 202037 | associated account cannot be empty | 关联账号不能为空 |
+| 202040 | contract deploy not success | 合约部署失败 |
+| 202045 | the new password cannot be same as old | 新旧密码不能一致 |
+| 202050 | publicKey's length is 130,address's length is 42 | 公钥长度为130,公钥地址长度为42 |
+| 202051 | wrong host or port | 错误的主机或端口 |
+| 202052 | invalid token | 无效的token |
+| 202053 | token expire | token过期 |
+| 202054 | Available front url is empty, check front status | 合约尚未部署 |
+| 202060 | cert handle error | 证书句柄错误 |
+| 202061 | store cert error | 存储证书错误 |
+| 202062 | cert format error, must start with -----BEGIN CERTIFICATE-----\\n, end with end | 证书格式错误,必须由 --BEGIN CERTIFICATE-- 包 |
+| 202063 | saving front's cert error | 保存前置证书错误 |
+| 202070 | Mail server config error | 邮件服务器配置错误。 |
+| 202071 | Mail server config param empty/not match | 邮件服务器配置参数为空/不匹配 |
+| 202072 | Mail server config error, db's server config is empty | 邮件服务器配置错误,数据库的服务器配置为空 |
+| 202076 | Alert rule error | 警报规则错误。 |
+| 202077 | Alert rule param not match | 警报规则参数不匹配。 |
+| 202080 | Send mail error, please check mail server configuration | 发送邮件错误,请检查邮件服务器配置。 |
+| 202081 | Send mail error, please enable mail server before send | 发送邮件错误,请在发送前启用邮件服务器。 |
+| 202086 | Alert log error | 警报日志错误。 |
+| 202087 | Alert log param: status/logId is empty | 警报日志参数:status/logId为空。 |
+| 202090 | Update guomi methodId error | 更新国密methodId错误 |
+| 202091 | Front's encrypt type not matches with nodemgr | Front的加密类型与nodemgr不匹配 |
+| 202096 | contract address already exists | 合约地址已存在 |
+| 202097 | abi info of this id not exists | 此ID的ABI信息不存在 |
+| 202098 | Contract abi invalid, please check abi | 合约ABI无效,请检查ABI |
+| 202099 | Abi Id cannot be empty | 此ID的ABI信息为空 |
+| 202100 | contractAddress is null | 合约地址为空 |
+| 202110 | User's signUserId not exist | 用户的signUserId不存在 |
+| 202111 | Fail to parse json | 解析json错误 |
+| 202121 | Cert file not found, please check cert path in config | 找不到证书文件,请检查配置中的证书路径 |
+| 202122 | Pem file format error, must surrounded by -----XXXXX PRIVATE KEY----- | Pem文件格式错误,必须包含-----XXXXX PRIVATE KEY----- |
+| 202123 | Pem file content error | Pem文件内容错误 |
+| 202124 | p12's password cannot be chinese | P12的密码不能为中文 |
+| 202125 | p12's password not match | P12的密码错误 |
+| 202126 | P12 file content error | P12文件内容错误 |
+| 202300 | Group id already exists | 群组id已存在 |
+| 202301 | Node's front not exists | 节点前置不存在 |
+| 202310 | govern vote record not exist | 投票记录不存在 |
+| 202311 | permission denied on chain | 链上权限被禁止 |
+| 202401 | No configured of docker registry url. | 没有配置 Docker 镜像更新 URL 地址 |
+| 202402 | Fetch image tag from docker registry error. | 从 Docker 源更新镜像版本失败 |
+| 202403 | Fetch Docker image tag list error, unknown config type. | 查询 Docker 镜像版本失败(未知类型) |
+| 202404 | Save chain's configuration to file error. | 保存链配置信息文件失败 |
+| 202405 | Docker image tag invalid. | 错误的镜像版本 |
+| 202406 | Configuration of host is empty. | 主机配置参数为空 |
+| 202407 | Chain exists, deploy failed. | 链已存在,部署失败 |
+| 202408 | Save chain data to DB error. | 插入链信息到数据库失败 |
+| 202409 | Generate host, agency, group configuration error. | 生成主机,机构,群组配置信息文件失败 |
+| 202410 | Execute build_chain.sh script error. | 执行 build_chain.sh 链生成脚本失败 |
+| 202411 | Host, agency, group configuration error. | 主机,机构,群组配置信息错误 |
+| 202412 | Host ip and num error. | 主机 IP,节点数量配置错误 |
+| 202413 | Agency name invalid, only [a-zA-Z0-9_] is valid. | 机构名称格式错误,只能包含大小写字母,数字,下划线 |
+| 202414 | Group id error, only positive integer is valid. | 群组编号格式错误,必须为正整数 |
+| 202415 | Login to host /ip/ through SSH error. Please check SSH configuration. | SSH登录主机/ip/失败,请检查 SSH 配置 |
+| 202416 | Save agency data into DB error. | 插入新机构信息到数据库失败 |
+| 202417 | Save group data into DB error. | 插入新群组信息到数据库失败 |
+| 202418 | Save host data into DB error. | 插入主机信息到数据库失败 |
+| 202419 | Save front data into DB error. | 插入前置信息到数据库失败 |
+| 202420 | Save node data into DB error. | 插入节点信息到数据库失败 |
+| 202421 | Save node and front mapping data into DB error. | 插入前置和群组映射关系到数据库失败 |
+| 202422 | Parse node index from directory error. | 从目录获取节点序号失败 |
+| 202423 | A single host IP only belongs to one agency. | 一个 IP 主机,只能属于一个机构 |
+| 202424 | Unknown error during deploying. | 部署时发生未知错误 |
+| 202425 | SSH login through username and password is unsupported yet. | 不支持使用 SSH 密码登录主机 |
+| 202426 | Chain has no agency. | 当前链没有所属机构 |
+| 202427 | No deployed chain | 链不存在 |
+| 202428 | IP format error. | IP 格式错误 |
+| 202429 | Agency name cannot be blank when IP is new. | 主机 IP 是新 IP 时,机构名称不能为空 |
+| 202430 | Agency name already exists. | 存在同名机构 |
+| 202431 | Add new node error. | 新增节点错误 |
+| 202432 | No valid chain certification. | 链证书无效 |
+| 202433 | Generate agency private key and crt file error. | 生成机构私钥和证书失败 |
+| 202434 | Host without agency error." | 主机所属机构为空 |
+| 202435 | Node num should be positive integer, and less then 10. | 主机数量格式错误,正整数,并且小于 10 |
+| 202436 | Generate sdk | 生成主机 SDK 私钥和证书失败 |
+| 202437 | Generate node private key and crt files error. | 生成新节点私钥和证书失败 |
+| 202438 | Copy SDK files error. | 拷贝 SDK 证书和私钥失败 |
+| 202439 | Upload SDK files error. | 上传 SDK 证书和私钥失败 |
+| 202440 | Upload node config files error. | 上传节点证书和私钥失败 |
+| 202441 | Copy group config files from original node error. | 从旧节点复制群组配置文件失败 |
+| 202442 | Delete tmp directory of agency error. | 删除机构临时目录失败 |
+| 202443 | Delete tmp directory of SDK error. | 删除 SDK 临时目录失败 |
+| 202444 | Delete tmp directory of node error. | 删除节点临时目录失败 |
+| 202445 | Unknown nodeid. | 未知节点编号(nodeid) |
+| 202446 | Stop node error. | 停止节点失败(停止容器) |
+| 202447 | Start node error. | 启动节点失败(启动容器) |
+| 202448 | Both new image tag and old are the same. | 链升级的新版本和链的现有版本相同 |
+| 202449 | Upgrade chain to new image tag error. | 链升级失败 |
+| 202450 | Delete node failed, node is still in group. | 节点仍属于群组,删除失败 |
+| 202451 | Parse node's config files error. | 读取节点配置文件失败 |
+| 202452 | Delete node's config error. | 删除节点配置文件失败 |
+| 202453 | Stop node before deleting. | 节点正在运行,删除失败,请先停止节点 |
+| 202454 | Update p2p part of related nodes error. | 更新关联节点 P2P 配置失败 |
+| 202455 | Delete chain error. | 删除链失败 |
+| 202456 | Node is still a sealer or observer, delete failed. | 节点处于观察或共识状态,删除失败 |
+| 202457 | Fetch node list from host's configuration files | 从主机配置文件获取节点列表失败 |
+| 202458 | Generate application.yml for front error | 生成前置 application.yml 配置文件失败 |
+| 202459 | Init host with shell script error. | 通过脚本初始化主机失败 |
+| 202460 | Sync files error. | 传输文件失败 |
+| 202461 | Control container through Docker api error. | Docker 容器操作失败 |
+| 202462 | Two nodes at least. | 至少两个节点。 |
+| 202463 | Group need two sealers at least. | 群组至少需要两个共识节点。 |
+| 202464 | WebaseSignAddess configuration error in Application.yml | application.yml中的webaseSignAddess配置错误 |
+| 202465 | Error getting docker image mode | 获取镜像方式错误 |
+| 202466 | Please pull the Docker image manually in host /ip/ | 主机/ip/请手动拉取 Docker 镜像 |
+| 202467 | Max 4 nodes on a single host | 单个主机最多部署 4 个节点 |
+| 202468 | Cannot install node on WeBASE-Node-Manager host. | 无法在WeBASE-Node-Manager主机上安装节点。 |
+| 302000 | user not logged in | 未登录的用户 |
+| 302001 | Access denied | 没有权限 |
+| 402000 | param exception | 参数错误 |
+
### 2. Precompiled Service说明
对预编译合约接口的使用有疑惑,可以查看FISCO BCOS的[PreCompiledService API说明](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/sdk/java_sdk.html#precompiled-service-api)
@@ -7494,3 +8751,50 @@ contract TableFactory {
| 0x1005 | 存储表权限管理 | AuthorityPrecompiled.cpp |
| 0x1006 | 并行合约配置 | ParallelConfigPrecompiled.cpp |
+
+**Precompiled Service API 错误码**
+
+| 错误码 | 消息内容 | 备注 |
+| :----- | :---------------------------------------------- | :----- |
+| 0 | success | |
+| -50000 | permission denied | |
+| -50001 | table name already exist | |
+| -50100 | unknow function call | |
+| -50101 | table does not exist | |
+| -51000 | table name and address already exist | |
+| -51001 | table name and address does not exist | |
+| -51100 | invalid node ID | SDK错误码 |
+| -51101 | the last sealer cannot be removed | |
+| -51102 | the node is not reachable | SDK错误码 |
+| -51103 | the node is not a group peer | SDK错误码 |
+| -51104 | the node is already in the sealer list | SDK错误码 |
+| -51105 | the node is already in the observer list | SDK错误码 |
+| -51200 | contract name and version already exist | SDK错误码 |
+| -51201 | version string length exceeds the maximum limit | SDK错误码 |
+| -51300 | invalid configuration entry | |
+| -51500 | contract name and version already exist | |
+| -51501 | condition parse error | |
+| -51502 | condition operation undefined | |
+| -51600 | invalid ciphers | |
+| -51700 | group sig failed | |
+| -51800 | ring sig failed | |
+| -51900 | contract frozen | |
+| -51901 | contract available | |
+| -51902 | contract repeat authorization | |
+| -51903 | invalid contract address | |
+| -51904 | table not exist | |
+| -51905 | no authorized | |
+| -52000 | committee member exist | |
+| -52001 | committee member not exist | |
+| -52002 | invalid request permission denied | |
+| -52003 | invalid threshold | |
+| -52004 | operator can't be committee member | |
+| -52005 | committee member can't be operator | |
+| -52006 | operator exist | |
+| -52007 | operator not exist | |
+| -52008 | account not exist | |
+| -52009 | invalid account address | |
+| -52010 | account already available | |
+| -52011 | account frozen | |
+| -52012 | current value is expected value | |
+
diff --git a/docs/WeBASE-Node-Manager/upgrade.md b/docs/WeBASE-Node-Manager/upgrade.md
index a21fa3bf..16d4b3e6 100644
--- a/docs/WeBASE-Node-Manager/upgrade.md
+++ b/docs/WeBASE-Node-Manager/upgrade.md
@@ -2,6 +2,53 @@
WeBASE-Node-Manager升级的兼容性说明,请结合[WeBASE-Node-Manager Changelog](https://github.com/WeBankFinTech/WeBASE-Node-Manager)进行阅读
+#### v1.4.1
+新增FISCO BCOS v2.5.0及以上版本的基于角色的权限管理功能,新增了开发者模式
+- 新的权限管理基于角色,可参考FISCO BCOS[权限控制文档](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html)
+- 开发者模式:新增了用户角色developer,可进行查询交易,合约部署调用等功能,无法使用管理员的系统管理与监控等功能。
+
+##### 数据表更新
+
+登录 MySQL 后,选择数据库 `use webasenodemanager;` 后,按顺序执行下面的 SQL 语句进行 DB 升级。
+
+**数据表字段新增**
+- 新增了`tb_user`, `tb_contract`中的`account`字段,并更新了唯一约束。
+- 用户角色表`tb_role`中新增了默认值`developer`
+- 合约表`tb_contract`中新增了`deploy_address`和`deploy_user_name`字段,记录部署的私钥用户信息
+
+```SQL
+-- tb_user修改
+alter table tb_user add column account varchar(50) binary NOT NULL COMMENT '关联账号';
+alter table tb_user drop index `unique_name`
+alter table tb_user add UNIQUE KEY `unique_name` (group_id,user_name,account);
+
+-- tb_contract修改
+alter table tb_contract add column account varchar(50) binary NOT NULL COMMENT '关联账号';
+alter table tb_contract drop index `uk_group_path_name`
+alter table tb_contract add UNIQUE KEY uk_group_path_name (group_id,contract_path,contract_name,account);
+alter table tb_contract add column deploy_address varchar(64) DEFAULT NULL COMMENT '合约部署者地址';
+alter table tb_contract add column deploy_user_name varchar(64) DEFAULT NULL COMMENT '合约部署者用戶名';
+-- tb_role修改
+INSERT INTO `tb_role` (role_name,role_name_zh,create_time,modify_time)VALUES ('developer', '开发者', now(), now());
+```
+
+**数据表结构更改**
+- 新增了链委员管理投票信息表`tb_govern_vote`
+```SQL
+CREATE TABLE IF NOT EXISTS tb_govern_vote (
+ id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '链治理委员投票记录ID',
+ group_id int(11) NOT NULL COMMENT '群组ID',
+ time_limit bigint DEFAULT NULL COMMENT '投票截止块高',
+ from_address varchar(64) NOT NULL COMMENT '管理员地址',
+ type tinyint(8) NOT NULL COMMENT '投票类型,1-选举,2-去除,3-修改委员权重,4,-修改阈值',
+ to_address varchar(64) DEFAULT NULL COMMENT '选举/去除的地址',
+ detail varchar(64) DEFAULT NULL COMMENT '3-修改权重,4-修改阈值时存储具体信息',
+ create_time datetime NOT NULL COMMENT '创建时间',
+ modify_time datetime NOT NULL COMMENT '最近一次更新时间',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='链治理委员投票信息';
+```
+
#### v1.4.0
v1.4.0 新增了可视化部署区块链的功能,同时支持节点的动态管理(扩容、停止、删除等)功能,同时兼容原有的手动搭链添加WeBASE-Front节点前置的模式
diff --git a/docs/WeBASE-Sign/interfaces.md b/docs/WeBASE-Sign/interfaces.md
index c0559e24..2eba39c2 100644
--- a/docs/WeBASE-Sign/interfaces.md
+++ b/docs/WeBASE-Sign/interfaces.md
@@ -587,7 +587,7 @@ v1.4.0
## 附录
### 1. 返回码信息列表
-
+
| Code | message | 描述 |
|---------|---------------------------------------|----------------------------|
| 0 | success | 正常 |
diff --git a/docs/WeBASE-Transaction/install.md b/docs/WeBASE-Transaction/install.md
index ff6389e2..4e747945 100644
--- a/docs/WeBASE-Transaction/install.md
+++ b/docs/WeBASE-Transaction/install.md
@@ -2,11 +2,11 @@
## 1. 前提条件
-| 环境 | 版本 |
-| --------- | ------------------- |
-| Java | JDK8或以上版本 |
-| 数据库 | MySQL-5.6或以上版本 |
-| ZooKeeper | ZooKeeper-3.4.10 |
+| 环境 | 版本 |
+| --------- | ------------------------- |
+| Java | JDK8或以上版本 |
+| 数据库 | MySQL-5.6或以上版本 |
+| ZooKeeper | ZooKeeper-3.6.0或以上版本 |
**备注:**
@@ -153,7 +153,7 @@ job.dataflow.shardingTotalCount=3
# * 说明:本工程使用Sharding-JDBC分库分表,支持单一数据源,也支持多库多表。
# * 单库单表:配置单个数据源,将分库策略和分表策略注释或删除
# * 多库多表:配置多数据源,以群组分库,以年份分表,用户自定义每年分成几个表(注:分表策略的路由字段不可修改[id,gmt_create])
-# * 样例:以两个数据源为例(数据库需事先创建),每张表根据年分表,每年再分成两个子表,以2019和2020年的表为例
+# * 样例:以两个数据源为例(数据库需事先创建),每张表根据年分表,每年再分成两个子表,以2020和2021年的表为例
# 配置所有的数据源,如此处定义了ds0,ds1两个数据源,对应两个库
sharding.jdbc.datasource.names=ds0,ds1
@@ -177,13 +177,13 @@ sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=g
sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds$->{group_id % 2}
# 定义tb_deploy_transaction的分表策略,如此处以创建时间的年份和自增id取模2来路由到子表
-sharding.jdbc.config.sharding.tables.tb_deploy_transaction.actual-data-nodes=ds$->{0..1}.tb_deploy_transaction_$->{2019..2020}_$->{0..1}
+sharding.jdbc.config.sharding.tables.tb_deploy_transaction.actual-data-nodes=ds$->{0..1}.tb_deploy_transaction_$->{2020..2021}_$->{0..1}
sharding.jdbc.config.sharding.tables.tb_deploy_transaction.table-strategy.complex.sharding-columns=id,gmt_create
sharding.jdbc.config.sharding.tables.tb_deploy_transaction.table-strategy.complex.algorithm-class-name=com.webank.webase.transaction.config.MyComplexShardingAlgorithm
sharding.jdbc.config.sharding.tables.tb_deploy_transaction.key-generator-column-name=id
# 定义tb_stateless_transaction的分表策略,如此处以创建时间的年份和自增id取模2来路由到子表
-sharding.jdbc.config.sharding.tables.tb_stateless_transaction.actual-data-nodes=ds$->{0..1}.tb_stateless_transaction_$->{2019..2020}_$->{0..1}
+sharding.jdbc.config.sharding.tables.tb_stateless_transaction.actual-data-nodes=ds$->{0..1}.tb_stateless_transaction_$->{2020..2021}_$->{0..1}
sharding.jdbc.config.sharding.tables.tb_stateless_transaction.table-strategy.complex.sharding-columns=id,gmt_create
sharding.jdbc.config.sharding.tables.tb_stateless_transaction.table-strategy.complex.algorithm-class-name=com.webank.webase.transaction.config.MyComplexShardingAlgorithm
sharding.jdbc.config.sharding.tables.tb_stateless_transaction.key-generator-column-name=id
diff --git a/docs/WeBASE-Web/upgrade.md b/docs/WeBASE-Web/upgrade.md
index 13ce63ed..1eddd1e5 100644
--- a/docs/WeBASE-Web/upgrade.md
+++ b/docs/WeBASE-Web/upgrade.md
@@ -2,6 +2,12 @@
WeBASE-Web升级说明,请结合[WeBASE-Web Changelog](https://github.com/WeBankFinTech/WeBASE-Web)和[WeBASE管理平台使用手册](../WeBASE-Console-Suit/index.html)进行阅读。
+
+#### v1.4.1
+新增FISCO BCOS v2.5.0及以上版本的基于角色的权限管理功能,新增了开发者模式
+- 新的权限管理基于角色,可参考FISCO BCOS[权限控制文档](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html)
+- 开发者模式:新增了用户角色developer,可进行查询交易,合约部署调用等功能,无法使用管理员的系统管理与监控等功能。
+
#### v1.4.0
v1.4.0 主要在兼容原有手动部署底层服务,手动添加 WeBASE-Front 前置服务的基础上,新增了可视化部署底层服务,以及节点的动态管理功能。
diff --git a/docs/WeBASE/ChangeLOG.md b/docs/WeBASE/ChangeLOG.md
index dfbb1f30..65fdd7cf 100644
--- a/docs/WeBASE/ChangeLOG.md
+++ b/docs/WeBASE/ChangeLOG.md
@@ -1,6 +1,23 @@
# 版本及兼容
## 支持FISCO-BCOS 2.X.X系列版本
+
+
+### WeBASE v1.4.1
+
+WeBASE v1.4.1 版本支持 FISCO-BCOS 2.5.x及以上版本。WeBASE 子系统推荐使用下表的版本搭配,FISCO-BCOS 推荐使用 [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0)版本。
+
+| WeBASE子系统名称 | 配套版本地址 | FISCO-BCOS 2.X.X |
+| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
+| [节点前置服务](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Front/index.html) | [WeBASE-Front Release v1.4.1](https://github.com/WeBankFinTech/WeBASE-Front/releases/tag/v1.4.1) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+| [节点管理服务](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Node-Manager/index.html) | [WeBASE-Node-Manager Release v1.4.1](https://github.com/WeBankFinTech/WeBASE-Node-Manager/releases/tag/v1.4.1) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+| [WeBASE管理平台](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Web/index.html) | [WeBASE-Web Release v1.4.1](https://github.com/WeBankFinTech/WeBASE-Web/releases/tag/v1.4.1) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+| [数据导出代码生成子系统](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Codegen-Monkey/index.html) | [WeBASE-Codegen-Monkey v1.2.0](https://github.com/WeBankFinTech/WeBASE-Codegen-Monkey/releases/tag/v1.2.0) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+| [数据导出子系统](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Collect-Bee/index.html) | [WeBASE-Collect-Bee v1.2.0](https://github.com/WeBankFinTech/WeBASE-Collect-Bee/releases/tag/v1.2.0) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+| [签名服务](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Sign/index.html) | [WeBASE-Sign Release v1.4.0](https://github.com/WeBankFinTech/WeBASE-Sign/releases/tag/v1.4.0) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+| [交易服务](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Transaction/index.html) | [WeBASE-Transaction Release v1.4.0](https://github.com/WeBankFinTech/WeBASE-Transaction/releases/tag/v1.4.0) | [FISCO BCOS 2.6.0](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.6.0) |
+
+
### WeBASE v1.4.0
WeBASE v1.4.0 版本支持 FISCO-BCOS 2.4.x, 2.5.x版本,推荐使用2.4.x版本。WeBASE 子系统推荐使用下表的版本搭配,FISCO-BCOS 推荐使用 [FISCO BCOS 2.4.1+](https://github.com/FISCO-BCOS/FISCO-BCOS/releases/tag/v2.4.1)版本。
diff --git a/docs/WeBASE/install.md b/docs/WeBASE/install.md
index e8948352..f1f25670 100644
--- a/docs/WeBASE/install.md
+++ b/docs/WeBASE/install.md
@@ -20,18 +20,18 @@
#### 平台要求
-推荐使用CentOS 7.2+, Ubuntu 16.04及以上版本, 一键部署脚本将自动安装`openssl, curl, wget, git`相关依赖项。
+推荐使用CentOS 7.2+, Ubuntu 16.04及以上版本, 一键部署脚本将自动安装`openssl, curl, wget, git, nginx`相关依赖项。
-其余系统可能导致安装依赖失败,可自行安装`openssl, curl, wget, git`依赖项后重试
+其余系统可能导致安装依赖失败,可自行安装`openssl, curl, wget, git, nginx`依赖项后重试
#### 检查Java
-JDK8或以上版本:
+推荐JDK8-JDK13版本,使用OracleJDK[安装指引](#jdk):
```
java -version
```
-- Java推荐使用[OpenJDK](#id10 ) ,建议从[OpenJDK网站](https://jdk.java.net/java-se-ri/11) 自行下载(CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点)
+注意:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),会导致JavaSDK无法正常连接区块链节点。
#### 检查mysql
@@ -40,23 +40,23 @@ MySQL-5.6或以上版本:
mysql --version
```
-- Mysql安装部署可参考[数据库部署](#id14)
+- Mysql安装部署可参考[数据库部署](#mysql)
#### 检查Python
-
+
使用Python3.5或以上版本:
```
python --version
```
-- Python安装部署可参考[Python部署](#id17)
+如已安装python3,也可通过`python3 --version`查看,在运行脚本时,使用`python3`命令即可
+
+- Python3安装部署可参考[Python部署](#python3)
#### PyMySQL部署(Python3.5+)
Python3.5及以上版本,需安装`PyMySQL`依赖包
-python3.5+版本安装`PyMysql`依赖包方法:
-
- CentOS
```
@@ -83,7 +83,7 @@ python3.5+版本安装`PyMysql`依赖包方法:
获取部署安装包:
```shell
-wget https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.4.0/webase-deploy.zip
+wget https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.4.1/webase-deploy.zip
```
解压安装包:
```shell
@@ -96,7 +96,7 @@ cd webase-deploy
## 修改配置
-① mysql数据库需提前安装,已安装直接配置即可,还未安装请参看[数据库部署](#id14);
+① mysql数据库需提前安装,已安装直接配置即可,还未安装请参看[数据库部署](#mysql);
② 修改配置文件(vi common.properties),没有变化的可以不修改;
@@ -119,10 +119,10 @@ cd webase-deploy
```shell
# WeBASE子系统的最新版本(v1.1.0或以上版本)
-webase.web.version=v1.4.0
-webase.mgr.version=v1.4.0
-webase.sign.version=v1.4.0
-webase.front.version=v1.4.0
+webase.web.version=v1.4.1
+webase.mgr.version=v1.4.1
+webase.sign.version=v1.4.1
+webase.front.version=v1.4.1
# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
@@ -138,8 +138,9 @@ sign.mysql.user=dbUsername
sign.mysql.password=dbPassword
sign.mysql.database=webasesign
-# 节点前置子系统h2数据库名
+# 节点前置子系统h2数据库名和所属机构
front.h2.name=webasefront
+front.org=fisco
# WeBASE管理平台服务端口
web.port=5000
@@ -176,7 +177,7 @@ node.dir=/data/app/nodes/127.0.0.1/node0
# 搭建新链时需配置
# FISCO-BCOS版本
-fisco.version=2.4.1
+fisco.version=2.6.0
# 搭建节点个数(默认两个)
node.counts=nodeCounts
```
@@ -193,11 +194,10 @@ node.counts=nodeCounts
```shell
# WeBASE子系统的最新版本(v1.1.0或以上版本)
-webase.web.version=v1.4.0
-webase.mgr.version=v1.4.0
-webase.sign.version=v1.4.0
-# Docker 镜像版本,默认不需要修改
-fisco.webase.docker.cdn.version=v1.4.0
+webase.web.version=v1.4.1
+webase.mgr.version=v1.4.1
+webase.sign.version=v1.4.1
+fisco.webase.docker.cdn.version=v1.4.1
# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
@@ -344,49 +344,49 @@ http://{deployIP}:{webPort}
## 附录
+
### 1. Java环境部署
-此处给出OpenJDK安装简单步骤,供快速查阅。更详细的步骤,请参考[官网](https://openjdk.java.net/install/index.html)。
-
-#### ① 安装包下载
+#### CentOS环境安装Java
+
-从[官网](https://jdk.java.net/java-se-ri/11)下载对应版本的java安装包,并解压到服务器相关目录
+**注意:CentOS下OpenJDK无法正常工作,需要安装OracleJDK[下载链接](https://www.oracle.com/technetwork/java/javase/downloads/index.html)。**
-```shell
-mkdir /software
-tar -zxvf openjdkXXX.tar.gz /software/
```
+# 创建新的文件夹,安装Java 8或以上的版本,推荐JDK8-JDK13版本,将下载的jdk放在software目录
+# 从Oracle官网(https://www.oracle.com/technetwork/java/javase/downloads/index.html)选择Java 8或以上的版本下载,例如下载jdk-8u201-linux-x64.tar.gz
+$ mkdir /software
-#### ② 配置环境变量
+# 解压jdk
+$ tar -zxvf jdk-8u201-linux-x64.tar.gz
-- 修改/etc/profile
+# 配置Java环境,编辑/etc/profile文件
+$ vim /etc/profile
-```
-sudo vi /etc/profile
-```
+# 打开以后将下面三句输入到文件里面并保存退出
+export JAVA_HOME=/software/jdk-8u201 #这是一个文件目录,非文件
+export PATH=$JAVA_HOME/bin:$PATH
+export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-- 在/etc/profile末尾添加以下信息
+# 生效profile
+$ source /etc/profile
-```shell
-JAVA_HOME=/software/jdk-11
-PATH=$PATH:$JAVA_HOME/bin
-CLASSPATH==.:$JAVA_HOME/lib
-export JAVA_HOME CLASSPATH PATH
-```
-
-- 重载/etc/profile
-
-```
-source /etc/profile
+# 查询Java版本,出现的版本是自己下载的版本,则安装成功。
+java -version
```
-#### ③ 查看版本
+#### Ubuntu环境安装Java
+
```
-java -version
+ # 安装默认Java版本(Java 8或以上)
+ sudo apt install -y default-jdk
+ # 查询Java版本
+ java -version
```
### 2. 数据库部署
+
此处以Centos安装*MariaDB*为例。*MariaDB*数据库是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。*MariaDB*完全兼容 MySQL,包括API和命令行。其他安装方式请参考[MySQL官网](https://dev.mysql.com/downloads/mysql/)。
@@ -469,6 +469,9 @@ mysql > create database webasenodemanager;
```
### 3. Python部署
+
+
+python版本要求使用python3.x, 推荐使用python3.5及以上版本
- CentOS
@@ -482,40 +485,11 @@ mysql > create database webasenodemanager;
sudo apt-get install -y python-requests
```
-### 4. 安装MySql python依赖包(使用于python2.7+)
-
-#### 查看python版本
-
-```
-python --version
-```
-python2.7+版本,需要安装`MySQL-python`,安装方法如下:
-
-*注*:同时支持python3.5+,python3.5+时需要安装`Py-MySQL`依赖包,可参考 [检查python环境-PyMysql](#pymysql-python3-5)
-
-python2.7+版本安装`MySQL-python`依赖包方法:
-
-#### 4.1 MySQL-python部署(Python2.7)
-
-- CentOS
-
- ```
- sudo yum install -y MySQL-python
- ```
-
-- Ubuntu
-
- ```
- sudo apt-get install -y python-pip
- sudo pip install MySQL-python
- ```
-
-
-
## 常见问题
### 1. Python命令出错
+- SyntaxError报错
```
File "deploy.py", line 62
print helpMsg
@@ -523,19 +497,17 @@ python2.7+版本安装`MySQL-python`依赖包方法:
SyntaxError: Missing parentheses in call to "print". Did you mean print(helpMsg)?
```
-答:检查Python版本
-
-### 2. 使用Python2时找不到MySQLdb
-
+- 找不到fallback关键字
```
-Traceback (most recent call last):
-...
-ImportError: No module named MySQLdb
+File "/home/ubuntu/webase-deploy/comm/utils.py", line 127, in getCommProperties
+ value = cf.get('common', paramsKey,fallback=None)
+TypeError: get() got an unexpected keyword argument 'fallback'
```
-答:需要安装MySQL-python,安装请参看 [附录](#mysql-python)
+答:检查[Python版本](#checkpy),推荐使用python3.5及以上版本
-### 3. 使用Python3时找不到pymysql
+
+### 2. 使用Python3时找不到pymysql
```
Traceback (most recent call last):
@@ -545,23 +517,11 @@ ImportError: No module named 'pymysql'
答:需要安装PyMySQL,安装请参看 [pymysql](#pymysql-python3-5)
-### 4. 安装MySQL-python遇到问题
-
-```
-Command "python setup.py egg_info" failed with error code 1
-```
-
-答:运行下面两个命令
-```
-pip install --upgrade setuptools
-python -m pip install --upgrade pip
-```
-
-### 5. 部署时某个组件失败,重新部署提示端口被占用问题
+### 3. 部署时某个组件失败,重新部署提示端口被占用问题
答:因为有个别组件是启动成功的,需先执行“python deploy.py stopAll”将其停止,再执行“python deploy.py installAll”部署全部。
-### 6. 管理平台启动时Nginx报错
+### 4. 管理平台启动时Nginx报错
```
...
@@ -573,7 +533,7 @@ Exception: execute cmd error ,cmd : sudo /usr/local/nginx/sbin/nginx -c /data/a
答:缺少/etc/nginx/mime.types文件,建议重装nginx。
-### 7. 部署时数据库访问报错
+### 5. 部署时数据库访问报错
```
...
@@ -590,7 +550,7 @@ OperationalError: (1045, "Access denied for user 'root'@'localhost' (using passw
答:确认数据库用户名和密码
-### 8. 节点sdk目录不存在
+### 6. 节点sdk目录不存在
```
...
@@ -599,17 +559,17 @@ OperationalError: (1045, "Access denied for user 'root'@'localhost' (using passw
答:确认节点安装目录下有没有sdk目录(企业部署工具搭建的链可能没有),如果没有,需手动创建"mkdir sdk",并将节点证书(ca.crt、node.crt、node.key)复制到该目录,再重新部署。
-### 9. 前置启动报错“nested exception is javax.net.ssl.SSLException”
+### 7. 前置启动报错“nested exception is javax.net.ssl.SSLException”
```
...
nested exception is javax.net.ssl.SSLException: Failed to initialize the client-side SSLContext: Input stream not contain valid certificates.
```
-答:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点,因此在使用CentOS操作系统时,推荐从[OpenJDK网站](https://jdk.java.net/java-se-ri/11)自行下载。
+答:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK无法正常连接区块链节点,因此在使用CentOS操作系统时,推荐使用[OracleJDK](#jdk)。
-### 10.前置启动报错“Processing bcos message timeout”
+### 8.前置启动报错“Processing bcos message timeout”
```
...
@@ -618,9 +578,9 @@ org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating
...
```
-答:一些Oracle JDK版本缺少相关包,导致节点连接异常。推荐使用OpenJDK,从[OpenJDK网站](https://jdk.java.net/java-se-ri/11)自行下载。
+答:一些OpenJDK版本缺少相关包,导致节点连接异常。推荐使用[OracleJDK](#jdk)。
-### 11. 服务进程起来了,服务不正常
+### 9. 服务进程起来了,服务不正常
```
...
@@ -629,36 +589,41 @@ org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating
答:查看日志,确认问题原因。确认后修改重启,如果重启提示服务进程在运行,先执行“python deploy.py stopAll”将其停止,再执行“python deploy.py startAll”重启。
-### 12. WeBASE-Web登录页面的验证码加载不出来
-
-答:检查WeBASE-Node-Manager后台服务是否已启动成功:在webase-node-mgr目录下,运行`bash status.sh`或者查看目录中`log/WeBASE-Node-Manager.log`日志文件,查看是否启动失败;
-
-### 13. WeBASE CDN加速服务
-
-答:WeBASE CDN 加速服务提供 WeBASE 各子系统安装包的下载服务。
-
-为了提供更稳定的下载服务,从 WeBASE v1.4.0 开始使用新的 CDN 下载地址。具体使用方法如下:
-
-CDN 下载地址:
-```Bash
-https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/{release_version}/webase-{subsystem}.zip
-```
-
-其中`{release_version}`为`v1.x.x`格式,`{subsystem}`则是子系统名字,支持下载`sign, front, node-mgr, web`子系统的zip安装包(全小写),暂不支持webase-transaction的安装包下载。
-
-可以直接通过`wget`或者`curl -O`命令直接获取安装包。比如:
-
-- 获取WeBASE-Node-Manager v1.4.0的安装包`webase-node-mgr.zip`
+### 10. WeBASE-Web登录页面的验证码加载不出来
+
+答:检查WeBASE-Node-Manager后台服务是否已启动成功。若启动成功,检查后台日志:
+
+* 进入 `webase-node-mgr` 目录下,执行 `bash status.sh` 检查服务是否启动,如果服务没有启动,运行 `bash start.sh` 启动服务;
+
+* 如果服务已经启动,按照如下修改日志级别
+ * `webase-node-mgr/conf/application.yml`
+
+ ```
+ #log config
+ logging:
+ level:
+ com.webank.webase.node.mgr: debug
+ ```
+
+ * `webase-node-mgr/conf/log/log4j2.xml`
+
+ ```
+
+
+
+
+
+
+ ```
-```
-wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.0/webase-node-mgr.zip
-// 或
-curl -O https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.0/webase-node-mgr.zip
-```
+* 修改日志level后,重启服务 `bash stop.sh && bash start.sh`
+* 重启服务后,检查日志文件 `log/WeBASE-Node-Manager.log`。
+
+ * 检查是否有异常信息。如果有异常信息,根据具体的异常信息检查环境配置,或者通过搜索引擎进行排查。
-### 14. WeBASE代码仓库国内gitee镜像
+### 11. WeBASE 国内镜像与CDN加速服务
-答:WeBASE代码仓库在国内的gitee镜像地址为`https://gitee.com/WeBank/WeBASE`,WeBASE其他子系统的仓库则是`https://gitee.com/WeBank/`+ `WeBASE-XXX`,如WeBASE-Front的gitee代码仓库为`https://gitee.com/WeBank/WeBASE-Front`
+答:WeBASE CDN 加速服务提供 WeBASE 各子系统安装包的下载服务,可参考[国内镜像和CDN加速攻略](./mirror.html)
diff --git a/docs/WeBASE/introduction.md b/docs/WeBASE/introduction.md
index 5b22f883..6bbed8d2 100644
--- a/docs/WeBASE/introduction.md
+++ b/docs/WeBASE/introduction.md
@@ -26,24 +26,27 @@ WeBASE所有子系统独立存在,均可独立部署,独立提供服务。
![[]](../../images/WeBASE/function.png)
## 各子系统简介
-- **节点前置服务** [WeBASE-Front](https://github.com/WeBankFinTech/WeBASE-Front) 集成web3sdk,提供RESTful风格的接口,客户端可以使用http的形式和节点进行交互,内置内存数据库,采集节点健康度数据。内置web控制台,实现节点的可视化操作。
+
+- **节点前置服务** [WeBASE-Front仓库](https://github.com/WeBankFinTech/WeBASE-Front) 集成web3sdk,提供RESTful风格的接口,客户端可以使用http的形式和节点进行交互,内置内存数据库,采集节点健康度数据。内置web控制台,实现节点的可视化操作。
- **节点管理服务**
-[WeBASE-Node-Manager](https://github.com/WeBankFinTech/WeBASE-Node-Manager)
+[WeBASE-Node-Manager仓库](https://github.com/WeBankFinTech/WeBASE-Node-Manager)
处理前端页面所有web请求,管理各个节点的状态,管理链上所有智能合约,对区块链的数据进行统计、分析,对异常交易的审计,私钥管理等。
- **WeBASE管理平台**
-[WeBASE-Web](https://github.com/WeBankFinTech/WeBASE-Web)
+[WeBASE-Web仓库](https://github.com/WeBankFinTech/WeBASE-Web)
可视化操作平台,可基于此平台查看节点信息,开发智能合约等。
- **交易服务**
-[WeBASE-Transcation](https://github.com/WeBankFinTech/WeBASE-Transcation) 接收交易请求,缓存交易到数据库中,异步上链,可大幅提升吞吐量,解决区块链的tps瓶颈。
+[WeBASE-Transcation仓库](https://github.com/WeBankFinTech/WeBASE-Transcation) 接收交易请求,缓存交易到数据库中,异步上链,可大幅提升吞吐量,解决区块链的tps瓶颈。
- **私钥托管和签名服务**
-[WeBASE-Sign](https://github.com/WeBankFinTech/WeBASE-Sign) 托管用户私钥,提供云端签名。
+[WeBASE-Sign仓库](https://github.com/WeBankFinTech/WeBASE-Sign) 托管用户私钥,提供云端签名。
- **数据导出代码生成工具**
-[WeBASE-Codegen-Monkey](https://github.com/WeBankFinTech/WeBASE-Codegen-Monkey) 代码生成工具,通过配置可以生成数据导出的核心代码。
+[WeBASE-Codegen-Monkey仓库](https://github.com/WeBankFinTech/WeBASE-Codegen-Monkey) 代码生成工具,通过配置可以生成数据导出的核心代码。
- **数据导出服务**
-[WeBASE-Collect-Bee](https://github.com/WeBankFinTech/WeBASE-Collect-Bee) 导出区块链上的基础数据,如当前块高、交易总量等,通过智能合约的配置,导出区块链上合约的业务数据,包括event、构造函数、合约地址、执行函数的信息等。
+[WeBASE-Collect-Bee仓库](https://github.com/WeBankFinTech/WeBASE-Collect-Bee) 导出区块链上的基础数据,如当前块高、交易总量等,通过智能合约的配置,导出区块链上合约的业务数据,包括event、构造函数、合约地址、执行函数的信息等。
+
+各子系统的技术文档可到[WeBASE子系统文档](https://fintech.webank.com/developer/docs/webase/docs/WeBASE/subsystem.html)中查看
\ No newline at end of file
diff --git a/docs/WeBASE/mirror.md b/docs/WeBASE/mirror.md
new file mode 100644
index 00000000..3cbf2e8f
--- /dev/null
+++ b/docs/WeBASE/mirror.md
@@ -0,0 +1,103 @@
+# 国内镜像和CDN加速攻略
+本节为访问GitHub较慢的用户提供国内源码镜像与安装包下载地址,以及WeBASE文档加速访问介绍。
+
+## WeBASE及子系统源码及安装包
+
+### 源码同步
+
+WeBASE当前仓库源码位于[https://github.com/WebankFinTech/WeBASE](https://github.com/WebankFinTech/WeBASE),每个新的版本发布会将代码合入master分支。
+
+为了方便国内用户,我们同样在gitee上提供了镜像仓库[https://giteee.com/Webank/WeBASE](https://giteee.com/Webank/WeBASE),每次新版本发布后,镜像仓库会同步GitHub上官方仓库的更新,如果从GitHub下载失败,请尝试使用Gitee镜像仓库。
+
+WeBASE各子系统的Github代码仓库则是`https://github.com/WebankFinTech/` + `WeBASE-XXX`,对应的gitee仓库则是`https://gitee.com/WeBank/` + `WeBASE-XXX`
+
+如WeBASE-Front的Github代码仓库为`https://github.com/WebankFinTech/WeBASE-Front`,Gitee代码仓库为`https://gitee.com/WeBank/WeBASE-Front`
+
+### 一键部署与安装包
+
+WeBASE每个新版本发布后,会在[WeBASELargefiles](https://github.com/WeBankFinTech/WeBASELargefiles/releases)GitHub的Releases中提供对应的WeBASE一键部署工具和对应安装包。
+
+其中WeBASELargefiles提供webase-deploy一键部署工具(即WeBASE源码中`/deploy`文件夹),以及webase-front.zip, webase-node-mgr.zip, webase-sign.zip, webase-web.zip子系统的安装包。
+
+同时提供以下国内镜像,**可加速下载安装包**:
+```Bash
+https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/{release_version}/webase-{subsystem}.zip
+```
+其中`{release_version}`为`v1.x.x`格式,`{subsystem}`则是子系统名字。
+
+支持下载`sign, front, node-mgr, web`子系统的zip安装包(全小写),暂不支持webase-transaction的安装包下载。
+
+*注:可视化部署中通过国内镜像手动下载docker镜像,文件名则是`docker-fisco-webase.tar`或国密版`docker-fisco-webase-gm.tar`*
+
+## WeBASE文档
+
+WeBASE文档使用readthedocs管理,全部开源于[https://webasedoc.readthedocs.io/zh_CN/latest/index.html](https://webasedoc.readthedocs.io/zh_CN/latest/index.html),同样提供国内镜像文档[https://fintech.webank.com/developer/docs/webase/index.html](https://fintech.webank.com/developer/docs/webase/index.html),*由于网站资源更新周期安排,国内镜像文档更新会比readthedocs有所延迟*。
+
+每个版本发布会为上个版本的文档打Tag,新版本的文档会合入主干分支,文档由于会持续改进,所以是下个版本发布才打上个版本的tag。readthedocs文档支持下载PDF格式,方便用户使用。
+
+## 举例:使用国内镜像进行一键部署
+
+本节WeBASE 1.4.1为例进行一键部署,一键部署会默认使用国内镜像下载安装包,下面仅演示关键步骤,具体操作可参考[WeBASE一键部署](./install.html)
+
+### 下载WeBASE一键部署工具
+
+```bash
+wget https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.4.0/webase-deploy.zip
+```
+
+如果下载失败请尝试`git clone https://github.com/WeBankFinTech/WeBASE.git`,并使用`WeBASE/deploy`目录的部署脚本即可。
+
+### 单独下载WeBASE子系统的安装包
+
+WeBASE一键部署(webase-deploy)会自动下载子系统安装包,用户也可以手动下载安装包或编译源码得到安装包,并复制到webase-deploy目录下。
+
+如需手动下载某一子系统的安装包,可以直接通过`wget`或者`curl -O`命令直接获取安装包。比如:
+
+- 获取WeBASE-Node-Manager v1.4.1的安装包`webase-node-mgr.zip`
+
+```
+wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.1/webase-node-mgr.zip
+// 或
+curl -LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.4.1/webase-node-mgr.zip
+```
+
+若通过源码编译获取安装包并用于一键部署工具,需要进行文件夹的重命名,参考下一章节。
+
+## 举例:使用国内源码镜像编译WeBASE-Front
+
+本节以WeBASE-Front子系统为例,从gitee镜像下载源码并编译,编译后的配置方法,请参考各子系统的安装部署文档。
+
+### 下载源码
+
+```bash
+git clone https://gitee.com/WeBank/WeBASE-Front.git
+```
+
+### 编译源码
+
+依据WeBASE-Front节点前置安装文档的[环境要求](../WeBASE-Front/install.html)进行配置,如jdk(oracle jdk8及以上),配置gradle(4.10或以上)或直接使用gradlew脚本进行编译
+
+```bash
+// java版本
+java -version
+// 进入源码目录
+cd WeBASE-Front
+// 已有gradle时,使用gradle
+gradle build -x test
+// 不配置gradle,直接使用gradlew
+chmod +x ./gradlew && ./gradlew build -x test
+```
+
+### 修改配置
+编译完成后,将在当前目录得到`dist`文件夹
+
+重命名dist包中的`conf_template`为`conf`后,并将节点的sdk证书复制到`conf`目录后,即可启动。
+
+修改配置的具体方法,可参考[WeBASE-Front部署](../WeBASE-Front/install.html)
+```
+cd dist
+mv conf_template conf
+// 此处需要复制ca.crt, node.crt, node.key
+cp /fisco/nodes/127.0.0.1/sdk/* ./conf
+bash start.sh
+```
diff --git a/docs_en/conf.py b/docs_en/conf.py
index f7589a68..a7595ef1 100644
--- a/docs_en/conf.py
+++ b/docs_en/conf.py
@@ -110,7 +110,7 @@
# The short X.Y version.
version = '1.4'
# The full version, including alpha/beta/rc tags.
-release = 'v1.4.0'
+release = 'v1.4.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/images/WeBASE-Console-Suit/developer_mode_enable.png b/images/WeBASE-Console-Suit/developer_mode_enable.png
new file mode 100644
index 00000000..506d5982
Binary files /dev/null and b/images/WeBASE-Console-Suit/developer_mode_enable.png differ
diff --git a/images/WeBASE-Console-Suit/governance_committee.png b/images/WeBASE-Console-Suit/governance_committee.png
new file mode 100644
index 00000000..fb533c84
Binary files /dev/null and b/images/WeBASE-Console-Suit/governance_committee.png differ
diff --git a/images/WeBASE-Console-Suit/governance_operator.png b/images/WeBASE-Console-Suit/governance_operator.png
new file mode 100644
index 00000000..85eaffcf
Binary files /dev/null and b/images/WeBASE-Console-Suit/governance_operator.png differ
diff --git a/images/WeBASE-Console-Suit/login_user_add_2.png b/images/WeBASE-Console-Suit/login_user_add_2.png
index f9b6ee76..3520bf97 100644
Binary files a/images/WeBASE-Console-Suit/login_user_add_2.png and b/images/WeBASE-Console-Suit/login_user_add_2.png differ
diff --git a/index.rst b/index.rst
index 7486f463..d8fae7aa 100644
--- a/index.rst
+++ b/index.rst
@@ -6,15 +6,15 @@ WeBASE 技术文档
.. admonition:: Overview
- - WEBASE整体架构,请参考 `整体架构 <./docs/WeBASE/introduction.html>`_
- - WEBASE搭建,请参考 `安装 <./docs/WeBASE/install.html>`_
- - WeBASE-Front详细介绍请参考 `WeBASE-Front <./docs/WeBASE-Front/README.html>`_
- - WeBASE-Node-Manager详细介绍请参考 `WeBASE-Node-Manager <./docs/WeBASE-Node-Manager/README.html>`_
- - WeBASE-Web详细介绍请参考 `WeBASE-Web <./docs/WeBASE-Web/README.html>`_
- - WeBASE-Codegen-Monkey详细介绍请参考 `WeBASE-Codegen-Monkey <./docs/WeBASE-Codegen-Monkey/index.html>`_
- - WeBASE-Collect-Bee详细介绍请参考 `WeBASE-Collect-Bee <./docs/WeBASE-Collect-Bee/index.html>`_
- - WeBASE-Sign详细介绍请参考 `WeBASE-Sign <./docs/WeBASE-Sign/README.html>`_
- - WeBASE-Transaction详细介绍请参考 `WeBASE-Transaction <./docs/WeBASE-Transaction/index.html>`_
+ - WEBASE整体架构,请参考 `整体架构文档 <./docs/WeBASE/introduction.html>`_
+ - WEBASE搭建,请参考 `安装文档 <./docs/WeBASE/install.html>`_ 或`WeBASE源码仓库 `_
+ - WeBASE-Front详细介绍请参考 `WeBASE-Front文档 <./docs/WeBASE-Front/README.html>`_ 或`WeBASE-Front源码仓库 `_
+ - WeBASE-Node-Manager详细介绍请参考 `WeBASE-Node-Manager文档 <./docs/WeBASE-Node-Manager/README.html>`_ 或`WeBASE-Node-Manager源码仓库 `_
+ - WeBASE-Web详细介绍请参考 `WeBASE-Web文档 <./docs/WeBASE-Web/README.html>`_ 或`WeBASE-Web源码仓库 `_
+ - WeBASE-Codegen-Monkey详细介绍请参考 `WeBASE-Codegen-Monkey文档 <./docs/WeBASE-Codegen-Monkey/index.html>`_ 或`WeBASE-Codegen-Monkey源码仓库 `_
+ - WeBASE-Collect-Bee详细介绍请参考 `WeBASE-Collect-Bee文档 <./docs/WeBASE-Collect-Bee/index.html>`_ 或`WeBASE-Collect-Bee源码仓库 `_
+ - WeBASE-Sign详细介绍请参考 `WeBASE-Sign文档 <./docs/WeBASE-Sign/README.html>`_ 或`WeBASE-Sign源码仓库 `_
+ - WeBASE-Transaction详细介绍请参考 `WeBASE-Transaction文档 <./docs/WeBASE-Transaction/index.html>`_ 或`WeBASE-Transaction源码仓库 `_
.. toctree::
:maxdepth: 3
@@ -24,6 +24,7 @@ WeBASE 技术文档
docs/WeBASE-Console-Suit/index.md
docs/WeBASE/subsystem.md
docs/WeBASE/quick-start.md
+ docs/WeBASE/mirror.md
docs/WeBASE/CONTRIBUTING.md
docs/WeBASE/ChangeLOG.md
..
diff --git a/release_note.txt b/release_note.txt
index 0d0c52f8..66d62a80 100644
--- a/release_note.txt
+++ b/release_note.txt
@@ -1 +1 @@
-v1.4.0
+v1.4.1