MacOS 部署CITA系列【二、链启动过程】


#1

|-----------------------------------------------------------------------------------------------------------------------------------------

|【说明】:我们要部署一条charge模型的测试链

| 【目标】:

| 1.交易手续费用发放到共识节点

| 2.admin能够进执行自动执行操作

| 3.普通节点能够发送交易、部署合约、调用合约

| 4.发行一定数量的原生token到admin账户

| 5.部署测试合约

|【声明】:

| 感谢您的阅读,如果文中的内容有描述不当或者存在疑虑,请在留言区回复,我会及时进行更正

|-------------------------------------------------------------------------------------------------------------------------------------------

一、环境准备

1. 简要说明:上一章中,我们下载了cita release 0.22.0安装包 cita_secp256k1_sha3.tar.gz( secp256k1 是签名算法,sha3 是加密算法)

        若没有下载,传送门------下载地址:    https://github.com/cryptape/cita/releases

2.解压release安装包

    【操作】:tar -zxvf cita_secp256k1_sha3.tar.gz

3.进入cita_secp256k1_sha3

    【操作】:cd cita_secp256k1_sha3

4.查看 cita_secp256k1_sha3目录下包含内容:

    【操作】:ll -a 

        内容如下图:

EA24FF3B-3F25-4F64-BE2A-B15CD0E20F07
5.检查端口号是否已经被占用

  【操作】:

        netstat -antl | grep 1337

        netstat -antl | grep 1338

        netstat -antl | grep 1339

        netstat -antl | grep 1340

        netstat -antl | grep 4000

        netstat -antl | grep 4001

        netstat -antl | grep 4002

        netstat -antl | grep 4003

二、修改链创世文件生成脚本,设置admin账户初始token数量
【操作1】:打开 vim scripts/config_tool/create_genesis.py

修改前:


修改后:

【说明】:

    修改后含义:

            共识节点账户余额初始值为0;

            admin账户余额初始值为0x785ee10d5da47000000000000000000,该值可根据实际情况设定,此处作为示例;

三、启动docker容器

  1.检查docker是否启动

       【操作】docker ps 

  2.当前所在目录位置:cita_secp256k1_sha3文件夹下

    【操作一】:

            ./env.sh

             【说明】:此过程为,启动“链部署容器”,主要目的为,拉取镜像,检验MAC环境下容器是否启动成功

    【操作二】:

            如果“操作一”成功,当前会进入到docker容器环境中

            由于需要后续操作,我们需要退出docker容器环境

            【执行】: exit

四、使用工具创建admin账户和运营放账户
【操作】:

        ./env.sh ./bin/create_key_addr new_account_key new_account_address

        【注释】:进入到docker容器中执行./bin/create_key_addr new_account_key new_account_address。

        【参数说明】:create_key_addr脚本为创建链上账户生成脚本,new_account_key为账户私钥存储文件,new_account_address为账户地址存储文件,若两文件不存在则会自动创建;通过执行./bin/create_key_addr脚本后创建的私钥和账户地址分别存入到new_account_key和new_account_address文件中。

使用./bin/create_key_addr 脚本进行创建公私钥如下图所示


五、创建共识节点配置文件

【操作1】:

./env.sh ./scripts/create_cita_config.py create --super_admin 0xc1cac70f4e31a42619c04c507c3861ad8f58b68e --nodes “127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002,127.0.0.1:4003” --contract_arguments SysConfig.economicalModel=1 SysConfig.operator=“TEST-OPERATOR" SysConfig.website=“https://www.test.com” SysConfig.name=“TEST RUN TOKEN" SysConfig.blockInterval=3000 SysConfig.autoExec=true SysConfig.symbol=“TEST" VersionManager.version=1 --chain_name “TEST-CHAIN”

【说明】:

  1. --super_admin为指定链的超级账户, “ 0xc1cac70f4e31a42619c04c507c3861ad8f58b68e”为上一步创建admin账户操作中产生的地址值,此处设置该账户为admin账户;

  2.--nodes为指定链启动过程中使用的四个共识节点的IP和NetWork端口号,此处Network端口号使用默认值

  3.--contract_arguments指定链自身的一些系统配置和系统合约的配置,其中:

    “SysConfig.economicalModel=1” 作用:设置当前经济模型为charge,(1代表charge模型,0代表Quota模型),链启动后不可修改;

    “SysConfig.operator=“TEST-OPERATOR” ”,作用:设置运营方名称,可自定义,链启动后可修改;

    “SysConfig.website="https://www.test.com””,作用:设置运营方网站,可自定义,链启动后可修改;

    “SysConfig.name=“TEST RUN TOKEN” ”,作用:设置TOKEN 名称,可自定义,链启动后不可修改;

    “SysConfig.blockInterval=3000”,作用:设置出块间隔,可自定义,链启动后不可修改;

    “ SysConfig.autoExec=true”,作用:设置自动执行开关状态为true,默认为false不可自动执行,链启动后不可修改,并且只有admin账户有权限;

    “SysConfig.symbol=“TEST” ”,作用:设置TOKEN符号,例如以太坊中token符号为eth,此处设置为TEST,可自定义,链启动后不可修改;

    “VersionManager.version=1”,作用:通过协议版本管理合约设置协议版本号为1,此处设置需谨慎⚠️

