Что такое geth node

Введение в Geth и запуск узлов Ethereum

В этой статье мы рассмотрим, что такое узлы Ethereum, и рассмотрим один из самых популярных, называемый Geth.

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

Поскольку Geth является самой популярной клиентской реализацией, доступной на данный момент, мы сосредоточимся на ней сейчас.

Типы узлов

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

Архивный узел — это особый случай полного узла, поэтому мы не будем вдаваться в подробности. Одно из лучших резюме по типам узлов, которые я нашел, находится на Stack Exchange :

В общем, мы можем разделить программное обеспечение узлов на два типа: полные узлы и легкие (весовые) узлы. Полные узлы проверяют блок, который транслируется в сеть. Таким образом, они гарантируют, что транзакции, содержащиеся в блоках (и самих блоках), следуют правилам, определенным в спецификациях Ethereum. Они поддерживают текущее состояние сети (как определено в соответствии со спецификациями Ethereum).

Транзакции и блоки, которые не соответствуют правилам, не используются для определения текущего состояния сети Ethereum. Например, если A пытается отправить 100 эфиров в B, но A имеет 0 эфиров, и блок включает эту транзакцию, полные узлы поймут, что это не соответствует правилам Ethereum, и отклонят этот блок как недействительный. В частности, выполнение смарт-контрактов является примером транзакции. Всякий раз, когда в транзакции используется умный контракт (например, отправка токенов ERC-20), все полные узлы должны будут выполнить все инструкции, чтобы убедиться, что они достигли правильного, согласованного следующего состояния блокчейна.

Есть несколько способов достичь одного и того же состояния. Например, если бы А имел 101 эфир и отдал сто из них Б за одну транзакцию, заплатив 1 эфир за газ, конечный результат был бы таким же, как если бы А отправил 100 транзакций по 1 эфиру каждая, заплатив 0,01 эфира за транзакцию ( игнорируя, кто получил комиссию за транзакцию). Чтобы узнать, разрешено ли теперь B посылать 100 эфира, достаточно знать, каков текущий баланс B. Полные узлы, которые сохраняют всю историю транзакций, называются полными узлами архивации. Они должны существовать в сети, чтобы быть здоровыми.

Узлы также могут отказаться от старых данных; если B хочет отправить 100 эфира в C, не имеет значения, как был получен эфир, только учетная запись B содержит 100 эфира. Легкие узлы, напротив, не проверяют каждый блок или транзакцию и могут не иметь копии текущего состояния блокчейна. Они полагаются на полные узлы, чтобы предоставить им недостающие детали (или просто не хватает определенной функциональности). Преимущество легких узлов заключается в том, что они могут гораздо быстрее запускаться и работать, могут работать на устройствах с большим количеством вычислительных ресурсов / памяти и не поглощают почти столько же памяти. С другой стороны, существует элемент доверия в других узлах (он варьируется в зависимости от клиента, и вероятностные методы / эвристика могут использоваться для снижения риска). Некоторые полные клиенты включают функции для более быстрой синхронизации (например, синхронизация деформации Parity).

Установка Гета

Бегущий Гет

Источник

Как Создать Приватный Блокчейн Ethereum

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Содержание

В статье мы расскажем, как запустить частный блокчейн Ethereum с помощью Geth, а также немного затронем механику работы частных сетей Ethereum.

Что такое Ethereum Private Network

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Частная сеть Ethereum — это приватный блокчейн, полностью изолированный от основной сети Ethereum. Обычно частные сети создаются организациями для хранения личных данных, которые не должны быть видны людям вне организации. Помимо этого, частная сеть Ethereum может использоваться для тестирования и экспериментов с блокчейном.

Что такое Ethereum Virtual Machine

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Что такое Geth (Go Ethereum)

Клиент можно скачать на сайте geth.ethereum.org. Есть сборки для Ubuntu (семейство Linux), OS X («яблочные» устройства), Windows и даже Android. Инструкция по тому, что делать после загрузки дистрибутива находится в разделе «Install» (обязательно прочтите и сделайте все, что там написано).

Как создать частный блокчейн Ethereum

