webase搭建

(一)FISCO BCOS联盟链 安装

依赖安装

openssl, curl 安装

安装ubuntu依赖

sudo apt install -y openssl curl

Java环境安装

# ubuntu系统安装java 1.8以上都可以
sudo apt-get -y install openjdk-11-jdk

配置系统变量

  JDK 8和JDK11及以上的版本配置相差不多,JDK 8多了一个JRE的变量,具体配置如下:

# JDK 8

export JAVA_HOME=/usr/local/java/jdk1.8.0_301

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

# JDK 11

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

export CLASSPATH=$JAVA_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin

  为配置方便,可以修改系统的配置文件:

系统级:对当前系统下所有用户生效,可以编辑/etc/profile或/etc/bash.bashrc两个文件中的其中一个,内容与上述的一致,这里不再赘述:

sudo vim /etc/profile

# 在文章末尾添加变量

...

# 配置生效

source /etc/profile

安装fisco链

第一步. 创建操作目录, 下载安装脚本

## 创建操作目录
cd ~ && mkdir -p fisco && cd fisco
​
## 下载脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.8.0/build_chain.sh && chmod u+x build_chain.sh

第二步. 搭建单群组4节点联盟链

在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链。 请确保机器的30300~30303,20200~20203,8545~8548端口没有被占用。

注解

  • 国密版本请执行 bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G

  • 其中-g表示生成国密配置,-G表示使用国密SSL连接

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

第三步. 启动FISCO BCOS链

  • 启动所有节点

bash nodes/127.0.0.1/start_all.sh

启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。

try to start node0
try to start node1
try to start node2
try to start node3
 node1 start successfully
 node2 start successfully
 node0 start successfully
 node3 start successfully

第四步. 检查进程

  • 检查进程是否启动

ps -ef | grep -v grep | grep fisco-bcos

正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)

fisco       5453     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
fisco       5459     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
fisco       5464     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
fisco       5476     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini

配置及使用控制台

一、获取控制台并回到fisco目录

cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.8.0/download_console.sh && bash download_console.sh
  • 如果因为网络问题导致长时间无法下载,请尝试

    cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh

二、拷贝控制台配置文件

若节点未采用默认端口,请将文件中的20200替换成节点对应的channel端口。

# 最新版本控制台使用如下命令拷贝配置文件
cp -n console/conf/config-example.toml console/conf/config.toml

三、配置控制台证书

把上面生成的node节点的sdk证书拷贝到控制台

