Coin Lab

0 11009 0
Ethereum — Глава 2 (установка и запуск ноды)

Установка и запуск ноды

Получение Geth

Инструмент Frontier называется Geth (спряжение старого английского третьего лица единственного числа от глагола «to go». Довольно подходяще geth описан в Go[link]). Geth — это многоцелевой инструмент командной строки, который запускает полную ноду Ethereum, воплощенную в Go. Он предлагает три интерфейса: суб-команды и опции командной строки [link], сервер Json-rpc и интерактивная консоль.

Чтобы установить Geth, откройте командную строку или терминальный инструмент и вставьте этот код:

[box]ruby -e «$(curl -fsSL  https://raw.githubusercontent.com/cubedro/frontier.ethereum.org/master/bin/install.rb )»[/box]

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

Первый запуск

В рамках данного руководства мы ориентируемся на интерактивную консоль, среду окружения JavaScript. История консоли сохраняется между сессиями, обеспечивая мощный и гибкий способ использования. Вы можете упарвлять историей команд, используя стрелки верх и вниз, так же, как в стандартной командной строке. Для начала работы введите код, указанный ниже, в ваш терминал:

[box]geth console[/box]

Когда geth полностью запущен, вы увидите подсказку > , извещающую о готовности консоли. Для выхода введите exit при подсказе и нажмите  [enter].

Использование stderr

Выходные файлы консоли можно запротоколировать или перенаправить:

[box]geth console 2>>geth.log[/box]

Используя стандартные инструменты, лог можно отслеживать в отельном окне:

[box]tail -f geth.log[/box]

В качестве альтернативы, можно также запустить один терминал с интерактивной консолью и второй с протоколированным выходом logging output напрямую.

1. Откройте два терминала
2. Во втором терминале tty. Выход будет похож на  /dev/pts/13
3. В своем главном терминале напечатайте: geth console 2>> /dev/pts/13

Это позволит вам отслеживать свою ноду, не перегружая интерактивную консоль.

Установка на Linux

Debian/Ubuntu

Установка с PPA

Для последнего разработанного снепшота необходимы ppa:ethereum/ethereum и ppa:ethereum/ethereum-dev. Если вам необходима устойчивая версия из последнего релиза PoC, просто пропустите — dev .

Внимание: РРА ethereum-qt обновит вашу систему в рамках установки Qt5, с версии 5.2 наTrusty и версии 5.3 на Utopic, до версии 5.4.

[box]sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum-qt
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update sudo apt-get install ethereum[/box]

Запустите mist для GUI (графический пользовательский интерфейс) или geth для CLI (интерфейс на уровне вызовов). В качестве альтернативы вы можете установить только CLI или GUI, при помощи apt-get install geth или apt-get install mist соответственно.

Компиляция из исходников

Построение Geth (клиент командной строки) Клонируйте репозиторий в выбранную директорию:

[box]git clone https://github.com/ethereum/go-ethereum[/box]

Для построения geth требуется установить несколько внешних библиотек:

[box]sudo apt-get install -y build-essential libgmp3-dev golang[/box]

В заключение постройте программу geth , используя следующую команду.

[box]cd go-ethereum
make geth[/box]

Сейчас вы можете запустить build/bin/geth для запуска ноды.

Arch

Установка из источника исходников

Установите зависимости

[box]pacman -S git go gcc gmp[/box]

Загрузите и постройте buid geth:

[box]git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make geth[/box]

Red Hat

TODO

Установка на Mac

Установка при помощи Homebrew

Простейшим способом установки go-ethereum, безусловно, будет использование менеджера приложений Homebrew. Если у вас не установлен Homebrew, сначала загрузите его . После этого запустите следующие команды для добавления tap и установки geth:

[box]brew tap ethereum/ethereum
brew install ethereum[/box]

Ветвь разработки develop branch можно установить, запустив —devel:

[box]brew install ethereum —devel[/box]

Для установки mist, добавьте —with-gui.

После установки, запустите geth для запуска ноды.

Информацию об опциях и патчах смотрите на: https://github.com/ethereum/homebrew-ethereum

Установка из исходников

Установка Geth (клиент командной строки)

Клонируйте репозиторий в директорию по вашему выбору:

[box]git clone https://github.com/ethereum/go-ethereum[/box]

Для построения geth требуется установка нескольких внешних библиотек:

[box]brew install gmp go[/box]

В заключение, постройте программу geth , используя следующую команду.

[box]cd go-ethereum
make geth[/box]

Сейчас вы можете запустить build/bin/geth для начала работы вашей ноды.

Установка Windows

Установка из Chocolatey

Для главной ветки:

[box]choco install geth-stable[/box]

Более подробную информацию ищите на  https://chocolatey.org/packages/geth-stable

Для ветки разработки (develop branch):

[box]choco install geth-latest[/box]

Более подробную информацию ищите на   https://chocolatey.org/packages/geth-latest

Установка из исходников

1. Установите Git из http://git-scm.com/downloads и Mercurial из http://mercurial.selenic.com/

2. Установите Golang из https://storage.googleapis.com/golang/go1.4.2.windows-amd64.msi

3. Установите winbuilds из http://win-builds.org/1.5.0/win-builds-1.5.0.exe в c:\winbuilds

4. Запустите конструкции builds здесь. Безопаснее будет удалить большие зависимости, подобные QT и GTK , в которых нет необходимости. Необходимо определить точный список зависимостей.

5. Пути настройки среды окружения

—  Добавьте GOROOT в указанный путь c:\go и GOPATH в c:\godev (данные пути можно выбирать самим).

—  Настройте PATH на %PATH%;%GOROOT%\bin;%GOPATH%\bin;c:\winbuilds\bin

6. Откройте терминал и сначала установите godep:

[box]go get -u github.com/tools/godep[/box]

7. Откройте терминал и загрузите go-ethereum

[box]go get -d -u github.com/ethereum/go-ethereum[/box]

8. Попробуйте построить building ethereum при помощи go dep, переместившись в

[box]c:\godev\src\github.com\ethereum\go-ethereum\cmd\geth[/box]

and run

[box]git checkout develop && godep go install[/box]

Если вы захотите построить с другой ветки, перейдите на godep go install для go install и проверьте зависимости вручную.

Запуск в Docker

Мы сохраняем Docker- образ с последними снепшот билда из ветки develop  на DockerHub. В начале запустите команду:

[box]docker pull ethereum/client-go[/box]

Для запуска ноды, которая запускает интерфейс JSON-RPC в порте 8545, запустите:

[box]docker run -p 8545:8545 -p 30303:30303 ethereum/client-go[/box]

Для использования интерактивной консоли JavaScript console, запустите:

[box]docker run -it —entrypoint=»/usr/bin/geth» ethereum/client-go console[/box]

Бекап и восстановление

Местоположения хранилища данных:

  •  Mac: ~/Library/Ethereum
  • Linux: ~/.ethereum
  • Windows: ~/AppData/Roaming/Ethereum»

Аккаунты хранятся в подкаталоге keystore . Содержимое этих директорий должно перемещаться между платформами, но оно характерно для реализации Go. Для конфигурации местоположения файлов Geth, можно выделить параметр — datadir . Более подробную информацию ищите на  CLI Options .

Примечание: Файлы DAG хранятся в ~/.ethash (Mac/Linux) или ~/AppData/Ethash (Windows) , т.о. он может использоваться повторно всеми клиентами. Вы также можете хранить его в другом месте, используя символическую ссылку. Импорт/экспорт блокчейна. Экспорт блокчейна в двоичном формате осуществляется при помощи:

[box]geth export <filename>[/box]

Импорт блокчейна двоичного формата экспортируется командой:

[box]geth import <filename>[/box]

Более подробно смотрите на  https://github.com/ethereum/wiki/wiki/Blockchain-import-export

Соединение с сетью

Как найти пиры

Geth постоянно пытается связаться с другими нодами в сети, пока у него нет пиров. Если на вашем роутере активирован UPnP или запустили ethereum на интернет сервере, они также будут пытаться принять соединения от других нод.. Geth находит пиры при помощи так называемого протокола обнаружения. В протоколе обнаружения ноды «сплетничают» друг с другом, чтобы получить информацию о других нодах сети. На первоначальном этапе geth использует набор нод загрузки, конечные точки которых записываются в исходном коде. Для смены корневых нод на запуск, используйте опцию —bootnodes и отделяйте ноды пробелами. Например:

[box]geth —bootnodes «enode://[email protected]:port1 enode://[email protected]:port2
enode://[email protected]:port3″[/box]

Типичные проблемы соединения

Иногда вы просто не можете соединиться. Наиболее распространенными причинами являются следующие:

  •  Ваше локальное время может быть неправильным. Для сети Ethereum требуется точная настройка времени.
  • Некоторые конфигурации сетевой защиты могут мешать потоку UDP трафика. Используйте компонент статической ноды или  admin.addPeer() на консоли для ручной конфигурации соединений.

Проверка соединений

Чтобы проверить, к какому количеству пир присоединен клиент в интерактивной консоли, проверьте объект net :

[box]> net
{
listening: true,
peerCount: 4
}[/box]

Чтобы получить больше информации о присоединенных пирах, например, IP адрес или номер порта, поддерживаемые протоколы, используйте функцию peers() объекта admin :

[box]> admin.peers()
[
{
ID: ‘a4de274d3a159e10c2c9a68c326511236381b84c9ec52e72ad732eb0b2b1a22
77938f78593cdbe734e6002bf23114d434a085d260514ab336d4acdc312db671b’,
Name: ‘Geth/v0.9.14/linux/go1.4.2’,Caps: ‘eth/60’,
RemoteAddress: ‘5.9.150.40:30301’,
LocalAddress: ‘192.168.0.28:39219’ },
{
ID: ‘a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef2
9b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c’,
Name: ‘Geth/v0.9.15/linux/go1.4.2’,
Caps: ‘eth/60’,
RemoteAddress: ‘52.16.188.185:30303’,
LocalAddress: ‘192.168.0.28:50995’ },
{
ID: ‘f6ba1f1d9241d48138136ccf5baa6c2c8b008435a1c2bd009ca52fb8edbbc991
eba36376beaee9d45f16d5dcbf2ed0bc23006c505d57ffcf70921bd94aa7a172’,
Name: ‘pyethapp_dd52/v0.9.13/linux2/py2.7.9’,
Caps: ‘eth/60, p2p/3’,
RemoteAddress: ‘144.76.62.101:30303’,
LocalAddress: ‘192.168.0.28:40454’
},
{
ID: ‘f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102
e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0’,
Name: ‘++eth/Zeppelin/Rascal/v0.9.14/Release/Darwin/clang/int’,
Caps: ‘eth/60, shh/2’,
RemoteAddress: ‘129.16.191.64:30303’,
LocalAddress: ‘192.168.0.28:39705’
}
][/box]

Для проверки портов, используемых geth , а также для нахождения URL-адреса вашей е-ноды запустите:

[box]> admin.nodeInfo()
{
Name: ‘Geth/v0.9.14/darwin/go1.4.2’,
NodeUrl: ‘enode://3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce
2ba60f[email protected][::]:30303′,
NodeID:’3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba6
0f14998a3a98c0cf14915eabfdacf914a92b27a01769de18fa2d049dbf4c17694’,
IP: ‘::’,
DiscPort: 30303,
TCPPort: 30303,
Td: ‘2044952618444’,
ListenAddr: ‘[::]:30303’ }[/box]

Пользовательские сети

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

[box]geth -—networkid=»12345″ console[/box]

Статические ноды

Geth также поддерживает компонент под названием статические ноды, если у вас имеются определенные пиры, которые вы постоянно хотите присоединить Статические ноды повторно присоединяются при потере соединения. Вы можете конфигурировать постоянные статические ноды, вставляя что-то вроде приведенного ниже в <datadir>/static-nodes.json:

[box][
«enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0cea
[email protected].1:30303»,
][/box]

Мониторинг ваших нод

Монитор состояний  сети Ethereum (централизованный) (иногда известный как «eth-netstats») – это интернет приложение для мониторинга состояния тестовой сети/основной сети через группу нод.

Списки

Чтобы создать список ноды, вам необходимо установить передачу информации стороны клиента, модель ноды. Инструкции, представленные здесь, работают на Ubuntu (Mac OS X следуют этим же инструкциям, но sudo может оказаться бесполезным). Другие платформы варьируются (пожалуйста, убедитесь, что у вас установлено js-наследство ноды , в противном случае некоторые модули могут отказать).

Клонируйте git repo, затем утсановите pm2:

[box]git clone https://github.com/cubedro/eth-net-intelligence-api
cd eth-net-intelligence-api
npm install
sudo npm install -g pm2[/box]

После этого редактируйте в нем файл app.json для конфигурации вашей ноды:

  • alter the value to the right of LISTENING_PORT порт который «слушает» Ethereum (по умолчанию: 30303)
  • alter the value to the right of INSTANCE_NAME какое хотите название вашей ноды;
  • alter the value to the right of CONTACT_DETAILS если хотите сделать общедоступными детали вашего контракта
  • alter the value to the right of RPC_PORT в RPC порт вашей ноды(по умолчанию 8545 для обоих cpp и go);
  • and alter the value to the right of WS_SECRET секрет (можете получить у официального представителя ethÐΞV если у вас его нет).

В заключение запустите процесс командой: pm2 start app.json

Доступно несколько команд:

  • pm2 list to display the process status;
  • pm2 logs to display logs;
  • pm2 gracefulReload node-app for a soft reload;
  • pm2 stop node-app to stop the app;
  • pm2 kill to kill the daemon.

Обновление

Для обновления выполните следующие действия:

  • git pull to pull the latest version
  • sudo npm update to update the dependencies
  • pm2 gracefulReload node-app to reload the client

Авто-интсталяция при новой установке Ubuntu

Выберите и запустите оболочку билда. Это установит все, что вам необходимо: самый последний интерфейс ethereum — CLI из ветки развития (есть возможность выбора между eth или geth), нода.js, npm & pm2.

[box]bash <(curl https://raw.githubusercontent.com/cubedro/eth-net-intelligence-api/master/bin/build.sh)[/box]

Конфигурация

Конфигурируйте приложение, модифицируя процессы.json. Обратите внимание, что вам необходимо изменить файл резервного процесса.json , находящийся в ./bin/processes.json (позволяет вам настройку env vars без перезаписи при обновлении).

Запуск

Запускайте, используя pm2:

[box]cd ~/bin pm2
start processes.json[/box]

ethereum (eth или geth) должен работать с активированным rpc (сервис вызова удаленныхпроцедур) .

[box]geth —rpc[/box]

портом по умолчанию (если не обозначен конкретный) для rpc на базе geth является 8545

Обновление

Для обновления API клиента используйте следующую команду:

[box]~/bin/www/bin/update.sh[/box]

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

Настройка кластера

На этой странице описывается, как произвести настройку локальных кластеров нод, даются рекомендации, как сделать это закрытым, и как установить ваши ноды в мониторинг приложение сети eth-netstat. Полностью контролируемая сеть ethereum полезна в качестве сервера для интегрированного тестирования сети (центральные разработчики, работающие над вопросами работы сети/синхронизации блокчейна/ прохождения сообщений, и т.д., либо DAPP разработчики, тестирующие мульти-блок и сценарии мульти-пользователя).

Мы допускаем, что вы можете построить geth следуя инструкциям установки

Настройка мульти нод

Для локального запускаn мульти нод ethereum, убедитесь, что:

  • каждое вхождение имеет отдельный каталог данных
  • Каждое вхождение запускается в отдельном порту (и eth, и rpc)
  • Вхождения знают друг о друге
  • [ТОЛЬКО ВРЕМЕННО]: только одно вхождение делает майнинг ( до тех пор, пока #555 фиксирует контроль версий в ethash,/tmp/dag не может быть распределено между мульти вхождениями.)

Запуск вашей первой ноды (давайте сделаем порт явным explicit)

[box]geth —datadir=»/tmp/eth/60/01″ -loglevel 5 -logfile /tmp/eth/60/01.log -port 30301 -rpc -rpcport 8101 console[/box]

Мы запустили ноду при помощи консоли, т.о. мы можем на какой-то момент ухватить е-ноду grab the enode:

[box]> admin.nodeInfo()  enode://8c544b4a07da02a9ee024def6f3ba24b2747272b64e16ec5dd6b17b55992f8980b7793
[email protected][::]:30301[/box]

[::]Будет перебираться как localhost (127.0.0.1). Если ваши ноды в локальной сети проверяются каждая как индивидуальный хост и находят ваш ip с ipconfig (on Linux and MacOS):

[box]$ ifconfig|grep netmask|awk ‘{print $2}’
127.0.0.1
192.168.1.97[/box]

Сейчас вы можете запустить вторую ноду при помощи:

[box]geth —datadir=»/tmp/eth/60/02″ -loglevel 5 -logfile /tmp/eth/60/02.log -port 30302 — rpc -rpcport 8102 — bootnodes=»enode://8c544b4a07da02a9ee024def6f3ba24b2747272b64e16ec5dd6b17b5
5992f8980[email protected]127.0.0.1:30301″[/box]

Вы можете протестировать соединение, напечатав в консоли geth:

[box]> net
{
listening: true,
peerCount: 1
}
> admin.peers …[/box]

Локальный кластер

В дополнение к вышесказанному вы можете легко создать локальный кластер нод. Можно также выполнит сценарий, включающий создания аккаунта, необходимого для майнинга. Посмотрите для примера скрипт gethcluster.sh , и файл README.

Частная сеть

Сеть ethereum является частной сетью, если ноды не соединены с нодами главной сети. Т.о., в этом контексте частная означает только резервную или изолированную, а не защищенную или безопасную. Т.к. соединения действуют только, если пиры имеют идентичную версию протокола сети id, вы можете успешно изолировать свою сеть, настроив на неканоничное значение. Мы рекомендуем для этого использование семантической опции командной строки networkid. Ее аргумент является целым, каноническая сеть имеет 0 (по умолчанию).

Мониторинг ваших нод

На данной странице описывается использование статусного монитора сети Ethereum (централизованной) (иногда называемого «eth-netstats») для мониторинга ваших нод.

Эта страница или  файл README описывают способ настройки вашего собственного сервиса мониторинга для (частного или общественного) локального кластера.


 

Вернуться к оглавлению

Теги

Блокчейн глазами IBM: зачем нужен проект HyperLedger и когда мир перейдёт на новую технологию В четверг, 10 ноября, IT-гигант IBM представит своё видение того,…
admin by admin
0 8282 0
Взгляд Microsoft на блокчейн-технологию: от слов к коду Представляем одного из ключевых спикеров Blockchain & Bitcoin Conference Russia…
admin by admin
0 4722 0
Блокчейн в банковской системе: взгляд Сбербанка Сбербанк России – один из лидеров банковского рынка по внедрению…
admin by admin
0 5724 0

Leave a Reply

Войти
Регистрация
Отправить сообщение