После того как мы установили и синхронизировали Geth с Ethereum, можно приступать к запуску «частной» или «тестовой» сети. Это лучший способ для изучения технологий блокчейна, так как в рамках частной сети Ethereum вы можете создавать, развертывать и тестировать смарт-контракты и децентрализованные приложения, не потратив ни монеты реального эфира. Более того, вы можете создать «поддельный» эфир и использовать его для осуществления транзакции и инициализации смарт-контрактов.

Шаг 1: Создаем папку DATADIR

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

Для этого сделайте следующее:

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

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

2. Кликните правой кнопкой по созданной папке и выберите «Git Bash Here».

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

3. Если все нормально, система покажет следующее.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Шаг 2: Создаем генезис-блок

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Чтобы создать приватный блокчейн, сначала необходимо сгенерировать генезис-блок. Для этого нужно создать файл Genesis, прописать в него нужные команды (атрибуты) и использовать его с помощью Geth.

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

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

После создания Genesis-файла откройте Geth и введите следующую команду:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Данная команда инструктирует Geth использовать ранее созданный нами файл CustomGenesis.json для генерации первого блока приватного блокчейна Ethereum. Атрибут «path_to_folder» — это папка, в которой вы сохранили Genesis-файл. Тогда как атрибут «path_to_your_data_directory» указывает папку, в которой будут храниться данные нашей частной цепочки (создана на первом шаге).

Когда вы запустите указанный атрибут, вы увидите, как Geth подключится к Genesis-файлу и предоставит подтверждение успешного завершения действия. Это будет выглядеть следующим образом:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Шаг 3: Запускаем частную сеть

Итак, мы создали генезис-блок. Теперь можно запускать нашу частную сеть, чтобы мы или другие узлы (если вы создали несколько) могли добавлять новые блоки. Для этого в консоли Geth нужно инициировать команду:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Данная команда инструктирует Geth на запуск частного блокчейна. И использовать указанный каталог («path_to_your_data_directory» замените на адрес нужной папки) для доступа к запущенной сети.

В команде также присутствует идентификатор «7776». Его следует заменить на произвольное число, которое не будет равно идентификатору уже созданных сетей, например идентификатору основной сети Ethereum («networkid=1»). Идентификатор «networkid=7776» также не стоит использовать, иначе вы подключитесь к сети, которую мы создали для данного гайда.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Когда вы инициируете указанную команду с ВАШИМ идентификатором, вы запустите частную сеть вашего блокчейна. Вот что покажет терминал Geth после успешного выполнения команды:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Еще один важный момент. Geth не запоминает параметры вашей частной сети блокчейна, поэтому каждый раз, когда вы захотите получить доступ к вашей частной цепочке, вам нужно будет запускать команды в консоли, инициирующие подключение к Genesis-файлу и вашей частной сети. Чтобы не искать их каждый раз, держите их под рукой.

Вот эти две команды:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Если все сделали правильно, к этому моменту у вас будет личный блокчейн и частная сеть Ethereum. И теперь можно начинать взаимодействовать с этой цепочкой.

Шаг 4: Создаем внешнюю учетную запись (EOA)

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

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

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

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

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

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

Сохраните созданную учетную запись (длинный набор символов на скриншоте), так как вы будете часто ее использовать. Помимо этого, сохраните парольную фразу, поскольку она понадобится каждый раз при подключении к учетной записи.

Дальше нам нужно проверить состояние баланса учетной записи (сколько там есть эфира). Для этого используем следующую команду:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node
Вот что у вас должно получится:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Баланс учетной записи должен быть равен нулю. Это правильно, поскольку при запуске частной сети в файле генезиса мы ничего не прописали в атрибуте alloc. Пополнить баланс сейчас можно двумя способами: либо кто-то вам отправит немного эфира, либо получите вознаграждение за создание нового блока. А так как вы сейчас единственный участник вашей частной сети, то выбора у вас, по сути, нет.

Шаг 5: Добываем немного эфира для нашего счета

