私链搭建(单机多节点)

最终创建两个生产节点的私链

开启钱包服务节点

#建议只在本地监听,因为密钥传输是不加密的
keosd --http-server-address 127.0.0.1:8899
#直接输出
2042116ms thread-0   wallet_plugin.cpp:41          plugin_initialize    ] initializing wallet plugin
2042120ms thread-0   http_plugin.cpp:141           plugin_initialize    ] host: 127.0.0.1 port: 8899
2042121ms thread-0   http_plugin.cpp:144           plugin_initialize    ] configured http to listen on 127.0.0.1:8899
2042122ms thread-0   http_plugin.cpp:213           plugin_startup       ] start listening for http requests
2042123ms thread-0   wallet_api_plugin.cpp:70      plugin_startup       ] starting wallet_api_plugin
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/create
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/get_public_keys
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/import_key
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/list_keys
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/list_wallets
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/lock
2042127ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/lock_all
2042128ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/open
2042128ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/set_timeout
2042128ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/sign_transaction
2042128ms thread-0   http_plugin.cpp:242           add_handler          ] add api url: /v1/wallet/unlock\
#后输出的
2167622ms thread-0   wallet.cpp:182                save_wallet_file     ] saving wallet to file /home/hiup/eosio-wallet/./default.wallet
3194752ms thread-0   wallet.cpp:182                save_wallet_file     ] saving wallet to file /home/hiup/eosio-wallet/./default.wallet

创建一个默认钱包

cleos --wallet-port 8899  wallet create

#记住输出的私钥
"PW5JMmtnJxaUiEwwSLVSrA9UTxSzypnxVkhRtKA1QeSAQm25LU8Dx"

创建第一个生产节点

#第一个节点叫eosio
nodeos --enable-stale-production --producer-name eosio --plugin eosio::chain_api_plugin --plugin eosio::net_api_plugin
#不停输出区块信息
eosio generated block 36cd7280... #7030 @ 2018-04-16T03:36:09.000 with 0 trxs, lib: 7029
eosio generated block a135dfcc... #7031 @ 2018-04-16T03:36:09.500 with 0 trxs, lib: 7030
eosio generated block 6b6e8f9d... #7032 @ 2018-04-16T03:36:10.000 with 0 trxs, lib: 7031
eosio generated block 26f1a273... #7033 @ 2018-04-16T03:36:10.500 with 0 trxs, lib: 7032
eosio generated block 797bdc13... #7034 @ 2018-04-16T03:36:11.000 with 0 trxs, lib: 7033

创建第二个生产节点

#加载智能合约
cleos --wallet-port 8899 set contract eosio ../eos/build/contracts/eosio.bios
Reading WAST/WASM from ../eos/build/contracts/eosio.bios/eosio.bios.wast...
Assembling WASM...
Publishing contract...
executed transaction: 684d83f376333d381841d79931b0c820698a3f2cadb11080169bc5504d1eff8b  3280 bytes  2200576 cycles
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001581060037f7e7f0060057f7e7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":{"types":[],"structs":[{"name":"set_account_limits","base":"","fields":[{"n...

#创建密钥对
cleos create key
Private key: 5JaN9LSpwuqY89KbtiJHQDdngQztDyB9XZHz2KC6QxP7xn9NUeN
Public key: EOS5BTsWP7hC7wAeUuoo6Q3LBTjiPLoEAM6hY51ujDEzsq7UNfex2

#导入密钥对到钱包
cleos --wallet-port 8899 wallet import 5JaN9LSpwuqY89KbtiJHQDdngQztDyB9XZHz2KC6QxP7xn9NUeN

#创建新用户test2
./cleos --wallet-port 8899 create account eosio test2 EOS5BTsWP7hC7wAeUuoo6Q3LBTjiPLoEAM6hY51ujDEzsq7UNfex2 EOS5BTsWP7hC7wAeUuoo6Q3LBTjiPLoEAM6hY51ujDEzsq7UNfex2
executed transaction: 431d872ad07764b912c1eca32e50e01bd0dac26113f6545054b453a1b5330daf  352 bytes  102400 cycles
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"test2","owner":{"threshold":1,"keys":[{"key":"EOS5BTsWP7hC7wAeUuoo6Q3LBTj...

#开启用户test2的生产
#避免了端口冲突
./nodeos --producer-name test2 --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 [\"EOS5BTsWP7hC7wAeUuoo6Q3LBTjiPLoEAM6hY51ujDEzsq7UNfex2\",\"5JaN9LSpwuqY89KbtiJHQDdngQztDyB9XZHz2KC6QxP7xn9NUeN\"]
test2 generated block b6fe0ecd... #7978 @ 2018-04-16T03:44:03.000 with 0 trxs, lib: 7977
test2 generated block 85f9b073... #7979 @ 2018-04-16T03:44:03.500 with 0 trxs, lib: 7978
test2 generated block 36066d05... #7980 @ 2018-04-16T03:44:04.000 with 0 trxs, lib: 7979
test2 generated block 1d5314fa... #7981 @ 2018-04-16T03:44:04.500 with 0 trxs, lib: 7980
test2 generated block b5410853... #7982 @ 2018-04-16T03:44:05.000 with 0 trxs, lib: 7981

激活test2用户

./cleos --wallet-port 8899 push action eosio setprods "{ \"version\": 1, \"producers\": [{\"producer_name\": \"test2\",\"block_signing_key\": \"EOS5BTsWP7hC7wAeUuoo6Q3LBTjiPLoEAM6hY51ujDEzsq7UNfex2\"}]}" -p eosio@active
executed transaction: 8644f6707157ecceae7397000234e1725d2f18a39a53de27e1b375e6b5b85d1f  272 bytes  105472 cycles
#         eosio <= eosio::setprods              {"version":1,"producers":[{"producer_name":"test2","block_signing_key":"EOS5BTsWP7hC7wAeUuoo6Q3LBTji...

状态检查

#节点1
./cleos get info
{
  "server_version": "74a4c7a0",
  "head_block_num": 7715,
  "last_irreversible_block_num": 7714,
  "head_block_id": "00001e23e240c450f2bf1b747ea64eba97f8ffd784f6a8e63daae279a386ab9d",
  "head_block_time": "2018-04-16T03:41:51",
  "head_block_producer": "test2"
}


#节点2
./cleos --port 8889 get info
{
  "server_version": "74a4c7a0",
  "head_block_num": 7770,
  "last_irreversible_block_num": 7769,
  "head_block_id": "00001e5a78fd1fca6b21c823e51b50f0d7984d1ff5eb0e297a48d2bd1b610b52",
  "head_block_time": "2018-04-16T03:42:19",
  "head_block_producer": "test2"

完结

最后更新于