[blockchain-038] EOS多節點網路從安裝到執行[資料收集]
https://eosfans.io/topics/490
區域網自己搭建一個測試網路
節點1 192.168.195.144
節點2 192.168.195.176
節點3 192.168.195.191
三個節點的genesis.json是一樣的,內容如下:
-----------
{
"initial_timestamp": "2018-03-02T12:00:00.000",
"initial_key": "EOS8HF8XSGjfSvG5zfPgXFcUjFJh56ifWzYneWMEQSCkXgSdPJ51R",
"initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 100000,
"target_block_cpu_usage_pct": 500,
"max_transaction_cpu_usage": 100000,
"base_per_transaction_cpu_usage": 512,
"base_per_action_cpu_usage": 1024,
"base_setcode_cpu_usage": 2097152,
"per_signature_cpu_usage": 102400,
"cpu_usage_leeway": 2048,
"context_free_discount_cpu_usage_num": 20,
"context_free_discount_cpu_usage_den": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 4,
"max_authority_depth": 6,
"max_generated_transaction_count": 16
},
"initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000"
}
-----------
192.168.195.144的config.ini配置如下
-----------
genesis-json = "genesis.json"
block-log-dir = "blocks"
shared-memory-size-mb = 1024
http-server-address = 127.0.0.1:8888
access-control-allow-credentials = false
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = 192.168.195.144:9876 #注意此處
agent-name = "EOS Test Agent"
allowed-connection = any
max-clients = 25
connection-cleanup-period = 30
network-version-match = 0
sync-fetch-span = 100
max-implicit-request = 1500
enable-stale-production = true #注意此處
max-transaction-time = 30
required-participation = 33
producer-name = eosio #注意此處
private-key = ["EOS8HF8XSGjfSvG5zfPgXFcUjFJh56ifWzYneWMEQSCkXgSdPJ51R","5JC4FQVzAZuxWmaAfbW1RWsNDEpjjF5enfn9WBHkYTupFJQaBWt"] #注意此處
txn-reference-block-lag = 0
wallet-dir = "."
unlock-timeout = 900
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
-----------
192.168.195.176
-----------
genesis-json = "genesis.json"
block-log-dir = "blocks"
shared-memory-size-mb = 1024
http-server-address = 127.0.0.1:8888
access-control-allow-credentials = false
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = 192.168.195.176:9876
p2p-peer-address = 192.168.195.144:9876 #注意此處
p2p-peer-address = 192.168.195.191:9876 #注意此處
agent-name = "EOS Test Agent"
allowed-connection = any
max-clients = 25
connection-cleanup-period = 30
network-version-match = 0
sync-fetch-span = 100
max-implicit-request = 1500
enable-stale-production = false #注意此處
max-transaction-time = 30
required-participation = 33
producer-name = kgtest #注意此處
private-key = ["",""] #注意此處
txn-reference-block-lag = 0
wallet-dir = "."
unlock-timeout = 900
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
-----------
192.168.195.191
-----------
genesis-json = "genesis.json"
block-log-dir = "blocks"
shared-memory-size-mb = 1024
http-server-address = 127.0.0.1:8888
access-control-allow-credentials = false
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = 192.168.195.176:9876 #注意此處
p2p-peer-address = 192.168.195.144:9876 #注意此處
p2p-peer-address = 192.168.195.176:9876 #注意此處
agent-name = "EOS Test Agent"
allowed-connection = any
max-clients = 25
connection-cleanup-period = 30
network-version-match = 0
sync-fetch-span = 100
max-implicit-request = 1500
enable-stale-production = false #注意此處
max-transaction-time = 30
required-participation = 33
producer-name = kgtest #注意此處
private-key = ["",""] #注意此處
txn-reference-block-lag = 0
wallet-dir = "."
unlock-timeout = 900
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
-----------
啟動網路過程
1.首先啟動節點1,節點1會出塊
2.同時啟動節點2和節點3,這兩個節點會同步節點1的區塊
3.建立錢包
cleos wallet create -n kgbp
4. 開啟並解鎖錢包
cleos wallet open -n kgbp
cleos wallet uplock -n kgbp
5. 匯入eosio賬戶到錢包
cleos wallet import -n kgbp 5JC4FQVzAZuxWmaAfbW1RWsNDEpjjF5enfn9WBHkYTupFJQaBWt
5. 建立併發布toekn
5.1 建立釋出token的帳號eosio.token
cleos create account eosio eosio.token EOS721PhsVCdLXatGMxu2kNBMPtQZzV8QU6Wu1qC9YFBZegyiP8if EOS721PhsVCdLXatGMxu2kNBMPtQZzV8QU6Wu1qC9YFBZegyiP8if
5.2 在錢包裡匯入EOS721PhsVCdLXatGMxu2kNBMPtQZzV8QU6Wu1qC9YFBZegyiP8if的私鑰
cleos wallet import -n kgbp xxxxxxxx
5.3 釋出eosio.token合約
cleos set contract eosio.token ./contracts/eosio.token/
5.4 建立和釋出代幣
cleos push action eosio.token create '["eosio","1000000000.0000 EOS",0,0,0]' -p eosio.token
cleos push action eosio.token issue '["eosio","1000000000.0000 EOS","issue"]' -p eosio
5.5 檢查釋出代幣情況
cleos get currency balance eosio.token eosio
5.6 部署eosio.system合約
cleos set contract eosio ./contracts/eosio.system/
如果部署失敗,可以多嘗試幾次。部署了eosio.system合約之後,cleos create account這個命令就不能建立賬戶了,暫時還不清楚是什麼原因。讓後可以用下面這個命令建立賬戶:
cleos system newaccount eosio kgtest EOS5VPJHpT6aUfqVyW2XNNc2JgwtAa15nnQXMbzyvSQQHr2NYqCDz EOS5VPJHpT6aUfqVyW2XNNc2JgwtAa15nnQXMbzyvSQQHr2NYqCDz --stake-net '50.00 EOS' --stake-cpu '50.00 EOS'
cleos system newaccount eosio kgtestt EOS79bDtiWLaSkWaHi59u5wdWL4XKfLgwBCvWa1FTvCT8bDiYXjQY EOS79bDtiWLaSkWaHi59u5wdWL4XKfLgwBCvWa1FTvCT8bDiYXjQY --stake-net '50.00 EOS' --stake-cpu '50.00 EOS'
cleos system newaccount eosio kgtesttt EOS5WhVn5sKfTudx7THKLMSCH9BWchfBMdM1Q6aLU86tCvhUsjJZ6 EOS5WhVn5sKfTudx7THKLMSCH9BWchfBMdM1Q6aLU86tCvhUsjJZ6 --stake-net '50.00 EOS' --stake-cpu '50.00 EOS'
建立完成之後匯入EOS5VPJHpT6aUfqVyW2XNNc2JgwtAa15nnQXMbzyvSQQHr2NYqCDz的私鑰
5.7 將節點2註冊成bp
cleos system regproducer kgtest EOS5VPJHpT6aUfqVyW2XNNc2JgwtAa15nnQXMbzyvSQQHr2NYqCDz http://http-server-address:8888
5.8 給建立的賬戶轉賬
cleos push action eosio.token transfer '["eosio", "kgtest","100000000.0000 EOS","vote"]' -p eosio
cleos push action eosio.token transfer '["eosio", "kgtestt","100000000.0000 EOS","vote"]' -p eosio
cleos push action eosio.token transfer '["eosio", "kgtesttt","100000000.0000 EOS","vote"]' -p eosio
5.9 鎖定代幣
cleos system delegatebw kgtest kgtest '25000000.0000 EOS' '25000000.0000 EOS' --transfer
cleos system delegatebw kgtestt kgtestt '25000000.0000 EOS' '25000000.0000 EOS' --transfer
cleos system delegatebw kgtesttt kgtesttt '25000000.0000 EOS' '25000000.0000 EOS' --transfer
5.10 給出塊節點投票
cleos system voteproducer prods kgtest kgtest
cleos system voteproducer prods kgtestt kgtest
cleos system voteproducer prods kgtesttt kgtest
5.11 投票之後,就觀察到節點2出塊了。也就是超級節點運行了。按照這個流程,可以將其他節點都一個一個執行起來。
有些引數還不是太瞭解。
××××××××××××××××××××××××××××××××××××××××××××××××××××××
1. EOSIO 4.0 測試網路啟動教程
https://eosfans.io/topics/454
2. EOS 安裝本地環境,並實現發幣轉賬等功能
https://eosfans.io/topics/333
3. EOS3.0 測試網路組建-EOS 中文社群特輯
https://eosfans.io/topics/265
4. Tutorial Bios Boot Sequence
https://github.com/EOSIO/eos/wiki/Tutorial-Bios-Boot-Sequence