Майнинг на основной цепочке Ethereum (реальной) сложен и требует дорогостоящего оборудования с мощными графическими процессорами. Обычно для этого используют ASICи. Однако для добычи монет нашей цепочки подойдет любое устройство, так как в файле генезиса мы задали низкую сложность майнинга (атрибут difficulty). То есть мы можем начать майнинг, просто использовав следующую команду:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Результат должен быть таким:

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Если вы используете команду eth.getBalance во втором окне Geth, то увидите, как баланс вашей учетной записи пополняется поддельным эфиром. Скорость майнинга будет очень большой, так что вы сможете стать мультимиллионером буквально за пару секунд.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

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

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

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

Поздравляем!

Вы создали свой первый частный блокчейн Ethereum и добыли немного эфира! Да, это не настоящие деньги и сеть тестовая, но полученный опыт можно использовать для запуска стартапов или интеграции блокчейн-технологий в собственный бизнес.

Источник

How to run a light node with Geth

You may be interested in running an Ethereum node. One of the easiest ways to do so is by downloading, installing, and running Geth. With Geth, we can have a light node up and running in minutes.

First, you’ll want to install Geth.

Once you’ve installed Geth, running an Ethereum full node is as simple as typing

This process may take anywhere from hours to days, and requires a few hundred GB of free space. For now, we’ll just run a light node on a testnet to familiarize ourselves with how to use Geth. To do this, we’ll have to go through a few important command-line options and tools.

Mainnet and Testnet

Geth has three syncmode s.

«fast» downloads all blocks, but also downloads a recent snapshot of the EVM state from a peer (currently the state of the EVM 64 blocks in the past), executing transactions in only the most recent blocks until it reaches the current EVM state. The advantage of «fast» is that it takes much less time to synchronize to the present state; however, it relies on a full archival node peer for a state snapshot, so it isn’t verifying everything for itself.

Finally, «light» runs a light node, which we discussed above.

For a great explanation of the differences between the three syncmodes, see this stack exchange answer.

Documentation and other command line options

Running your light node

We’ll run a light testnet node to familiarize ourselves with how to manage and interact with a node. To do so, simply run

Wait a few seconds, and hopefully you should get output that looks something like:

Once block synchronization starts, it’ll take a few minutes for your machine to catch up to the latest blocks on the blockchain. At that point, your output will start looking like:

At this point, messages will start coming in only every 10-30 seconds, and the value of count will be in the single digits for each message.

Where is the blockchain and EVM data stored?

The directory which Geth uses to store raw blockchain data depends on your operating system. Upon running Geth, look for a message that looks like

The path following “database=” should tell you where the blockchain data is stored on your machine. If you’re running a full node, this directory will contain all of the data about every block that has ever been committed to the blockchain. Since we’re running a light node, this directory only contains the block headers.

It’s worth emphasizing here that, at the lowest level, this is where the blockchain lives. The full contents of the blockchain and the EVM state are stored on every full node in the Ethereum network, in directories that look very much like the one on your computer.

Attaching to the Javascript Console

Running a node isn’t useful unless we can actually interact with it. For example, we might want to broadcast transaction requests or look up EVM/blockchain data (such as an account balance). Geth has a built-in Javascript console and a Javascript API called web3js that you can use to interact with your node.

To use the Javascript console:

This message should be logged before block synchronization starts.

This should open the Javascript console. We can now use web3js to interact with the node.

Here are a few helpful objects exposed by this API. You access these by typing them into the Javascript console.

We can also use web3js to initialize accounts, write and broadcast transaction requests to the network, look up account balances and metadata, and more. We’ll cover these operations in a later section; for now, try running the following to look up the balance of one of my accounts on the Ropsten testnet:

Stopping and restarting your node

Replace ‘ropsten’ with other testnet names as needed, or use ‘mainnet’.

If you are interested in running an Ethereum full node, it is generally best to do so from a dedicated machine with good network connectivity, rather than from a personal computer. Here is a guide to running a node with AWS (this is a little outdated and the referenced AMIs are no longer recent or available, so you might have to do some Googling): How to run a node on AWS

Источник

