Язык Solidity: Запуск и настройка ноды Ethereum (Урок 7)
Язык Solidity: Запуск и настройка ноды Ethereum (Урок 7)
Предыдущие уроки:
Язык Solidity: Неllo World (Урок 1)
Язык Solidity: Типы данных (Урок 2)
Язык Solidity: Переменные состояния контракта (Урок 3)
Язык Solidity: Массивы и соответствия (Урок 4)
Язык Solidity: Структуры (Урок 5)
Язык Solidity: Глабальные переменные и функции блокчейна (Урок 6)
О нодах Ethereum
Под нодой мы подразумневаем программное обеспечение, работающее на определенном узле сети. По большей части в данный момент такими узлами являются либо персональные компьютеры, либо специализированные серверные аппаратные средства. Во первом случае - это наш компьютер, во втором реальный выделенный сервер или VPS (если позволяют арендуемые ресурсы). Конкретные подробности установки описаны на официальном сайте ethereum. Поскольку я пишу уроки для начинающих, будем считать, что у нас windows и просто скачиваем который исполняемый файл geth.exe.Установка ноды Ethereum geth
После скачивания, если он в архиве - разархивируем. В архиве geth для windows находится всего один исполняемый файл geth.exe.
Так как это простой исполняемый файл, а не установочный пакет, - мы не будем по нему дважды кликать мышкой (иначе он запустится с параметрами по умолчанию, а этого нам не надо).
Выполняем следующие: Создадим, папку, например
C:\ethereum
или как у меня - одноименную C:\geth
и копируем туда наш файл geth.exe.У меня этот файл был в папке bin, я его вместе с ней и скопировал, получился такой путь
C:\geth\bin\geth.exe
. Добавлять путь к исполняемому файлу в переменную окружения PATH я не вижу смысла. Поэтому для удобства работы просто переходим в наш каталог cd C:\geth\bin
.Теперь нам нужно запустить geth, но запускать его мы будем в режиме разработчика (приватного блокчейна).
Если мы его просто вызовем командой geth, то он начнет скачивать весь свой блокчейн, а это дело может затянуться надолго. Да и эксперименты проводить в реальном блокчейне не самая умная мысль.
Для того, чтобы нода запустилась в режиме разработчика, мы указываем параметр
--dev
. Также мы хотим не просто запустить ноду, но еще и поработать с ней. Мы указываем команду console
после --dev
, чтобы она открылась для ввода команд после запуска geth.
geth --dev console
Вот так выглядить наша команда в крмандной строке.
При первом запуске geth создает себе папку для хранения своего блокчейна в Windows (если не указано при запуске иное) это тут:
C:\Users\<имяпользователя>\AppData\Roaming\Ethereum\chaindata
Здесь же в папке Ethereum будут создаваться наши кошельки.
И так, консоль открылась - можем приступать к работе с geth через консоль.
Работа с geth в консольном режиме
Хотите верьте, хотите нет, - консоль geth работает с синтаксисом движка JavaScript, разве что объекты другие.
Мы можем вводить команды напрямую после приглашения ввода
>
, а можем вынести в отдельный файл и загрузить командой loadScript('myscripts.js')
.Поскольку в консолях JavaScript при вводе имени какого-нибудь объекта, нам возвращается его распечатка - строковое представление JSON с его членами, то мы можем изучать элементы, вводя их имена:
>web3
{ // JSON }
>eth
{ // тоже JSON }
или, например:
>personal
Соответственно раскрутить вложенный объект или изучиить функцию, можно указав ее положение в объекто точечной ноитацией.
Для понимания того, как работать в режиме консоли с geth (да и не только) я советую вам с этим делом поиграться.
А я пока приведу пример самых основных действий.
Наиболее частые действия в консоле geth
Для создания аккаунта (кошелька) выполняем следующую команду:
>personal.newAccount("mypass")
тут mypass- это ваш пароль, который вы должны очень хорошо сохранить и не терять.
Инструкция эта вернет адрес вашего кошелька, типо 0x098affa....
Также в папке C:\Users\<имяпользователя>\AppData\Roaming\Ethereum
создастся файл с кошельком.
Для того, чтобы посмотреть существующие кошельки у нас вводим:
>eth.accounts
Эта команда возвратит массив с адресами, - так как у нас всего один только что созданный аккаунт, мы его можем посмотреть и так: eth.accounts[0].
Этот же адрес становится адресом для токенов от майнинга (eth.coinbase).
И рассмотрим еще две наиболее часто востребованные команды.
О майнинге и работа с командами для майнинга в geth
Понятное дело, что любого поднимающего ноду хлебом кормить не надо, дай лишь бы что замайниить. В консоле geth майнинг запускается просто:
miner.start()
и также просто останавливается:
miner.stop()
Стоит более подробно остановиться на майнинге.
Пока что мы не будем слишком вдаваться в технические подробности - этим мы займемся в следующих уроках.
Сегодня представим суть майнинга следующим образом: В сети Ehereum каждая отправленная одной из работающих нод транзакция (если не отбракована) рассылается другим нодам, которые взаимодействуют с первой и так далее, таким образом транзакция попадает на большинство нод за считанные секунды.
А вот чтобы, эта транзакция была признана достоверной - ее необходимо включить в блокю
Этот блок должен быть сформирован одним из майнером в соответствии с определенным консенсусом (Pow или PoS в основном).
После этого транзакция считается действительной. Часто некоторые ждут подтверждений (обычно от 3 до 6), подтверждения по сути просто новые блоки, добавленные в блокчейн поверх того, где наша транзакция. Так ее точно не получится подменить.
И так,для функционирования нашей ноды в режиме приватного блокчейна (точнее для обработки ею транзакций) мы будем запускать на ней майнинг. В благодарность она нам будет генерировать раз в 30 сек по 5 приватных ETH, о которых основной блокчейн ни чего не знает :)
Ну вот думаю разобрались на сегодня.