Как настроить частную сеть ethereum?

Я бы хотел создать локальную (закрытую) блок-цепочку, которая не подключена к более широкому Интернету, чтобы я мог развернуть некоторые тестовые контракты. Как мне это сделать?

51 голос | спросил Ethan Wilding 21 Jam1000000amThu, 21 Jan 2016 00:35:42 +030016 2016, 00:35:42

13 ответов


68

Создание частной тестовой сети для Ethereum на самом деле довольно просто. В последних версиях geth вам даже не нужно создавать свой собственный блок генезиса или любые другие сложные шаги (многие из онлайн-руководств устарели).

Сначала убедитесь, что у вас установлен geth. В OSX вы сделаете это, предварительно установив Homebrew , а затем запустив:

$ brew tap ethereum/ethereum
$ brew install ethereum

Для других платформ ознакомьтесь с инструкциями по установке geth .

Вы можете проверить, что он работает, проверяя версию:

$ geth version
Geth
Version: 1.3.6
Git Commit: 9e323d65b20c32ab1db40e8dde7172826e0e9c45
Protocol Versions: [63 62 61]
Network Id: 1
Go Version: go1.6
OS: darwin
GOPATH=/Users/adrian/go
GOROOT=/usr/local/Cellar/go/1.6/libexec

Теперь вы можете запустить частный блок-код, запустив geth с помощью опции --dev:

$ get --dev --ipcpath ~/Library/Ethereum/geth.ipc

Это облегчает процесс разработки ( источник ):

  • Устанавливает --vmdebug (вывод отладки виртуальной машины)
  • Устанавливает --maxpeers 0 (отключена сеть)
  • Устанавливает --gasprice 0 (сделайте ваши контракты доступными)
  • Устанавливает --port 0 (Слушайте на случайном порту)
  • Устанавливает --shh (включен протокол Whisper)
  • Устанавливает --datadir во временный каталог на вашем жестком диске
  • Включает режим «dev», который заставляет geth автоматически генерировать новый блок генезиса при первом запуске.
  • Устанавливает --ipcpath на стандартный путь IPC, так что другие команды, например. geth attach, работает без дополнительных параметров

Теперь вы, возможно, уже можете подключиться к своей частной сети, либо запуская geth --dev attach в другом окне терминала, либо запустив Mist Wallet . Но прежде чем вы сможете что-либо сделать, вы, вероятно, захотите создать учетную запись, и мои несколько монет, чтобы вы могли их потратить.

Оставьте исходное окно терминала, а в другом окне введите:

$ geth --dev attach

Это даст вам консоль JavaScript. Для создания первой учетной записи вы можете запустить следующие команды:

> personal.newAccount('choose-a-password')
"0x48517108e6368f2b4da71816f9929e89c3e19ae5"

Теперь вы хотите раздобыть несколько монет:

> miner.start()
true

В первом окне вы увидите, что стартовые сообщения начинают прокручиваться:

I0401 12:41:03.318046   83003 worker.go:348] 
ответил Adrian Macneil 1 PMpFri, 01 Apr 2016 22:47:43 +030047Friday 2016, 22:47:43
15

Некоторые из основных шагов включают указание networkId и создание файла генезиса (вы можете дать своей учетной записи много эфира!).

Вместо того, чтобы повторять то, что было написано, есть руководства здесь и здесь .

ответил eth 21 Jam1000000amThu, 21 Jan 2016 01:15:43 +030016 2016, 01:15:43
13

Если вы просто проверяете контракты, я бы рекомендовал использовать легкий узел Ethereum, например https: //github. ком /trufflesuite /ганаш-кли . Таким образом, настройка вашей сети так же проста, как и запуск:

npm install -g ganache-cli

Как только он будет установлен, вы можете запустить тестовую сеть с помощью:

ganache-cli

Этот симулятор узла Ethereum будет иметь несколько учетных записей, которые заполняются буфером ETH. Мало того, что симулятор не просто настраивается, но время загрузки и транзакции намного быстрее. Тем не менее, это не полностью признанный узел Ethereum, поэтому он хорош только для разработки на ранней стадии.

Я только что написал сообщение в блоге под названием Введение в тестовые сети Ethereum , которое может показаться вам полезным. Вы можете найти его здесь: https://karl.tech/intro-guide-to -ethereum-testnets /