Создаем приватную сеть Ethereum Geth в контейнерах Docker

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Если вам нужно развернуть приватную сеть Ethereum на базе Geth, то это можно сделать, например, создавая узлы сети на физических серверах или виртуальных машинах. Однако намного легче использовать готовые образы (Images) контейнеров Geth из репозитория Docker hub. В этом случае можно установить целую сеть узлов даже на одной виртуальной машине или на одном физическом сервере.

В этой статье мы расскажем как установить Docker на сервере с ОС Debian 9 (виртуальном или физическом), как создать несколько контейнеров с работающим Geth и объединить их в приватную сеть. Мы приведем пример скрипта для Node.js, который обращается к узлам Geth, работающим в контейнерах.

Устанавливаем Docker

Установка Docker описана на официальном сайте. Для Debian 9 и 10 вы найдете подробные инструкции на сайте https://docs.docker.com/install/linux/docker-ce/debian/.

Прежде всего, обновите пакеты:

Далее установите необходимые пакеты следующей командой:

Добавьте официальный ключ GPG:

Убедитесь, что вы получили ключ с отпечатком 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88:

Добавьте стабильный репозиторий Docker:

Обновите пакеты и установите Docker:

Теперь остается только проверить, что все сделано правильно. Для этого запустите образ (Image) hello-world:

Эта команда загрузит нужный образ, и запустит на выполнение. Как и следовало ожидать, вы увидите на консоли сообщение «Hello from Docker!».

Как видите, ничего сложного! Теперь можно приступить к созданию приватной сети Geth с узлами, работающими в контейнерах.

Создаем пользователя, каталоги и файлы

Создайте на сервере пользователя book, а в его домашнем каталоге — следующие подкаталоги:

Далее в каталоге /home/book/dock-test создайте файл Dockerfile:

Этот файл будет использован при создании контейнеров Docker.

Еще вам нужно будет создать файл /home/book/dock-test/distr/genesis.json, необходимый для инициализации узлов сети Ethereum:

Здесь мы задаем идентификатор нашей приватной сети 98760. Для облегчения майнинга мы указали в параметре difficulty значение 10. Это позволит работать на виртуальных машинах с относительно небольшим объемом памяти (например, 4 Гбайта).

Создаем сеть и контейнеры

Для того чтобы наши узлы могли обмениваться данными между собой, создадим сеть между контейнерами:

Далее нужно сделать текущим каталог /home/book/dock-test, в котором расположен файл Dockerfile. Затем создайте нужное количество контейнеров, например, три:

Создание первого контейнера идет относительно долго, т.к. нужно загрузить необходимые образы (images). Зато следующие контейнеры создаются практически моментально — сравните со скоростью создания виртуальных машин, даже через клонирование.

Теперь откройте четыре консольных окна. В трех из них мы будем работать с контейнерами, а в четвертом — получать необходимые нам данных о контейнерах и сети.

В первом консольном окне выдайте такую команду:

Вы увидите приглашение вида:

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

Создание узлов приватной сети Ethereum и аккаунтов

На данный момент у нас работают три контейнера с Geth. Давайте создадим в каждом из них узел нашей приватной сети Ethereum и аккаунт.

Введите в первых трех консольных окнах команду:

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

После создания аккаунтов на консоли появятся публичные адреса ключей, похожие на эти:

Сохраните адреса (у вас будут другие), т.к. они нам понадобятся для запуска узлов.

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

Запуск узлов Geth

Теперь откройте по очереди каждое из консольных окон и запустите там Geth с помощью приведенных ниже команд.

В каждом из открытых окон появятся сообщения о генерации DAG:

Дождитесь, пока генерация будет завершена. После этого eth.hashrate и eth.blockNumber будут отличны от 0:

Проверить текущий баланс аккаунта можно так:

Чтобы вам не мешали сообщения о создании новых блоков и другие сообщения в консольных окнах, завершите работу Geth командой exit и перезапустите заново, указав значение параметра verbosity, равным 1.

Объединение узлов в сеть

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

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

Для объединения контейнеров в сеть вам потребуются адреса IP контейнеров в нашей приватной сети PRIVATENET. Вы можете получить эти адреса по идентификатору контейнера, например, следующим образом:

Также можно воспользоваться командой docker network inspect PRIVATENET:

Сопоставляя данные, полученные этими командами, составим список IP-адресов для наших контейнеров:

