美文网首页
[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