как подключиться к geth с двух локальных машин ethereum

Я новичок в Ethereum и попробовал все, чтобы подключить testnet с двух локальных узлов. Я попытался запустить две консоли в одиночной машине admin.addPeers (nodeUrl) и смог подключиться. когда я попытался с тем же для разных машин, используя тот же идентификатор сети, он показывает равное число равным нулю. пожалуйста, помогите решить это. заранее спасибо

4 голоса | спросил Priyanka D L 12 J000000Tuesday16 2016, 12:52:52

5 ответов


5

Поскольку вы используете два узла на двух разных машинах, вам нужно указать IP-адрес узла при подключении через addPeer(enodeURI) .

Подробное описание:

  • Вам нужно иметь тот же файл генезиса на каждом компьютере, на котором вы хотите запустить узел.

  • Все узлы должны иметь один и тот же --networkid

  • --rpcport и --port должны быть разными для каждого экземпляра geth.

  • Если вы работаете на одной машине, каждый экземпляр geth должен иметь разные --datadir.

Запуск экземпляров geth:

Узел 1:

geth --genesis path/to/genesis.json --datadir path/to/directory --networkid 1234 --port 30301 --rpcport 8101 console

Узел 2:

geth --genesis path/to/genesis.json --datadir path/to/directory --networkid 1234 --port 30302 --rpcport 8102 console

Вы можете добавить команды типа --maxpeers и --nodiscover, если хотите.

После запуска этих экземпляров проверьте аналогичное сообщение на консоли:

I0829 13:30:07.347738   3987 backend.go:303] Successfully wrote genesis block. New genesis hash = 82b6159155c00fb0b420046012a02257a176ad5dcfce4be4a15da39c166518e2

Если это так, вы успешно запустили узлы с помощью private blockchain. Если вы видите сообщение, подобное Warning: Wrote default ethereum genesis block, то что-то не так.

Соединяющие узлы:

Узел 1: (на консоли JavaScript)

admin.nodeInfo.enode

Выход будет выглядеть примерно так:

"enode://da97197a3335806658f17fdc167e943bd040fdf59ed882389d5f87b29f31362b1[email protected][::]:30301"

Обратите внимание, что номер порта в конце URI равен 30301.

Узел 2:

Выполните ту же команду на узле 2, и вы получите аналогичный результат с 30302 в конце:

"enode://47e61e304d802fb98403fbf877e1018d13044630a16eb9c15c1d0fb139d465e02[email protected][::]:30302"

Чтобы подключить эти узлы, узнайте IP-адрес узла 2. Поскольку это локальная сеть, каждая машина должна иметь уникальный частный IP-адрес. При использовании функции addPeer(enodeURI), [::] в enodeURI следует заменить IP-адрес машины, на которой работает узел. Теперь, на узле 1:

admin.addPeer("enode://47e61e304d802fb98403fbf877e1018d13044630a16eb9c15c1d0fb139d465e02[email protected]10.0.0.123:30302") 

После выполнения этой команды true , net.peerCount должен вернуть 1 и admin.peers должен возвращать детали узла, который добавлен /подключен. Перед подключением убедитесь, что net.listening возвращает true на обоих узлах.

Источники:

Настройка частной сети или локальной сети кластера

Подключение к сети

Как создать частную цепочку Ethereum

ответил galahad 12 J000000Tuesday16 2016, 17:20:02
2

Ответ Roland хорош, но вы должны помнить, что geth (и все ethereum пока) привязаны к тем же портам по умолчанию, что означает, что вы должны изменить их по умолчанию при запуске нескольких экземпляров на одном и том же хосте (т.е. 127.0 .0.1).

Довольно просто увеличить порты по умолчанию для каждого экземпляра, а затем создать сценарий (bash) для их самостоятельного запуска (в качестве фоновых процессов).

Если вам нужна дополнительная независимость между экземплярами geth, подумайте о создании отдельного каталога данных для каждого (измените аргумент командной строки - datadir из другого ответа):

--datadir "~/privethnet/geth_client"
--datadir "~/privethnet/geth_bootstrap"
ответил Sebi 12 J000000Tuesday16 2016, 15:11:03
1

Пример настройки для частной сети

Создайте файл genesis.json со следующим содержимым:

{
    "nonce": "0xdeadbeefdeadbeef",
    "timestamp": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x0",
    "gasLimit": "0x8000000",
    "difficulty": "0x400",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x3333333333333333333333333333333333333333",
    "alloc": {
    }
}

Выполните следующие действия: geth --datadir ./ init genesis.json

geth --identity "nodeA" --rpc --rpcport "8000" --rpccorsdomain "*" --datadir "~/privethnet/" --port "30303" --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpcapi "db,eth,net,web3" --autodag --networkid 1900 --nat "any" console


geth --identity "nodeB" --rpc --rpcport "8000" --rpccorsdomain "*" --datadir "~/privethnet/" --port "30303" --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpcapi "db,eth,net,web3" --autodag --networkid 1900 --nat "any" console

Добавьте партнера, используя URL-адрес партнера:
Найти peernode из журнала запуска geth 0712 13:34:00.865021 p2p/discover/udp.go:217] Listening, enode:...

admin.addPeer(nodeURL)

Проверьте, был ли добавлен одноранговый узел: admin.peers

Примеры nodeURLS: Узел A nodeURL:

enode://da97197a3335806658f17fdc167e943bd040fdf59ed882389d5f87b29f31362b1[email protected]151.62.56.89:30303

Узел B nodeURL:

enode://9d4687d7cfa8c2215d2f2b4278a3e0ab4bde22ab838dd203b234866d69405b4b7[email protected]151.62.56.89:30303
ответил Roland Kofler 12 J000000Tuesday16 2016, 14:39:19
1

Пользователь Github по имени FleetingCloud собрал хороший командный скрипт пользовательского интерфейса для настройки Ethereum в частной сети. Я очень рекомендую.

https://libraries.io/github/FleetingClouds/InitializeEthereumPrivateNetwork

Edit:

После клонирования репо просто запустите скрипт initializeEthereumPrivateNetwork.sh. Затем он спросит вас, что вы хотите назвать своей сетью, каталогами geth на корневом и клиентском узлах и т. Д.

ответил nick carraway 26 AM000000120000003231 2016, 00:53:32
0

- генезис уже недействителен. Вам нужно использовать init. Вот мой код, который я заменил на шаг 1:

geth --identity "MyTestNode" --nodiscover --networkid 1999 --port 30301 -- rpcport 8101 --datadir /home/appo/geth/  init /home/appo/.json console

Вы можете установить любые флаги и порты, которые вы хотите, это всего лишь код, который я запускал на своей машине.

ответил zakcole 8 MaramThu, 08 Mar 2018 05:38:07 +03002018-03-08T05:38:07+03:0005 2018, 05:38:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132