Разумеется, у вас будет другой список, и при перезапуске контейнеров эти адреса могут меняться.

Для объединения узлов вам нужно будет воспользоваться командой admin.addPeer. В качестве параметра этой команде нужно передать URL в формате enode. Получите этот URL для каждого контейнера с помощью команды admin.nodeInfo.enode:

Полученные адреса сохраните.

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

Здесь мы передали адрес URL, указав в нем адрес IP подключаемого узла. Проделайте аналогичную процедуру и на других узлах сети.

Для того чтобы проверить, что соединение установлено, воспользуйтесь командой admin.peers. Если соединений нет, команда вернет пустой результат:

В нашем случае команда показывает, что первый узел с адресом 172.21.0.2 подключен к узлам с адресами 172.21.0.3 и 172.21.0.4:

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

Команда web3.fromWei( eth.getBalance(eth.coinbase) ) напротив, будет показывать разный баланс на разных узлах, т.к. у каждого узла свой собственный аккаунт.

Работа с узлами сети с помощью Node.js

В листинге 3 мы привели простой скрипт, работающий под управлением Node.js, который показывает на консоли список аккаунтов указанного узла и баланс каждого из них:

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

Что дальше

Тема разработки ПО для криптовалют вообще и для Ethereum в частности довольно увлекательна. Если после прочтения этой статьи у вас появились вопросы и захотелось узнать больше, читайте мою книгу «Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство», которая вышла в издательстве Литрес.

Также возможно, вам пригодится хорошая шпаргалка по командам Docker.

Буду благодарен за любые замечания и дополнения по статье и книге!

Источник

Создаём собственный блокчейн на Ethereum

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Как создать приватный блокчейн Ethereum с нуля?

Ethereum — децентрализованная платформа, на которой работают смарт-контракты: приложения, исполняемые строго запрограммированным образом, без возможности даунтайма, цензуры, фрода или вмешательства третьих лиц. В этой статье я проведу вас через все шаги, необходимые для создания полностью функционального приватного блокчейна Ethereum внутри вашей локальной сети.

Инструкция включает в себя следующее:

Установка Geth

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.

Для Windows соответствующий инсталлятор лежит здесь. В случае каких-либо сложностей обращайтесь к инструкции.

Создание аккаунта майнера

Сначала нужно создать аккаунт для майнинга Ethereum. Так мы сгенерируем пару приватного и публичного ключей с паролем для защиты. Не потеряйте свой пароль, иначе никогда не сможете восстановить ключи. По умолчанию, ключи хранятся внутри: /keystore. Всё, что сохраняет geth, хранится внутри datadir (кроме PoW Ethash DAG). Расположение директории по умолчанию зависит от ОС. Всегда лучше изменить стандартные настройки и задать свой собственный путь для приватного блокчейна.

/.ethash (Mac/Linux) или %APPDATA%\Ethash (Windows), так что его могут использовать все клиенты.

Следующая команда показывает, как создать аккаунт с произвольным путём для директории данных. Эта команда выдаст ваш адрес Ethereum.

Создание первичного блока (genesis block)

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

Начинаем майнинг

Всё готово! Теперь можно начать майнинг через geth с помощью следующей команды. Здесь параметр networkid выделяет эту сеть Ethereum среди других. Все майнеры, желающие подключиться к этой сети, должны использовать тот же идентификатор networkid с тем же первичным блоком.

Подключаем консоль Geth

Можно или начать майнинг как console , или запустить console отдельно — и подключить её к узлу майнинга командой attach. Сейчас покажу, как это делается, и проверьте, что вы указали параметры в том же порядке.

Консоль подключается к узлу майнинга по IPC. IPC (межпрорцессное взаимодействие) работает на локальном компьютере. В этом случае geth создаёт конвейер Geth (который представлен файлом

/geth.ipc) в файловой системе локального компьютера — а консоль подключается к этому узлу по IPC.

Просмотр всех аккаунтов

Как только вы подключились к консоли geth, можно попробовать запустить следующую команду для отображения всех доступных аккаунтов.
> eth.accounts
[«0x7a69b359e86893efa3d9732e4c65ced51567edd0»]

