Geth ethereum команды: Command-line Options | Go Ethereum
Установка и настройка ноды для Ethereum
Выполняя проекты на блокчейне мы столкнулись с тем, что в интернете нет информативной статьи, которая подробно рассказывала бы, как развернуть ноду и выполнить простейшие команды.
Что такое нода?
Нода — это любой компьютер, подключенный к блокчейн-сети. Через P2P-протоколы ноды обмениваются между собой информацией о блоках и транзакциях.
В зависимости от типа ноды хранят только часть или все данные блокчейна и делятся на:
- Полные ноды. Они обслуживают всю сеть, загружают и валидируют каждый блок с транзакциями, руководствуясь исключительно алгоритмом консенсуса, и являются полностью независимыми. Полные ноды отвергают противоречащие консенсусу блоки или отдельные транзакции. Такая нода имеет полную копию данных сети блокчейна.
- Облегченные ноды. Представляют компьютер со специальным ПО, подключенный к сети блокчейн. Облегченные ноды не хранят все данные блокчейна, а только заголовки блоков для подтверждения подлинности транзакций, которые они содержат.
Системные требования для работы ноды криптовалюты Ethereum
Для полноценной работы с приложениями необходимо “поднимать” полную ноду. Самый важный и проблемный вопрос — наличие подходящего железа. Бюджетные виртуальные сервера не смогут должным образом поддерживать работу нод, их мощности просто не хватит. А некоторые криптовалюты, такие как Ethereum и Bitcoin, требуют большой объем жесткого диска — около терабайта.
Для работы ноды нужен выделенный сервер среднего сегмента. Сервер низкого сегмента брать не стоит, есть риск, что со временем требования к серверу повысятся, нода разрастется, а мощности не хватит. Слишком дорогой сервер тоже не нужен, только если вы не собираетесь на нем держать несколько нод для разных криптовалют.
Размер жесткого диска
Это один из основных моментов, требующих постоянного контроля. Размер ноды Ethereum постоянно растет на несколько десятков гигабайт в месяц. Покупайте сервер с большим запасом места, чтобы не приходилось останавливать работу для его увеличения.
На момент написания статьи рекомендуем иметь ноду на 1,2 Тб — это уже с небольшим запасом на ближайшие 2-3 месяца.
Производительность дисков
Обязательно нужно обращать внимание на производительность жестких дисков. Нода криптовалюты Ethereum содержит огромное количество мелких и очень мелких файлов, количество которых может достигать миллионов. Для этого лучше использовать SSD-диски, т.к. они более быстрые в сравнении с SATA. Нода Ethereum больше всех других нод нагружает систему, поэтому и железо нужно помощнее.
Процессор и память
Минимальные системные параметры для работы ноды Ethereum: 4 ядра процессора и 8 гигабайт оперативной памяти (ОЗУ). Конечно, нода будет работать и на более низких параметрах, но ее стабильность при этом будет куда ниже.
Если на сервере располагается еще какой-то проект, особенно высокофункциональный и нагруженный, рекомендуем повысить эти показатели в 1,5-2 раза.
Операционная система
Нет какой-то определенной рекомендации для конкретного выбора ОС. Мы используем при реализации проектов Ubuntu. Обычно разработчики нод объявляют поддержку именно этой системы. Под нее всегда есть готовые сборки и скрипты установки. С другой версией линукс придется тратить больше времени.
Установка и настройка ноды эфира (etherium)
Если помимо ноды на сервере у вас стоит проект, то для работы с каждой нодой мы рекомендуем создать отдельного пользователей на сервере. Это обезопасит проект от случайной поломки и позволит разграничить доступ к данным.
1. Авторизуемся на сервере:
2. Переходим в папку на сервере, где будет располагаться нода. В примере мы создали отдельную папку eth/data/:
# cd /var/www/eth/data
3. Добавляем репозиторий ethereum, с которого будут загружены установочные файлы ноды:
# add-apt-repository -y ppa:ethereum/ethereum
4. Обновляем список репозиториев:
# apt update
5. Следующей командой запускаем установку ноды Ethereum на сервере:
# apt install ethereum
После запуска команды нас попросят подтвердить операцию, указываем “y” и жмем “Enter”:
В консоли отобразиться длинное полотно лога, это нормально. Ошибок при этом быть не должно:
Нода установлена. Теперь ее нужно запустить.
6. Для запуск ноды выполняем команду:
# geth console
В консоли начнет отображаться ход запуска ноды и ее синхронизация:
В случае запуска команды без дополнительных параметров нода будет запущена с параметрами по умолчанию. На скриншоте можно видеть что, памяти выделено всего 512 Мб.
7. Чтобы запустить ноду в более быстром режиме, необходимо выполнить команду с параметрами, которые запускают RPC API для возможности обращения к командам API ноды:
# geth —cache=8192 —rpc —rpcaddr 0.0.0.0 —rpcport 8545 —rpccorsdomain «*» —rpcapi «admin,eth,miner,web3,personal»
- cache — размер выделяемой памяти в Мб, рекомендуемое значение 8192, если параметры сервера позволяют;
- rpcaddr — ip-адрес по которому будет работать API ноды, в данном случае это адрес сервера;
- rpcport — порт, через который будет происходить подключение к API ноды:
- rpcapi — для работы достаточно параметров “admin, eth, miner, web3, personal”.
С более подробной информацией о работе с API Ethereum можно ознакомиться на официальной странице в Github https://github.com/ethereum/go-ethereum.
Для быстрого обновления ноды желательно иметь выделенный канал не менее чем 1 Гбит/с. В наших проектах такую скорость связи нам обеспечивает наличие собственного дата-центра.
Поскольку нода может синхронизироваться очень долго, до нескольких дней, есть смысл ее повесить на фоновый процесс вместе с супервизором. Периодически может случаться, что память на сервере заканчивается и ноду необходимо перезапустить. Супервизор будет делать это автоматически, а процесс синхронизации не будет остановлен.
Пока нода запущена — работает API, а вместе с ним и весь функционал по Ethereum.
Команды для работы с нодой на Ethereum
В данном блоке мы перечислили основные команды, которые помогут управлять нодой и обслуживать ее.
Чтобы подключиться к панели управления нодой, необходимо ввести команду:
# geth attach
В консоли отобразится информация о подключении:
В первую очередь нам нужно знать, каков статус синхронизации. Для этого в Панели вводим команду:
eth.syncing
Отобразится информация о блоках:
- currentblock — текущий блок в нашей ноде;
- highestblock — значение самого последнего блока в сети.
Наша задача дождаться, пока значение текущего блока будет равно значению последнего. Как только это случилось, консоль нам выдаст статус “false”, означающий, что нода полностью синхронизирована и готова к работе:
Таким образом мы запустили и синхронизировали всю базу Ethereum и готовы к последующей разработке приложения на блокчейн.
Иногда бывает, что нода перестает синхронизироваться из-за битых данных либо вообще не запускается процесс синхронизации, выдает ошибку. В таком случае необходимо очистить базу данных блокчейна командой:
# geth removedb
В случае, если после очистки базы нода все-равно медленно синхронизируется или вообще прогресс не идет, нужно проверить наличие подключений пиров. Пиры — это все компьютеры, которые отдают вам свои данные блокчейна, т.е. откуда вы скачиваете базу. Для этого в Панели управления нодой запускаете команду:
net.peerCount
Посмотреть, на сколько процентов загружена база от своего общего объема, можно командой, запускать ее нужно в консоли:
# geth —exec ‘var s = eth.syncing; console.log(«\n———— GETH SYNCING PROGRESS\nprogress: » + (s.currentBlock/s.highestBlock*100)+ » %\nblocks left to parse: «+ (s.highestBlock-s.currentBlock) + «\ncurrent Block: » + s.currentBlock + » of » + s.highestBlock)’ attach
Надпись “undefined” означает, что нода синхронизируется в реальном времени, но еще не получила информацию о самом последнем блоке. Это нормально, т.к. ежесекундно появляются новые данные, которые постоянно загружаются в базу блокчейна. Тут скорее следует обращать внимание на общий прогресс синхронизации, чтобы он не сильно отставал, иначе есть риск получения неактуальных данных о блокчейне.
Если вам требуется разработать проект, которые реализован на блокчейн, то вы можете обратиться к нам для расчета стоимости.
Создаём собственный блокчейн на Ethereum / Хабр
Как создать приватный блокчейн Ethereum с нуля?
Ethereum — децентрализованная платформа, на которой работают смарт-контракты: приложения, исполняемые строго запрограммированным образом, без возможности даунтайма, цензуры, фрода или вмешательства третьих лиц. В этой статье я проведу вас через все шаги, необходимые для создания полностью функционального приватного блокчейна Ethereum внутри вашей локальной сети.
Инструкция включает в себя следующее:
- Создание приватного блокчейна Ethereum с помощью geth.
- Создание кошелька MetaMask для работы с приватным блокчейном.
- Перевод средств между несколькими аккаунтами.
- Создание, развёртывание и вызов смарт-контракта в приватном блокчейне с помощью remix.
- Создание обозревателя блоков Ethereum поверх приватного блокчейна.
Go Ethereum (или geth) это одна из трёх изначальных реализаций протокола Ethereum (наряду с C++ и Python). Она написана на Go, полностью открыта и лицензирована под GNU LGPL v3. Go Ethereum можно скачать или как отдельный клиент, работающий практически в любой ОС, или как баблиотеку для встраивания в проекты Go, Android или iOS.
Для установки geth под Mac OS X мы использовали homebrew. Homebrew устанавливает всё необходимое, о чём не позаботилась Apple. Эта статья предполагает, что homebrew у вас уже установлен. Если нет, следуйте этой инструкции. После установки homebrew следующие команды установят geth.
brew tap ethereum/ethereum
brew install ethereum
Установить geth на Ubuntu довольно просто, достаточно запустить следующие команды apt-get.
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
Для Windows соответствующий инсталлятор лежит здесь. В случае каких-либо сложностей обращайтесь к инструкции.
Сначала нужно создать аккаунт для майнинга Ethereum. Так мы сгенерируем пару приватного и публичного ключей с паролем для защиты. Не потеряйте свой пароль, иначе никогда не сможете восстановить ключи. По умолчанию, ключи хранятся внутри: <datadir>/keystore. Всё, что сохраняет geth, хранится внутри datadir (кроме PoW Ethash DAG). Расположение директории по умолчанию зависит от ОС. Всегда лучше изменить стандартные настройки и задать свой собственный путь для приватного блокчейна.
- Mac: ~/Library/Ethereum
- Linux: ~/.ethereum
- Windows: %APPDATA%\Ethereum
Ethash DAG хранится в ~/.ethash (Mac/Linux) или %APPDATA%\Ethash (Windows), так что его могут использовать все клиенты.
Следующая команда показывает, как создать аккаунт с произвольным путём для директории данных. Эта команда выдаст ваш адрес Ethereum.
geth account new --datadir <path-to-data-directory>
Пример:
geth account new --datadir /path/to/data/dir
Блокчейны Ethereum отличаются друг от друга первичными блоками. Каждый блокчейн начинается с такого блока, а всё остальное строится поверх него, где каждый следующий блок ссылается на предыдущий. В публичном блокчейне Ethereum первичный блок был создан 20 июля 2015 года. Для нашей собственной цепочки нужно создать собственный первичный блок. Инициализация приватного блокчейна с заданным первичным блоком осуществляется следующей командой:
geth -datadir <path-to-data-directory> init <path-to-genesis-block>
Пример:
geth -datadir /path/to/data/dir init /path/to/genesis.json
- datadir: директория для баз данных и хранилища ключей.
- init: начальная загрузка и инициализация нового первичного блока — с соответствующим файлом json.
Ниже показан наш первичный блок, который используется в приватном блокчейне — нужно сохранить его под именем genesis.json и указать в приведённой выше команде.
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "0x400",
"gasLimit": "0x2100000",
"alloc": {
"7a69b359e86893efa3d9732e4c65ced51567edd0":
{ "balance": "0x1337000000000000000000" }
}
}
- chainid: обеспечивает способ совершения транзакций в Ethereum без использования ETC (Ethereum Classic) или тестовой сети Morden. EIP 155 предусматривает следующие значения chainid для разных сетей: основная сеть Ethereum (1), основная сеть Morden / Expanse (2), Ropsten (3), Rinkeby (4), основная сеть Rootstock(30), тестовая сеть Rootstock (31), Kovan (42), основная сеть Ethereum Classic (61), тестовая сеть Ethereum Classic (62), приватные цепочки geth (1337 по умолчанию). В нашем примере мы указали идентификатор 15, который не используется ни одной из существующих цепей.
- homesteadBlock: значение 0 указывает на использование релиза Ethereum Homestead. Это второй из основных релизов Ethereum — а недавно, 16 октября 2017 года, Ethereum форкнулся на релиз Byzantium.
- eip155Block: значение 0 указывает, что этот блок поддерживает EIP (Ethereum improvement proposal, предложение об улучшении Ethereum) номер 155. Предложения EIP описывают стандарты для платформы Ethereum, в том числе ключевые спецификации протокола, клиентские API и стандарты контрактов.
- eip158Block: значение 0 указывает, что этот блок поддерживает EIP 158.
- difficulty: значение соответствует уровню сложности, которое применяется для поиска случайного значения nonce к этому блоку. В этой статье подробно объясняется, как рассчитывается уровень сложности в Ethereum.
- gasLimit: газ — это внутренняя единица оплаты для проведения транзакции или контракта в Ethereum. Каждая инструкция, которая отправляется в виртуальную машину Ethereum Virtual Machine (EVM) для обработки транзакции или смарт-контракта стоит определённое количество газа. Если транзакция не получает нужного количества газа, то она не пройдёт. При совершении каждой транзакции в Ethereum вы указываете лимит газа — максимальное количество, которое могут использовать все сопутствующие операции для этой транзакции. Параметр gasLimit в блоке определяет общий лимит всех транзакций в блоке.
- alloc: параметр для предварительного распределения Эфира из первичного блока на один или несколько аккаунтов. В вышеприведённом примере первичного блока весь Эфир поступает на аккаунт, созданный с самого начала.
Всё готово! Теперь можно начать майнинг через geth с помощью следующей команды. Здесь параметр networkid выделяет эту сеть Ethereum среди других. Все майнеры, желающие подключиться к этой сети, должны использовать тот же идентификатор networkid с тем же первичным блоком.
geth --mine --rpc --networkid <networkd-id> --datadir <path-to-data-directory>
Пример:
geth --mine --rpc --networkid 1999 --datadir /path/to/data/dir
Можно или начать майнинг как console , или запустить console отдельно — и подключить её к узлу майнинга командой attach. Сейчас покажу, как это делается, и проверьте, что вы указали параметры в том же порядке.
geth --datadir <path-to-data-directory> attach ipc:<path-to-data-directory>/geth.ipc
Пример:
geth --datadir /path/to/data/dir attach ipc:/path/to/data/dir /geth.ipc
Консоль подключается к узлу майнинга по IPC. IPC (межпрорцессное взаимодействие) работает на локальном компьютере. В этом случае geth создаёт конвейер Geth (который представлен файлом <path-to-data-directory>/geth.ipc) в файловой системе локального компьютера — а консоль подключается к этому узлу по IPC.
Как только вы подключились к консоли geth, можно попробовать запустить следующую команду для отображения всех доступных аккаунтов.> eth.accounts
["0x7a69b359e86893efa3d9732e4c65ced51567edd0"]
Следующая команда позволяет просмотреть баланс заданного аккаунта из консоли geth.
> eth.getBalance("0x7a69b359e86893efa3d9732e4c65ced51567edd0")
1.295e+21
MetaMask — это кошелёк Ethereum, работающий как расширение Chrome. Он внедряет Ethereum Web3 API в каждый контекст JavaScript на сайте, так что все эти приложения способны получать информацию из блокчейна. MetaMask также позволяет создавать собственные идентификаторы (identities) и управлять ими, так что когда приложение хочет совершить транзакцию и записать данные в блокчейн, у пользователя есть безопасный интерфейс для просмотра транзакции, прежде чем одобрить или отклонить её.
Для подключения MetaMask к приватному блокчейну Ethereum нужно выбрать правильные имя хоста и порт. Web3 API — это программные интерфейсы JavaScript для Ethereum, реализованные в web3.js. Чтобы JavaScript-приложение обменивалось данными с узлом Ethereum, MetaMask использует библиотеку web3.js с удобным интерфейсом для методов rpc. Она обменивается с локальным узлом вызовами rpc. Библиотека web3.js работает с любым узлом Ethereum, у которого есть слой rpc. Вы могли заметить выше, что при запуске узла майнинга можно передать параметр rpcapi и указать, какие интерфейсы мы хотим использовать на этом узле. По умолчанию, если ничего не указать, будут использоваться интерфейсы eth,net,web3 .
MetaMask создаст аккаунт Ethereum — секретный ключ и адрес Ethereum. Дальше разберёмся, как передавать Эфир с первого аккаунта, созданного в самом начале, на аккаунт MetaMask из консоли geth. Для передачи средств аккаунта нужно использовать для подписи секретный ключ этого аккаунта. Чтобы его использовать, нужно его сначала разблокировать, как показано ниже.
> personal.unlockAccount( "0x7a69b359e86893efa3d9732e4c65ced51567edd0","password")
personal — это управляющие программные интерфейсы в geth. Кроме personal, geth также предоставляет следующие управляющие API: admin, debug, miner и txpool. Как только мы разблокировали аккаунт, мы можем определить в консоли три переменные: для sender, receiver и amount, то есть получателя, отправителя и количества передаваемых средств. Значение sender — это адрес Ethereum, который мы создали в начале этой статьи, а значение receiver — адрес Ethereum, созданный в MetaMask.
> var sender = "0x7a69b359e86893efa3d9732e4c65ced51567edd0";
> var receiver = "0xA9f28458eE1170F285440990c196c1592D3a73f5"
> var amount = web3.toWei(1, "ether")
Следующая команда осуществит передачу средств — она ссылается на переменные, которые мы определили выше.
> eth.sendTransaction({from:sender, to:receiver, value: amount})
Когда мы завершили передачу средств, следуя вышеуказанным шагам, можно просмотреть баланс аккаунта двумя способами. Первый способ — напрямую из плагина MetaMask, как показано ниже.
Другой способ — через консоль geth, с помощью следующей команды.
< eth.getBalance("0xA9f28458eE1170F285440990c196c1592D3a73f5")
1000000000000000000
Solidity — самый популярный язык программирования для написания смарт-контрактов Ethereum. Remix — это IDE для Solidity со встроенным отладчиком и средой тестирования. Онлайновый редактор remix можно найти здесь. Remix подключается к любой сети Ethereum. Для подключения к нашему локальному блокчейну убедитесь, что вы запустили узел майнинга следующей командой, как показано ниже. О параметре --rpccorsdomain "*"
мы уже говорили. Вместо звёздочки (максимальная открытость) в качестве значения этого параметра можно указать “https://remix.ethereum.org”.
geth --mine --rpc --rpccorsdomain "*" --networkid <networkd-id> --datadir <path-to-data-directory>
Для подключения remix к нашей закрытой сети нужно изменить Environment на Web3 Provider, это делается на вкладке Run. При этом изменении remix попросит указать Web3 Provider Endpoint — установите значение http://localhost:8545
. Пока вы явно не изменили порт, по умолчанию узел для майнинга стартует на порту 8545.
Теперь всё готово для написания самого первого смарт-контракта, который мы запустим в сети Ethereum. Скопируйте следующий код и вставьте его в онлайновый редактор remix. Это очень простой смарт-контракт — я даже не хочу объяснять его построчно. В следующей статье подробно рассмотрим язык программирования Solidity.
pragma solidity ^0.4.11;
contract Hello {
// a string variable
string public greeting;
// the function with the same name as the class is a constructor
function Hello(string _greeting) {
greeting = _greeting;
}
// change the greeting message
function setGreeting(string _greeting) {
greeting = _greeting;
}
// get the greeting message
function greet() constant returns (string _greeting) {
_greeting = greeting;
}
}
Если вы не меняли настройки по умолчанию в remix, то они установлены на автоматическую компиляцию. Если нет, то надо скомпилировать код.
После компиляции при нажатии кнопки Details вы увидите расчётное количество газа, необходимое для создания этого смарт-контракта.
Теперь можем внедрить смарт-контракт в наш приватный блокчейн. На вкладке Run убедитесь, что у вас выбран правильный аккаунт Ethereum и правильный лимит газа. Значения gas price и value можно указать нулевыми.
Здесь транзакция Ethereum, подписанная с выбранного выше аккаунта для создания смарт-контракта в блокчейне. Для подписи сначала нужно разблокировать аккаунт через консоль geth.
> personal.unlockAccount( "0x7a69b359e86893efa3d9732e4c65ced51567edd0","password")
Теперь можете нажать кнопку Create, чтобы создать смарт-контракт. У нас в нём конструктор, принимающий строковый параметр, вот почему remix показывает поле ввода вместе с кнопкой Create. Сюда можно ввести какое-нибудь значение (в кавычках, например, “Hi”) — или просто оставить пустым. В консоли geth при создании смарт-контракта появится следующее сообщение. Также обратите внимание, что если не установлен корректный gas limit, то такая команда приведёт к ошибке.
INFO [10-19|07:31:08] Submitted contract creation fullhash=0xf5511bb9d088672ac0d3896b8590b9a3e25484300f02deecdd739c3a549ed33a contract=0x42b7E903Fb42e191a7D623cbb4b7b4330D329d78
После создания смарт-контракта интерфейс remix немного изменится — как показано ниже, на вкладке Run.
Здесь можно установить некое значение для метода setGreeting — и нажать на него для вызова смарт-контракта. Опять же следует убедиться, что аккаунт разблокирован, потому что при вызове смарт-контракта мы использует транзакции Ethereum и требуется подпись инициатора. Проделав операцию с setGreeting, можно вызвать и другие методы.
Возможно, вы знакомы с сервисом etherscan для сканирования публичного блокчейна Ethereum. Но его нельзя направить на наш локальный блокчейн. Хотя Ethereum Block Explorer даже близко не сравнится по функциональности с etherscan, он вполне подходит для изучения того, что происходит в нашем локальном блокчейне.
Для установки программы сначала возьмём исходники со следующего репозитория.
git clone https://github.com/carsenk/explorer
Затем запустим команду установки из директории Ethereum Block Explorer.
npm install
По окончании установки запустите Ethereum Block Explorer следующей командой — и получите доступ к веб-консоли через http://localhost:8000
.
npm start
Перед подключением Ethereum Block Explorer к локальному блокчейну убедитесь, что запустили узел майнинга следующей командой с параметром --rpccorsdomain "*"
— его значение мы обсуждали ранее.
geth --mine --rpc --rpccorsdomain "*" --networkid <networkd-id> --datadir <path-to-data-directory>
Обновление: Обсуждение этой статьи на Hacker News см. здесь. Не стесняйтесь присоединяться.
В этой статье мы обсудили, как создать приватный блокчейн Ethereum с помощью geth. Затем настроили кошелёк MetaMask для работы с этим блокчейном и и перевели средства на аккаунт Ethereum, созданный в MetaMask. Для создания, внедрения и вызова смарт-контракта использовалась онлайновая IDE remix. Наконец, мы установили Ethereum Block Explorer для изучения приватного блокчейна.
Запускаем Ethereum клиент Geth на Windows 10 — EnsRationis.com
В день запуска сети Ethereum я выложил статью о запуске клиента на ОС Ubuntu с генерацией Genesis block. Сегодня уже версия Geth 1.0.1, в которой как раз основным отличием является уже вшитый Genesis block. Соответственно, сложностей по установке клиента на Ubuntu и на Windows теперь нет.
Update 10.02.2016: в этой статье информация новее: Обзор клиентов для сети Ethereum, зима 2016.
Основная инструкция тут: https://github.com/ethereum/go-ethereum/wiki/Installation-instructions-for-Windows.
Для начала ставим Chocolatey
Официальный сайт: https://chocolatey.org/
Chocolatey — это установщик/менеджер пакетов для Windows, аналогичный apt-get на Ubuntu. Он упрощает процесс обновления вашего клиента до последнего релиза.
Открываем cmd.exe и вводим:
@powershell -NoProfile -ExecutionPolicy Bypass -Command «iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1’))» && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
Выбираем версию клиента Geth: stable или develop
После установки Chocolatey необходимо выбрать, с какой версией клиента вы будете работать — stable или develop. Так как Ethereum все еще находится в активной стадии разработки, то различия в версиях могут быть для разработчиков и майнеров значимыми. Если вам требуется клиент только для работы с балансом, то вы можете выбрать версию stable. Если клиент требуется для разработки приложения или майнинга, то лучше использовать develop.
Для установки stable версии выполняем команду:
choco install geth-stable
Для установки develop версии выполняем команду:
choco install geth-latest
Запускаем клиент Geth версии 1.0.1
Как я выше сказал, самая сложность была в версии 1.0.0, так как требовалось сгенерировать Genesis block и подключить его при запуске. В версии 1.0.1 этого не требуется, соответственно, весь запуск клиента сводится к выполнению команды в консоли:
C:\ProgramData\chocolatey\lib\geth-stable\tools\geth.exe console
После чего начнется синхронизация. Спустя 3 недели после запуска сети, процесс синхронизации не занимает много времени (не более 10 минут).
Также на рабочем столе у вас появится .bat файл для запуска клиента в консоли с рабочего стола.
Создаем аккаунт и запускаем CPU майнинг
Первым делом после запуска клиента вам необходимо создать аккаунт. Для этого выполняем команду в режиме консоли:
personal.newAccount(«StrongPassword»)
Не забудьте заменить «StrongPassword» на любой сложный пароль и не забывайте его, так как, забыв пароль, вы потеряете доступ к своему аккаунту безвозвратно!
Для обучения выполните команду для вывода только что созданного адреса.
web3.eth.accounts
Теперь, имея адрес, можно запускать майнинг.
Советую прочитать статью по запуску майнинга на официальном сайте Ethereum: https://www.ethereum.org/ether
Итак, выполняем 2 команды:
miner.setEtherbase(eth.accounts[0])
miner.start()
После чего начнет формироваться DAG (“Directed Acyclic Graph”). Это займет не более 5-10 минут. DAG был придуман для того, чтобы защитить сеть от ASIC устройств стандартной конфигурации, так как он генерирует большой файл весом 1Gb и, соответственно, требует его нахождение в оперативной памяти при майнинге. Если вы хотите использовать GPU ферму, то готовьте много оперативки 🙂
После завершения формирования DAG в консоль начнут поступать сообщения формата:
commit new work on block 114950 with 0 txs & 0 uncles. Took 999.8µs
Это означает, что ваш аккаунт начал работу в режиме майнинга.
Если что пишите на почту [email protected] или в twitter: @EnsRationis
P.S.: статью о запуске GPU майнинга на ферме из 4 видеокарт подготовлю в течение недели.
Установка и настройка ноды bitcoin, ethereum, dash, litecoin, cardano
Мне периодически приходится устанавливать и настраивать ноды различных криптовалют. Делать это не сложно, но везде есть небольшие нюансы, на которые надо обращать внимание и вспомнать, как действовать. Сегодня я расскажу, как установить и запустить ноды популярных криптовалют — bitcoin, ethereum, dash, litecoin, cardano.
Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .
Введение
В целом свое отношение к криптовалютам я описал в отдельной статье. Привожу просто для справки тем, кому будет любопытно. Сегодня мы будем рассматривать исключительно техническую сторону процесса.
Сама по себе установка ноды криптовалюты не представляет большой сложности. Нужно выполнить несколько простых команд в консоли сервера. Я поделюсь некоторыми своими мыслями на этот счет, так как много занимался этой темой и накоплен определенный опыт.
Самая большая проблема в этом вопросе — подходящее железо. Совсем бюджетные виртуалки ноды криптовалют не тянут. А такие валюты как эфир или биткоин еще и очень большой объем диска требуют — 300-600 гб. Нужен выделенный сервер нижнего или среднего ценового сегмента. Лучше всего брать в Европе, там дешевле. По моей ссылке будут сервера с русскоязычным саппортом. Если он вам не нужен, можете напрямую в hetzner брать или где-то еще, будет дешевле. Рейд контроллер там не обязателен, так как никакой уникальной информации нода хранить не будет. В случае выхода из строя она без проблем поднимается на новом железе.
Системные требования для ноды криптовалюты
Размер блокчейна
Обращаю сразу внимание на самое основное. Внимательно следите за размером блокчейна валюты, ноду которой вы будете настраивать. Покупайте сервер с большим запасом, так как блокчейн некоторых криптовалют может стремительно расти. Из недавнего примера — эфир. До нового года, если не ошибаюсь, ее блокчейн был менее 100 гб, а сейчас что-то в районе 500 гб. У меня все ноды посыпались из-за этого, пришлось срочно решать вопрос со свободным местом.
Производительность дисков
Далее нужно обращать внимание на производительность дисков. Нода криптовалюты — это огромное количество мелких, зачастую очень мелких файлов, счет которых может идти на миллионы. Далее я подробно на этом остановлюсь, когда будем cardano устанавливать. Сейчас дам универсальный совет. Если у вас обычные SATA диски, то один диск нормально тянет одну ноду. Если ставить 2-3 ноды криптовалюты, то будет плохо, со временем сервер может зависать из-за огромного iowait.
Это очень условные примеры, потому что разные ноды по разному нагружают систему. Эфир больше всех, биткоин поменьше, остальные примерно одинаково.
Процессор и память
Я поднимаю ноды в виртуальных машинах. Обычно придерживаюсь таких параметров. Для ноды Etherium выделяю 4 ядра процессора, 8 гигабайт памяти. Для bitcoin 2 ядра, 8 памяти. Для всех остальных 2 ядра, 4 гб памяти. Если память есть свободная, то лучше всем по 8 давать.
Операционная система
Я буду устанавливать криптовалютные ноды на Ubuntu 16. Хоть я и не очень люблю эту систему, но так проще всего. Обычно разработчики нод объявляют поддержку именно этой системы. Под нее всегда есть готовые сборки и скрипты установки. С другой версией линукс придется тратить больше времени.
Самый простой вариант — использовать готовые образы docker. Я не знаю, легко ли они находятся под все криптовалюты и насколько актуальны. Сам я не использую докер в данном случае, потому что установка очень простая и лишняя прослойка в виде докера не нужна. Если вам реально нужны контейнеры докер для нод криптовалют, сможете собрать их сами, если умеете работать с docker.
Установка ноды Ethereum
Обращаю внимание, что я все делаю под пользователем root. Лучше ноды запускать под отдельным пользователем, но мне не хочется перегружать статью информацией о том, как создавать пользователя, запускать от его имени приложение и т.д. Статья в любом случае не для новичков. Я даю общую информацию со ссылками. При необходимости, вы сами сможете все аккуратно настроить в боевом режиме.
Добавляем репозиторий ethereum
# add-apt-repository -y ppa:ethereum/ethereum
Обновляем список репозиториев
# apt update
Устанавливаем непосредственно ноду эфира.
# apt install ethereum
Дальше вы можете любо подключить ноду к реальной сети, либо запустить на тестовой для каких-то своих целей — тестирование, разработка и т.д.
Запуск рабочей ноды ethereum:
# geth console
Запуск тестовой ноды:
# geth --testnet console
В домашней директории пользователя, от которого вы запускаете ноду, будет создана папка .ethereum, в которой будет храниться вся информация по ноде, в том числе сам блокчейн. Имеет смысл создавать отдельного пользователя для этих целей.
Ноду можно запускать с параметрами, передавая их в виде ключей командной строки. Например так:
# geth --cache=4096 --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi "web3,personal,admin,debug,db,net,eth,miner,rpc,txpool"
Описание ключей смотрите в официальной документации go-ethereum на гитхабе. Там же, кстати, и ссылка на оригинальное руководство по установке есть.
По-умолчанию, стандартная нода эфира работает прямо в консоли. Надо запускать ее как процесс в фоне. Можно написать service в systemd, но я не большой специалист в этом. Я пошел по самому простому и очевидному пути — запускать ноду в screen. Для того, чтобы она поднималась после загрузки сервера, добавляем в /etc/rc.local перед exit 0:
screen -dmS geth /usr/bin/geth --verbosity 3
Не забудьте указать нужные вам ключи запуска. Теперь проверим, как у нас работает нода, можно ли ей управлять через json rpc запросы. Допустим, мы запустили ноду со следующими параметрами:
# geth --cache=4096 --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi "web3,personal,admin,debug,db,net,eth,miner,rpc,txpool"
В соседней консоли проверяем, все ли нормально поднялось:
# netstat -tulnp | grep geth tcp6 0 0 :::30303 :::* LISTEN 1177/geth tcp6 0 0 :::8545 :::* LISTEN 1177/geth udp6 0 0 :::30303 :::* 1177/geth
Все в порядке. Отправляем тестовый запрос:
# curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' localhost:8545
В ответ должны получить что-то вроде этого:
{"jsonrpc":"2.0","id":67,"result":"Geth/v1.8.8-stable-2688dab4/linux-amd64/go1.10"}
Все работает. Что с этим делать дальше разбирайтесь сами или отдавайте сервер разработчикам. Они будут пилить очередное приложение или биржу для криптовалюты.
Установка ноды bitcoin
Продолжим устанавливать ноды криптовалют. Переходим к настройке ноды биткоин. Выполним немного подготовительных действий, чтобы потом сразу запустить ноду с нужными параметрами. Создаем в домашней директории папку для ноды:
# mkdir ~/.bitcoin
Рисуем примерно такой конфиг для нее:
# mcedit ~/.bitcoin/bitcoin.conf printtoconsole=1 testnet=1 txindex=1 rpcuser=btcuser rpcpassword=btcpass rpcport=8332 rpcbind=0.0.0.0 rpcallowip=0.0.0.0/0 datadir=/mnt/bitcoin
Приступаем к установке ноды. Подключаем репозиторий и обновляем список:
# apt-add-repository ppa:bitcoin/bitcoin # apt update
Устанавливаем службу bitcoin ноды:
# apt install bitcoind
Запускаем ноду с указанным ранее конфигом в режиме службы:
# bitcoind -daemon
Здесь ничего костылить не надо для автоматического запуска ноды, как это было с ethereum. Биткоин нода из коробки умеет работать как служба. Проверим, запустилась ли она.
# netstat -tulnp | grep bitcoind tcp 0 0 0.0.0.0:18333 0.0.0.0:* LISTEN 5405/bitcoind tcp 0 0 127.0.0.1:8332 0.0.0.0:* LISTEN 5405/bitcoind tcp6 0 0 :::18333 :::* LISTEN 5405/bitcoind tcp6 0 0 ::1:8332 :::* LISTEN 5405/bitcoind
Порт 18333 слушает блокчейн. Это дефолтный параметр. 8332 — rpc порт для взаимодействия с нодой. Все то же самое, что и с эфиром.
Если вам надо остановить ноду, выполните в консоли:
# bitcoin-cli stop
Команда сработает только, если у вас настроен rpc. Если нет, то выключить можно только так:
# pkill -9 -f bitcoind
Проверить работу bitcoin ноды можно, к примеру, следующей командой:
# bitcoin-cli getblockchaininfo
Добавим теперь ноду в автозагрузку. Для этого создадим запись в crontab.
# crontab -e
Добавляем строку:
@reboot bitcoind -daemon
На этом все. Биткоин нода готова к работе. Переходим к следующей криптовалюте.
Установка ноды DASH
Установим ноду криптовалюты DASH. Сначала ставим необходимые зависимости:
# apt install dirmngr
Скачиваем последнюю версию ноды. Для этого идем по адресу https://github.com/dashpay/dash/releases/ и смотрим номер последнего релиза. После этого копируем последний релиз к себе. На момент написания статьи последней версией ноды была v0.12.2.3.
# wget https://github.com/dashpay/dash/releases/download/v0.12.2.3/dashcore-0.12.2.3-linux64.tar.gz --no-check-certificate
Распаковываем и копируем бинарники в системные папки.
# tar -zvxf dashcore-* # mv *-[0-9].[0-9][0-9].*/bin/* /usr/bin
Создаем директорию для файлов ноды и рисуем для нее конфиг. Запускать будем с параметром testnet.
# mkdir ~/.dashcore # cd ~/.dashcore && mcedit dash.conf
printtoconsole=1 rpcallowip=::/0 txindex=1 testnet=1 rpcuser=dashuser rpcpassword=dashpassword rpcport=8999
Запускаем ноду dash.
# dashd
Нода работает в консоли, как служба по-умолчанию не работает. Чтобы запускать ее в фоне, необходимо воспользоваться утилитой screen. Делать все нужно по аналогии с руководством ноды эфира, что описана в самом начале. Запускаем так:
# screen -dmS dash /usr/bin/dashd
Проверить состояние ноды можно командой:
# dash-cli mnsync status
На этом все, нода криптовалюты dash установлена и работает.
Установка ноды litecoin
Установка ноды для криптовалюты litecoin очень похожа на dash. Почти все шаги такие же, только версия ПО будет своя. Устанавливаем необходимые пакеты:
# apt install dirmngr
Дальше идем на сайт https://litecoin.org. В разделе DOWNLOAD копируем ссылку на Litecoin Core for Linux. Скачиваем исходники на сервер.
# wget https://download.litecoin.org/litecoin-0.16.0/linux/litecoin-0.16.0-x86_64-linux-gnu.tar.gz --no-check-certificate
Распаковываем архив и копируем бинарники в системные папки.
# tar -zvxf litecoin-* # mv litecoin-0.16.0/bin/* /usr/bin
Создаем директорию для файлов ноды и рисуем для нее конфиг. Запускать будем с параметром testnet.
# mkdir ~/.litecoin # cd ~/.litecoin && mcedit litecoin.conf
printtoconsole=1 rpcallowip=::/0 txindex=1 testnet=1 rpcuser=ltcuser rpcpassword=ltcpassword rpcport=2339
Запускаем ноду litecoin:
# litecoind
Проверяем, что там запустилось:
# netstat -tulnp | grep litecoind tcp 0 0 0.0.0.0:19335 0.0.0.0:* LISTEN 2973/litecoind tcp6 0 0 :::2339 :::* LISTEN 2973/litecoind tcp6 0 0 :::19335 :::* LISTEN 2973/litecoind
Проверим статус самой ноды litecoin
# litecoin-cli getblockchaininfo
Нода работает в консоли, как служба по-умолчанию не работает. Чтобы запускать ее в фоне, необходимо воспользоваться утилитой screen. Делать все нужно по аналогии с руководством ноды эфира, что описана в самом начале. Запускаем так:
# screen -dmS litecoin /usr/bin/litecoind
Нода litecoin установлена и настроена. Переходим к следующей.
Установка ноды Cardano
Займемся теперь настройкой ноды молодой криптовалюты Cardano. Не знаю, что в ней интересного, но запросы на ее настройку у меня были. Помучался я с ней прилично, так как руководство не очень понятное, по нему без плясок не ставится. Но в итоге я научился ее готовить. Официальное руководство по установке есть ни гитхабе. Я буду настраивать по нему, но с некоторыми изменениями. Команда на сборку будет другая, если делать по руководству, то не соберется.
Сборка будет идти через некий пакетный менеджер Nix, который лично я видел впервые. Его необходимо установить, причем под непривилегированным пользователем. От root установщик nix не работает. Будет ошибка. Добавим сначала пользователя cardano.
# useradd -d /home/cardano -s /bin/bash cardano # passwd cardano # adduser cardano sudo # mkdir /home/cardano && chown cardano. /home/cardano
Заходим под новым пользователем и запускаем установщик nix.
# su cardano # cd ~ # curl https://nixos.org/nix/install | sh
Выполняем согласно указанию инсталлятора в консоли команду.
# . /home/cardano/.nix-profile/etc/profile.d/nix.sh
Создадим конфиг для nix и запишем туда пару параметров.
# sudo mkdir -p /etc/nix # sudo mcedit /etc/nix/nix.conf
Добавляем следующие строки:
binary-caches = https://cache.nixos.org https://hydra.iohk.io binary-cache-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=
Начинаем установку ноды Cardano. Клонируем себе репозиторий и переходим в него.
# git clone https://github.com/input-output-hk/cardano-sl.git # cd cardano-sl
Переключаемся на master ветку.
# git checkout master
Запускаем сборку cardano node из исходников.
# nix-build -A cardano-sl --cores 0 --max-jobs 2 --no-build-output --out-link master
Генерируем скрипт для запуска ноды:
# nix-build -A connectScripts.mainnet.wallet -o connect-to-mainnet
Нода собрана и установлена. Запускаем:
# ./connect-to-mainnet
Для автоматического запуска cardano node после загрузки системы, добавьте команду в /etc/rc.local перед командой exit.
screen -d -m -S cardano sudo -u cardano /home/cardano/cardano-sl/connect-to-mainnet
Проверить работы ноду можно, выполнив локально команду:
# curl https://127.0.0.1:8090/api/v1/node-info --cacert /home/cardano/cardano-sl/state-wallet-mainnet/tls/server/ca.crt --cert /home/cardano/cardano-sl/state-wallet-mainnet/tls/client/client.pem
{"data":{"syncProgress":{"quantity":3,"unit":"percent"},"blockchainHeight":{"quantity":1147025,"unit":"blocks"},"localBlockchainHeight":{"quantity":35183,"unit":"blocks"},"localTimeInformation":{"differenceFromNtpServer":{"quantity":-25400,"unit":"microseconds"}}},"status":"success","meta":{"pagination":{"totalPages":1,"page":1,"perPage":1,"totalEntries":1}}}
На этом настройка ноды окончена. Полную документацию по Cardano Wallet API читайте по ссылке.
В момент моей последней установки ноды cardano я столкнулся с тем, что через несколько дней работы нода скушала все свободные inodes и перестала работать. Дефолтного значения файловой системы ext4 в 1 000 000 ей показалось мало. Пришлось добавлять отдельный диск и в момент создания файловой системы указать на создание 10 000 000 inodes. Через пару месяцев работы нода использует 2 300 000 inodes. Имейте ввиду этот момент, если будете работать с нодой.
Установка Bitcoin Cash Full Node
Установка ноды форка биткоина — Bitcoin Cash абсолютно ничем не отличается от своего родоначальника. Нам просто нужно подключить другой репозиторий.
# add-apt-repository ppa:bitcoin-abc/ppa
Все остальное полностью идентично, до каждой команды. И запуск в режиме демона, и автозагрузка, и остановка, и проверка ноды выполняются теми же командами.
Установка NEO ноды
Для работы Neo Node нужен .NET Core, который к моему удивлению есть под linux. Ставим его:
# wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb # sudo dpkg -i packages-microsoft-prod.deb # apt install apt-transport-https # apt update # apt install dotnet-sdk-2.1
Для других версий ссылку на deb пакет можно посмотреть на отдельной странице. В дополнение ставим несколько пакетов зависимостей ноды:
# apt install libleveldb-dev sqlite3 libsqlite3-dev libunwind8-dev
Качаем со страницы https://github.com/neo-project/neo-cli/releases последнюю версию под свою систему и распаковываем.
# cd ~ # wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip # unzip neo-cli-linux-x64.zip
Запускаем Neo node:
# dotnet /root/neo-cli/neo-cli.dll /rpc
Откроется cli интерфейс. Можно ввести команду help и посмотреть актуальные команды. Как сервис из коробки эта нода работать не умеет, поэтому запускаем в screen и добавляем в /etc/rc.local для автозагрузки:
screen -d -m -S neo dotnet /root/neo-cli/neo-cli.dll /rpc
В своей работе neo node использует следующие порты:
Мониторинг работы нод
Сразу скажу, что все ноды у меня работали стабильно и не падали, кроме Cardano. Из-за нее пришлось озаботиться отдельным мониторингом нод. На помощь пришел zabbix. Для мониторинга я использовал стандартную проверку доступности сервиса по tcp порту. Заббикс просто обращается на указанный адрес и порт и проверяет, что служба принимает подключения.
Покажу на примере ноды Cardano. На Zabbix server я добавил элемент данных:
Создал на основе этого элемента триггер:
Просто узнать, что нода упала мало. Нужно ее еще обратно поднять. Для этого на самой ноде я сделал простой скрипт перезапуска.
#!/bin/bash sc=`pidof SCREEN` kill $sc screen -d -m -S cardano sudo -u cardano /home/cardano/cardano-sl/connect-to-mainnet
Скрипт находит pid сессии screen, в которой запущена нода и закрывает ее. После этого запускает ноду заново. Далее я создал отдельное действие в заббиксе, которое выполняло указанный скрипт на сервере в случае, если срабатывал триггер.
Конкретно с Cardano этот способ успешно работал и падения ноды перестали замечать. Она успешно перезапускалась.
Заключение
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!
Если у кого-то есть опыт работы с нодами криптовалют, прошу поделиться. Тема не очень популярная. В рунете я вообще не видел информацию на эту тему. В глобальном интернете каких-то подробных руководств или обмена опытом тоже нет. В основном только инструкции от разработчиков по установке и настройке.
Сам софт для нод мне показался каким-то недоделанным что ли. Как-будто на коленке по-быстрому собрали. Никто, кроме биткоина, не умеет работать как служба. Приходится костылить на месте, чтобы нормально запускать и управлять нодами.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Ethereum: Как запустить ноду с приватной сеткой
Для разработки тестирования под Ethereum вместо публичной удобнее использовать не публичную сеть, пускай даже и тестову, а свою — приватную (Private Network). Для этого достаточно установить на свою рабочую станцию пакет с бинарником ноды (geth) и создать один конфигурационный файл (genesis file) с описанием новой сети.
Далее на примере описывается процесс инсталяции и первоначальной конфигурации приватной Ethereum сети из одной ноды для Ubuntu 16.04. Актуально как мининум для geth 1.6.7-stable-ab5646c5
Итак..
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
| sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum |
(По мотивам Private Network — ethereum/go-ethereum)
Блокчейн — цепочка блоков, у неё есть начало — первый блок, с которого всё и начинается. Собственно, genesis-файл содержит описание, как его создавать.
Создаём genesis-файл со следующим содержимым:
{
«config»: {
«chainId»: 15,
«homesteadBlock»: 0,
«eip155Block»: 0,
«eip158Block»: 0
},
«difficulty»: «20»,
«gasLimit»: «2100000»,
«alloc»: {
}
}
| { «config»: { «chainId»: 15, «homesteadBlock»: 0, «eip155Block»: 0, «eip158Block»: 0 }, «difficulty»: «20», «gasLimit»: «2100000», «alloc»: { } } |
(описания полей в файле могут быть найдены в Beginners guide to Ethereum (3) — explain the genesis file and use it to customize your blockchain)
Hint: gasLimit лучше задрать повыше (100500000000 стопицот миллионов?), иначе при деплое очередного умного контракта требуемое количество gas может привысить этот лимит и с деплоем ничего не получится.
Тут необходимо определиться с тем, где у нас будет директория с данными блокчейна. Пусть это будет ./private-chain-data/.
Следующая команда в указанной директории создаёт все необходимые файлы для работы Ethereum ноды:
geth —datadir «./private-chain-data/» init ./genesis.json
| geth —datadir «./private-chain-data/» init ./genesis.json |
geth —datadir «./private-chain-data/»
| geth —datadir «./private-chain-data/» |
но настроек по умолчанию не всегда бывает достаточно, поскольку с нодой может захотеться взаимодействовать через WebSocket или через RPC, сделав при этом доступным тот или иной API:
geth \
—datadir «./private-chain-data/» \
—rpc —rpcport «8080» —rpccorsdomain «*» —rpcapi «db,eth,net,web3,personal,miner» \
—ws —wsorigins «*» —wsapi «db,eth,net,web3,personal,miner»
| geth \ —datadir «./private-chain-data/» \ —rpc —rpcport «8080» —rpccorsdomain «*» —rpcapi «db,eth,net,web3,personal,miner» \ —ws —wsorigins «*» —wsapi «db,eth,net,web3,personal,miner» |
тут мы запустили ноду с RPC на порту 8080 отличном от значения по умолчанию (8545) и WebSocket’ами на порту по умолчанию (8546), и открыли доступ к некоторым интерфейсам.
Описание этих и других параметров geth можно посмотреть тут.
Консоль — это то место, где посредством Ethereum JavaScript API можно напрямую взаимодействовать с нодой. Ниже будет пару примеров.
И так, можно при запуске ноды указать, что нужна консоль:
Но это не всегда удобно.
Следующей командой можно прицепится к уже запущенной ноде по HTTP:
geth attach http://127.0.0.1:8080
| geth attach http://127.0.0.1:8080 |
Либо по IPC-протоколу:
geth attach ipc://<путь от корневой папки>/private-chain-data/geth.ipc
| geth attach ipc://<путь от корневой папки>/private-chain-data/geth.ipc |
Иногда при тестировании удобно сразу иметь адрес с ненулевым балансом. Далее описывается, как этого достичь.
В javascript-консоли:
> web3.personal.newAccount(‘1q2w3e’)
«0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c»
>
| > web3.personal.newAccount(‘1q2w3e’) «0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c» > |
Получившуюся строку вставить в genesis.json, указав необходимое значение для баланса:
«alloc»: {
«0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c»: { «balance»: «20000000000000000000» }
}
| «alloc»: { «0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c»: { «balance»: «20000000000000000000» } } |
Поскольку было изменено описание первоначального блока, просто так подсунуть этот файл в geth init повидимому не удастся.
Поэтому:
- Остановить запущенный geth-процесс
- Удалить из ./private-chain-data/ всё кроме папки keystore/ — там лежит в том числе и закодированный приватный ключ только что созданного адреса
- Запустить geth init, как это проделывалось ранее
- Запустить geth
Через javascript-консоль теперь можно проверить наличие аккаунта и непустого у него баланса:
> primary = eth.accounts[0]
«0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c»
> eth.getBalance(primary)
20000000000000000000
>
| > primary = eth.accounts[0] «0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c» > eth.getBalance(primary) 20000000000000000000 > |
Но, в принципе, можно не усложнять, а просто намайнить тестовой криптовалюты самостоятельно. См. ниже.
Чтобы тестовый блокчейн наконец заработал, необходимо чтобы кто-то валидировал транзакции и ковал блоки — майнер.
Майнера можно запустить из javascript-консоли:
Цифра в скобках обозначает количество доступных для майнера тредов.
Так, если кроме валидации транзакций, необходимо, чтобы где-нибудь накапливалась валюта, в консоли укажите соответствующий адрес:
> web3.miner.setEtherbase(‘0xC6F7651506fb2dfA3362932fF0f174F9ccbAebCF’)
| > web3.miner.setEtherbase(‘0xC6F7651506fb2dfA3362932fF0f174F9ccbAebCF’) |
Остановить (например, чтобы комп не гудел вентиляторами охлаждения процессора) майнера можно так:
Второй вариант: запустить geth в роли майнера:
geth <…> —mine —minerthreads=1 —etherbase=0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c
| geth <…> —mine —minerthreads=1 —etherbase=0xa85968c7ca4ac0b0bcd91b6bf4327d3336b1571c |
В коммандной строке можно так же указать во сколько тредов запускать майнера, и на какой адрес зачислять намайненное.
***
Для начала этого бесхитростного введения вполне достаточно.
Источники:
Похожее
Обзор клиентов для сети Ethereum, зима 2016 — EnsRationis.com
В этом материале будут рассмотрены существующие на данный момент (январь 2016) клиенты для сети Ethereum. Обращаю внимание, что буду рассматривать только запуск и подготовку клиентов к работе и не буду рассматривать настройку для соло майнинга или подготовку к работе с компилятором смарт контрактов.
1.Geth
Имплементация Ethereum на Golang. На данный момент является основным и официальным клиентом для сети. Существуют сборки под основные платформы:
Официальный репо на github:
https://github.com/ethereum/go-ethereum
Инструкция по установке и сборке:
https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
Использование
Я рассмотрю использование Geth на Windows и Ubuntu. Если вы хотите поднять ноду или попробовать написать умные контракты для сети Ethereum, то эта инструкция как раз для вас.
На Windows всё просто: качаете архив, распаковываете, запускаете. Выглядит это примерно так:
Запуск клиента сети Ethereum Geth
Дальше нужно немного подождать, пока начнется синхронизация:
Синхронизация клиента сети Ethereum Geth
Примечание к картинке: #6265 — это № блока, на котором сейчас находится синхронизация.
На Ubuntu, вам нужно выполнить следующую инструкцию: https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu
Остальное почти не отличается от Windows.
Состояние сети можно посмотреть по ссылке: stats.ethdev.com
Когда ваша нода скачает все блоки, можно приступать к работе. Для удобства и для того, чтобы сообщения о новых блоках не мешали работе, лучше открыть дополнительное окно cmd или terminal и запустить geth командой:
geth attach
Далее вам нужно создать аккаунт, для этого используется команда personal.newAccount(). Geth запросит пароль, и в ответ вы увидите ваш адрес.
Создание аккаунта сети Ethereum в клиенте Geth
Полный список команд консоли можно посмотреть по ссылке: https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console
Список опций запуска: https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options
Блокчейн, ключи и вообще все файлы относящиеся к Geth по умолчанию хранятся в папке:
Windows — c:\Users\Ваш User\AppData\Ethereum
Ubuntu — /home/User/.ethereum
Папка с ключами от аккаунтов — KeyStore (не потеряйте).
Теперь у вас есть нода и адрес, вы полноценный участник сети Ethereum.
2.Eth
Имплементация Ethereum на C++. Разрабатывалась и поддерживалась Гэвином Вудом, но недавно он объявил об уходе из проекта, поэтому судьба этой версии туманна.
Релизы можно скачать по этой ссылке:
https://github.com/ethereum/webthree-umbrella/releases
Для Windows и OS X есть инсталляторы. Как установить на Ubuntu можно почитать здесь:
https://gavofyork.gitbooks.io/turboethereum/content/chapter1.html
Для Windows, дополнительно нужно вот это:
https://www.microsoft.com/en-US/download/details.aspx?id=40784
Кстати, если вы собираетесь заняться майнингом, в комплекте Cpp-Ethereum как раз идет майнер для GPU.
Когда вы запустите eth, он сразу попросит вас создать аккаунт, запросив пароль. Запускайте командой eth console.
Запуск клиента сети Ethereum — Eth
Через некоторое время начнется синхронизация, и вы будете получать много сообщений, которые могут мешать работе. Чтобы избавится от них, используйте команду: web3.admin.setVerbosity(0)
Остальные команды, такие же как в Geth: https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console
Блокчейн, ключи и вообще все файлы относящиеся к Eth по умолчанию хранятся в папке:
Windows — c:\Users\Ваш User\AppData\Ethereum
Ubuntu — /home/User/.ethereum
Файлы с ключами от аккаунтов — Keys.info, keys.info.salt (не потеряйте).
ВНИМАНИЕ!!! Файлы ключей Eth и Geth несовместимы, т.е. вы не сможете просто переписать в Eth ключи от Geth и наоборот. Поэтому единственным способом передать средства будет отправка на адрес в другом клиенте.
3.Mist
Первый официальный GUI клиент для сети Ethereum. Может использовать как ноду Geth либо Eth, поэтому если один из этих клиентов был у вас установлен, ваши аккаунты автоматически подгрузятся. По умолчанию использует Geth, если вы пользовались Eth, переключите в настройках клиент.
Последние релизы доступны по ссылке, последняя версия Wallet 0.3.8 (Beta 5):
https://github.com/ethereum/mist/releases
Запускаем
Запуск GUI клиента Mist сети Ethereum
Идет поиск нод… Необходимо немного подождать.
Процесс синхронизации в Mist
Началась синхронизация. Когда она закончится, откроется следующее окно:
Стартовое окно клиента сети Ethereum Mist в Windows
Чтобы создать аккаунт, нужно нажать на кнопку «Add Account», ввести пароль.
Создание аккаунта сети Ethereum в Mist
Появился аккаунт Etherbase, это ваш основной аккаунт в сети Ethereum. При нажатии на него откроется окно с информацией о нем, в котором также можно отправить с него средства, нажав кнопку Deposit.
Обращаю внимание, что можно еще создать Contract Based Wallet — кошелек на основе умного контракта. Если вы не обладаете знаниями об умных контрактах, лучше не отправляйте на такие кошельки много средств. В этом обзоре я не буду описывать, как с ними работать.
Создание smart контракта для хранения Ether с помощью Mist
Кошелек готов к работе. Он еще умеет работать с умными контрактами, но это тема для отдельного обзора.
4.Alethzero и AlethOne
В комплект Cpp-Ethereum, кроме eth и ethminer, входят еще:
- Alethzero
- AlethOne
- Еще несколько продуктов, о них говорить сегодня не будем
Alethzero — это не совсем клиент, скорее, среда разработки. К сожалению, в последнем релизе запустить его так и не удалось. Выглядит он примерно так:
Запущенный клиент AlethZero
Отличается глючность, тормознутостью, продукт не доделанный, а после ухода Гэвина Вуда надежды на его развитие почти пропали.
AlethOne — это простейший кошелек с встроенной возможностью майнинга. Работает на eth:
Запуск майнинга Ether в клиенте AlethZero
Можно майнить в соло и на пул. Подойдет для нетребовательного пользователя.
Обзор подготовлен Евгением Радченко. Если у вас есть какие-либо вопросы, пишите в комментарии или в twitter @EnsRationis
Похожие книги
Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Эта книга поможет быстро приступить к созданию смарт-контактов Solidity и распределенных приложений DApp для блокчейна Ethereum. Она состоит из 12 уроков с практическими заданиями. Выполнив их, читатель сможет создавать собственные локальные узлы Ethereum, публиковать смарт-контракты и вызывать их методы, обмениваться данными между реальным миром и смарт-контрактами с помощью оракулов, работать с сетью Rinkeby. Книга адресована всем, кто интересуется передовыми технологиями в области блокчейнов и хочет быстро получить знания, позволяющие заниматься интересной и перспективной работой.
Создание Православной Церкви Украины как новый раскол и феномен протестантизма восточного обряда
В книге описывается как хронология, так и «анатомия» создания новой конфессии, находящейся, несмотря на претенциозное название, за границами Единой Святой Соборной и Апостольской Церкви. Подробно объясняется, почему с православной догматической и канонической точки зрения ПЦУ не является Церковью, а также причины и обстоятельства вероучительного падения Константинопольского Патриархата. Анализируется контекст этого падения и появления «конфессии Думенко» – феномен самого проекта «Украины как антиРоссии», являющийся даже не национализмом, а «политическим униатством», «негативной идентичностью» (автор термина А. В. Щипков), не утверждающей, а разрушающей все то, что веками строила Юго-Западная Русь (Малороссия, Новороссия и Подкарпатская Русь). Этот феномен подробно описал протопресвитер Петр Коханик в своей англоязычной книге «Украина как крупнейшая ложь нашего времени. Кирилл Фролов показывает, что эта «негативная идентичность», «униатская мутация», не имея своего цивилизационного, национального фундамента, заимствовала «фундамент» нацизма, ярким примером чего являются «официальная икона» ПЦУ, отправленная для поклонения во все воинские части Украины, на которой в качестве «святых» изображены убежденные нацисты и «личные агенты Гитлера» из ОУН-УПА.
Робототехника: практическое введение для детей и взрослых
Это практическое руководство поможет школьникам и взрослым быстро войти в увлекательный мир робототехники. Вы будете изучать аппаратное и программное обеспечение роботов на примере дистанционно управляемой модели марсохода BoxRover, способного измерять и передавать «на землю» данные телеметрии. Для создания подобного ровера вам не потребуются знания какого-либо языка программирования – все можно будет сделать при помощи графической среды Microsoft MakeCode. В отличие от аналогичных руководств, ориентированных на использование готовых наборов и конструкторов, эта книга поможет вам глубже разобраться в теме. Вы сможете подготовиться к созданию более сложных роботов и устройств для создания умного дома (IOT-устройств).
Энциклопедия древнескандинавской мифологии и культуры. Том 1
Книга представляет собой сборник статей А. Фролова с сайта «Рунариум» по состоянию на сентябрь 2018 года. В ней представлены как широко известные факты по культуре раннесредневековой Скандинавии и Исландии, так и авторские теоретические изыскания, основанные на археологических находках и актуальных научных исследованиях отечественных и зарубежных скандинавоведов. Рассмотрены основные эддические мифы, эпические источники, а также современные реконструкции рунических практик.
Святые и пророки Белой Руси
Книга «Святые и пророки Белой Руси» призвана открыть глаза нашим современникам на тот очевидный для серьезных историков, филологов и православных богословов факт, что и в Москве, и во Владивостоке, и в Бресте, и в Гродно, в Полоцке и Витебске, и в Киеве с Ужгородом живет один православный русский народ. Все усилия тоталитарной русофобской пропаганды, призванные насадить в умах и сердцах русских людей Белой и Малой Руси противоположное, будут сведены на нет, если обманутым «геббельсовской» русофобской пропагандой людям привести документы, факты их собственной истории «от Адама до Потсдама» и выстраданную, научно и богословски выверенную позицию великих людей Белой Руси, многие из которых прославлены Русской Православной Церковью в лике святых, а те, кто из описанных в книге еще не прославлен, являются великими национальными пророками и светочами Белой и Малой Руси. И личности, мысли, аргументы, слова и дела этих великих светочей и подлинных национальных героев описаны в книге, где раскрывается эпопея Православного Русского Сопротивления и русского гражданского общества, православных братств и интеллектуальных центров Белой и Малой Руси, которые эффективно противостояли попыткам лишить народ Белоруссии и Малороссии своей религиозной (православной) и национальной (русской) идентичности, насадить вместо них «негативные идентичности» (автор термина – известный православный аналитик А.В. Щипков) «змагарства» и «мазепинства», выдать их за «национальное возрождение». Но святые и национальные пророки Белой, Малой и Подкарпатской Руси насмерть стояли за свои Православную веру и русское национальное самосознание, Следовательно, вышеупомянутые искусственные, сфабрикованные могильщиками Православия и русского народа «негативные идентичности» являются не национальным возрождением, не «национализмом», а их уничтожением. О том, что бывает, когда у обманутых русских людей открываются глаза на обман, свидетельствует приводимая в книге история святого брестского игумена Афанасия (Филипповича). Когда этот образованнейший белорусский юноша узнал о том, что литовский канцлер Лев Сапега использовал его против России, сделав воспитателем готовившегося канцлером марионеточного правителя оккупированной России, Филиппович стал монахом и добрался до русского царя Михаила Федоровича Романова, рассказал ему о готовящемся против него и России заговоре и оккупации. Затем, вернувшись в Брест, посвятил свою жизнь борьбе с унией и за воссоединение Великой, Малой и Белой России, стал идейным вдохновителем православного русского восстания во главе с гетманом Богданом Хмельницким, за что три раза арестовывался, подвергался страшным пыткам и в итоге был расстрелян оккупантами. Описанные в книге борьба и подвиг «святого белорусского партизана» игумена Афанасия и многих таких, как он, святых и пророков Белой Руси откроют глаза и станут примером для многих обманутых антиправославной антирусской (следовательно – антибелорусской) пропагандой и позволят остановить готовящийся в Белоруссии «украинский» сценарий, а также приблизят час неизбежного воссоединения Великой, Малой и Белой Руси, важным шагом к которому станет реальное строительство Союзного Государства Белоруссии и России.
Клиническая кризология в кардионеврологии. Руководство для врачей
Руководство впервые обобщает современные представления о причинах и механизмах перехода болезни в состояние обострения. Сопоставление результатов традиционного клинического исследования с динамическим анализом привело к рождению нового направления в кардионеврологии – клинической кризологии. Многолетний опыт практической врачебной деятельности и научной работы позволил авторам обнаружить и описать динамические предикторы обострения патологического процесса, обосновать важные закономерности в течении ишемической болезни сердца и мозга, создать принципиально новую систему прогнозирования гемодинамических кризов, сформулировать принципы предупреждения катастрофического течения болезни. Книга ориентирована на кардиологов, неврологов, врачей общей практики, преподавателей медицинских ВУЗов.
Создатель снов
Бывают мгновения, меняющие ход истории, разбивающие жизнь на «до» и «после». И часто те, кто совершает решающий шаг, не могут даже предположить, к чему приведут их действия… Близнецы Димка, Витя и Настя выросли в Спасгороде – огромной башне из стали, надежно хранящей жителей от опасностей внешнего мира. Как и другие дети, они ходили в школу, старались не огорчать родителей и соблюдать правила Смотрителей – таинственной организации, управляющей жизнью людей и Лифтов. Но однажды близнецы нашли странную дверь. И вспомнили: каждый из них видел точно такую же во сне. Судьба города изменилась в тот миг, когда ребята решили узнать, что за ней…
Рецепт успеха: подумать и понять. Ну давайте уже, наконец, подумаем, а?!
Это умная книга о том, как устроено думанье. Простая и строгая, она написана так, чтобы читать её было легко любому, кто хочет этому думанью научиться. Но думанье – как рыбка: без труда не поймаешь. Труд предполагается тяжкий, особенно вначале. Затем – всё легче и легче. Готовы трудиться – вперёд! Не готовы – наверное, лучше пройти мимо этой книги. Понять и применить подход, описанный в книге, может любой желающий. Рекомендуемый автором возраст читателей – от старшеклассников и выше.
Золотой ранет (сборник)
Книга «Золотой ранет» посвящается памяти автора, чье творчество многие ценители поэзии признали, как сильное и высокое, способное окрылять и возвышать душу. Так, в новый сборник известного русского поэта, члена Союза писателей России Владимира Фролова вошли избранные и ранее не опубликованные стихи. Его произведения – это поиск ответов на вечные вопросы, размышления на бессмертные темы – о смысле жизни, о всеобъемлющей и трепетной любви… Это – исповедь, откровение, молитва.
Тайна Нестрашного переулка
2018 год, Советский Союз. Трое друзей, живущих в тихом городке, где никогда ничего не происходит. Точнее, не происходило до этого лета. А потом начали пропадать люди, среди которых оказался отец главного героя – Артема. Ему и его друзьям предстоит распутать дело, из-за которого на ушах стоит вся страна, и по ходу не раз проверить свою дружбу на прочность. Но все это еще впереди. А сейчас Артем стоит напротив Нестрашного переулка, собираясь сделать шаг в темноту. Приключение начинается…
Правители России и развитие строительства
Дано краткое жизнеописание всех российских правителей, независимо от их роли в отечественной истории – от князя Рюрика до президента Российской Федерации В.В. Путина, т. е. от зарождения и развития Древней Руси до становления демократического правового государства – современной России. Проанализирована деятельность каждого правителя, его личный вклад в развитие строительства и архитектуры на общем фоне определенного исторического периода, внутренней и внешней политики государства. Книга иллюстрирована портретами правителей и изображениями созданных в период их правления памятников строительного искусства, а также фотографиями уникальных инженерно-строительных сооружений XX–XXI вв. Для историков, культурологов, философов, социологов и специалистов строительной отрасли, студентов строительных вузов и колледжей, а также широкого круга читателей, интересующихся российской историей и культурой, проблемами развития строительства.
Вижу цель! Методическое руководство по постановке и достижению целей
Причиной практически всех проблем людей является непонимание ими собственных целей. В этой книге предлагается простой и ясный подход к осознанию, постановке и достижению цели любым мыслящим человеком – от старшеклассника до пенсионера. Как всегда, есть подвох: для достижения успеха придётся поработать. Долго, много и упорно. Зато цели будут качественно поставлены и неотвратимо достигнуты. Выбор за вами, дорогой читатель!
Кровь ангелов. Левиафан: Книга 4
Впервые за тысячи лет у Древних появился шанс взять реванш и Карн, смертный чей клинок направляет сама судьба, поведет в бой остатки некогда величайшей армии во Вселенной против вероломных Иных Богов! То есть – так должно было случиться, но мир вновь изменился и парень уже не уверен, на чьей он стороне и ради чего проливает золотую кровь небесного воинства… Книга содержит нецензурную брань.
Проклятые земли. Левиафан: Книга 2
Аудун пришел в этот мир ради мести и не остановится ни перед чем, чтобы покарать предателя, которого здесь знают под именем Белен. Рунные камни, хирд конунга Эйрика, молодой шаман и великий кузнец – для него все это лишь инструменты, с помощью которых он объединит нордманов, соберет величайшую армию севера и поставит земли притенов на колени. И рассмеется, когда рукоять клинка станет скользкой от крови избранника богов…
Костромские записки, или Поездка к Снегурочке. Стёпа, 24 годика
Один очень специальный корреспондент одного очень специального туристического агентства отправляется в путешествие для детей и их родителей – в гости к Снегурочке. По пути до Костромы он успевает завести новых друзей, влюбиться и получить море впечатлений, которых хватило пусть на маленькую, но книгу.
Пасынки безмолвия
Сибирь, 2261 год. Человечество эволюционировало, в корне изменив способы коммуникаций, добившись настоящего прорыва в технологиях и уничтожив большую часть обитаемого мира. Но изменился ли человек? Пашка Сорока – молодой торговец оружием и припасами – рисково играет с судьбой и вытягивает несчастливый билет. Яна Погремушка – опытный егерь из Циферблата – остервенело зарывается под землю, чтобы выкрасть очередной секрет Девяти Куполов. Лишенные дара речи корпатрицианты презрительно именуют обитателей Циферблата пустышечниками и выходят на ритуальную охоту, облачившись в бронированные скафандры. Их всех ждет Заповедник и стеклянная башня «Голиаф», где пересекаются все пути. Именно на ее вершине станет ясно, может ли слово ранить, кто в этом мире остался зверем, а кто превратился в человека…
Хроники Тиа-ра: битва за Огненный остров
Меня зовут Тиа-ра, и я – наездник с Огненного острова. Кто-то назовет мою историю рассказом или даже фантазией о механических птицах, парящих островах, небесных камнях, мистиках и технократах, насильственном народовластии и немой войне. Пусть так, но я бы сказал иначе. Моя история – об умении распоряжаться свободой и той цене, которую иногда приходится платить за эту самую свободу. А еще – о гордости, жестокости, преданности и женщине, которая заслуживает этой преданности. Да, и о механических птицах. Все-таки о механических птицах.
Яма на дне колодца
Говорят, самая непроглядная ночь наступает перед рассветом… Но как дождаться рассветных лучей, если жизнь загнала в глубокий и мрачный колодец, куда отродясь не заглядывало солнце? Соглашаясь на заманчивую работу детским репетитором в необычный особняк Новосибирска, Денис на собственной шкуре узнает, что иногда единственный выход – рыть еще глубже. У него непростое прошлое, тягостное искореженное детство и совсем не радужное настоящее. Но даже в тяжелых странствиях, не потеряв человеческого облика, теперь Денис не сможет даже представить, какие чудовищные испытания ждут его впереди и на какие жертвы придется пойти, чтобы сохранить жизнь и рассудок. Потому что подчас шелковая лента вяжет куда крепче стальной цепи. А еще за Денисом наблюдает тот, кто держит эту ленту в своей иссохшей руке, едва ли напоминающей человеческую… Читайте жесткий, мощный и безжалостный роман Андрея Фролова о людях и нелюдях, судьбе, расплате за грехи и кровавом искуплении.
Правда о зомби. Секретные проекты спецслужб
Интернет и печатные СМИ взорвала новость: человечеству грозит эпидемия зомби! Распространение по миру эпидемии заболевания, превращающего человека в зомби, реально, – заявил авторитет в научных кругах британский профессор Остин (он входит в группу по изучению феномена зомбизма факультета генетики Университета Глазго). А ведь еще недавно мы могли думать, что зомби – это только мертвецы, оживляемые тайными методами, закодированные киллеры из спецслужб, или обычные люди, чья психика помимо их воли подавлена специальными препаратами. Так что это на самом деле: утечка неудачной разработки биологического оружия или просто страшилка нашего времени? Истоки этого бедствия, угрожающего человечеству, лежат в XX веке, – отвечает автор многих книг и бестселлеров, известный политолог Юрий Фролов. И виновны в нем те, кто, объединяя научные и оккультно-мистические аспекты знаний, замышлял свои тайные операции над людьми в секретных лабораториях СССР, США, Великобритании, Германии, Японии…
Следы искателя истины. Стихи и песни
То, что раньше являлось нормой То теперь уже андеграунд Как-то время летит проворно Верховодит какой-то даун А, кто честен, тот на задворках Ищет путь свой на минном поле Фотокамеры (и затворы) В предвкушеньи геройской роли…
Переизбранное
Предлагаю вниманию читателя подборку стихов различной тематики, написанных автором в 70-80-х годах прошлого столетия. Благодарю за внимание.
Перешагнуть Россию
Это книга о пешем путешествии через всю Россию. Точнее сказать, это дневниковые записи человека, исполнившего свою мечту. Начало и подготовка, трудности и их преодоление. Выжимка самых интересных фотографий не даст заскучать и заставит пережить вместе с героем каждое мгновение путешествия «Пеший марш-бросок Выборг – Владивосток».
Год свернувшегося ежа. Новые стихи
Новые стихи – это дорога, по которой идешь и не знаешь, что ожидает тебя впереди. Когда спускаешься все ниже, и ниже, с каждой строчкой, по неуверенным ступеням, в белое безмолвие тумана чистого листа. И вдруг озарение высвечивает непредсказуемый, но явный и желанный смысл этого странного путешествия в неизвестное.
Два хищных взгляда
«Теперь Ирэн почти бежала, ее каблучки отбивали по гладкому бетону тревожную чечетку безнадежно опаздывающего. В голове жужжал навязчивый рефрен – в этой жизни абсолютно все не то, чем кажется. Новый молл на окраине города работает отнюдь не круглосуточно; симпатичные охранники на поверку выходят бездушными козлами, наглухо иммунными к флирту; да и сама она, если на то пошло, вовсе не успешный бьюти-блогер и фэшн-чиф Ирэн Джи Гумилева, а усталая разведенка Иришка Григорьевна Вяхирева с кабальным кредитом на шее…»
Стратагема несгораемой пешки
На закате XXI века государства почти подменены Транснациональными Статусами. С затуханием глобальных конфликтов привычные армии остались не у дел, а тактические бизнес-задачи ТрансСтатов решаются членами Шахматного Клуба – универсальными, дорогостоящими и профессиональными воинами-пешками, кратковременно собираемыми в группы для розыгрыша опасных партий. Но сможет ли высокоуровневая пешка скрупулезно следовать намеченной стратегии, когда на игровой доске стоит враг, когда-то бывший напарником? Две сильнейшие команды Клуба сойдутся в смертельной партии, и победит в ней лишь тот, кто не позволит ярости затмить разум, предугадает следующую атаку противника и сумеет заглянуть на несколько ходов вперед. Читайте новый роман Андрея Фролова, построенный на стыке классического киберпанка, острого шпионского детектива и ураганного реалистичного боевика!
Параметры командной строки | Go Ethereum
$ geth - справка
ИМЯ:
geth - интерфейс командной строки go-ethereum
Авторские права 2013-2019 Авторы go-ethereum
ПРИМЕНЕНИЕ:
geth [параметры] команда [параметры команды] [аргументы ...]
ВЕРСИЯ:
1.9.19-стабильный-3e064192
КОМАНДЫ:
аккаунт Управление аккаунтами
прикрепить Запустить интерактивную среду JavaScript (подключиться к узлу)
console Запустите интерактивную среду JavaScript
copydb Создать локальную цепочку из целевой папки chaindata
дамп Дамп определенного блока из хранилища
dumpconfig Показать значения конфигурации
dumpgenesis Сохраняет конфигурацию JSON блока генезиса в стандартный вывод
экспорт Экспорт блокчейна в файл
export-preimages Экспорт базы данных прообразов в поток RLP
import Импортировать файл блокчейна
import-preimages Импортировать базу данных прообразов из потока RLP
init Bootstrap и инициализируйте новый блок генезиса
inspect Проверить размер хранилища для каждого типа данных в базе данных
js Выполнить указанные файлы JavaScript
лицензия Показать информацию о лицензии
makecache Создать кеш проверки ethash (для тестирования)
makedag Создать DAG для майнинга ethash (для тестирования)
удаленоb Удалить блокчейн и базы данных состояний
retesteth Запускает geth в режиме retesteth
show-deprecated-flags Показать устаревшие флаги
версия Распечатать номера версий
кошелек Управление предпродажными кошельками Ethereum
help, h Показывает список команд или справку для одной команды
ОПЦИИ ETHEREUM:
--config значение файл конфигурации TOML
--datadir value Каталог данных для баз данных и хранилища ключей (по умолчанию: "~ /.ethereum ")
--datadir.ancient value Каталог данных для древних сегментов цепи (по умолчанию = внутри chaindata)
--keystore значение Каталог для хранилища ключей (по умолчанию = внутри datadir)
--nousb Отключает мониторинг аппаратных USB-кошельков и управление ими.
--pcscdpath value Путь к файлу сокета демона смарт-карты (pcscd) (по умолчанию: "/run/pcscd/pcscd.comm")
--networkid значение Идентификатор сети (целое число, 1 = Frontier, 3 = Ropsten, 4 = Rinkeby, 5 = Görli) (по умолчанию: 1)
--goerli Görli network: предварительно настроенная тестовая сеть с подтверждением полномочий
--rinkeby Сеть Rinkeby: предварительно настроенная тестовая сеть для проверки полномочий
--yolov1 Сеть YOLOv1: предварительно настроенная краткосрочная тестовая сеть с подтверждением полномочий.--ropsten Ropsten network: предварительно настроенная тестовая сеть для проверки работоспособности
--syncmode значение Режим синхронизации цепочки блоков («быстрый», «полный» или «легкий») (по умолчанию: быстрый)
--exitwhensynced Выход после завершения синхронизации блоков
--gcmode значение Режим сборки мусора блокчейна ("полный", "архивный") (по умолчанию: "полный")
--txlookuplimit value Число последних блоков для поддержки индексации транзакций по хешу (по умолчанию = индексировать все блоки) (по умолчанию: 0)
--ethstats value URL отчета службы ethstats (nodename: secret @ host: port)
--identity value Имя настраиваемого узла
--lightkdf Уменьшить использование ОЗУ и ЦП при выводе ключей за счет силы KDF
--whitelist значение Сопоставление номеров блоков с хешем, разделенных запятыми ( = )
ЛЕГКИЕ ВАРИАНТЫ КЛИЕНТА:
--свет.serve value Максимальный процент времени, разрешенный для обслуживания запросов LES (многопоточная обработка допускает значения более 100) (по умолчанию: 0)
--light.ingress значение Ограничение входящей полосы пропускания для обслуживания легких клиентов (килобайт / сек, 0 = без ограничений) (по умолчанию: 0)
--light.egress value Ограничение исходящей пропускной способности для обслуживания легких клиентов (килобайт / сек, 0 = без ограничений) (по умолчанию: 0)
--light.maxpeers value Максимальное количество легких клиентов для обслуживания или легких серверов для подключения (по умолчанию: 100)
--ulc.стоимость серверов Список доверенных сверхлегких серверов
--ulc.fraction value Минимальный% доверенных сверхлегких серверов, необходимых для объявления новой головы (по умолчанию: 75)
--ulc.onlyannounce Ультралегкий сервер отправляет только объявления
--light.nopruning Отключить обрезку данных древних легких цепей
ВАРИАНТЫ ЦЕПИ РАЗРАБОТЧИКА:
--dev Эфемерная сеть подтверждения полномочий с предварительно профинансированной учетной записью разработчика, майнинг включен
- дев.значение периода Период блокировки для использования в режиме разработчика (0 = мой, только если транзакция отложена) (по умолчанию: 0)
ВАРИАНТЫ ETHASH:
--ethash.cachedir значение Каталог для хранения кешей проверки ethash (по умолчанию = внутри datadir)
--ethash.cachesinmem значение Количество последних кешей ethash, которые нужно хранить в памяти (каждый по 16 МБ) (по умолчанию: 2)
--ethash.cachesondisk значение Количество последних кешей ethash, которые нужно хранить на диске (по 16 МБ) (по умолчанию: 3)
--ethash.cacheslockmmap Блокировать карты памяти недавних кешей ethash
--ethash.dagdir value Каталог для хранения групп DAG для майнинга ethash (по умолчанию: "~ / .ethash")
--ethash.dagsinmem value Число последних DAG-групп майнинга ethash для хранения в памяти (1 + ГБ каждый) (по умолчанию: 1)
--ethash.dagsondisk value Число последних групп DAG для майнинга ethash для хранения на диске (1 + ГБ каждый) (по умолчанию: 2)
--ethash.dagslockmmap Блокировать карты памяти для последних групп DAG-майнинга ethash
ОПЦИИ ТРАНЗАКЦИОННОГО ПУЛА:
--txpool.locals значение Учетные записи, разделенные запятыми, для обработки как локальные (без сброса, приоритетное включение)
--txpool.nolocals Отключает освобождение от цены для локально представленных транзакций
--txpool.journal значение Журнал диска для локальной транзакции, чтобы пережить перезапуск узла (по умолчанию: "transaction.rlp")
--txpool.rejournal значение Интервал времени для регенерации локального журнала транзакций (по умолчанию: 1h0m0s)
--txpool.pricelimit значение Минимальный лимит цены на газ, который необходимо применить для принятия в пул (по умолчанию: 1)
--txpool.pricebump value Процент повышения цены для замены уже существующей транзакции (по умолчанию: 10)
--txpool.accountlots value Минимальное количество исполняемых слотов транзакций, гарантированное для каждой учетной записи (по умолчанию: 16)
--txpool.globalslots значение Максимальное количество исполняемых слотов транзакций для всех учетных записей (по умолчанию: 4096)
--txpool.accountqueue значение Максимальное количество неисполняемых слотов транзакций, разрешенных для одной учетной записи (по умолчанию: 64)
--txpool.globalqueue значение Максимальное количество неисполняемых слотов транзакций для всех учетных записей (по умолчанию: 1024)
--txpool.lifetime значение Максимальное время, в течение которого неисполняемая транзакция находится в очереди (по умолчанию: 3h0m0s)
ОПЦИИ НАСТРОЙКИ ПРОИЗВОДИТЕЛЬНОСТИ:
--cache значение Мегабайты памяти, выделенные для внутреннего кэширования (по умолчанию = 4096 полный узел основной сети, 128 облегченный режим) (по умолчанию: 1024)
- кэш.значение базы данных Процент разрешенной кэш-памяти, используемой для базы данных io (по умолчанию: 50)
--cache.trie значение Процент объема кэш-памяти, используемого для кэширования дерева (по умолчанию = 15% полный режим, 30% режим архива) (по умолчанию: 15)
--cache.trie.journal value Каталог журнала диска для trie-кеша, который выдерживает перезапуск узла (по умолчанию: "triecache")
--cache.trie.rejournal значение Интервал времени для регенерации журнала кэша trie (по умолчанию: 1h0m0s)
--cache.gc value Процент кэш-памяти, используемый для удаления дерева (по умолчанию = 25% полный режим, 0% режим архива) (по умолчанию: 25)
- кэш.значение моментального снимка Процент объема кэш-памяти, используемого для кэширования моментального снимка (по умолчанию = 10% полный режим, 20% режим архива) (по умолчанию: 10)
--cache.noprefetch Отключить эвристическую предварительную выборку состояния во время импорта блока (меньше операций ввода-вывода процессора и диска, больше времени ожидания данных)
НАСТРОЙКИ АККАУНТА:
--unlock значение Список учетных записей, разделенных запятыми, для разблокировки
--password значение Файл паролей для неинтерактивного ввода пароля
--signer значение Внешняя подписывающая сторона (URL или путь к файлу ipc)
--allow-insecure-unlock Разрешить небезопасную разблокировку учетной записи, когда связанные с учетной записью RPC открываются через http
ОПЦИИ API И КОНСОЛИ:
--ipcdisable Отключить сервер IPC-RPC
--ipcpath значение Имя файла для сокета / канала IPC в каталоге данных (явные пути его избегают)
--http Включить HTTP-RPC-сервер
--http.значение адреса HTTP-RPC-сервер прослушивания интерфейса (по умолчанию: "localhost")
--http.port значение Порт прослушивания HTTP-RPC-сервера (по умолчанию: 8545)
--http.api value API, предлагаемый через интерфейс HTTP-RPC
--http.corsdomain значение Список доменов, разделенных запятыми, от которых принимаются запросы из разных источников (принудительно в браузере)
--http.vhosts значение Список виртуальных хостов, разделенных запятыми, от которых принимаются запросы (принудительно сервер).Принимает подстановочный знак '*'. (по умолчанию: "localhost")
--ws Включить сервер WS-RPC
--ws.addr значение Интерфейс прослушивания сервера WS-RPC (по умолчанию: "localhost")
--ws.port значение Порт прослушивания сервера WS-RPC (по умолчанию: 8546)
--ws.api значение API, предлагаемое через интерфейс WS-RPC
--ws.origins значение Происхождение, от которого принимаются запросы веб-сокетов
--graphql Включить GraphQL на сервере HTTP-RPC.Обратите внимание, что GraphQL можно запустить, только если также запущен HTTP-сервер.
--graphql.corsdomain value Список доменов, разделенных запятыми, от которых принимаются запросы из разных источников (принудительно в браузере)
--graphql.vhosts значение Список виртуальных хостов, разделенных запятыми, от которых принимаются запросы (принудительно сервер). Принимает подстановочный знак '*'. (по умолчанию: "localhost")
--rpc.gascap value Устанавливает ограничение на газ, которое можно использовать в eth_call / EstimationGas (0 = бесконечно) (по умолчанию: 25000000)
--rpc.txfeecap value Устанавливает ограничение на комиссию за транзакцию (в эфире), которая может быть отправлена через RPC API (0 = без ограничения) (по умолчанию: 1)
--jspath loadScript Корневой путь JavaScript для loadScript (по умолчанию: ".")
--exec значение Выполнить оператор JavaScript
--preload value Список файлов JavaScript, разделенных запятыми, для предварительной загрузки в консоль
ВАРИАНТЫ СЕТИ:
-
.
Начало работы с Geth | Перейти Ethereum
Чтобы использовать Geth, вам необходимо сначала установить его. Вы можете установить Geth в различных
способов, которые вы можете найти в разделе «Установка и сборка».
К ним относятся установка через ваш любимый менеджер пакетов, загрузка
автономный предварительно созданный двоичный файл, запускающий его как контейнер докера или сам сборку.
В этом руководстве мы предполагаем, что у вас установлен Geth и вы готовы узнать, как его использовать.
В руководстве показано, как создавать учетные записи, синхронизироваться с сетью и затем отправлять транзакции.
между счетами.
В этом руководстве используется Clef, который является нашим предпочтительным инструментом для подписания транзакций с Geth,
и заменит систему управления аккаунтом Geth.
Инициализировать ключ
Во-первых, инициализируйте Clef случайным начальным значением, которое также зашифровано с помощью заданного вами пароля.
Пароль должен состоять не менее чем из 10 символов.
Создание счетов
Создайте две учетные записи с помощью команды clef newaccount
,
установите пароль для каждого из них и запишите публичный адрес для каждого.
Clef выводит отладочное сообщение о Failed to reload keystore contents
, мы исправим это на более позднем этапе.
Начать Geth
Сети
Вы можете подключить узел Geth к нескольким различным сетям, используя имя сети в качестве аргумента.
К ним относятся основная сеть Ethereum, созданная вами частная сеть,
и три тестовые сети, использующие разные алгоритмы консенсуса:
- Ropsten : Тестовая сеть для проверки работоспособности
- Rinkeby : Проверочная тестовая сеть
- Görli : Проверочная тестовая сеть
Для этого руководства мы используем сеть Görli.
Режимы синхронизации
Вы можете запустить Geth в одном из трех различных режимов синхронизации, используя --syncmode "
аргумент, определяющий тип узла в сети.
Это:
- Full : загружает все блоки (включая заголовки, транзакции и квитанции) и
генерирует состояние цепочки блоков постепенно, выполняя каждый блок. - Быстро (по умолчанию): загружает все блоки (включая заголовки, транзакции и
квитанции), проверяет все заголовки, загружает состояние и сверяет его с
заголовки. - Light : Загружает все заголовки блоков, данные блоков и проверяет некоторые случайным образом.
Для этого урока мы используем light
sync:
Стартовый ключ
Start Clef, установка хранилища ключей и идентификатора цепочки (goerli — 5) для сети, к которой мы хотим подключиться:
ключ --keystore / keystore --chainid 5
Сначала вы видите ошибки об отсутствии хранилища ключей, и мы скоро исправим это.
Начать Geth
Приведенная ниже команда также включает интерфейс Geth RPC.
(который мы рассмотрим ниже) и устанавливает Клефа в качестве подписывающего лица.
geth --goerli --syncmode "light" --rpc --signer = /clef.ipc
Получи
ETH
Если у вас нет Ether в другой учетной записи в сети Görli, вы можете использовать
кран, чтобы отправить ETH на один из адресов вашей новой учетной записи для использования в этом руководстве.
Подключение к Geth с помощью IPC или RPC
Вы можете взаимодействовать с Geth двумя способами: напрямую с узлом с помощью JavaScript.
консоль через IPC или удаленное подключение к узлу через HTTP с помощью RPC.
IPC позволяет вам делать больше, особенно когда дело доходит до создания и взаимодействия
с учетными записями, но вам нужен прямой доступ к узлу.
RPC позволяет удаленным приложениям получать доступ к вашему узлу, но имеет ограничения и безопасность
соображений, и по умолчанию разрешает доступ только к методам в eth
и shh
пространства имен. Узнайте, как переопределить этот параметр в документации RPC.
Использование IPC
Подключиться к консоли
Подключиться к консоли IPC на узле из другого окна терминала:
geth attach
Проверить остаток на счете
web3.fromWei (eth.getBalance (""), "ether")
Для получения баланса счета не требуется подписанная транзакция,
поэтому Клеф не запрашивает одобрения, а Geth возвращает значение.
Отправьте ETH на счет
Отправьте 0,01 ETH со счета, в который вы добавили ETH с помощью сборщика Görli,
на вторую созданную вами учетную запись:
eth.sendTransaction ({from: "", to: "", значение: web3.toWei (0.01, "ether")})
Это действие требует подписания транзакции, поэтому Клеф предлагает вам подтвердить ее, и
если вы это сделаете, запрашивает пароль, с которого вы отправляете ETH.Если пароль
правильно, Гет совершает транзакцию.
Для проверки получите баланс второго счета:
web3.fromWei (eth.getBalance (""), "ether")
Использование RPC
Подключиться к RPC
Вы можете использовать стандартные HTTP-запросы для подключения к узлу Geth с помощью API RPC, например:
curl -X POST http: // : 8545 \
-H "Content-Type: application / json" \
--data '{"jsonrpc": "2.0 "," method ":" "," params ": []," id ": 1} '
Проверить остаток на счете
curl -X POST http: // : 8545 \
-H "Content-Type: application / json" \
--data '{"jsonrpc": "2.0", "method": "eth_getBalance", "params": ["", "latest"], "id": 1}'
Для получения баланса счета не требуется подписанная транзакция,
поэтому Клеф не запрашивает одобрения, а Geth возвращает значение.
Отправьте ETH на счета
Отправить 0.01 ETH из учетной записи, в которую вы добавили ETH с помощью крана Görli, во вторую учетную запись, которую вы создали:
curl -X POST http: // : 8545 \
-H "Content-Type: application / json" \
--data '{"jsonrpc": "2.0", "method": "eth_sendTransaction", "params": [{"from": "", "to": "", "value" : "0x9184e72a"}], "id": 1} '
Это действие требует подписи, поэтому Клеф предлагает вам одобрить его, и если вы это сделаете,
запрашивает пароль, с которого вы отправляете ETH.Если пароль правильный,
Гет совершает сделку.
Для проверки получите баланс второго счета:
curl -X POST http: // : 8545 \
-H "Content-Type: application / json" \
--data '{"jsonrpc": "2.0", "method": "eth_getBalance", "params": ["", "latest"], "id": 1}'
.
частных сетей | Перейти Ethereum
В этом руководстве объясняется, как настроить частную сеть из нескольких узлов Geth. Эфириум
сеть является частной сетью, если узлы не подключены к основной сети. В этом
context private only означает зарезервированный или изолированный, а не защищенный или безопасный.
Выбор идентификатора сети
Идентификатор сети — это целое число, которое изолирует одноранговые сети Ethereum.
Соединения между узлами блокчейна будут происходить только в том случае, если оба узла используют один и тот же генезис.
блок и идентификатор сети.Используйте параметр командной строки --networkid
, чтобы установить используемый идентификатор сети.
пользователя geth.
Основная сеть имеет ID 1. Если вы указываете свой собственный идентификатор сети, который отличается
чем основная сеть, ваши узлы не будут подключаться к другим узлам и формировать частный
сеть. Если вы планируете подключиться к своей частной сети в Интернете, лучше всего
выберите идентификатор сети, который еще не используется. Вы можете найти управляемый сообществом реестр
Сети Ethereum на https://chainid.network.
Выбор алгоритма консенсуса
В то время как основная сеть использует доказательство работы для защиты блокчейна, Geth также поддерживает
алгоритм консенсуса доказательства авторитета «клики» в качестве альтернативы частным
сети.Мы настоятельно рекомендуем «клик» для развертывания новых частных сетей, потому что это
гораздо менее ресурсоемкий, чем доказательство работы. Система кликов также используется для
несколько общедоступных тестовых сетей Ethereum, таких как Rinkeby и
Гёрли.
Вот ключевые различия между двумя консенсусными алгоритмами, доступными в Geth:
Консенсус Ethash, будучи алгоритмом доказательства работы, представляет собой систему, которая позволяет открывать
участие всех желающих посвятить ресурсы майнингу. Хотя это отличный
собственность для публичной сети, общая безопасность блокчейна строго
зависит от общего количества ресурсов, используемых для его защиты.Таким образом, доказательство работы — это
плохой выбор для частных сетей с небольшим количеством майнеров. «Сложность» майнинга Ethash
настраивается автоматически так, чтобы новые блоки создавались с интервалом примерно 12 секунд. Как
в сети развертывается больше ресурсов для майнинга, создание нового блока становится сложнее, поэтому
что среднее время блока соответствует целевому времени блока.
Консенсус Clique — это система подтверждения полномочий, в которой новые блоки могут быть созданы
только авторизованные «подписанты». Протокол clique consenus указан в
EIP-225.Первоначальный набор авторизованных подписантов настроен в генезисе
блок. Подписавшие могут быть авторизованы и деавторизованы с помощью механизма голосования, что позволяет
набор подписывающих лиц должен меняться во время работы блокчейна. Клику можно настроить на
нацелить любое время блока (в разумных пределах), поскольку оно не привязано к сложности
регулировка.
Создание Genesis Block
Каждый блокчейн начинается с блока генезиса. При запуске Geth с настройками по умолчанию
впервые он передает основную генерацию сети базе данных.Для частного
сети, вам обычно нужен другой блок генезиса.
Генезис-блок настраивается с помощью файла genesis.json . При создании генезиса
block, вам нужно определиться с несколькими начальными параметрами для вашей цепочки блоков:
- Функции платформы Ethereum включены при запуске (
, конфигурация
). Включение функций протокола
во время работы блокчейна требуется планирование хард-форка. - Начальный лимит блока газа (
gasLimit
).Ваш выбор здесь влияет на то, насколько вычисление EVM
может произойти в пределах одного блока. Мы рекомендуем использовать основную сеть Ethereum в качестве
ориентир, чтобы найти хорошую сумму. Ограничение блока газа можно отрегулировать
после запуска с использованием флага командной строки--targetgaslimit
. - Первоначальное выделение эфира (
выделено
). Это определяет, сколько эфира доступно для
адреса, которые вы указываете в генезис-блоке. Дополнительный эфир можно создать через
добыча по мере продвижения цепочки.
Пример клики
Это пример файла genesis.json для сети подтверждения полномочий. Конфигурация
обеспечивает доступность всех известных изменений протокола и настраивает «клик»
двигатель, который будет использоваться для достижения консенсуса.
Обратите внимание, что начальный набор подписывающих сторон должен быть настроен через поле extradata
. Эта
поле обязательно для работы клики.
Сначала создайте ключи учетной записи подписывающего лица, используя учетную запись geth
команда (выполните эту команду несколько раз, чтобы создать более одного ключа подписи).
geth account new --datadir data
Обратите внимание на адрес Ethereum, напечатанный этой командой.
Чтобы создать начальные дополнительные данные для вашей сети, соберите адреса подписывающих и закодируйте
extradata
как конкатенация 32 нулевых байтов, всех подписывающих адресов и еще 65
нулевые байты. В приведенном ниже примере extradata
содержит единственный начальный адрес подписавшего,
0x7df9a875a174b3bc565e6424a0050ebc1b2d1d82
.
Вы можете использовать опцию конфигурации период
, чтобы установить целевое время блока цепочки.
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
«eip150Block»: 0,
«eip155Block»: 0,
«eip158Block»: 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
«ПетербургБлок»: 0,
"клика": {
«период»: 5,
«эпоха»: 30000
}
},
«сложность»: «1»,
"gasLimit": "8000000",
"extradata": "0x00000000000000000000000000000000000000000000000000000000000000007df9a875a174b3bc565e6424a0050ebc1b2d1d8200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": {"balance": "300000"},
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": {"баланс": "400000"}
}
}
Пример Ethash
Поскольку ethash является алгоритмом консенсуса по умолчанию, никаких дополнительных параметров не требуется.
настроен для его использования.Вы можете повлиять на начальную сложность добычи, используя
параметр сложности
, но обратите внимание, что алгоритм регулировки сложности будет быстро
адаптироваться к количеству майнинговых ресурсов, которые вы размещаете в цепочке.
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
«eip150Block»: 0,
«eip155Block»: 0,
«eip158Block»: 0,
.
Подключение к сети | Перейти Ethereum
Как находят сверстников
Geth постоянно пытается подключиться к другим узлам сети, пока у него не появятся одноранговые узлы. Если
у вас включен UPnP на вашем маршрутизаторе или вы запускаете Ethereum на сервере с выходом в Интернет, он
также принимают соединения от других узлов.
Geth находит одноранговые узлы с помощью так называемого протокола обнаружения. В открытии
протокол, узлы сплетничают друг с другом, чтобы узнать о других узлах на
сеть.Для начала работы geth использует набор узлов начальной загрузки, чьи
конечные точки записываются в исходный код.
Чтобы изменить загрузочные узлы при запуске, используйте параметр --bootnodes
и разделите узлы
запятые. Например:
geth --bootnodes enode: // pubkey1 @ ip1: port1, enode: // pubkey2 @ ip2: port2, enode: // pubkey3 @ ip3: port3
Общие проблемы с подключением
Иногда просто невозможно подключиться. Наиболее частые причины следующие:
- Ваше местное время может быть неверным.Для участия в соревнованиях требуются точные часы.
Сеть Ethereum. Проверьте свою ОС, чтобы узнать, как повторно синхронизировать часы (например, sudo ntpdate -s
time.nist.gov), потому что даже на 12 секунд быстрее может быть 0 пиров. - Некоторые конфигурации брандмауэра могут препятствовать прохождению UDP-трафика. Вы можете использовать
функция статических узлов илиadmin.addPeer ()
на консоли для настройки соединений с помощью
рука.
Чтобы запустить geth без протокола обнаружения, вы можете использовать параметр --nodiscover
.Вам нужно только это, если вы запускаете тестовый узел или экспериментальную тестовую сеть с
фиксированные узлы.
Проверка подключения
Чтобы проверить, сколько одноранговых узлов клиент подключен в интерактивной консоли, net
модуль имеет два атрибута, которые дают вам информацию о количестве пиров и о том, являетесь ли вы
слушающий узел.
> прослушивание сети
правда
> net.peerCount
4
Чтобы получить дополнительную информацию о подключенных узлах, например IP-адрес и номер порта,
поддерживаемые протоколы, используйте функцию peers ()
объекта admin
. админ.перс ()
возвращает список подключенных в данный момент пиров.
> admin.peers
[{
ID: 'a4de274d3a159e10c2c9a68c326511236381b84c9ec52e72ad732eb0b2b1a2277938f78593cdbe734e6002bf23114d434a085d260514ab336d4acdc312db671b'
Название: 'Geth / v0.9.14 / linux / go1.4.2',
Заглавные буквы: 'eth / 60',
RemoteAddress: '5.9.150.40:30301',
LocalAddress: 192.168.0.28:39219
}, {
ID: 'a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cbc6d33311
Название: 'Geth / v0.9.15 / linux / go1.4.2 ',
Заглавные буквы: 'eth / 60',
RemoteAddress: '52 .16.188.185: 30303 ',
LocalAddress: 192.168.0.28:50995
}, {
ID: 'f6ba1f1d9241d48138136ccf5baa6c2c8b008435a1c2bd009ca52fb8edbbc991eba36376beaee9d45f16d5dcbf2ed0bc23006c505d57ffcf70921bd94aa7a
Имя: 'pyethapp_dd52 / v0.9.13 / linux2 / py2.7.9',
Заглавные буквы: 'eth / 60, p2p / 3',
RemoteAddress: '144.76.62.101:30303',
LocalAddress: 192.168.0.28:40454
}, {
ID: 'f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0',
Название: '++ eth / Zeppelin / Rascal / v0.9.14 / Релиз / Дарвин / clang / int ',
Заглавные буквы: 'eth / 60, shh / 2',
RemoteAddress: '129.16.191.64:30303',
LocalAddress: 192.168.0.28:39705
}]
Чтобы проверить порты, используемые geth, а также найти URI вашего enode, выполните:
> admin.nodeInfo
{
Название: 'Geth / v0.9.14 / darwin / go1.4.2',
NodeUrl: 'enode: // 3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba60f14998a3a98c0cf14915eabfdacf914a92b27a01769de18f3d04d049d01769de18f3d04d05
NodeID: '3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba60f14998a3a98c0cf14915eabfdacf914a92b27a01769de18fa2d049dbf4c17
IP: '::',
ДискПорт: 30303,
TCPPort: 30303,
Td: '2044952618444',
ListenAddr: '[::]: 30303'
}
Пользовательские сети
Иногда вам может не потребоваться подключение к действующей общедоступной сети, вместо этого вы можете выбрать
для создания собственной частной тестовой сети.Это очень полезно, если вам не нужно тестировать внешние
контракты и хотите просто протестировать технологию, потому что вам не придется конкурировать с
другие майнеры и легко сгенерируют много тестового эфира, чтобы поиграть (замените 12345
с любым неотрицательным числом):
geth -—networkid = "12345" консоль
Также можно запустить geth с настраиваемым блоком генезиса из файла JSON, указав
флаг - Genesis
. Файл Genesis JSON должен иметь следующий формат:
.
{
"alloc": {
"dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6": {
«баланс»: «1606938044258990275541962092341162602522202993782792835301376»
},
"e6716f9544a56c530d868e4bfbacb172315bdead": {
«баланс»: «1606938044258990275541962092341162602522202993782792835301376»
},
...
},
"nonce": "0x000000000000002a",
"сложность": "0x020000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"отметка времени": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
«extraData»: «0x»,
"gasLimit": "0x2fefd8"
}
Статические узлы
Geth также поддерживает функцию, называемую статическими узлами, если у вас есть определенные одноранговые узлы, которые вы всегда хотите
для подключения.Статические узлы повторно подключаются при отключении. Вы можете настроить постоянный
статические узлы, поместив что-то вроде следующего в
:
[
"enode: //f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf3.416c0@30"
"enode: // pubkey @ ip: port"
]
Вы также можете добавлять статические узлы во время выполнения через консоль js, используя
admin.addPeer ()
:
админ.addPeer ("enode: //f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ec16c66fbfb")
.