注解

  • 使用1.x版本控制台时:

    搭建国密版时,如果使用国密SSL请执行 cp nodes/127.0.0.1/sdk/gm/* console/conf/搭建国密版时,请修改 applicationContext.xml 中 encryptType 修改为1

cp -r nodes/127.0.0.1/sdk/* console/conf/

四、启动并使用控制台

  • 启动

cd ~/fisco/console && bash start.sh

输出下述信息表明启动成功 否则请检查conf/config.toml中节点端口配置是否正确

=============================================================================================
Welcome to FISCO BCOS console(2.6.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
 ________  ______   ______    ______    ______         _______    ______    ______    ______
|        \|      \ /      \  /      \  /      \       |       \  /      \  /      \  /      \
| $$$$$$$$ \$$$$$$|  $$$$$$\|  $$$$$$\|  $$$$$$\      | $$$$$$$\|  $$$$$$\|  $$$$$$\|  $$$$$$\
| $$__      | $$  | $$___\$$| $$   \$$| $$  | $$      | $$__/ $$| $$   \$$| $$  | $$| $$___\$$
| $$  \     | $$   \$$    \ | $$      | $$  | $$      | $$    $$| $$      | $$  | $$ \$$    \
| $$$$$     | $$   _\$$$$$$\| $$   __ | $$  | $$      | $$$$$$$\| $$   __ | $$  | $$ _\$$$$$$\
| $$       _| $$_ |  \__| $$| $$__/  \| $$__/ $$      | $$__/ $$| $$__/  \| $$__/ $$|  \__| $$
| $$      |   $$ \ \$$    $$ \$$    $$ \$$    $$      | $$    $$ \$$    $$ \$$    $$ \$$    $$
 \$$       \$$$$$$  \$$$$$$   \$$$$$$   \$$$$$$        \$$$$$$$   \$$$$$$   \$$$$$$   \$$$$$$
​
=============================================================================================

五、常用命令

1.合约相关命令

  • 利用CNS部署和调用合约(推荐)

  • 普通部署和调用合约

2.其他命令

3.快捷键

  • Ctrl+A:光标移动到行首

  • Ctrl+D:退出控制台

  • Ctrl+E:光标移动到行尾

  • Ctrl+R:搜索输入的历史命令

  • ↑:向前浏览历史命令

  • ↓:向后浏览历史命令

4.help

输入help或者h,查看控制台所有的命令。

[group:1]> help
* help([-h, -help, --h, --H, --help, -H, h])  Provide help information
* addObserver                               Add an observer node
* addSealer                                 Add a sealer node
* call                                      Call a contract by a function and parameters
* callByCNS                                 Call a contract by a function and parameters by CNS
* create                                    Create table by sql
* delete                                    Remove records by sql
* deploy                                    Deploy a contract on blockchain
* deployByCNS                               Deploy a contract on blockchain by CNS
* desc                                      Description table information
* quit([quit, q, exit])                     Quit console
* freezeAccount                             Freeze the account
* freezeContract                            Freeze the contract
* generateGroup                             Generate a group for the specified node
* generateGroupFromFile                     Generate group according to the specified file
* getAccountStatus                          GetAccountStatus of the account
* getAvailableConnections                   Get the connection information of the nodes connected with the sdk
* getBatchReceiptsByBlockHashAndRange       Get batched transaction receipts according to block hash and the transaction range
* getBatchReceiptsByBlockNumberAndRange     Get batched transaction receipts according to block number and the transaction range
* getBlockByHash                            Query information about a block by hash
* getBlockByNumber                          Query information about a block by number
* getBlockHashByNumber                      Query block hash by block number
* getBlockHeaderByHash                      Query information about a block header by hash
* getBlockHeaderByNumber                    Query information about a block header by block number
* getBlockNumber                            Query the number of most recent block
* getCode                                   Query code at a given address
* getConsensusStatus                        Query consensus status
* getContractStatus                         Get the status of the contract
* getCryptoType                             Get the current crypto type
* getCurrentAccount                         Get the current account info
* getDeployLog                              Query the log of deployed contracts
* getGroupConnections                       Get the node information of the group connected to the SDK
* getGroupList                              Query group list
* getGroupPeers                             Query nodeId list for sealer and observer nodes
* getNodeIDList                             Query nodeId list for all connected nodes
* getNodeInfo                               Query the specified node information.
* getNodeVersion                            Query the current node version
* getObserverList                           Query nodeId list for observer nodes.
* getPbftView                               Query the pbft view of node
* getPeers                                  Query peers currently connected to the client
* getPendingTransactions                    Query pending transactions
* getPendingTxSize                          Query pending transactions size
* getSealerList                             Query nodeId list for sealer nodes
* getSyncStatus                             Query sync status
* getSystemConfigByKey                      Query a system config value by key
* getTotalTransactionCount                  Query total transaction count
* getTransactionByBlockHashAndIndex         Query information about a transaction by block hash and transaction index position
* getTransactionByBlockNumberAndIndex       Query information about a transaction by block number and transaction index position
* getTransactionByHash                      Query information about a transaction requested by transaction hash
* getTransactionByHashWithProof             Query the transaction and transaction proof by transaction hash
* getTransactionReceipt                     Query the receipt of a transaction by transaction hash
* getTransactionReceiptByHashWithProof      Query the receipt and transaction receipt proof by transaction hash
* grantCNSManager                           Grant permission for CNS by address
* grantCommitteeMember                      Grant the account committee member
* grantContractStatusManager                Grant contract authorization to the user
* grantContractWritePermission              Grant the account the contract write permission.
* grantDeployAndCreateManager               Grant permission for deploy contract and create user table by address
* grantNodeManager                          Grant permission for node configuration by address
* grantOperator                             Grant the account operator
* grantSysConfigManager                     Grant permission for system configuration by address
* grantUserTableManager                     Grant permission for user table by table name and address
* insert                                    Insert records by sql
* listAbi                                   List functions and events info of the contract.
* listAccount                               List the current saved account list
* listCNSManager                            Query permission information for CNS
* listCommitteeMembers                      List all committee members
* listContractStatusManager                 List the authorization of the contract
* listContractWritePermission               Query the account list which have write permission of the contract.
* listDeployAndCreateManager                Query permission information for deploy contract and create user table
* listDeployContractAddress                 List the contractAddress for the specified contract
* listNodeManager                           Query permission information for node configuration
* listOperators                             List all operators
* listSysConfigManager                      Query permission information for system configuration
* listUserTableManager                      Query permission for user table information
* loadAccount                               Load account for the transaction signature
* newAccount                                Create account
* queryCNS                                  Query CNS information by contract name and contract version
* queryCommitteeMemberWeight                Query the committee member weight
* queryGroupStatus                          Query the status of the specified group of the specified node
* queryThreshold                            Query the threshold
* queryVotesOfMember                        Query votes of a committee member.
* queryVotesOfThreshold                     Query votes of updateThreshold operation
* recoverGroup                              Recover the specified group of the specified node
* registerCNS                               RegisterCNS information for the given contract
* removeGroup                               Remove the specified group of the specified node
* removeNode                                Remove a node
* revokeCNSManager                          Revoke permission for CNS by address
* revokeCommitteeMember                     Revoke the account from committee member
* revokeContractStatusManager               Revoke contract authorization to the user
* revokeContractWritePermission             Revoke the account the contract write permission
* revokeDeployAndCreateManager              Revoke permission for deploy contract and create user table by address
* revokeNodeManager                         Revoke permission for node configuration by address
* revokeOperator                            Revoke the operator
* revokeSysConfigManager                    Revoke permission for system configuration by address
* revokeUserTableManager                    Revoke permission for user table by table name and address
* switch([s])                               Switch to a specific group by group ID
* select                                    Select records by sql
* setSystemConfigByKey                      Set a system config value by key
* startGroup                                Start the specified group of the specified node
* stopGroup                                 Stop the specified group of the specified node
* unfreezeAccount                           Unfreeze the account
* unfreezeContract                          Unfreeze the contract
* update                                    Update records by sql
* updateCommitteeMemberWeight               Update the committee member weight
* updateThreshold                           Update the threshold
---------------------------------------------------------------------------------------------

注:

  • help显示每条命令的含义是:命令 命令功能描述

  • 查看具体命令的使用介绍说明,输入命令 -h或--help查看。例如:

[group:1]> getBlockByNumber -h
Query information about a block by block number.
Usage:
getBlockByNumber blockNumber [boolean]
* blockNumber -- Integer of a block number, from 0 to 2147483647.
* boolean -- (optional) If true it returns the full transaction objects, if false only the hashes of the transactions.

5.切换群组

运行switch或者s,切换到指定群组。群组号显示在命令提示符前面。

[group:1]> switch 2
Switched to group 2.
​
[group:2]>

扩容节点

FISCO BCOS引入了游离节点、观察者节点和共识节点,这三种节点类型可通过控制台相互转换。

  • 共识节点:参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。

  • 观察者节点:不参与共识,但能实时同步链上数据的节点。

  • 游离节点:已启动,待等待加入群组的节点。处在一种暂时的节点状态,不能获取链上的数据。

将指定节点分别转换成共识节点、观察者节点、游离节点,相关操作命令如下:

一、为节点生成证书并启动

每个节点都需要有一套证书来与链上的其他节点建立连接,扩容一个新节点,首先需要为其签发证书。

1.为新节点生成私钥证书

接下来的操作都在nodes/127.0.0.1目录下进行

  1. 获取证书生成脚本

curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh

注解

  • 如果因为网络问题导致长时间无法下载,请尝试curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh

  1. 生成新节点私钥证书

# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中node4/conf中会存在机构agency新签发的证书和私钥
# 成功会输出 All completed 提示
bash gen_node_cert.sh -c ../cert/agency -o node4

国密版本请执行下面的指令生成证书。

bash gen_node_cert.sh -c ../cert/agency -o node4 -g ../gmcert/agency/

2.准备节点配置文件

  1. 拷贝node0/config.ininode0/start.shnode0/stop.sh到node4目录;

cp node0/config.ini node0/start.sh node0/stop.sh node4/
  1. 修改node4/config.ini。对于[rpc]模块,修改channel_listen_port=20204jsonrpc_listen_port=8549;对于[p2p]模块,修改listen_port=30304并在node.中增加自身节点信息;

$ vim node4/config.ini
[rpc]
    ;rpc listen ip
    listen_ip=127.0.0.1
    ;channelserver listen port
    channel_listen_port=20204
    ;jsonrpc listen port
    jsonrpc_listen_port=8549
[p2p]
    ;p2p listen ip
    listen_ip=0.0.0.0
    ;p2p listen port
    listen_port=30304
    ;nodes to connect
    node.0=127.0.0.1:30300
    node.1=127.0.0.1:30301
    node.2=127.0.0.1:30302
    node.3=127.0.0.1:30303
    node.4=127.0.0.1:30304
  1. 节点3拷贝节点1的node0/conf/group.1.genesis(内含群组节点初始列表)和node0/conf/group.1.ininode4/conf目录下,不需改动;

cp node0/conf/group.1.genesis node0/conf/group.1.ini node4/conf/
  1. 执行node4/start.sh启动节点;

bash node4/start.sh
  1. 确认node4与其他节点连接已经建立,加入网络操作完成。

tail -f node4/log/log*  | grep "connected count"
# 以下日志表明节点node4与其他4个节点建立了连接
info|2020-12-22 20:44:36.113611|[P2P][Service] heartBeat,connected count=4
info|2020-12-22 20:44:46.117942|[P2P][Service] heartBeat,connected count=4
info|2020-12-22 20:44:56.120799|[P2P][Service] heartBeat,connected count=4

二、节点加入群组

1.获取node4的nodeid

cat node4/conf/node.nodeid

得到类似下面的字符串就是nodeid,nodeid是节点公钥的16进制表示,国密请执行cat node4/conf/gmnode.nodeid

94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6e

2.使用控制台将node4加入群组1

  1. 回到cd ~/fisco/console路径,bash start.sh进入控制台

    2.使用addObserver将node4作为观察节点加入群组1

[group:1]> getObserverList
[]
​
[group:1]> addObserver 94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6e
{
    "code":1,
    "msg":"Success"
}
​
[group:1]> getObserverList
[
    94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6e
]
  1. 使用addSealer将node4作为共识节点加入群组1

[group:1]> getSealerList
[
    6c41f7e138051a13a220cb186e934398e37700295ff355b87f113704996b3e03750100e16653cda18b5f954d3b7b08d068ca4a9d65cec5a40db980b697ffb699,
    7404cdf7f34f038aba90059ff25dc5f05f538010c55e98976aea6bc954910f34f15a255869751c8fe564bdb0fa1eee8e2db47eeca0fdd1359beaac6adcd37ede,
    a7b856e5b59072c809ea963fa45ede72f7d37561affff989fbede6cd61a40137e2146db205434788e61b89a57f08c614cd283e5e915c23714c2fa685237e8bdb,
    e5ea1e18717418a57f115bf1cea5168250f86e5b77f74dd15d0c4bf3758ca37002059ba2e54131296d1646a62be5faf85e243dac8d33d452acd63e20428b72ed
]
​
[group:1]> addSealer 94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6e
{
    "code":1,
    "msg":"Success"
}
​
[group:1]> getSealerList
[
    6c41f7e138051a13a220cb186e934398e37700295ff355b87f113704996b3e03750100e16653cda18b5f954d3b7b08d068ca4a9d65cec5a40db980b697ffb699,
    7404cdf7f34f038aba90059ff25dc5f05f538010c55e98976aea6bc954910f34f15a255869751c8fe564bdb0fa1eee8e2db47eeca0fdd1359beaac6adcd37ede,
    a7b856e5b59072c809ea963fa45ede72f7d37561affff989fbede6cd61a40137e2146db205434788e61b89a57f08c614cd283e5e915c23714c2fa685237e8bdb,
    e5ea1e18717418a57f115bf1cea5168250f86e5b77f74dd15d0c4bf3758ca37002059ba2e54131296d1646a62be5faf85e243dac8d33d452acd63e20428b72ed,
    94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6e
]

注:

如果需要加入其他群组,再进行以上命令进行加入。

安装WeBase-Front中间件

  1. 下载安装包

    wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-front.zip
  2. 解压

    unzip webase-front.zip
    cd webase-front

3.拷贝sdk证书文件(build_chain的时候生成的)

将节点所在目录nodes/${ip}/sdk下的所有文件拷贝到当前conf目录,供SDK与节点建立连接时使用(SDK会自动判断是否为国密,且是否使用国密SSL)

  • 链的sdk目录包含了ca.crt, sdk.crt, sdk.keygm文件夹,gm文件夹包含了国密SSL所需的证书

  • 拷贝命令可使用cp -r nodes/${ip}/sdk/* ./conf/

  • 注,只有在建链时手动指定了-G(大写)时节点才会使用国密SSL

  1. 服务启停

    服务启停命令:

    启动: bash start.sh
    停止: bash stop.sh
    检查: bash status.sh 

访问

访问 http://{deployIP}:{frontPort}/WeBASE-Front

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值