本文主要介紹了本地的eos程序如何連接主網(wǎng)。
1. 我們在EOS主網(wǎng)上么
這時(shí)我們在命令行中輸入:
cleos get info
會(huì)顯示如下界面:
注意到里面有一個(gè)chain_id字段,它的值是cf057...c4f,這是它所在的網(wǎng)絡(luò)標(biāo)識(shí)符,主網(wǎng)的chain_id的值是:aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906,很明顯我們并沒有在主網(wǎng)中,所以我們的姿勢是不對的,到底問題出在哪兒呢?
2. 連接主網(wǎng) - 指定genesis-json
接著上面的問題,答案就是在我們運(yùn)行nodeos時(shí),是需要指定genesis-json的,送給大家一份genesis.json:
{
"initial_timestamp": "2018-06-08T08:08:08.888",
"initial_key": "EOS7EarnUhcyYqmdnPon8rm7mBCTnBoot6o7fE2WzjvEX2TdggbL3",
"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": 200000,
"target_block_cpu_usage_pct": 1000,
"max_transaction_cpu_usage": 150000,
"min_transaction_cpu_usage": 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
}
}
在主目錄下新創(chuàng)建一個(gè)genesis.json文件,并把上面的內(nèi)容復(fù)制粘貼進(jìn)去即可。
3. 連接主網(wǎng) - 添加插件列表
但這并沒有結(jié)束,我們還需要指定運(yùn)行時(shí)的插件:
在~/Library/Application\ Support/eosio/nodeos/config/config.ini中添加插件列表:
plugin = eosio::chain_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin
plugin = eosio::history_plugin
plugin = eosio::history_api_plugin
plugin = eosio::http_plugin
plugin = eosio::http_client_plugin
plugin = eosio::wallet_api_plugin
之后我們再運(yùn)行nodeos --genesis-json ~/genesis.json,這時(shí)我們又遇到了一個(gè)錯(cuò)誤:

解決的辦法簡單粗暴,直接刪除原來的數(shù)據(jù):
rm -rf ~/Library/Application\ Support/eosio/nodeos/data
或者在啟動(dòng)nodeos時(shí)追加--delete-all-blocks參數(shù)即可。
nodeos --genesis-json ~/genesis.json --delete-all-blocks
4. 連接主網(wǎng) - 添加種子節(jié)點(diǎn)
這時(shí)我們看上去似乎沒啥問題了,cleos get info之后出來的也是主網(wǎng)id,一切看上去歲月靜好。
但是等等,為什么我電腦只有一個(gè)塊,執(zhí)行cleos get block 2就會(huì)報(bào)錯(cuò),說好的主網(wǎng),難道是單機(jī)版?
節(jié)點(diǎn)要同步數(shù)據(jù),就必須知道從哪個(gè)節(jié)點(diǎn)同步數(shù)據(jù)。這要靠顯示聲明的種子節(jié)點(diǎn)來解決,這些種子節(jié)點(diǎn)通常是EOS的創(chuàng)建者和運(yùn)營者。同樣,我們在之前的config.ini文件中繼續(xù)追加種子節(jié)點(diǎn)信息:
p2p-peer-address = p2p.prod.eosgravity.com:80
p2p-peer-address = eu-west-nl.eosamsterdam.net:9876
p2p-peer-address = p2p.mainnet.eosgermany.online:9876
p2p-peer-address = 54.38.250.15:19878
p2p-peer-address = p2p.genereos.io:9876
p2p-peer-address = mainnet.eospay.host:19876
p2p-peer-address = 130.211.59.178:9876
p2p-peer-address = 54.153.59.31:9999
p2p-peer-address = 94.130.250.22:9806
p2p-peer-address = peer.main.alohaeos.com:9876
p2p-peer-address = peer.eosn.io:9876
p2p-peer-address = prod.mainnet.eos.cybex.io:9888
p2p-peer-address = p2p-1.eosnetwork.io:9876
p2p-peer-address = p.jeda.one:3322
p2p-peer-address = eosbattles.com:9877
p2p-peer-address = 34.226.76.22:9876
p2p-peer-address = mainnet.eosoasis.io:9876
p2p-peer-address = node.eosflare.io:1883
p2p-peer-address = p2p.eosio.cr:1976
p2p-peer-address = p2p.eosio.cr:5418
p2p-peer-address = eno.eosvan.io:19866
之后再執(zhí)行nodeos(這次就不要加后面的參數(shù)啦),這時(shí)發(fā)現(xiàn)開始開始找鄰近節(jié)點(diǎn)同步信息了。
再執(zhí)行cleos get info,出現(xiàn)如下界面:

chain_id確實(shí)是主網(wǎng)ID,執(zhí)行cleos get block n(n為區(qū)塊號(hào))也不報(bào)錯(cuò)啦,同步成功!
至此,我們終于和主網(wǎng)大部隊(duì)匯合啦!
總結(jié)
該篇我們學(xué)習(xí)了:
- 如何連接到EOS主網(wǎng)
- 指定genesis-json來修改chain_id
- 修改
config.ini文件- 添加plugin相關(guān)語句
- 添加p2p-peer-address列表
- 啟動(dòng)時(shí)清空已有的區(qū)塊鏈數(shù)據(jù)信息
--delete-all-blocks
結(jié)束語
這章我們學(xué)習(xí)了如何判斷自己在不在主網(wǎng)上,并且如何連接EOS主網(wǎng)。下一章我們來說說cleos、賬戶的概念,以及操作錢包做點(diǎn)實(shí)事兒。