美文网首页
[eos28]nodeos-使用-开发环境-part2

[eos28]nodeos-使用-开发环境-part2

作者: FriendOfTime | 来源:发表于2020-04-08 20:04 被阅读0次

    https://developers.eos.io/manuals/eos/latest/nodeos/usage/development-environment/local-multi-node-testnet

    3. 本地多节点测试网络

    3.1 目标

    本章节描述如何在一个机器上配置2个节点,2个节点互相通信的测试网络。

    架构如下图所示:

    3.2 准备工作

      1、安装eosio软件

      2、确保nodeos,cleos,keosd是可用的

      3、知道如何传配置选项来开启或者禁用某个功能

    3.3 步骤

    1、启动wallet manager

    2、创建默认钱包

    3、导入eosio密钥

    4、启动第一个生产者节点

    5、启动第二个生产者节点

    6、获取节点信息

    3.3.1 启动wallet manager

    在命令行中启动keosd,命令如下:

    keosd --http-server-address 127.0.0.1:8899

    3.3.2 创建默认钱包

    新起一个命令行窗口(第2个命令行窗口),创建默认钱包,执行以下命令:

    cleos --wallet-url http://127.0.0.1:8899  wallet create --to-console

    如提示消息所示,需要保存密码,以备后用。

    3.3.3 导入eosio密钥

    此处可以参考之前的文章:https://www.jianshu.com/p/e7088db4720b

    执行以下命令,私钥换成自己的:

    cleos --wallet-url http://127.0.0.1:8899 wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

    大体是这么个逻辑:钱包是存储私钥和进行签名,创建钱包,创建密钥对,导入密钥到钱包,这样钱包就和密钥关联起来了。

    3.3.4 启动第一个生产者节点

    新起一个命令行窗口(第3个命令行窗口),启动第一个生产者节点:

    nodeos --enable-stale-production --producer-name eosio --plugin eosio::chain_api_plugin --plugin eosio::net_api_plugin

    创建一个特殊的生产者,也就是bios生产者。此处生产者的名字是eosio。

    3.3.5 启动第二个生产者节点

    以下命令假定你在eos\build目录中运行,并且已经在该目录中运行./eosio_build.sh构建了eosio的二进制文件。

    为了启动第二个生产者节点,必须首先导入eosio.bios合约。这个合约可以让你对其他账号的资源分配有直接控制,并且可以访问特权api。

    返回到第二个命令行窗口,执行以下命令导入合约:

    cleos --wallet-url http://127.0.0.1:8899 set contract eosio build/contracts/eosio.bios

    我们将使用账号名inita创建一个账号,并将其变成生产者。

    为了创建账号,需要生成和账号相关的密钥对,并且导入密钥到我们的钱包中。执行以下命令:

    cleos create key

    这将会产生如下的密钥对:

    Private key: 5JgbL2ZnoEAhTudReWH1RnMuQS6DBeLZt4ucV6t8aymVEuYg7sr

    Public key: EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg

    导入私钥到钱包:

    cleos --wallet-url http://127.0.0.1:8899 wallet import 5JgbL2ZnoEAhTudReWH1RnMuQS6DBeLZt4ucV6t8aymVEuYg7sr

    如果成功会出现:

    imported private key for: EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg

    创建inita账号:

    cleos --wallet-url http://127.0.0.1:8899 create account eosio inita EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg

    至此,将inita账号,钱包,密钥对进行了关联。先生成密钥对,用生成的私钥导入钱包,用生成的公钥创建inita账号。

    接下来,在第四个命令行窗口,启动第二个nodeos实例。为了避免和第一个nodeos实例产生冲突,这次的命令行会比第一次启动nodeos的命令行长:

    nodeos --producer-name inita --plugin eosio::chain_api_plugin --plugin eosio::net_api_plugin --http-server-address 127.0.0.1:8889 --p2p-listen-endpoint 127.0.0.1:9877 --p2p-peer-address 127.0.0.1:9876 --config-dir node2 --data-dir node2 --private-key [\"EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg\",\"5JgbL2ZnoEAhTudReWH1RnMuQS6DBeLZt4ucV6t8aymVEuYg7sr\"]

    至此,第二个nodeos是一个空闲的生产者。为了将它变成活跃的生产者,inita需要通过bios节点注册成一个生产者,bios节点需要执行一个操作来执行生产者调度:

    cleos --wallet-url http://127.0.0.1:8899 push action eosio setprods "{ \"schedule\": [{\"producer_name\": \"inita\",\"block_signing_key\": \"EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg\"}]}" -p eosio@active

    如果成功,会有以下输出:

    executed transaction: 2cff4d96814752aefaf9908a7650e867dab74af02253ae7d34672abb9c58235a  272 bytes  105472 cycles

    #        eosio <= eosio::setprods              {"version":1,"producers":[{"producer_name":"inita","block_signing_key":"EOS6hMjoWRF2L8x9YpeqtUEcsDKA...

    至此,恭喜你,你现在配置了两个节点的测试网络。

    你能看到原始的节点不再生产区块,而是接收区块。

    3.3.6 获取节点信息

    对第一个节点执行:

    cleos get info

    输出如下:

    {  "server_version": "223565e8",  "head_block_num": 11412,  "last_irreversible_block_num": 11411,  "head_block_id": "00002c94daf7dff456cd940bd585c4d9b38e520e356d295d3531144329c8b6c3",  "head_block_time": "2018-04-06T00:06:14",  "head_block_producer": "inita"}

    对第二个节点执行:

    cleos --url http://127.0.0.1:8889 get info

    输出如下:

    {  "server_version": "223565e8",  "head_block_num": 11438,  "last_irreversible_block_num": 11437,  "head_block_id": "00002cae32697444fa9a2964e4db85b5e8fd4c8b51529a0c13e38587c1bf3c6f",  "head_block_time": "2018-04-06T00:06:27",  "head_block_producer": "inita"}

    相关文章

      网友评论

          本文标题:[eos28]nodeos-使用-开发环境-part2

          本文链接:https://www.haomeiwen.com/subject/lejxmhtx.html