# 分布式节点管理台
## 产品背景及定位
随着国家主链建设的推进,多方协作成为实现主链高效运营的关键。为助力参与方快速融入国家主链,我们推出'节点管理台'。它是一款专为国家主链参与建设方设计的区块链节点管理与链上治理平台,帮助各方高效部署和管理节点,并提供全面的智能合约管理和链上治理能力,最终实现对国家主链生态的共同建设和治理。
“节点管理台”是一款覆盖区块链节点管理、智能合约管理、链上投票管理、链账户管理(支持公钥模式和证书模式)和数据可视化展示的综合性工具平台,旨在通过简单易用的界面和强大的功能,帮助参与方快速部署节点、加入国家主链网络,并实现对节点、合约和链上交易的全生命周期管理。
## 产品功能清单
| 主模块 | 二级模块 | 主要功能 | 功能描述 |
| ------------ | --------------- | -------------------- |-----------------------------------------------------|
| Dashboard | - | 查看概览 | 查看平台节点数、节点出块数、交易数和投票事件 |
| Dashboard | - | 查看节点拓扑 | 查看节点与外部节点网络连接的拓扑关系 |
| Dashboard | - | 查看我的交易 | 查看平台链账户发起的交易统计情况 |
| 链登记管理 | - | 导入链 | 支持用户导入链的配置文件 |
| 链登记管理 | - | 删除链 | 支持用户删除已导入的链 |
| 节点管理 | 节点管理 | 节点列表 | 查看本平台新增/导入的节点信息 |
| 节点管理 | 节点管理 | 新增节点 | 支持用户创建并部署目标链的同步节点,并支持定向连接其它节点 |
| 节点管理 | 节点管理 | 导入节点 | 导入现有目标链的节点,并支持定向连接其它节点 |
| 节点管理 | 节点管理 | 查看节点 | - |
| 节点管理 | 节点管理 | 编辑节点 | - |
| 节点管理 | 节点管理 | 重启节点 | 重新启动节点,大部分节点配置项变更后,如要生效,都需要重启节点 |
| 节点管理 | 节点管理 | 停止节点 | 停止节点运行 |
| 节点管理 | 节点管理 | 监视节点 | 查看节点的运行情况 |
| 节点管理 | Agent管理 | 新增Agent | 支持用户在部署Agent服务后,将Agent服务信息创建到平台。Agent服务主要用于外部节点的监控。 |
| 节点管理 | Agent管理 | 编辑Agent | 支持用户编辑Agent服务的备注名、服务器地址等信息。 |
| 节点管理 | Agent管理 | 删除Agent | 支持用户删除Agent服务 |
| 合约管理 | - | 合约列表 | 查看本平台的全部合约信息 |
| 合约管理 | - | 部署合约 | 支持用户部署新的合约 |
| 合约管理 | - | 查看合约 | 支持用户查看已经部署的合约的链上运行情况 |
| 合约管理 | - | 升级合约 | 支持用户升级原有合约 |
| 合约管理 | - | 编辑合约 | 支持用户编辑合约的调用方法 |
| 合约管理 | - | 调用合约 | 支持用户在线调用合约 |
| 合约管理 | - | 冻结合约 | 支持链管理员对正常运行的合约进行冻结,冻结后禁止调用合约 |
| 合约管理 | - | 解冻合约 | 支持链管理员对冻结的合约进行解冻 |
| 合约管理 | - | 注销合约 | 支持链管理员对合约进行注销,注销后的合约不可再用 |
| 合约管理 | - | 删除合约 | 支持删除平台部署失败的合约 |
| 投票管理 | - | 投票列表 | 查看链上所有的投票事件 |
| 投票管理 | - | 发起投票 | 支持链管理员创建新的投票事件 |
| 投票管理 | - | 查看投票 | 支持链管理员查看投票详情 |
| 投票管理 | - | 参与投票 | 支持链管理员对投票事件进行投票 |
| 链账户管理 | 公钥账户 | 账户列表 | 查看本平台的全部的节点账户和用户账户信息 |
| 链账户管理 | 公钥账户 | 查看账户 | 查看账户的公私钥信息 |
| 链账户管理 | 公钥账户 | 申请账户 | 支持用户申请节点账户或用户账户 |
| 链账户管理 | 公钥账户 | 导入账户 | 支持用户导入已有的节点账户或用户账户 |
| 链账户管理 | 公钥账户 | 删除账户 | - |
| 区块链浏览器 | - | - | 支持通过跳转外链的方式查看 |
| 平台账户管理 | - | 平台账户列表 | 查看本平台的全部账户信息 |
| 平台账户管理 | - | 新建账号 | - |
| 平台账户管理 | - | 禁用/启用账号 | 禁用后该账号将不可登录 |
| 平台账户管理 | - | 重置密码 | 当用户密码丢失时,由平台Admin账户配置新的密码,并发放给用户自行修改新密码 |
| 平台账户管理 | - | 修改密码 | 支持用户输入原密码,修改新密码 |
| 平台账户管理 | - | 删除账号 | - |
| 系统升级 | - | 获取新的软件包 | 支持用户跳转外链的方式获取可升级的软件包 |
## 安装指南
### 硬件/软件需求
#### 操作系统
- linux
#### 硬件配置
| 配置 | 最低配置 | 推荐 |
|-----|-------|-------|
| CPU | 1.5Hz | 2.4Hz |
| 内存 | 8G | 16G |
| 核心 | 4核 | 8核 |
| 带宽 | 2Mb | 10Mb |
#### 软件环境准备
| 软件 | 版本 | 是否可选 |
|----------------|--------------|------|
| docker | v27.4.0+ | |
| docker-compose | v2.32.0 | |
| go | v1.22+ | 可选 |
下载地址:
- https://docs.docker.com/engine/install/
- https://docs.docker.com/compose/install/
- https://go.dev/doc/install
若已安装,请通过命令查看版本:
```
$ docker -v
$ docker-compose -v
$ go version
```
### 部署
节点管理台部署需要部署自己本身、agent代理、区块链浏览器、夜莺监控
- 节点管理台包含基础的功能服务,比如节点的创建、启停;合约的创建、冻结等功能
- agent代理用来对服务器上的节点进行操控和管理,包含对节点的编辑、创建、启停这些功能,节点管理台通过agent服务可以实现对跨服务器的节点进行管理
- 区块链浏览器用来查看和监控区块链的数据,可以看到区块链拥有的节点、合约、区块、交易等数据
- 夜莺监控主要用来监控区块链的交易数据、异常的交易以及对服务器本身的监控,用户可自定义夜莺监控指标,增加监控指标
#### 安装准备
```shell
# 下载节点管理台
git clone git@git.chainweaver.org.cn:chainweaver/node-management-backend.git
# 定位到当前目录
cd node-management-backend
# 切换到对应分支
git checkout v1.0.0_alpha
```
#### 安装部署
- 如果需要修改配置文件或者有端口冲突,请查阅下方详细部署流程
```shell
# 定位docker部署路径
cd docker/docker-node-manegement && chmod +x *.sh
# 启动
./start.sh
# 定位浏览器
cd ../docker-explorer && chmod +x *.sh
# 启动命令
./start.sh
# 定位夜莺
cd ../docker-n9e && chmod +x *.sh
# 启动
./start.sh
# 夜莺数据初始化,初始化大屏数据
./init.sh
# 定位agent服务位置
cd ../../node_agent && chmod +x *.sh
# 启动服务服务
./start.sh
# 导入链配置
# 1、登录节点管理台服务端
# http://127.0.0.1:3001 账户密码:admin/admin
# 2、点击`链登记管理`
# 3、下载`样例文件`
# 4、参考`样例文件`配置链进行导入
```
#### 访问地址
##### 管理台
- 地址(默认):http://127.0.0.1:3001
- 账户密码:admin/admin
##### 监控地址
- 地址(默认):http://127.0.0.1:17000
- 账户密码:root/root.2020
#### 部署顺序