ответил Karl Floersch 3 AMpSun, 03 Apr 2016 04:47:50 +030047Sunday 2016, 04:47:50
6

Использование сценариев ниже (из geth - -dev предоставляет доступные чистые учетные записи. Безопасно? ) будет гарантировать, что ваше хранилище --dev будет отделено от хранилища ключей Mainnet, что уменьшит риск разоблачения ваших паролей учетной записи Mainnet.

Вот мой сценарий запуска Dev:

#!/bin/sh

geth --datadir ~/EtherDev/data --dev --nodiscover    \
  --mine --minerthreads 1 --maxpeers 0 --verbosity 3 \
  --unlock 0 --password ~/EtherDev/etc/passwordfile  \
  --rpc console

И вот сценарий Dev, который я использую для создания моих паролей:

#!/bin/sh

mkdir ~/EtherDev/data
geth --datadir ~/EtherDev/data           \
  --password ~/EtherDev/etc/passwordfile \
  account new

И я просто использую простой пароль в ~/EtherDev/etc/passwordfile.

ответил The Officious BokkyPooBah 26 Mayam16 2016, 01:10:19
3

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

Примечание. Я предполагаю, что вы установили geth и перешли на свою машину.

$ mkdir pnet
$ geth --datadir pnet/ account new 

# This command will prompt you to enter password, type the password and remember it.
# Once you enter the password, account will be created and account address(hash) will appear, don't miss saving it.
# Sample output - Address: {93044af5bc90b1dda0668ae3e171ce746c320d06}
# Note, multiple accounts can be created
# Note, you must append "0x" to the address in the allocate section i.e your address becomes {0x93044af5bc90b1dda0668ae3e171ce746c320d06}
$ vim genesis.json 

# Sample Gensis file given below. In alloc attribute, 
# Mention created account address and assign some balance as shown in sample file.
# {
#    "config": {
#        "chainId": 15,
#        "homesteadBlock": 0,
#        "eip155Block": 0,
#        "eip158Block": 0
#    },
#     "gasLimit": "0x8000000",
#     "difficulty": "0x400",
#     "alloc": {"0x93044af5bc90b1dda0668ae3e171ce746c320d06": 
#                  {"balance":"200000000000000000000000"}
#             }
# }

# run below command to instantiate genesis block
$ geth --datadir pnet init genesis.json

# run following to start geth private node
$ geth --rpc --rpcport "8545" --rpcaddr "127.0.0.1" --rpccorsdomain "*" --datadir pnet/ --port "30303" --rpcapi "personal,db,eth,net,web3" --mine  
# rpcaddr in above command will be the IP of the instance where you plan to run your geth node

# once geth node starts copy the geth.ipc path to attach a geth console in another terminal using below command
$ geth attach ipc://path_to_ipc_file/geth.ipc

# After opening geth console, try unlocking the first account created above, using below command
# personal.unlockAccount("hash of the account in quotes or eth.coinbase", "password in quotes", 0)

$ personal.unlockAccount('93044af5bc90b1dda0668ae3e171ce746c320d06', 'password', 0)

Теперь вы можете начать использовать закрытый узел geth.

ответил Sanchit 18 Maypm17 2017, 20:44:52
2

В качестве дополнительной информации к предыдущим ответам:

, если ваша цель - написать и проверить контракты /Dapps, вы можете использовать блок-файлы , это поможет вам настроить легко локальный частный блок-цепочка, вы также можете посмотреть testRpc .

ответил Badr Bellaj 23 +03002016-10-23T19:17:18+03:00312016bEurope/MoscowSun, 23 Oct 2016 19:17:18 +0300 2016, 19:17:18
2

Этот парень потрясающий, пройдите все части, начиная с 1, заканчивая 5:

https : //hackernoon.com/heres-how-i-built-a-private-blockchain-network-and-you-can-too-62ca7db556c0

EDIT:

Просто, чтобы суммировать, что есть в ссылке (используя Mac):

