前言
最近有一个供应链金融的需求,需求做一个区块链网络,经过前期技能调研,终究挑选了Fisco Bcos3.0。本章首要解说区块链的网络建立。假如有时间,后期应该会发文章解说fisco的结构和各种概念,以及console的运用。本文章阅读本钱较高,需求熟悉对Fisco和区块链的概念有根本的了解,后期我可能会补足相关的文档便于咱们对区块链的了解。见谅!见谅!
假定
假如咱们的局域网环境中,有两台物理机:10.10.141.57、10.10.145.76
咱们需求在10.10.141.57做的事:建立创世节点、RPC服务、gateway服务、monitor监控服务、tars服务、装置经过Fisco javaSDK编写的console控制台
咱们需求在10.10.145.76做的事:建立扩容节点服务、tars-node服务、console控制台
环境建立
1.CentOS环境
fisco-bcos-doc.readthedocs.io/zh-cn/lates…
1.1.根底环境装置
sudo yum install -y curlpython3 python3-devel wget
1.2.docker装置
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
# 开机主动发动docker
systemctl enable docker
1.3装置docker-compose
sudo curl -L " https://github.com/docker/compose/releases/download/1.24.0/ docker-compose - $( uname -s ) - $( uname -m ) " -o /usr/local/bin/ docker-compose sudo chmod x /usr/local/bin/docker-compose
假如无法运用curl下载,运用pip3装置
# 设置阿里云署理
pip3 install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
sudo pip3 install docker-compose
2.下载区块链构建东西BcosBuilder及相关资源
布置东西BcosBuilder目标是让用户最快的布置和运用FISCO BCOS Pro/max版别区块链,其功能包含:布置/发动/关闭/更新/扩容RPC服务、Gateway服务以及区块链节点服务。
2.1.下载BcosBuilder
# 创立操作目录
mkdir -p ~/fisco && cd ~/fisco
Note : 若网速太慢,可测验如下指令下载布置脚本 :
curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.5.0/BcosBuilder.tgz
tar -xvf BcosBuilder.tgz
# 装置构建东西依靠包
cd BcosBuilder && pip3 install -r requirements.txt
2.2.下载node、 RPC 、 gateway 、mtail四个服务资源(二进制资源)
该操作会在对应的pro目录下发生binary文件夹,该文件夹内的内容是关于网关和RPC对应的二进制文件,可布置到tarsnode
中
# 进入操作目录
cd ~/fisco/BcosBuilder/pro
运转build_chain.py脚本下载二进制,二进制包默认下载到binary目录
python3 build_chain.py download_binary -t cdn
3. 区块链文件装备
3.1 敞开权限办理
先将pro/config/config-deploy-example.toml的文件copy到pro下,
cd ~/fisco/BcosBuilder/pro
cp conf/config-deploy-example.toml config.toml
将装备文件的auth_check
设置为true,运转一下指令(国密版别)
# 下载文件脚本文件get_gm_account.sh
curl -#LO https : //osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_gm_account.sh
# 给文件所有者添加可履行权限
chmod u x get_gm_account.sh
# 履行文件获取Account Address
bash get_gm_account.sh
将Account Address
值在装备文件中设置到[[group]].init_auth_address
3.2.装置和发动Tars
3.2.1修正tars-framework装备并发动服务
假如现已装置了tars出产版别就不用再处理了
cd /root/fisco/BcosBuilder/docker/host/linux/framework
翻开装备文件docker-compose.yml,修正 装备文件位
version: "3"
services:
tars-mysql:
image: mysql:5.6
network_mode: "host"
environment:
MYSQL_ROOT_PASSWORD: "FISCO"
MYSQL_TCP_PORT: 3310
restart: always
volumes:
- ~/app/tars/framework-mysql:/var/lib/mysql
- /etc/localtime:/etc/localtime
tars-framework:
image: tarscloud/framework:v3.0.1
network_mode: "host"
environment:
MYSQL_HOST: "10.10.141.57"
MYSQL_ROOT_PASSWORD: "FISCO"
MYSQL_PORT: 3310
TZ: "Asia/Shanghai" # 设置容器内时区为亚洲/上海时区
REBUILD: "false"
INET: enp2s0
SLAVE: "false"
restart: always
volumes:
- ~/app/tars/framework:/data/tars
- /etc/localtime:/etc/localtime
depends_on:
- tars-mysql
# 创立并发动tars办理服务
docker-compose up -d
docker-compose start
留意:需求给tars-framework加上environment. TZ: “Asia/Shanghai”将时区改成上海
MYSQL_HOST地址需求改成实体机地址
MYSQL_ROOT_PASSWORD暗码需保证共同 INET需求改成网卡称号
发动完成后,可访问10.10.141.57:3000进入办理台设置暗码
3.3.装备token(/root/fisco/BcosBuilder/pro/config.toml)
进入{ip}:3000->用户中心->token办理中获取临时token写入[[tars]].tars_url和[[tars]].tars_token
4.修正装备文件
布置东西BcosBuilder ‒ FISCO BCOS 3.0 v3.3.0 文档
案例:
[tars]
tars_url = "http://10.10.141.57:3000/"
tars_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJhZG1pbiIsImlhdCI6MTcwMDU0OTA0MSwiZXhwIjoxNzAwNjM1NDQxfQ.7l3MMWTyciPDEhVlOAKqP6T2jvjkyZKer4lNOAybKZY"
tars_pkg_dir = "binary/"
[chain]
# 区块链服务所属的链的ID
chain_id="chain0"
# RPC服务与SDK客户端之间选用的SSL衔接类型,若设置为false,标明选用RSA加密衔接;若设置为true,标明选用国密SSL衔接,默以为false;
rpc_sm_ssl=true
# Gateway服务之间的SSL衔接类型,设置为false标明选用RSA加密衔接;设置为true标明选用国密SSL衔接,默以为false;
gateway_sm_ssl=true
# RPC服务的CA证书途径,若该途径下有完好的CA证书、CA私钥,BcosBuilder布置东西根据该途径下的CA证书生成RPC服务SSL衔接证书;否则BcosBuilder布置东西会生成CA证书,并根据生成的CA证书为RPC服务颁布SSL衔接证书
#rpc_ca_cert_path=""
# Gateway服务的CA证书途径,若该途径下有完好的CA证书、CA私钥,BcosBuilder布置东西根据该途径下的CA证书生成Gateway服务SSL衔接证书;否则BcosBuilder布置东西会生成CA证书,并根据生成的CA证书为Gateway服务颁布SSL衔接证书
#gateway_ca_cert_path="
[[group]]
group_id="group0"
# 扩容节点的创世块装备途径。假如未装备,将生成新的生成装备
# genesis_config_path = ""
# 区块链节点运转的虚拟机类型,现在支持evm和wasm两种类型,且一个群组仅可运转一种类型的虚拟机,不能够部分节点运转EVM虚拟机、部分节点运转WASM虚拟机
vm_type="evm"
# 节点账本是否选用国密类型签名、验签、哈希、加密算法
sm_crypto=true
# 是否敞开权限办理模式,https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/docs/develop/committee_usage.html
auth_check=true
# 敞开权限办理时,指定的初始化办理委员账号地址 https://fisco-bcos-doc.readthedocs.io/zh-cn/latest/docs/develop/committee_usage.html
init_auth_address="0x4268b117b53ef5cba6469c7a1fbe3dedc098ad07"
# Genesis装备
# 每个leader能够连续打包的区块数目,默以为5 意思:某个时刻,领导节点可提交5次打包数据到广播,次数用尽,重新选举
leader_period = 5
# 每个区块中可包含的最大交易数目,默以为1000。
block_tx_count_limit = 1000
# 共识算法类型,现在仅支持pbft共识算法。
consensus_type = "pbft"
# 每笔交易运转时耗费的gas上限,默以为300000000。
gas_limit = "3000000000"
# 数据兼容版别号,默以为3.0.0,可经过控制台setSystemConfigByKey指令运转时升级数据兼容版别 *若不需求运用权限,且链版别小于3.3,那么能够越过本节。
# 这儿不要运用3.3以下的版别 控制台的发动会出现过错
compatibility_version="3.5.0"
[[agency]]
name = "agencyA"
# 是否敞开落盘加密,默以为false
enable_storage_security = false
# 若敞开了落盘加密,这儿可装备key-manager的url和密钥
# key_center_url =
# cipher_data_key =
[agency.rpc]
# RPC服务的布置IP,若装备多个,则会在多台机器上布置RPC服务,到达平行扩展的目标。
deploy_ip=["10.10.141.57"]
# RPC服务的监听IP,默以为0.0.0.0
listen_ip="0.0.0.0"
# RPC服务的监听端口,默以为20200
listen_port=20200
# RPC服务进程内的作业线程数目,默以为4
thread_count=4
[agency.gateway]
# Gateway服务的布置IP,若装备多个,则会在多台机器上布置Gateway服务,到达平行扩展的目标
deploy_ip=["10.10.141.57"]
# Gateway服务的监听IP,默以为0.0.0.0
listen_ip="0.0.0.0"
# Gateway服务的监听端口,默以为20200
listen_port=30300
# 所有Gateway服务的衔接信息
peers=["10.10.141.57:30300"]
# 区块链节点服务装备项:布置装备
[[agency.group]]
# 区块链节点所属的群组ID,默以为group。
group_id = "group0"
# 区块链节点服务布置装备项
[[agency.group.node]]
# 节点服务名,在服务布置的场景下可不装备,若装备了该选项,须确保不同节点服务的服务名不重复。
node_name = "nodeCompanyA"
# 节点服务布置ip
deploy_ip = "10.10.141.57"
# 是否敞开落盘加密,默以为false
enable_storage_security = false
# 若敞开了落盘加密,这儿可装备key-manager的url https://github.com/FISCO-BCOS/key-manager
# key_center_url =
# 若敞开了落盘加密,这儿装备数据加密密钥
# cipher_data_key =
# 监控服务的监听端口,默以为3902
monitor_listen_port = "3902"
# 需求监控的区块链节点日志地点途径 example:"/home/fisco/tars/framework/app_log/"
monitor_log_path = ""
enable_hsm=false
# hsm_lib_path=
# hsm_key_index=
# hsm_password=
# hsm_public_key_file_path=
5.发动区块链的节点、RPC、网关服务
5.1.RPC
#进入操作目录
cd ~/fisco/BcosBuilder/pro
#发动RPC服务
python3 build_chain.py chain -o deploy -t rpc
布置过程中生成的RPC服务相关的装备位于generated/rpc/${chainID}
目录
5.2.网关
# 布置并发动Gateway服务 python3 build_chain.py chain -o deploy -t gateway
5.3.node节点服务
# 布置并发动区块链节点服务
python3 build_chain.py chain -o deploy -t node
5.4.tars办理台作用
5.5.目录树
generated/
├── chain0 # 链
│ ├── group0 # 群组
│ │ ├── 172.25.0.3 # 本机的eth0 ip地址
│ │ │ ├── agencyAgroup0node0BcosNodeService # 区块链节点装备目录
│ │ │ │ ├── config.genesis # 创世块装备文件
│ │ │ │ ├── config.ini # 装备文件
│ │ │ │ ├── node.nodeid # 节点id
│ │ │ │ ├── node.pem # 节点私钥,用于共识模块签名
├── gateway # 网关
│ ├── chain # 链
│ │ ├── 172.25.0.3 # 本机的eth0 ip地址
│ │ │ ├── agencyABcosGatewayService # 网关装备目录
│ │ │ │ ├── ssl
│ │ │ │ │ ├── ca.crt # CA证书
│ │ │ │ │ ├── cert.cnf # 证书装备
│ │ │ │ │ ├── ssl.crt # ssl 证书
│ │ │ │ │ ├── ssl.key # ssl 私钥
│ │ │ │ ├── config.ini # 装备文件
│ │ │ │ ├── nodes.json # 节点衔接信息,{"nodes": ["172.25.0.30:30300", "172.25.0.3:30301"]}
│ │ ├── ca # CA 证书
│ │ │ ├── ca.crt # CA 证书
│ │ │ ├── ca.key # CA 私钥
│ │ │ ├── cert.cnf # 证书私钥
├── rpc
│ ├── chain
│ │ ├── 172.25.0.30 # 本机的eth0 ip地址
│ │ │ ├── agencyABcosRpcService # RPC服务装备途径
│ │ │ │ ├── ssl
│ │ │ │ │ ├── ca.crt # CA证书
│ │ │ │ │ ├── cert.cnf # 证书装备
│ │ │ │ │ ├── ssl.crt # ssl 证书
│ │ │ │ │ ├── ssl.key # ssl 私钥
│ │ │ │ ├── sdk # SDK证书目录
│ │ │ │ │ ├── ca.crt # CA证书
│ │ │ │ │ ├── cert.cnf # 证书装备
│ │ │ │ │ ├── sdk.crt # sdk 证书
│ │ │ │ │ ├── sdk.key # sdk 私钥
│ │ │ │ ├── config.ini.tmp # 装备文件
│ │ │ ├── agencyBBcosRpcService # RpcService B
│ │ │ │.....
│ │ ├── ca # CA 证书
│ │ │ ├── ca.crt # CA 证书
│ │ │ ├── ca.key # CA 私钥
│ │ │ ├── cert.cnf # 证书私钥
├── agencyABcosGatewayService.tgz # 生成的网关服务A的tgz包
├── agencyABcosRpcService.tgz # 生成的RPC服务A的tgz包
├── agencyBBcosGatewayService.tgz # 生成的网关服务B的tgz包
├── agencyBBcosRpcService.tgz # 生成的RPC服务B的tgz包
├── node.nodeid # 节点id
├── node.pem # 节点pem格式私钥
6.装置节点监控服务
6.1装置monitor监控服务
该服务布置后在docker上(需求上述三个节点布置完成后,在进行布置)
# 布置并发动区块链节点服务
python3 build_chain.py chain -o deploy -t monitor
装置完成后,/root/app/tars/framework/app_log是日志文件。并且会发生两个平台Grafana和Prometheus。Grafana是一款流行的开源数据可视化和监控平台;Prometheus是一种开源的监控和警报东西
Grafana与Prometheus等数据源集成,答应用户创立动态且具有各种图表、图形和仪表盘的监控界面。
Grafana:{ip}:3001
Prometheus:{ip}:9090
注释: ”装置可能会报错没有
ansible: 未找到指令
:代表需求装置ansible:假如无法运用`sudo yum install ansible`
,解决方案:
启用 EPEL 库房:
- EPEL(Extra Packages for Enterprise Linux)是一个由 Fedora 社区保护的库房,供给额外的软件包,包含 Ansible。
- 运用以下指令来装置 EPEL 库房:
sudo dnf install epel-release
装置 Ansible:
- 装置好 EPEL 库房后,运用以下指令装置 Ansible:
sudo dnf install ansible
验证装置:
- 装置完成后,你能够经过运转
ansible --version
来验证 Ansible 是否已成功装置。
6.2.装备监控
- 进入Grafanahttp://10.10.141.57:3001/profile将语言设置中文。
- 导入仪表盘(github源码)
- 添加数据源Prometheus
挑选Prometheus->设置Prometheus的地址和认证方式
7. 下载、装备并运用控制台
7.1.下载控制台
cd ~/fisco && curl - #LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh
bash download_console.sh
# 拷贝装备文件 修正证书内容:假如是国密需求将参数useSMCrypto = "true"
cp -n console/conf/config-example.toml console/conf/config.toml
# 复制rpc证书到控制台console/conf文件夹下,sm_是国密证书文件 agencyABcosRpcService和agencyBBcosRpcService下的证书是相同的
cp -r pro/generated/rpc/chain/agencyBBcosRpcService/10.10.141.57/sdk/* console/conf
注释:假如报错没有group0 就进入装备文件修正group_id:group。获取发动的时候指定ID bash start.sh group
7.2.装备控制台
[cryptoMaterial]
certPath = "conf" # The certification path
disableSsl = "false" # Communication with nodes without SSL
useSMCrypto = "true" # RPC SM crypto type
# The following configurations take the certPath by default if commented
# caCert = "conf/ca.crt" # CA cert file path
# sslCert = "conf/sdk.crt" # SSL cert file path
# sslKey = "conf/sdk.key" # SSL key file path
# The following configurations take the sm certPath by default if commented
# caCert = "conf/sm_ca.crt" # SM CA cert file path
# sslCert = "conf/sm_sdk.crt" # SM SSL cert file path
# sslKey = "conf/sm_sdk.key" # SM SSL key file path
# enSslCert = "conf/sm_ensdk.crt" # SM encryption cert file path
# enSslKey = "conf/sm_ensdk.key" # SM ssl cert file path
[network]
messageTimeout = "10000"
defaultGroup="group0" # Console default group to connect
peers=["10.10.141.57:20200"] # The peer list to connect
[account]
keyStoreDir = "account" # The directory to load/store the account file, default is "account"
# accountFilePath = "" # The account file path (default load from the path specified by the keyStoreDir)
accountFileFormat = "pem" # The storage format of account file (Default is "pem", "p12" as an option)
# accountAddress = "" # The transactions sending account address
# Default is a randomly generated account
# The randomly generated account is stored in the path specified by the keyStoreDir
# password = "" # The password used to load the account file
[threadPool]
# threadPoolSize = "16" # The size of the thread pool to process message callback
# Default is the number of cpu cores
7.3.装备控制台账户
此刻现已能够直接发动控制台,但是因为控制台没有账户,会主动创立账户进入,和咱们之前装备的初始委员会地址init_auth_address
不是同一个账户了。所以咱们应该将先前创立的账户移动到控制台账户目录‘accounts_gm/gm’
7.4.发动控制台
cd ~/fisco/console/
./start.sh
./start.sh group0 accountId
番外篇:BocsBuilder指令介绍
- download_binary 下载网关、rpc、node、监控等二进制文件
python3 build_chain.py download_binary -t cdn
- create-subnet 创立虚拟网段(docker虚拟网段
docker network ls
)
python3 build_chain.py create-subnet -n tars-network -s 172.25.0.0/16
-
chain链操作
-
python3 build_chain.py chain -o deploy -t rpc
-
-t, --type
选项:- rpc: 指定操作的服务类型为RPC服务。
- gateway: 指定操作的服务类型为Gateway服务。
- node: 指定操作的服务类型为区块链节点服务。
-
-o, --op
选项-
gen-config
: 发生装备文件。 -
upload
: 在现已存在服务装备的场景下,上传并发布服务,一般和gen-config
合作运用,先经过gen-config
发生装备文件,然后经过upload
指令上传并发布服务装备。 -
deploy
: 布置服务,包含服务装备生成、服务发布两个步骤。 -
undeploy
: 下线服务。 -
upgrade
: 升级服务,用于升级服务的二进制。 -
expand
: 扩容服务。 -
start
: 发动服务。 -
stop
: 停止服务。
-
-