|-----------------------------------------------------------------------------------------------------------------------------------------
|【说明】:我们要部署一条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
内容如下图:
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
结果如下图:
由上图可看到,当前文件夹内多了一个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
如果执行成功如下图:
如果执行失败如下图:
如果出现类似错误,原因:mac环境下docker容器启动时,端口号映射存在问题;
【解决方法步骤如下】:
【步骤1】:退出当前docker 容器环境,执行`exit`退出
【步骤2】:vim env.sh 修改端口号映射代码,将”–net=host\”修改为" -p1337:1337"
【修改前】
【修改后】
【步骤3】:重启docker
【步骤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文件夹下:
如上图所示,四个共识节点,都有自己的文件夹,我们以0文件夹为例,看一下共识节点下目录中包含内容,如下图:
我们找到了logs文件夹,该文件夹存储了当前共识节点的日志信息
【执行】:tail -100f logs/cita-forever.log
九、编译安装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并进行测试
如下图所示:
【声明】:
感谢您的阅读,如果文中的内容有描述不当或者存在疑虑,请在留言区回复,我会及时进行更正