Как запустить собственный узел начальной загрузки? Я имею в виду, как заставить мой гет предоставлять информацию только о пирах, а не о блокчейне. А также как geth узнает, является ли узел загрузочным узлом или обычным узлом? Becz, не зная разницы, geth начнет запрашивать блок-цепочку на загрузочном узле.
Параметр командной строки bootnodes
позволяет нам добавлять узлы начальной загрузки, а addPeer
метод JavaScript позволяет нам добавлять обычные узлы. Итак, если я добавлю обычную ноду bootnodes
, не будет ли мой экземпляр geth запрашивать блокчейн у загрузочной ноды?
Исполняемый файл для запуска загрузочного узла — bootnode
. В Ubuntu это установлено вместе /usr/bin/geth
с /usr/bin/bootnode
.
Вам нужно будет сгенерировать ключ для запуска вашего загрузочного узла:
user@Kumquat:/tmp$ bootnode -genkey nodekeyfile
user@Kumquat:/tmp$ cat nodekeyfile
3bed8e0fa771475049cddac0fcc20a6cf1005e271e2b12ef339f213218b2dbdb
user@Kumquat:/tmp$ bootnode -nodekey nodekeyfile
I1001 23:17:42.874776 p2p/discover/udp.go:217] Listening, enode://d3b75b24a4fd718b1358d28ba576b2e98f73a7465326c4504f21cc0d124466a91919de18fb72a634f9108f0eedd5ef943aea5c250b41c974c4a7fb7c159b9968@[::]:30301
В отдельном окне я запустил netstat
команду для просмотра прослушиваемого порта UDP 30301 bootnode
:
user@Kumquat:/tmp$ sudo netstat -anp | grep boot
[sudo] password for user:
udp6 0 0 :::30301 :::* 8317/bootnode
Эта bootnode
программа служит только в качестве узла начальной загрузки и не обеспечивает передачу данных блокчейна.
Теперь вы должны иметь возможность использовать enode://d3b75b24a4fd718b1358d28ba576b2e98f73a7465326c4504f21cc0d124466a91919de18fb72a634f9108f0eedd5ef943aea5c250b41c974c4a7fb7c159b9968@[::]:30301
в качестве geth --bootnodes
значения параметра, где вы заменяете [::]
IP-адрес вашего компьютера с загрузочным узлом.
Если у вас есть проблемы с работой однорангового обнаружения, добавьте --verbosity 6
перед console
параметром geth
. Вы должны увидеть связь с загрузочным узлом в действии.
Вы также можете добавить в команду параметр verbosity bootnode
:
user@Kumquat:/tmp$ bootnode -nodekey nodekeyfile -verbosity 9
I1001 23:17:42.874776 p2p/discover/udp.go:217] Listening, enode://d3b75b24a4fd718b1358d28ba576b2e98f73a7465326c4504f21cc0d124466a91919de18fb72a634f9108f0eedd5ef943aea5c250b41c974c4a7fb7c159b9968@[::]:30301
I1001 23:39:12.546003 p2p/discover/udp.go:453] >>> 192.168.1.14:54991 discover.pong
I1001 23:39:12.546145 p2p/discover/udp.go:521] <<< 192.168.1.14:54991 *discover.ping: ok
I1001 23:39:12.546226 p2p/discover/database.go:183] failed to retrieve node b68ed408e685e6dc75ea457b65f945fa2c6f2171c8bfaf26e32d6362c3ebe9ed3ef3aeb682991e3a01250f93f2a68ea8ca1a98676e669cc007ed227c35d7c3f1: leveldb: not found
I1001 23:39:12.546337 p2p/discover/table.go:473] Bonding b68ed408e685e6dc: known=false, fails=0 age=409813h39m12.54632801s
I1001 23:39:12.547012 p2p/discover/udp.go:453] >>> 192.168.1.14:54991 discover.ping
I1001 23:39:12.549582 p2p/discover/udp.go:521] <<< 192.168.1.14:54991 *discover.pong: ok
I1001 23:39:12.556974 p2p/discover/udp.go:453] >>> 192.168.1.14:54991 discover.neighbors
I1001 23:39:12.557059 p2p/discover/udp.go:521] <<< 192.168.1.14:54991 *discover.findnode: ok
А последнюю документацию по протоколу обнаружения P2P можно найти по адресу RLPx: Cryptographic Network & Transport Protocol .
Страж