Да, вы можете построить частную сеть Ethereum.Ниже я показал шаги для частной сети 2 Node ethereum.
Вот следующие шаги
Шаг 0:
Установите и настройте geth (т. Е. Убедитесь, что он добавлен в переменную среды пути)
Шаг 1:
Вам необходимо создать файл генеза, который будет содержать информацию о сложности, ограничении газа и т. Д. Пример файла генеза (genesis.json):ниже приведены
{
"config": {
"chainId": 2018,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x400",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
Шаг 2:
Настройте свой узел с помощью следующей команды
geth --datadir data1 (or ./path/to/data/directory give the location where you want to store the data) init genesis.json
Шаг 3:
Теперь, когда мы настроили узел с Шаг 2 , давайте запустим узел с помощью следующей команды
geth --datadir data1 (path to the data directory you have given in **Step 2**) --nodiscover --networkid 123456 (give something that is unique and not either of 0,1, 2 or 3 as these are already predefined networks in ethereum) console
Очень важно, чтобы у вас был флаг -nodiscover, чтобы узел не был открыт для общего доступа.
** Шаг 4: **
Если вы хотите узнать подробности вашего узла (к настоящему моменту с помощью команды Шаг 3 вы должны были войти в оболочку узла ethereum) дайте эту команду, и вы получите все детали узла, который вы только что настроили.
$ admin.nodeInfo
Шаг 5:
$ personal.newAccount () // Это создаст новую учетную запись ethereum, но по умолчанию будет заблокировано.Убедитесь, что вы указали пароль, необходимый для отправки транзакций с этого аккаунта.
Давайте настроим еще один узел (Узел 2) и подключимся к Узлу 1.
** Шаг 6: **
Примечание.в нашем случае будем использовать одну и ту же машину как для узла 1, так и для узла 2.
Давайте запустим geth в узле 2 с помощью следующей команды
$ geth --datadir data2 init genesis.json
Шаг 7:
Давайте запустим узел, который мы настроили в Шаг 6 , с помощью следующей команды
$ geth --datadir blkchain2 --nodiscover --networkid 1234 --port 60606 console
Примечание: Мы должны указатьпорт здесь как порт по умолчанию уже занят узлом 1.
Шаг 8:
С Шаг 7 Вы должны быть вконсоль узла эфириума.Выполните следующую команду, чтобы узнать подробности узла 2, который только что начал работать.
> admin.nodeInfo
Шаг 9:
Давайте создадим новую учетную запись в узле 2 с помощью следующей команды
> personal.newAccount()
Шаг 10:
Теперь соединим оба узла.
Когда мы запустили команду admin.nodeInfo как в node1, так и в node2 ранее, мы увидим ключ с именем enode следующего формата.
enode://ENODE@IP:PORT
Если вы хотите узнать, как создается enode, проверьте этот удивительный ответ от benjamin
Скопируйте оба этих адреса enode и выполните следующую команду на обоих узлах 1и узел 2 консоли соответственно.
> admin.addPeer("enode of node1"); // run in console of node 1
> admin.addPeer("enode of node2"); // run in console of node 2
Теперь оба узла являются частью частной сети, и вы можете взаимодействовать друг с другом.
Шаг 11:
В качестве проверки давайте изучим узел 1 и посмотрим, как он отражается на узле 2.
Перейдите к консоли узла 1и выполните следующую команду
> miner.start(1)
Приведенная выше команда даст много подробностей, в одном важном поле, которое вы должны наблюдать, это высота блока (или номер блока).
Теперь перейдите к узлу 2 и выполните следующую команду, чтобы увидеть, что добытый блок теперь отображается в узле 2.
eth.getBlockNumber
Теперь вы должны увидеть, что блок, который был добыт в Узле 1, успешно распространяется на Узел 2.
Итак, на этом мы заканчиваем.
Любые вопросы, не стесняйтесь задавать мне.
PS 1: В разных версиях web3, которые вы используете, некоторые команды могут отличаться, но на высоком уровне вещи должны оставаться в основном одинаковыми.
PS 2: Если вы хотите подключить узел 1, работающий на машине 1, и узел 2, работающий на машине 2, вам просто нужно запустить его.Но, возможно, вам нужно правильно проверить код узла 1. Также вам может понадобиться настроить брандмауэр, чтобы разрешить двунаправленные транзакционные потоки.