Просмотр баланса аккаунта

Следующая команда позволяет просмотреть баланс заданного аккаунта из консоли geth.

Подключение кошелька MetaMask Ethereum

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 .

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Передача Эфира

MetaMask создаст аккаунт Ethereum — секретный ключ и адрес Ethereum. Дальше разберёмся, как передавать Эфир с первого аккаунта, созданного в самом начале, на аккаунт MetaMask из консоли geth. Для передачи средств аккаунта нужно использовать для подписи секретный ключ этого аккаунта. Чтобы его использовать, нужно его сначала разблокировать, как показано ниже.

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»)

Следующая команда осуществит передачу средств — она ссылается на переменные, которые мы определили выше.

Просмотр баланса аккаунта в MetaMask

Когда мы завершили передачу средств, следуя вышеуказанным шагам, можно просмотреть баланс аккаунта двумя способами. Первый способ — напрямую из плагина MetaMask, как показано ниже.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Другой способ — через консоль geth, с помощью следующей команды.

Редактор Remix для Solidity

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Создание смарт-контракта

Теперь всё готово для написания самого первого смарт-контракта, который мы запустим в сети Ethereum. Скопируйте следующий код и вставьте его в онлайновый редактор remix. Это очень простой смарт-контракт — я даже не хочу объяснять его построчно. В следующей статье подробно рассмотрим язык программирования Solidity.

Если вы не меняли настройки по умолчанию в remix, то они установлены на автоматическую компиляцию. Если нет, то надо скомпилировать код.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

После компиляции при нажатии кнопки Details вы увидите расчётное количество газа, необходимое для создания этого смарт-контракта.

Внедрение смарт-контракта

Теперь можем внедрить смарт-контракт в наш приватный блокчейн. На вкладке Run убедитесь, что у вас выбран правильный аккаунт Ethereum и правильный лимит газа. Значения gas price и value можно указать нулевыми.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Здесь транзакция Ethereum, подписанная с выбранного выше аккаунта для создания смарт-контракта в блокчейне. Для подписи сначала нужно разблокировать аккаунт через консоль geth.

Теперь можете нажать кнопку Create, чтобы создать смарт-контракт. У нас в нём конструктор, принимающий строковый параметр, вот почему remix показывает поле ввода вместе с кнопкой Create. Сюда можно ввести какое-нибудь значение (в кавычках, например, “Hi”) — или просто оставить пустым. В консоли geth при создании смарт-контракта появится следующее сообщение. Также обратите внимание, что если не установлен корректный gas limit, то такая команда приведёт к ошибке.

INFO [10-19|07:31:08] Submitted contract creation fullhash=0xf5511bb9d088672ac0d3896b8590b9a3e25484300f02deecdd739c3a549ed33a contract=0x42b7E903Fb42e191a7D623cbb4b7b4330D329d78

Вызов смарт-контракта

После создания смарт-контракта интерфейс remix немного изменится — как показано ниже, на вкладке Run.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Здесь можно установить некое значение для метода setGreeting — и нажать на него для вызова смарт-контракта. Опять же следует убедиться, что аккаунт разблокирован, потому что при вызове смарт-контракта мы использует транзакции Ethereum и требуется подпись инициатора. Проделав операцию с setGreeting, можно вызвать и другие методы.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Ethereum Block Explorer

Возможно, вы знакомы с сервисом etherscan для сканирования публичного блокчейна Ethereum. Но его нельзя направить на наш локальный блокчейн. Хотя Ethereum Block Explorer даже близко не сравнится по функциональности с etherscan, он вполне подходит для изучения того, что происходит в нашем локальном блокчейне.

Для установки программы сначала возьмём исходники со следующего репозитория.

git clone https://github.com/carsenk/explorer

Затем запустим команду установки из директории Ethereum Block Explorer.

Что такое geth node. Смотреть фото Что такое geth node. Смотреть картинку Что такое geth node. Картинка про Что такое geth node. Фото Что такое geth node

Обновление: Обсуждение этой статьи на Hacker News см. здесь. Не стесняйтесь присоединяться.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *