Как настроить частную сеть ethereum?
Я бы хотел создать локальную (закрытую) блок-цепочку, которая не подключена к более широкому Интернету, чтобы я мог развернуть некоторые тестовые контракты. Как мне это сделать?
13 ответов
Создание частной тестовой сети для 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]
Если вы просто проверяете контракты, я бы рекомендовал использовать легкий узел Ethereum, например https: //github. ком /trufflesuite /ганаш-кли . Таким образом, настройка вашей сети так же проста, как и запуск:
npm install -g ganache-cli
Как только он будет установлен, вы можете запустить тестовую сеть с помощью:
ganache-cli
Этот симулятор узла Ethereum будет иметь несколько учетных записей, которые заполняются буфером ETH. Мало того, что симулятор не просто настраивается, но время загрузки и транзакции намного быстрее. Тем не менее, это не полностью признанный узел Ethereum, поэтому он хорош только для разработки на ранней стадии.
Я только что написал сообщение в блоге под названием Введение в тестовые сети Ethereum , которое может показаться вам полезным. Вы можете найти его здесь: https://karl.tech/intro-guide-to -ethereum-testnets /
Использование сценариев ниже (из 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
.
У меня возникли некоторые проблемы, в то время как я настраивал частную сеть, используя 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.
В качестве дополнительной информации к предыдущим ответам:
, если ваша цель - написать и проверить контракты /Dapps, вы можете использовать блок-файлы , это поможет вам настроить легко локальный частный блок-цепочка, вы также можете посмотреть testRpc .
Этот парень потрясающий, пройдите все части, начиная с 1, заканчивая 5:
https : //hackernoon.com/heres-how-i-built-a-private-blockchain-network-and-you-can-too-62ca7db556c0
EDIT:
Просто, чтобы суммировать, что есть в ссылке (используя Mac):
Сначала вам нужно загрузить geth , платформу go etherum.
-
Создайте папку и создайте файл генезиса внутри этой папки, назовите его 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" }
-
Создайте еще одну папку, в которой будут храниться сведения о узле, (folder_of_your_first_node)
-
Откройте терминал, чтобы создать первый узел, используя файл генерации блока:
geth --datadir (folder_of_your_first_node) init (folder_of_your_genesis_file)/customGenesis.json
-
Запустите сеть, используя первый узел блокчин, для networkid выберите любой уникальный номер, сделайте его большим:
geth --datadir (folder_of_your_first_node) --networkid 77665533
-
Теперь блок-цепочка готова и запущена, запустите окно new Terminal для доступа к вашему узлу:
geth attach (folder_of_your_first_node)/geth.ipc
-
Теперь вы находитесь внутри узла блок-цепи, создайте учетную запись:
personal.newAccount() Passphrase:(select a password) Repeat passphrase: (repeat the password) (you should see the address of your account here)
-
Вы можете начать добычу для эфиров, которые вам нужно будет развернуть контракт:
miner.start(1)
-
Подождите некоторое время, минуту, затем прекратите добычу:
miner.stop()
Конец статьи
Теперь я избегал того, что было упомянуто в статье, чтобы развернуть контракты, где вы можете загрузить по умолчанию Mist и запустите его с помощью вашей частной сети, это упростит развертывание ваших контрактов (используя третий новый терминал :
open -a /Applications/Mist.app --args --rpc (folder_of_your_first_node)/geth.ipc
Вы должны увидеть свой первый аккаунт, полный эфиров :). Наслаждайтесь!
Еще одна вещь, о которой стоит упомянуть о ней, после развертывания вашего первого контракта с использованием Mist, вам нужно вернуться к своему второму терминалу (где вы находитесь внутри узла) и снова начать добычу, иначе ваша транзакция развертывания контактов не будет обрабатываются:
miner.start(1)
Проверьте Mist и убедитесь, что транзакция в нижней части экрана уже обработана, затем вы можете вернуться и остановить работу:
miner.stop()
Я следил за этой документацией и работал в частной цепочке за считанные минуты. http://www.ethdocs.org/en/latest/network /test-networks.html # id3
Просто обновить с помощью новых инструментов эту тему. Существует хороший инструмент, помогающий создавать частные тестовые тесты для тестирования! 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
Я только что написал статью, в которой рассказывается о том, как создать частную цепочку Ethereum с использованием geth и go-ethereum. Дайте мне знать, если у вас есть вопросы.
Создайте папку и создайте файл генезиса внутри этой папки, назовите его 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 этот порт использует
Спасибо, попробуй, и создайте личную сеть, затем запустите туман или прошивку в эфирном мире.
спасибо
Если вы хотите настроить конфиденциальную сеть с доказательством полномочий, я опубликовал подробное пошаговое руководство по среде.
, в двух словах вам понадобится как минимум 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 на ваш блок-цепочку.
Надеюсь, это поможет. Наслаждайтесь:)
Вы можете использовать четность для сети разработки
Установить четность
bash <(curl https://get.parity.io -kL)
Запустите свою частную эфирную сеть
parity --chain dev
Просмотр на localhost: 8180. Там вы можете начать разработку умных контрактов.
Для дальнейшей настройки сети
Вы можете посмотреть wiki , если вы хотите дополнительно добавить любые настройки в сеть.