Моделирование частной сети биткойнов со случайным обнаружением одноранговых узлов

Я ищу способ смоделировать биткойн-сеть с 1000 узлами в моей частной сети LAN/Wifi.

Я прочитал руководство разработчика: https://bitcoin.org/en/developer-examples#regtest-mode, в котором упоминается режим regtest, который работает в основном для отдельных узлов или определенных узлов, а не для случайных узлов, таких как реальная сеть.

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

Проще говоря, я хочу смоделировать полную биткойн-сеть в моей сети LAN/Wifi.


person bawejakunal    schedule 22.10.2015    source источник
comment
Вы можете смоделировать любую сеть, которую хотите использовать, используя режим regtest. Какой еще аспект сети вы ищете?   -  person everconfusedGuy    schedule 22.10.2015
comment
@everconfusedGuy Я хочу точного моделирования сети testnet или main в частной сети. Это означает, что я хочу запустить новую цепочку блоков для узлов в моей локальной сети, они должны подключаться только внутри себя с помощью метода обнаружения одноранговых узлов, который точно такой же, как и в реальной сети биткойнов. В первый раз, когда узел присоединяется к этой пользовательской сети, он должен подключаться к пользовательским жестко заданным узлам (поскольку я отключил обнаружение DNS в своем коде), отправляя сообщения version и verack, а затем обмениваясь сообщениями getaddr и addr для обнаружения других узлов в сети.   -  person bawejakunal    schedule 22.10.2015
comment
Несмотря на то, что этот вопрос, вероятно, следует перенести на сайт биткойнов, он интересен. Вы когда-нибудь догадывались об этом? Согласно en.bitcoin.it/wiki/, адреса предоставляются через командную строку ( addnode) не объявляются в ответ на запрос getaddr. Кажется, курица против яйца: если их не рекламировать, то как будет расти сеть? Или это просто не часть режима regtest?   -  person Michael    schedule 01.02.2018
comment
Вы нашли выход, чтобы сформировать эту сеть? Я использую контейнеры докеров в режиме regtest, но мне нужно найти способ автоматического обнаружения и подключения к некоторым одноранговым узлам.   -  person thenakulchawla    schedule 24.03.2018


Ответы (1)


Хитрость заключается в том, чтобы поместить их в песочницу, если вы пытаетесь подключиться к локальной сети.

  • укажите уникальный порт (при прослушивании) и rpcport (при использовании rpc) для каждого узла
  • указать уникальный каталог данных для каждого узла

Используйте mkdir для создания каталогов в первый раз

mkdir $HOME/regtest/A/
mkdir $HOME/regtest/B/
mkdir $HOME/regtest/C/

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

#!/bin/bash
bitcoind -server -listen -port=17590 -rpcuser=<user> -rpcpassword=<pass> -rpcport=16590 -datadir=$HOME/regtest/A/ -addnode=localhost:17591 -regtest -pid=$HOME/regtest/A/ -daemon -debug
bitcoind -server -listen -port=17591 -rpcuser=<user> -rpcpassword=<pass> -rpcport=16591 -datadir=$HOME/regtest/B/ -addnode=localhost:17592 -regtest -pid=$HOME/regtest/B/ -daemon -debug
bitcoind -server -listen -port=17592 -rpcuser=<user> -rpcpassword=<pass> -rpcport=16592 -datadir=$HOME/regtest/C/ -addnode=localhost:17590 -regtest -pid=$HOME/regtest/A/ -daemon -debug

Поскольку вы хотите исследовать поиск сверстников, вы можете посмотреть на разницу между попыткой -connect вместо -addnode

person skang404    schedule 09.04.2018