Сначала вам нужно загрузить geth , платформу go etherum.

  1. Создайте папку и создайте файл генезиса внутри этой папки, назовите его customGenesis.json, в котором содержится информация о вашей цепочке. Сделайте его похожим на следующее: просто измените идентификатор цепи:

    {
     "config": {
        "chainId": 2017,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },  
    "alloc"      : {},
    "coinbase"   : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x400",
    "extraData"  : "0x",
    "gasLimit"   : "0x8000000",
    "nonce"      : "0x0000000000000042",
    "mixhash"    : "0x0000000000000000000000000000000000012345678765545432233567778987",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp"  : "0x00"
    } 
    
  2. Создайте еще одну папку, в которой будут храниться сведения о узле, (folder_of_your_first_node)

  3. Откройте терминал, чтобы создать первый узел, используя файл генерации блока:

    geth --datadir (folder_of_your_first_node) init (folder_of_your_genesis_file)/customGenesis.json
    
  4. Запустите сеть, используя первый узел блокчин, для networkid выберите любой уникальный номер, сделайте его большим:

    geth --datadir (folder_of_your_first_node) --networkid 77665533
    
  5. Теперь блок-цепочка готова и запущена, запустите окно new Terminal для доступа к вашему узлу:

    geth attach (folder_of_your_first_node)/geth.ipc
    
  6. Теперь вы находитесь внутри узла блок-цепи, создайте учетную запись:

    personal.newAccount()
    Passphrase:(select a password)
    Repeat passphrase: (repeat the password)
    (you should see the address of your account here)
    
  7. Вы можете начать добычу для эфиров, которые вам нужно будет развернуть контракт:

    miner.start(1)
    
  8. Подождите некоторое время, минуту, затем прекратите добычу:

    miner.stop()
    

Конец статьи

Теперь я избегал того, что было упомянуто в статье, чтобы развернуть контракты, где вы можете загрузить по умолчанию Mist и запустите его с помощью вашей частной сети, это упростит развертывание ваших контрактов (используя третий новый терминал :

open -a /Applications/Mist.app --args --rpc  (folder_of_your_first_node)/geth.ipc

Вы должны увидеть свой первый аккаунт, полный эфиров :). Наслаждайтесь!

Еще одна вещь, о которой стоит упомянуть о ней, после развертывания вашего первого контракта с использованием Mist, вам нужно вернуться к своему второму терминалу (где вы находитесь внутри узла) и снова начать добычу, иначе ваша транзакция развертывания контактов не будет обрабатываются:

miner.start(1)

Проверьте Mist и убедитесь, что транзакция в нижней части экрана уже обработана, затем вы можете вернуться и остановить работу:

miner.stop()
ответил Shadi 11 MonEurope/Moscow2017-12-11T10:52:10+03:00Europe/Moscow12bEurope/MoscowMon, 11 Dec 2017 10:52:10 +0300 2017, 10:52:10
1

Я следил за этой документацией и работал в частной цепочке за считанные минуты. http://www.ethdocs.org/en/latest/network /test-networks.html # id3

ответил Lismore 22 32017vEurope/Moscow11bEurope/MoscowWed, 22 Nov 2017 18:13:48 +0300 2017, 18:13:48
1

Просто обновить с помощью новых инструментов эту тему. Существует хороший инструмент, помогающий создавать частные тестовые тесты для тестирования! uppeth: https://blog.ethereum.org /2017/04/14 /гет-1-6-puppeth-мастер /

  

Geth 1.6 отправляет новый инструмент под названием puppeth, целью которого является решить эту конкретную точку боли. Puppeth - это мастер CLI, который помогает создавать новую сеть Ethereum вплоть до генезиса, загрузочных устройств, подписчиков, эстата, сборщика, панели управления и т. Д., Без проблем, которые обычно требуется для настройки всех этих сервисов один за другим.

Здесь вы получаете живое демо во время Devcon3: https: //www.youtube.com/watch?v=T5RcjYPTG9g&list=PLaM7G4Llrb7xnKb_SeaKZ27opvaIjlBv5&index=1

ответил Luiz Soares 18 MonEurope/Moscow2017-12-18T16:33:06+03:00Europe/Moscow12bEurope/MoscowMon, 18 Dec 2017 16:33:06 +0300 2017, 16:33:06
0

Я только что написал статью, в которой рассказывается о том, как создать частную цепочку Ethereum с использованием geth и go-ethereum. Дайте мне знать, если у вас есть вопросы.

