Может ли Ethereum также использоваться для создания частных сетей блокчейнов? - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу построить частную сеть блокчейнов и где-то читал, что Hyperledger лучше всего подходит для частных сетей блокчейнов.Но я уже знаю о Солидности и поэтому хочу использовать Эфириум.Так может кто-нибудь ответить мне, могу ли я построить полноценную частную сеть блокчейнов на Ehtereum или мне нужно перейти на Hyperledger?Если для этого есть какие-то шаги, пожалуйста, сообщите об этом тоже.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Ты уверен, что можешь.Если вы ищете простой и быстрый способ начальной загрузки частной сети Ethereum, я бы посоветовал взглянуть на облачное шаблонное решение, такое как консорциум Microsoft Azure Ethereum Proof of Authority .

.
0 голосов
/ 18 декабря 2018

Да, вы можете построить частную сеть 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. Также вам может понадобиться настроить брандмауэр, чтобы разрешить двунаправленные транзакционные потоки.

...