【问链-Eos公开课】第5课 组建单机多节点EOS网络
1.配置nodeos節點的初始集
我們將啟動許多nodeos,nodeos,將它們指向彼此,并最終對一組生產者進行投票。所有的nodeos節點都將在同一個服務器上運行。在接下來的章節中,我們將采取各種步驟來準備我們的候選生產者。producer1、producer2作為出塊節點,user1、user2作為普通節點。
2.為每個nodeos創建配置和數據目錄
因為所有的nodeos節點都將在同一個服務器上運行,所以我們需要單獨的配置和數據目錄。下面的例子為每個noedos節點創建~/eosio_test目錄。使用任何最適合你的方法來創建多個賬戶,記住,賬戶名稱的命名限制必須是12個字符,從a-z和1-5的集合。這里我們目錄為:
producer1、producer2。
3.為點對點通信準備IP地址
確定每個nodeos節點之間的點對點通信的IP地址和端口號(稍后您將在實際啟動生產者節點時使用它)。每個nodeos都可以通過設置p2p-peer-address地址配置屬性來配置,也可以在命令行啟動nodeos時(每個對等點有一個參數),或者在配置中設置nodeos的config.ini文件(每個節點一行)屬性。
producer1:
bnet-endpoint = 0.0.0.0:4321bnet-no-trx = falseblocks-dir = "blocks"chain-state-db-size-mb = 1024reversible-blocks-db-size-mb = 340contracts-console = falsehttps-client-validate-peers = 1http-server-address = 127.0.0.1:8011access-control-allow-origin = *access-control-allow-credentials = falsep2p-listen-endpoint = 127.0.0.1:9011p2p-peer-address = localhost:9022p2p-max-nodes-per-host = 1agent-name = "producer1-node"allowed-connection = anymax-clients = 20connection-cleanup-period = 30network-version-match = 1sync-fetch-span = 1000max-implicit-request = 1500enable-stale-production = truepause-on-startup = falsemax-transaction-time = 10000max-irreversible-block-age = -1producer-name = producer1signature-provider = EOS83GKHM7NLhxmYEB4wiTR57mpVVzgnfnU4SiGEsQjiPuZB9Cu2r=KEY:5JgGMrqeaczH6UoqWGZL2EPZ8fsJEnuifGnDSK7hpcKGXRsMvQJkeosd-provider-timeout = 5txn-reference-block-lag = 0wallet-dir = "."unlock-timeout = 6000filter-on = *abi-serializer-max-time-ms=45plugin = eosio::producer_pluginplugin = eosio::wallet_api_pluginplugin = eosio::wallet_pluginplugin = eosio::chain_api_pluginplugin = eosio::http_pluginplugin = eosio::history_api_pluginproducer2:
bnet-endpoint = 0.0.0.0:4321bnet-no-trx = falseblocks-dir = "blocks"chain-state-db-size-mb = 1024reversible-blocks-db-size-mb = 340contracts-console = falsehttps-client-validate-peers = 1http-server-address = 127.0.0.1:8022access-control-allow-origin = *access-control-allow-credentials = falsep2p-listen-endpoint = 127.0.0.1:9022p2p-peer-address = localhost:9011p2p-max-nodes-per-host = 1agent-name = "producer2-node"allowed-connection = anymax-clients = 20connection-cleanup-period = 30network-version-match = 1sync-fetch-span = 1000max-implicit-request = 1500enable-stale-production = truepause-on-startup = falsemax-transaction-time = 10000max-irreversible-block-age = -1producer-name = producer2signature-provider = EOS81FEATW43yBVGYHqRRCXWBvRjwo8jCHZUSkALYtqbpKJfF3uKc=KEY:5Jwq3ve4jGG3uihCj3oLt7bB3NpmgN4WpLyrgvPua9vkJYJzpCpkeosd-provider-timeout = 5txn-reference-block-lag = 0wallet-dir = "."unlock-timeout = 6000filter-on = *abi-serializer-max-time-ms=45plugin = eosio::producer_pluginplugin = eosio::wallet_api_pluginplugin = eosio::wallet_pluginplugin = eosio::chain_api_pluginplugin = eosio::http_pluginplugin = eosio::history_api_plugin4.啟動“創世紀”節點
創世”節點是我們開始的第一個節點,它將產生區塊鏈網絡。所有其他節點都將從創世紀節點中派生出來。在創世紀節點上做以下操作:
(以后臺進程的方式啟動,避免關掉終端進程關閉)
5.創建錢包
創建一個錢包。在默認情況下,keosd會自動開始管理錢包。
$ cleos wallet create一定要保存錢包密碼,以便將來解鎖錢包。
在本教程中,無論哪個節點被訪問,相同的錢包都將被用于所有帳戶的所有關鍵管理。在分布式部署中,錢包管理應該是本地的活動。
6.創建重要的系統賬戶
有幾個系統帳戶是必需的。這些都是:
eosio.bpay
eosio.msig
eosio.names
eosio.ram
eosio.ramfee
eosio.saving
eosio.stake
eosio.token
eosio.vpay
重復以下步驟,為每個系統賬戶創建一個賬戶。在本教程中,我們將為帳戶所有者和活動鍵使用相同的密匙對,因此我們只需要在命令行上提供一次密鑰對值。對于大多數一般的帳戶,對于所有者和活動使用單獨的密鑰是一種很好的做法。該腳本對所有的eosio.* 賬戶都使用相同的密鑰。您可以為每個賬戶使用不同的密鑰。
創建各種系統賬戶:
cleos create account eosio eosio.bpay EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.msig EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.names EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.ram EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.ramfee EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.saving EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.stake EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.token EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.vpay EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR cleos create account eosio eosio.system EOS6WtUR4G5rRRGWrxSZdFd21iYYRgr3Hr7Pymcqg6dG5FVP12JcR7.安裝eosio.token智能合約
安裝eosio.token的合約。這個合約使您能夠創建、發行、交易和獲取代幣。
cleos set contract eosio.token ../../contracts/eosio.token8.創建系統貨幣,其最大值為10億個token。然后發行10億個代幣。用你的特定貨幣名稱替換SYS符號。
cleos push action eosio.token create '[ "eosio", "1000000000.0000 SYS" ]' -p eosio.token cleos push action eosio.token issue '[ "eosio", "1000000000.0000 SYS", "memo" ]' -p eosio9.安裝eosio.msig智能合約
msig合約支持和簡化定義和管理權限級別和執行多簽名操作。
cleos set contract eosio.msig ../../contracts/eosio.msig10.安裝eosio.system智能合約
該合約提供了幾乎所有基于代幣的操作行為的操作。在安裝系統合約之前,操作是獨立于賬戶的。一旦系統合約被啟用,操作現在就有了一個經濟元素。資源(cpu、網絡、內存)必須付費。同樣,新賬戶必須支付費用。
cleos set contract eosio ../../contracts/eosio.system11.從單一生產者轉變為多個生產者
使eosio.msig成為特權帳戶(最后一步執行eosio.system合約,否則會被覆蓋,eosio.system 必須用eosio來部署)
cleos push action eosio setpriv '["eosio.msig", 1]' -p eosio@active11.創建投票賬戶
創建出塊節點并分配代幣:
cleos system newaccount eosio --transfer producer1 EOS83GKHM7NLhxmYEB4wiTR57mpVVzgnfnU4SiGEsQjiPuZB9Cu2r --stake-net "100.0000 SYS" --stake-cpu "100000.0000 SYS" --buy-ram "100.0000 SYS" --buy-ram-kbytes "100.0000 SYS"cleos system newaccount eosio --transfer producer2 EOS81FEATW43yBVGYHqRRCXWBvRjwo8jCHZUSkALYtqbpKJfF3uKc --stake-net "100.0000 SYS" --stake-cpu "100000.0000 SYS" --buy-ram "100.0000 SYS" --buy-ram-kbytes "100.0000 SYS"創建非出塊節點并分配代幣:
cleos system newaccount eosio --transfer user1 EOS5SWHoG1mgy74uyXQTVuGnaT4gG4JfsCiWxQoY9veiQ4V2sQ753 --stake-net "37500000.0000 SYS" --stake-cpu "37500000.0000 SYS" --buy-ram "100.0000 SYS" --buy-ram-kbytes "100.0000 SYS" cleos system newaccount eosio --transfer user2 EOS5bBuPnSmxyU178D8fvYNxfUv8yGqf6UM81NeJBvtKASEusVPzD --stake-net "37500000.0000 SYS" --stake-cpu "37500000.0000 SYS" --buy-ram "100.0000 SYS" --buy-ram-kbytes "100.0000 SYS"12.登記為出塊節點
登記為生產節點:
cleos system regproducer producer1 EOS83GKHM7NLhxmYEB4wiTR57mpVVzgnfnU4SiGEsQjiPuZB9Cu2r https://producer1.com/EOS83GKHM7NLhxmYEB4wiTR57mpVVzgnfnU4SiGEsQjiPuZB9Cu2rcleos system regproducer producer2 EOS81FEATW43yBVGYHqRRCXWBvRjwo8jCHZUSkALYtqbpKJfF3uKc https://producer2.com/EOS81FEATW43yBVGYHqRRCXWBvRjwo8jCHZUSkALYtqbpKJfF3uKc為便于投票過程,列出可供選擇的生產者。
cleos system listproducers13.進行投票
只有15%的可用選票被投票后才開始出塊。
14.啟動生產者
在每個生產者的單獨窗口中,運行以下nodeos命令,調整命令行參數為每個生產者。
先清除一下緩存
啟動生產者
nodeos --config-dir ~/eosio_test/producer1 nodeos --config-dir ~/eosio_test/producer2看到開始出塊,整個過程完畢
總結
以上是生活随笔為你收集整理的【问链-Eos公开课】第5课 组建单机多节点EOS网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【问链-Eos公开课】第四课 EOS 的
- 下一篇: 区块链数字广告项目-【DadxChain