http://mlgblockchain.com/ethereum-private-network.html

ответил Michael Gord 3 Jam1000000amTue, 03 Jan 2017 10:55:05 +030017 2017, 10:55:05
0

Создайте папку и создайте файл генезиса внутри этой папки, назовите его genesis.json

{
    "nonce"     : "0x0000000000000055",
    "mixHash"   : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x20000",
    "gasLimit"  : "0x800000",
    "timestamp" : "0x0",
    "extraData" : "",
    "coinbase"  : "0x0000000000000000000000000000000000000000",
    "alloc"     : {},
    "config"    : {
        "chainId": 100,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
}

, то genesis.json init commend run и genesis inti commend:

geth --datadir "D:\bolckchain\chaindata" init "c\genesis.json"

D:\bolckchain\chaindata объединяет все данные в этом каталоге и c\genesis.json меняет этот файл генерации каталога.

Затем Private Network создаст коммандовый прогон:

geth --networkid 13 --port 30303 --datadir "D:\bolckchain\chaindata" console

Затем это commend run и private network create: эта проверка сети:

$ admin 

, затем networkid = 13.

Этот порт 30303 порт изменяет пример: 60606 этот порт использует

Спасибо, попробуй, и создайте личную сеть, затем запустите туман или прошивку в эфирном мире.

спасибо

ответил ALOMGIR HOSSEN 10 FebruaryEurope/MoscowbSat, 10 Feb 2018 19:56:49 +0300000000pmSat, 10 Feb 2018 19:56:49 +030018 2018, 19:56:49
0

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

https://medium.com/@ethervolution/setup-your-own-private-proof-of-authority-ethereum-network-with-geth-9a0a3750cda8

, в двух словах вам понадобится как минимум 2 узла для консенсусного двигателя PoA clique

создать рабочее пространство

$ mkdir devnet
$ cd devnet 
devnet$ mkdir node1 node2

создать 1 учетную запись на узел

devnet$ geth --datadir node1/ account new
devnet$ geth --datadir node2/ account new

создать файл генезиса с щенком

$ puppeth

инициализировать ваши узлы

devnet$ geth --datadir node1/ init genesis.json
devnet$ geth --datadir node2/ init genesis.json

создать загрузочный файл

devnet$ bootnode -genkey boot.key

запустите свой bootnode

devnet$ bootnode -nodekey boot.key -verbosity 9 -addr :30310

start node 1:

devnet$ geth --datadir node1/ --syncmode 'full' --port 30311 --rpc --rpcaddr 'localhost' --rpcport 8501 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9[email protected]127.0.0.1:30310' --networkid 1515 --gasprice '1' -unlock '0x87366ef81db496edd0ea2055ca605e8686eec1e6' --password node1/password.txt --mine

запустить узел 2:

geth --datadir node2/ --syncmode 'full' --port 30312 --rpc --rpcaddr 'localhost' --rpcport 8502 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9[email protected]127.0.0.1:30310' --networkid 1515 --gasprice '0' --unlock '0x08a58f09194e403d02a1928a7bf78646cfc260b0' --password node2/password.txt --mine

откройте консоль javascript для узла 1:

devnet$ geth attach node1/geth.ipc

подключить Mist к узлу 1:

devnet$ mist --rpc node1/geth.ipc

используйте библиотеки python или javascript web3, чтобы сделать вызовы JSON-RPC на ваш блок-цепочку.

Надеюсь, это поможет. Наслаждайтесь:)

ответил salanfe 12 FebruaryEurope/MoscowbMon, 12 Feb 2018 12:18:33 +0300000000pmMon, 12 Feb 2018 12:18:33 +030018 2018, 12:18:33
0

Вы можете использовать четность для сети разработки

Установить четность

bash <(curl https://get.parity.io -kL)

Запустите свою частную эфирную сеть

parity --chain dev

Просмотр на localhost: 8180. Там вы можете начать разработку умных контрактов.

Для дальнейшей настройки сети

Вы можете посмотреть wiki , если вы хотите дополнительно добавить любые настройки в сеть.

ответил Ayushya 14 MarpmWed, 14 Mar 2018 12:41:32 +03002018-03-14T12:41:32+03:0012 2018, 12:41:32

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

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

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