#### 部署节点管理台
节点管理台部署主要分为三部分
- 前端
- 数据库
- 后端
##### 节点管理台使用docker composer部署,通过代理对节点进行管理
- 前端和数据库使用docker进行部署
- ./docker/docker-node-management/docker-compose.yaml示例如下(端口未占用时无需修改)
```shell
version: "3.9"
services:
node_management_db:
image: hub-dev.cnbn.org.cn/tools/mysql:8.0.28 # DB镜像
ports:
# - "33610:3306" # mysql 端口暴露
volumes:
#- node_management_db_data:/var/lib/mysql # docker创建数据存储
- ./mysqldata:/var/lib/mysql # ./mysqldata为本地数据存储路径
- ./initdb:/docker-entrypoint-initdb.d # 初始脚本
restart: always
environment:
MYSQL_ROOT_PASSWORD: chainmaker
TZ: Asia/Shanghai
# MYSQL_USER: chainmaker
# MYSQL_PASSWORD: Baec&chainmaker
MYSQL_DATABASE: node_management # 数据库名称
command: [ 'mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', "--max_allowed_packet=256M" ]
node_management_backend:
image: hub-dev.cnbn.org.cn/opennet/node-management-backend:v1.2.0
depends_on:
- node_management_db
ports:
# - "9992:9992" # 后端端口暴漏
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./node_management_backend/node_management.yaml:/chainweaver-node-management/etc/node_management.yaml
- ./node_management_backend/data:/chainweaver-node-management/data
- ./node_management_backend/node:/chainweaver-node-management/node
- ./node_management_backend/tpl:/chainweaver-node-management/etc/tpl
- ./node_management_backend/logs:/chainweaver-node-management/logs
node_management_web:
image: hub-dev.cnbn.org.cn/opennet/node-management-web:v1.2.0
depends_on:
- node_management_backend
ports:
- "3001:80"
restart: always
volumes:
- ./node_management_web/default.conf:/etc/nginx/conf.d/default.conf
```
- 前端配置文件./docker/docker-node-management/node_management_web/default.conf说明(无需修改)
```shell
gzip on;
gzip_http_version 1.1;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/rss+xml
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
application/octet-stream
font/opentype
image/svg+xml
image/x-icon
text/css
text/plain
text/x-component;
server {
listen 80;
server_name _;
client_max_body_size 1000M;
location / {
expires 1h;
root /usr/share/nginx/html/;
add_header Access-Control-Allow-Origin *;
index index.html index.htm;
try_files $uri $uri/ /index.html;
autoindex off;
}
location /api/ {
expires 1h;
proxy_pass http://host.docker.internal:9992; # 后端服务配置(可以根据实际情况修改)
proxy_redirect off;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
- 后端配置./docker/docker-node-management/node_management_backend/node_management.yaml说明
```shell
#
# Copyright (C) BABEC. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
Name: node_management
Host: 0.0.0.0
Port: 9992
MaxBytes: 524288000
Timeout: 60000
# UserRpc: user-rpc eg: 注册中心内部调用举例
# mysql链接地址,满足 $user:$password@tcp($ip:$port)/$db?$queries 格式即可
DataSource: root:chainmaker@tcp(node_management_db:3306)/node_management?charset=utf8mb4&parseTime=true&loc=Local
Type: mysql
RedisConf:
Host:
Pass:
Middlewares:
# 是否启用链路追踪中间件 true
Trace: true
# 是否启用日志中间件 true
Log: true
# 是否启用普罗米修斯指标中间件 true
Prometheus: true
# 是否启用限流中间件 true
MaxConns: true
# 是否启用熔断中间件 true
Breaker: true
# 是否启用负载监控中间件 true
Shedding: true
# 是否启用超时中间件 true
Timeout: true
# 是否启用 panic 恢复中间件 true
Recover: true
# 是否启用指标统计中间件 true
Metrics: true
# 是否启用 ContentLength 管理中间件 true
MaxBytes: true
# 是否启用压缩管理中间件 true
Gunzip: true
# 限流
MaxConns: 10000
# 监控
DevServer:
Enabled: true
Port: 6470
HealthPath: "/health"
MetricsPath: "/metrics"
EnableMetrics: true
EnablePprof: true
Log:
# 服务名称
ServiceName: node_management
# 日志打印模式,console 控制台 console,file,volume
Mode: file
# 日志格式, json 格式 或者 plain 纯文本 json, plain
Encoding: plain
# 日期格式化
TimeFormat: 2006-01-02T15:04:05.000Z07:00
# 日志在文件输出模式下,日志输出路径
Path: logs
# 日志级别
Level: info
# 是否压缩日志
Compress: false
# 是否开启 stat 日志
Stat: true
# 日志保留天数,只有在文件模式才会生效
KeepDays: 30
# 堆栈打印冷却时间
StackCooldownMillis: 100
MaxSize: 100
Rotation: daily
Node:
ExplorerUrl: "http://127.0.0.1:9996" # 默认浏览器地址,可以根据浏览器配置调整
ChainTpl: "./etc/tpl/chain/chain.zip" # 链地址示例样本
ChainList: [] # 链配置
# - ./etc/chain_config/chain1/chain1.yaml
Deploy:
Dir: "/test" # 节点部署位置
# 节点启动命令
StartCmd: "cd %s/chainmaker-%s/bin && chmod +x restart.sh && chmod +x start.sh && chmod +x stop.sh && chmod +x chainmaker && ./restart.sh"
# 节点停止命令
StopCmd: "cd %s/chainmaker-%s/bin && echo | ./stop.sh"
# 默认夜莺监控地址,可以根据监控配置调整
MonitorUrl: "http://127.0.0.1:17000"
# 默认证书(一般不需要修改)
UserKeyPath:
SM3: "./etc/sm3.key"
SHA256: "./etc/sha256.key"
# 登录验证码配置
Captcha:
# 高度
Height: 80
# 宽度
Width: 200
# 噪音个数
NoiseCount: 5
# 验证码个数
Length: 4
# 登录jwt配置
Jwt:
ExpiresTime: 7200 # 过期时间
Issuer: node_management
Key: "!@#$abcd%^&*++``123"
# 合约源码存储合约配置
Evidence:
# 合约名称
ContractName: evidence
# 合约方法
ContractMethod: Evidence
# 当前节点管理台版本
NodeManagementVersion: v1.0.0_alpha
```
- 部署说明
```shell
# 定位docker部署路径
cd docker/docker-node-manegement && chmod +x *.sh
# 启动
./start.sh
# 停止命令
./stop.sh
# 重启命令
./restart.sh
# 清除数据
./clear.sh
```
#### 部署节点管理台代理
如果需要在非本机服务器上对节点进行管理,需要部署对应的agent服务
- agent服务配置文件./node_agent/etc/node_agent.yaml说明
```shell
#
# Copyright (C) BABEC. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
Name: nodeagent.rpc # 服务名称
ListenOn: 0.0.0.0:9994 # 启动端口
Timeout: 600000 # 超时时间
rpcserver:
maxMsgSize: 209715200 # 最大传输消息大小
RedisConf:
Host:
Pass:
Middlewares:
# 是否启用链路追踪中间件 true
Trace: true
# 是否启用普罗米修斯指标中间件 true
Prometheus: true
# 是否启用熔断中间件 true
Breaker: true
# 是否启用 panic 恢复中间件 true
Recover: true
# 是否开启慢日志
Stat: true
# 监控
DevServer:
Enabled: true
Port: 6471
HealthPath: "/healthz"
MetricsPath: "/metrics"
EnableMetrics: true
EnablePprof: true
Log:
# 服务名称
ServiceName: nodeagent.rpc
# 日志打印模式,console 控制台 console,file,volume
Mode: console
# 日志格式, json 格式 或者 plain 纯文本 json, plain
Encoding: plain
# 日期格式化
TimeFormat: 2006-01-02T15:04:05.000Z07:00
# 日志在文件输出模式下,日志输出路径
Path: logs
# 日志级别
Level: info
# 是否压缩日志
Compress: false
# 是否开启 stat 日志
Stat: true
# 日志保留天数,只有在文件模式才会生效
KeepDays: 30
# 堆栈打印冷却时间
StackCooldownMillis: 100
MaxSize: 100
Rotation: daily
# 部署节点配置
Deploy:
# 节点存储路径
Dir: "./node" # 启动前需要创建对应目录
MonitorUrl: "http://127.0.0.1:17000" # 夜莺监控路径,可以根据配置调整
Version: "v1.0.0_alpha" # 版本号
LevelDBPath: "./data" # 数据存储,使用leveldb,存储本地
```
- 部署说明
```shell
# 定位节点管理台路径下(xxx/node-management-backend)
# 定位agent服务位置
cd node_agent && chmod +x *.sh
# 启动服务服务
./start.sh
# 停止服务
./stop.sh
# 重启命令
./restart.sh
```
#### 链导入说明
- 登录管理台http://{ip}:3001,默认账户密码admin/admin
- 打开`链登记管理`
- 点击`导入`按钮
- 下载`样例文件`
- 根据`样例文件`配置好相关的数据(参考样例文件中的readme.md)
- 进行链导入
#### 部署浏览器([浏览器配置说明](https://docs.chainmaker.org.cn/dev/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%B5%8F%E8%A7%88%E5%99%A8.html))
浏览器主要包含6个部分,浏览器数据库、redis、编译合约服务、任务执行服务、前端、基础服务
使用建议镜像如下所示;建议镜像版本号为v2.3.7
- 浏览器./docker/docker-explorer/docker-compose.yaml配置(端口未占用时无需修改)
```shell
version: "3.9"
services:
cm_explorer_db:
image: hub-dev.cnbn.org.cn/tools/mysql:8.0.28 # DB镜像
volumes:
- ./explorer_db/mysql:/var/lib/mysql # 本机配置db路径
restart: always
ports:
# - "33061:3306" # 浏览器db端口暴露
environment:
MYSQL_ROOT_PASSWORD: chainmaker
MYSQL_USER: chainmaker # 可选:在容器启动时创建用户
MYSQL_PASSWORD: chainmaker # 可选:为用户设置密码
TZ: Asia/Shanghai # 设置时区为东八区
command: [ 'mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-time-zone=Asia/Shanghai' ]
redis:
image: hub-dev.cnbn.org.cn/tools/redis:latest # redis镜像
volumes:
- ./explorer_db/redis:/data # 本机配置redis路径
restart: always
command: redis-server --requirepass explorer_redis
cm_explorer_server:
image: hub-dev.cnbn.org.cn/opennet/chainmaker-explorer-backend:v2.3.7 # 浏览器基础服务镜像
depends_on:
- cm_explorer_db
- redis
- cm_compiler_server
- cm_dquery_server
restart: always
volumes:
- ./cm_explorer_server/config.yml:/chainmaker-explorer-backend/configs/config.yml
- ./cm_explorer_server/crypto-config:/chainmaker-explorer-backend/configs/crypto-config
- ./cm_explorer_server/log/:/chainmaker-explorer-backend/log/
cm_dquery_server:
image: hub-dev.cnbn.org.cn/opennet/dquery-backend:v2.3.7 # 浏览器任务执行服务镜像
depends_on:
- cm_explorer_db
- redis
restart: always
volumes:
- ./cm_dquery/config.yml:/dquery-backend/configs/config.yml
- ./cm_dquery/log/:/dquery-backend/log/
cm_compiler_server:
image: hub-dev.cnbn.org.cn/opennet/compiler-service:v2.3.7 # 浏览器合约编译服务镜像
depends_on:
- cm_explorer_db
- redis
restart: always
volumes:
- ./cm_compiler/config.yml:/compiler-service/configs/config.yml
- ./cm_compiler/log/:/compiler-service/log/
cm_explorer_web:
image: hub-dev.cnbn.org.cn/opennet/explorer_front:v2.3.7 # 浏览器前端镜像
depends_on:
- cm_compiler_server
- cm_dquery_server
- cm_explorer_server
ports:
- "9996:9996"
restart: always
command: /bin/sh -c "sleep 10 && nginx -g 'daemon off;'" # 延迟 10 秒启动
volumes:
- ./cm_explorer_web/default.conf:/etc/nginx/conf.d/default.conf
- ./cm_explorer_web/_config.json:/usr/share/nginx/html/_config.json
```
- 部署说明
```shell
# 定位节点管理台路径下(xxx/node-management-backend)
# 定位docker部署路径
cd docker/docker-explorer && chmod +x *.sh
# 启动命令
./start.sh
# 停止命令
./stop
# 重启命令
./restart.sh
# 清理数据
./clear.sh
```
#### 部署夜莺监控服务
夜莺监控分为5个部分,包含数据库存储、redis存储、时序数据库、夜莺服务、数据采集服务
- 夜莺监控./docker/docker-n9e/docker-compose.yaml配置(端口未占用时无需修改)
```yaml
version: "3.9"
services:
mysql:
image: "hub-dev.cnbn.org.cn/tools/mysql:8.0.28" # DB镜像
container_name: mysql-n9e
hostname: mysql-n9e
restart: always
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 1234
volumes:
- ./mysqldata:/var/lib/mysql/
- ./initdb:/docker-entrypoint-initdb.d
- ./etc-mysql/my.cnf:/etc/my.cnf
# ports:
# - "33062:3306" # 夜莺db端口暴露
redis:
image: "hub-dev.cnbn.org.cn/tools/redis:6.2" # redis镜像
container_name: redis-n9e
hostname: redis-n9e
restart: always
environment:
TZ: Asia/Shanghai
# ports:
# - "6379:6379" # 夜莺redis端口暴露
victoriametrics:
image: hub-dev.cnbn.org.cn/tools/victoria-metrics:v1.79.12 # 时序数据库镜像
container_name: victoriametrics
hostname: victoriametrics
restart: always
environment:
TZ: Asia/Shanghai
# ports:
# - "8428:8428" # 夜莺时序数据库端口暴露
command:
- "--loggerTimezone=Asia/Shanghai"
nightingale:
image: hub-dev.cnbn.org.cn/tools/nightingale:latest # 夜莺服务
container_name: nightingale
hostname: nightingale
restart: always
environment:
GIN_MODE: release
TZ: Asia/Shanghai
WAIT_HOSTS: mysql:3306, redis:6379
EnableAutoMigrate: true
volumes:
- ./etc-nightingale:/app/etc
ports:
- "17000:17000" # 前端接口
- "20090:20090"
depends_on:
- mysql
- redis
- victoriametrics
command: >
sh -c "/app/n9e"
categraf:
image: "hub-dev.cnbn.org.cn/tools/categraf:latest" # 数据采集镜像
container_name: "categraf"
hostname: "categraf01"
restart: always
environment:
TZ: Asia/Shanghai
HOST_PROC: /hostfs/proc
HOST_SYS: /hostfs/sys
HOST_MOUNT_PREFIX: /hostfs
WAIT_HOSTS: nightingale:17000, nightingale:20090
volumes:
- ./etc-categraf:/etc/categraf/conf
- /:/hostfs
depends_on:
- nightingale
```
- 部署说明(启动之后要执行`init.sh`进行数据初始化,增加监控大屏数据)
- 账户密码root/root.2020
```shell
# 定位节点管理台路径下(xxx/node-management-backend)
# 定位docker部署路径
cd docker/docker-n9e && chmod +x *.sh
# 启动
./start.sh
# 数据初始化,初始化大屏数据
./init.sh
# 停止命令
./stop.sh
# 重启命令
./restart.sh
# 清除数据
./clear.sh
# 增加监控节点
./monitor_add_url.sh
```
## 主要使用流程
- 0、产品完成初始化配置与启动。
- 1、admin用户创建平台账户(姓名、用户名和密码)。
- 2、选择PK或者证书模式的链。
- 3、链账户管理:PK模式下进行链账户的申请和导入,证书模式下进行组织证书、节点证书、用户证书的申请或者导入。
- 4、节点管理、合约管理和投票管理
## 产品使用说明(PK模式)
### 登录节点管理台
用户可通过默认的管理员用户名(admin)和密码(admin)进行登录。
### **平台账户管理**
#### **账户列表**
管理员账户可查看所有用户。
#### **创建新账户**
管理员账户可通过在「平台账户管理」模块点击【新建账户】,创建普通用户账号。
#### 禁用/开启用户
管理员用户可通过在「平台账户管理」的账户列表里,对单个普通账户进行开启和禁用操作,被禁用的账户将无法再使用。
#### 重置密码
管理员账户可对普通账户进行密码重置。
#### 删除账户
管理员用户可通过在「平台账户管理」的账户列表里,对单个普通账户进行删除操作。
### Dashboard
用户可以在Dashboard模块,查看“概览”、“节点拓扑图”和“我的交易”数据。
### 链登记管理
#### **导入链**
用户点击「导入配置文件」按钮,下载“样例文件”,根据“样例文件”配置好相关的数据后,将文件上传至平台,完成链的导入。
#### **删除链**
支持用户删除已导入的链。
### 链账户管理(PK链)
#### **链账户列表**
支持用户查看本平台创建、导入的所有链账户。
#### **申请链账户**
用户在「链账户管理」点击【申请账户】,配置链账户信息(注:账户用途包括节点账户和用户账户),完成链账户的申请。
#### **导入链账户**
用户在「链账户管理」点击【导入账户】,配置链账户信息,并导入链账户的公私钥,完成链账户的导入。
#### **查看/下载链账户**
用户可通过点击「查看」按钮,查看每个链账户的公私钥信息,并支持下载。
#### **删除链账户**
支持用户删除已创建或导入的链账户。
### 节点管理
#### **节点列表**
用户可查看本平台新增、导入的所有节点。
#### **新增节点**
点击「节点管理」模块的【新增节点】按钮,完成“节点基本信息”、“节点部署”和“节点与外部节点连接”信息项配置。
#### **导入节点**
点击「节点管理」模块的【导入节点】按钮,完成“节点基本信息”、“节点部署”和“节点与外部节点连接”信息项配置。。
#### **查看节点详情**
支持用户查看某个节点的详情信息。
#### **编辑节点信息**
支持用户配置某个节点的信息项,新的配置需要待节点重启后才能生效。
#### **重启节点**
支持用户对已新增或者已导入的节点进行重启操作。
#### **停止节点**
支持用户停止运行某个节点。
#### **监视节点**
用户可通过在「节点管理」点击「监视」按钮,跳转到外部监控平台,查看节点详细的运行情况。
#### **新建Agent**
用户可通过在「Agent管理」点击「新建Agent」按钮,新增Agent。(注:如果新增或者导入的节点和当前节点管理台不在同一台服务器上时,需要先在其它服务器上部署Agent服务,并在节点管理台Agent管理模块完成Agent新增)。
### 合约管理
#### **合约列表**
支持用户查看通过其链账户部署的所有合约。
#### **部署合约**
用户在「合约管理」模块点击「部署合约」按钮,完成合约信息的配置,配置后需要用户账户进行签名。
#### **升级合约**
用户可在「合约管理」列表升级某个合约,升级合约操作发起后,需要待投票完成,投票如果通过后,需要用户点击“激活升级”完成合约的升级流程。
#### **编辑合约**
用户可在「合约管理」编辑合约的调用方法。
#### **调用合约**
支持用户调用某个合约,调用时需要指定交互类型、调用方法和参数(可选)。
#### **查看合约**
用户点击「合约管理」的【查看】按钮,跳转到外部区块链浏览器查看该合约的详细信息。
#### **冻结/解冻合约**
链管理员可对正常运行的合约进行冻结,冻结操作发起后,需要待投票完成,投票如果通过后,链管理员用户需要再次点击“激活冻结”完成合约的冻结流程。已冻结的合约将不再可用。(注:仅链管理员有此权限)
链管理员可对已冻结的合约进行解冻,解冻操作发起后,需要待投票完成,投票如果通过后,链管理员用户需要再次点击“激活解冻”完成合约的解冻流程。(注:仅链管理员有此权限)
#### **注销合约**
链管理员可对合约进行注销,注销操作发起后,需要待投票完成,投票如果通过后,链管理员用户需要再次点击“激活吊销”完成合约的注销流程。(注:仅链管理员有此权限)
### 投票管理
#### **投票列表**
支持链管理员查看链上所有的投票事件。
#### **发起投票**
支持链管理员发起一个新的投票事件,投票事件需要链管理员的签名,投票通过后,需要点击“激活事件”。
#### **查看投票**
支持链管理员查看某个投票事件,包括投票议案和投票详情信息。
#### **参与投票**
支持链管理员发起一个新的投票事件,投票事件需要链管理员的签名。
### 区块链浏览器
支持用户在节点管理台点击「区块链浏览器」,跳转到外部浏览器。
### 系统升级
用户可通过「系统升级」模块,发现并下载最新版本。
## 产品使用说明(证书模式)
### 登录节点管理台
用户可通过默认的管理员用户名(admin)和密码(admin)进行登录。
### **平台账户管理**
#### **账户列表**
管理员账户可查看所有用户。
#### **创建新账户**
管理员账户可通过在「平台账户管理」模块点击【新建账户】,创建普通用户账号。
#### 禁用/开启用户
管理员用户可通过在「平台账户管理」的账户列表里,对单个普通账户进行开启和禁用操作,被禁用的账户将无法再使用。
#### 重置密码
管理员账户可对普通账户进行密码重置。
#### 删除账户
管理员用户可通过在「平台账户管理」的账户列表里,对单个普通账户进行删除操作。
### Dashboard
用户可以在Dashboard模块,查看“概览”、“节点拓扑图”和“我的交易”数据。
### 链登记管理
#### 链文件上传
节点管理台对证书模式链进行管理的前置条件是完成证书模式链的启动,启动后的相关文件,请严格按照证书模式链的样例文件完成上传。
#### 链删除
登记完成的链,可对链执行删除动作。
### 节点管理
#### **节点列表**
用户可在本平台下,按照每条链的维度,新增、导入节点,同时可对节点进行查看、编辑、重启、停止和监视。
#### **新增节点**
点击「节点管理」模块的【新增节点】按钮,完成“节点基本信息”、“节点部署”和“节点与外部节点连接”信息项配置。
#### **导入节点**
点击「节点管理」模块的【导入节点】按钮,完成“节点基本信息”、“节点部署”和“节点与外部节点连接”信息项配置。
#### **查看节点详情**
支持用户查看某个节点的详情信息。
#### **编辑节点信息**
新增或者导入节点后,支持用户配置某个节点的信息项,新的配置需要待节点重启后才能生效,支持对“节点基本信息”、“节点部署”和“节点与外部节点连接”信息项配置。
#### **重启节点**
支持用户对已新增或者已导入的节点进行重启操作。
#### **停止节点**
支持用户停止运行某个节点。
#### **监视节点**
用户可通过在「节点管理」点击「监视」按钮,跳转到外部监控平台,查看节点详细的运行情况。
#### **新增Agent**
用户可通过在「Agent管理」点击「新建Agent」按钮,创建新的Agent服务。(注:如果新增或者导入的节点和当前节点管理台不在同一台服务器上时,需要先在其它服务器上手动启动Agent服务,并在节点管理台Agent管理模块完成配置)。
#### **二进制管理**
目前节点管理台支持二进制的方式,在新增节点时,要完成节点二进制的管理,需将链config文件下的bc.yml、chainmaker.yml文件打包成zip格式上传
### 合约管理
#### **合约列表**
支持用户查看该组织下某用户部署的所有合约。
#### **部署合约**
用户在「合约管理」模块点击「部署合约」按钮,完成合约信息的配置,配置后需要选择组织及组织下的用户通过证书进行签名,完成上传后,根据合约部署规则发起投票,其中用户角色为admin可以直接进行部署,client或light角色的需要执行投票流程完成合约部署。
#### **升级合约**
用户可在「合约管理」列表升级某个合约,升级合约操作发起后,需要待投票完成,投票如果通过后,需要用户点击“激活升级”完成合约的升级流程。
#### **编辑合约**
用户可在「合约管理」编辑合约的调用方法。
#### **调用合约**
支持用户调用某个合约,调用时需要指定交互类型、调用方法和参数(可选)。
#### **查看合约**
用户点击「合约管理」的【查看】按钮,跳转到外部区块链浏览器查看该合约的详细信息。
#### **冻结/解冻合约**
链管理员可对正常运行的合约进行冻结,冻结操作发起后,需要待投票完成,投票如果通过后,链管理员用户需要再次点击“激活冻结”完成合约的冻结流程。已冻结的合约将不再可用。(注:仅链管理员有此权限)
链管理员可对已冻结的合约进行解冻,解冻操作发起后,需要待投票完成,投票如果通过后,链管理员用户需要再次点击“激活解冻”完成合约的解冻流程。(注:仅链管理员有此权限)
#### **注销合约**
链管理员可对合约进行注销,注销操作发起后,需要待投票完成,投票如果通过后,链管理员用户需要再次点击“激活注销”完成合约的注销流程。(注:仅链管理员有此权限)
### 投票管理
#### **投票列表**
支持组织下的admin用户查看链上所有的投票事件。
#### **发起投票**
支持组织admin用户发起一个新的投票事件,投票事件需要组织下的admin用户签名,投票通过后,需要点击“激活事件”。
#### **查看投票**
支持组织admin用户查看某个投票事件,包括投票议案和投票详情信息。
#### **参与投票**
支持组织admin用户发起一个新的投票事件,目前投票类型,支持合约管理和修改链配置,其中合约管理支持:冻结、解冻和注销合约,修改链配置支持:更新链版本、更新区块配置、添加和删除节点ID
### 链账户管理
#### **证书账户列表**
支持用户查看本平台创建、导入的所有组织证书、节点证书、用户证书。
组织证书将作为准入该区块链的凭证,被添加到链配置文件中,并作为节点证书和用户证书的上级CA,为节点和用户颁发证书。
节点证书由所属组织ca颁发,作为节点的身份凭证,在区块链网络通讯中验证节点身份有效性。
用户证书由所属组织ca颁发,对上链交易进行签名,并根据签名信息验证交易的有效性。
#### **申请组织证书**
用户在链账户管理-组织证书tab下点击【申请组织证书】,配置组织ID、组织名称和密码算法,课完成组织证书的申请。
#### **导入组织证书**
用户在链账户管理-组织证书tab下点击【导入组织证书】,配置组织ID、组织名称和CA证书私钥,课完成组织证书的导入。
#### **查看组织证书**
用户可通过点击「查看」按钮,查看每个组织下的CA信息,并支持下载。
#### **删除组织证书**
支持用户删除已创建或导入的组织证书。
节点证书、用户证书的管理方式与组织证书管理方式一致。
### 区块链浏览器
支持用户在节点管理台点击「区块链浏览器」,跳转到外部浏览器。