【说明】:自定义时,更详细的contract_arguments设置请参考官方文档:https://docs.citahub.com/zh-CN/cita/configuration/chain-config


执行过程如下图所示:


【操作2】:验证【操作1】是否执行成功,若成功当前文件中会存在与链名相同的文件夹TEST-CHAIN,且TEST-CHAIN中包含 0 1 2 3 ,四个文件夹,以及一个template文件夹

    【执行】: ll -a

结果如下图:
image
由上图可看到,当前文件夹内多了一个TEST-CHAIN文件夹,TEST-CHAIN文件夹为链信息存储文件夹

此文件夹内容如下图:


其中 0 1 2 3 为共识节点数据文件夹,template为链初始化数据文件夹

若执行【操作1】后与上图内容类似,则表示【操作1】执行成功,否则为执行失败。

【操作3】:查看当前链配置信息文件

vim TEST-CHAIN/template/init_data.yml

内容如下图:


发现我们在【操作1】中有关contract_arguments的设置已经成功写入到这个配置文件了,例如SysConfig.autoExec=true,上图中autoExec已经设置为true,若需自定义可按此格式类推

六、初始化节点配置文件

【操作1】:

./env.sh         【说明】进入docker容器环境中,若已经在docker容器环境内部,则无需执行此操作

【操作2】:

./bin/cita setup TEST-CHAIN/0

./bin/cita setup TEST-CHAIN/1

./bin/cita setup TEST-CHAIN/2

./bin/cita setup TEST-CHAIN/3

如果执行成功如下图:
image
如果执行失败如下图:


如果出现类似错误,原因:mac环境下docker容器启动时,端口号映射存在问题;

【解决方法步骤如下】:

【步骤1】:退出当前docker 容器环境,执行`exit`退出

image
【步骤2】:vim env.sh 修改端口号映射代码,将”–net=host\”修改为" -p1337:1337"

【修改前】


【修改后】

【步骤3】:重启docker
image
【步骤4】:重新启动docker容器

    【执行】:    ./env.sh   【说明】:进入到docker容器环境中

 【步骤5】:重新执行setup操作

        ./bin/cita setup TEST-CHAIN/0

        ./bin/cita setup TEST-CHAIN/1

        ./bin/cita setup TEST-CHAIN/2

        ./bin/cita setup TEST-CHAIN/3

【操作3】:检查rabbitmq是否启动

        ps -ef | grep rabbitmq | grep -v grep

七、启动CITA默认产生的4个共识节点

【操作1】

在docker容器中则执行下列命令:    

    ./bin/cita start TEST-CHAIN/0    

    ./bin/cita start TEST-CHAIN/1    

    ./bin/cita start TEST-CHAIN/2

    ./bin/cita start TEST-CHAIN/3

执行成功如下图效果:


八、测试链是否正常运行

【操作1】:使用curl查看当前链块高度

【执行】:    ./env.sh curl -X POST --data '{"jsonrpc":"2.0","method":"blockNumber","params":[],"id":83}' 127.0.0.1:1337

效果为下图,返回结果为0x7b十六进制,十进制为:123,含义:当前块高度为123.


【操作2】:使用curl查看链当前节点个数(所有节点的总和)

./env.sh curl -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“peerCount”,“params”:[],“id”:74}’ 127.0.0.1:1337

【操作3】:查看日志

每个共识节点都有自己的日志,当前情景下四个共识节点的信息存在于TEST-CHAIN文件夹下:
image
如上图所示,四个共识节点,都有自己的文件夹,我们以0文件夹为例,看一下共识节点下目录中包含内容,如下图:


我们找到了logs文件夹,该文件夹存储了当前共识节点的日志信息
image
【执行】:tail -100f logs/cita-forever.log
image

九、编译安装cita-cli

【简要说明】:

            CITA CLI 是用于开发中调试 CITA 的命令行工具。

            CITA CLI 与 CITA 的关系,就像 redis-cli 和 redis。

GitHub 地址:https://github.com/cryptape/cita-cli

【操作1】:

      git clone https://github.com/cryptape/cita-cli.git

【操作2】:

    根据cita-cli  github 安装部署流程操作

十、启动cita-cli并进行测试

如下图所示:

【声明】:

        感谢您的阅读,如果文中的内容有描述不当或者存在疑虑,请在留言区回复,我会及时进行更正




MacOS 部署CITA系列【三、测试合约部署过程】
MacOS 部署CITA系列【零、需求目标】