
Содержание статьи
Добро пожаловать в первую статью нашей новой серии go-ethereum!
В следующие 10 минут вы:
- Изучите первый глоссарий блокчейну без каких-либо необходимых предварительных знаний об экосистеме
- Настройте свой полностью синхронизированный узел тестирования («клиент/сервер») в менее 10 мин
- создать свой аккаунт и получите транзакцию в размере 8ETH от фонда Ethereum БЕСПЛАТНО
Наш девиз: практика перед теорией — давайте перейдем непосредственно к установке полностью синхронизированного узла тестирования Ethereum, подключенного к тестовой сети Rinkeby!
Гет
Geth
это интерфейс командной строки (CLI), скомпилированный двоичный файл, программа и клиент для запуска полного узла Ethereum, реализуемого в Go.
Мы будем использовать Гет к:
- запустите полностью синхронизированный узел Ethereum для подключения к тестовой сети под названием Rinkeby
- создать новую учетную запись, чтобы иметь возможность отправлять и получать транзакции
- для чтения состояния EVM, например, проверки баланса любого счета (хотите знать, сколько баланса имеет ваша девушка, парень, жена, сосед? Великолепная прозрачность!)
Установка Geth
Мы можем установить его непосредственно из хранилищ:
Мак
brew tap ethereum/ethereumbrew install ethereum
Linux
sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum
Windows
Good luck :)
Проверьте установку:
which geth> /usr/local/bin/geth
geth version> Geth> Version: 1.8.20-stable
Убедитесь, что вы используете ту же версию, чтобы выполнить полную синхронизацию сети Rinkeby, как описано в следующих шагах, поскольку Rinkeby применил константинопольный хардфорк, поддерживаемый Geth 1.8.20.
Запуск узла блокчейн
Ну, дьявол кроется в деталях… но начать действительно просто. Слава разработчикам Ethereum.
Давайте настроим новый полностью синхронизированный Ринкби (тестовая сеть Ethereum с использованием протокола Clique PoA) узел.
Реализация Rinkeby PoA намного быстрее, но гораздо менее безопасна. Он более централизован по основной сети PoW, что вполне хорошо как тестовая сеть. Ринкеби удается утвердить новый блок с кучей транзакций каждые 15 секунд.
Хорошо, ладно, ладно… Что на самом деле означают эти слова?
- Ринкби: название тестовой сети Proof of Authority
- узел: в основном традиционный сервер, выполняемый клиентом/сервером Ethereum
- Консенсус: алгоритм, определяющий, как транзакции будут проверяться, добавляться и храниться в базе данных на каждом узле
- Блокировать: куча транзакций в сложном массиве, рассылаемом вокруг проволоки между всеми узлами сети каждые 15 секунд
- Транзакция: не думайте о банковской операции. Блокчейн-транзакция – это а изменение состояния. Переименование владельца смарт-контракта с Алисы в Боба? Изменение баланса вашего счета с 1ETH на 5ETH? Установить значение переменной «foo» на «foo_value_123» в своем смарт-контракте? Это трансакция.
Вы можете прочитать больше о предложении Rinkeby PoA здесь: https://github.com/ethereum/EIPs/issues/225
geth --rinkeby --datadir=~/.gophersland_ethereum_r1 --port=30304 --cache=2048 --rpc --rpcport=8546 --rpcapi=eth,web3,net,personal --syncmode=fast
Вышеприведенная команда:
- инициализировать новый каталог, в котором будут храниться все данные
~/.gophersland_ethereum_r1
. Каталог по умолчанию будет:~/.ethereum
- начните загружать историю Ethereum, необходимую, чтобы стать новым полностью действительным, синхронизированным узлом сети
- связь будет происходить через порт 30304
- кэш, своего рода буфер, будет установлен на 2 Гб, чтобы ускорить процесс синхронизации
- будет запущен дополнительный RPC API, чтобы мы могли общаться с нашим узлом через консоли, хороший графический интерфейс через порт 8546, позже

Подождите несколько часов, пока блокчейн полностью синхронизируется.
Текущий номер блока на 24 сентября: 3039786. На моем AMD Ryzen 5 2600, 3,4 ГГц процесс синхронизации занял 3 часа. О да, у меня новый игровой ПК!
Между тем вы можете подписаться на Web3Coach в Twitter или приготовить ужин, возможно также завтрак, пойти в спортзал… Скажем, блокчейн — не самая быстрая база данных 🙂
Наконец, напечатанное сообщение будет следующим:
- ИНФО [<time>] Количество импортированных новых сегментов цепи =1
- ИНФО [<time>] Количество импортированных новых сегментов цепи =1
- ИНФО [<time>] Количество импортированных новых сегментов цепи =1
- ИНФО [<time>] Количество импортированных новых сегментов цепи =1
Поздравляем, теперь вы стали частью революции блокчейна менее чем через 10 минут!!!
Создание своей первой учетной записи в блокчейне
Хранилище ключей
Все аккаунты Ethereum и их ключи хранятся в каталоге под названием «хранилище ключей”. По умолчанию каталог пуст, поскольку мы еще не создали собственный аккаунт!
enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/
drwx------ 4 enchanter enchanter 4096 sep 24 15:26 .drwxr-xr-x 18 enchanter enchanter 4096 sep 24 11:51 ..drwx------ 4 enchanter enchanter 4096 sep 24 15:26 gethsrw------- 1 enchanter enchanter 0 sep 24 15:26 geth.ipcdrwx------ 2 enchanter enchanter 4096 sep 23 09:54 keystore
enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..
Счет
Чтобы создать новую учетную запись, выполните следующее, уже знакомое, geth cmd
geth --datadir=~/.gophersland_ethereum_r1 account new
Вам будет предложено ввести парольную фразу (это ваш СУПЕР СЕКРЕТНЫЙ ПАРОЛЬ). Это нужно для расшифровки вашего недавно сгенерированного частного ключа, связанного с вашим новым адресом Ethereum, поскольку это позволяет вам использовать его позже для подписания транзакций в блокчейне. Запишите это где-нибудь, поскольку он нам понадобится позже. Но не беспокойтесь, если вы забудете это, все равно это только тестовая сеть.
enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..
enchanter@lukas-gaming:~$ geth --datadir=~/.gophersland_ethereum_r1 account new
INFO [09-24|15:36:33.566] Maximum peer count ETH=25 LES=0 total=25
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase: Repeat passphrase:
Address: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 24 15:36 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..-rw------- 1 enchanter enchanter 491 sep 24 15:36
UTC--2018-09-24T13-36-43.069452577Z--ceee57f2b700c2f37d1476a7974965e149fce2d4
Ууууу! Мой новый адрес Ethereum жив: ceee57f2b700c2f37d1476a7974965e149fce2d4.
Обычно вы встретите этот адрес с префиксом.0x” для указания кодирования адреса, HEX.
Новый формат ключевых файлов: UTC--<created_at UTC ISO8601>-<your address in hex
кодирование>. Порядок аккаунтов при перечне является лексикографическим, но через формат timepamp фактически он соответствует порядку создания.
Если вам интересно, что внутри файла, смело открывайте его! Ты увидишь:
- Адрес: ваш новый шестнадцатеричный адрес
- Крипто: куча математических переменных, ответственных за представление вашего частного ключа в зашифрованном виде, пока не беспокойтесь об этой магии
Интересное примечание: создание аккаунта происходит в автономном режиме и не требует синхронизированного узла блокчейна. Интересно, как с технической точки зрения можно создать уникальный адрес в автономном режиме? Мы проверим go-ethereum сам исходный код в следующей статье
спойлер: это потому, что адрес является хэшем вашего открытого ключа, основанного на вашем уникальном закрытом ключе.
Ладно, у меня есть новая блестящая учетная запись Ethereum, который мой баланс и как я могу внести некоторые тесты эфир?
Если говорить об эфире… что это такое?
эфир
Эфир – это криптовалюта, питающая сеть Ethereum. Он используется как единица стоимости и для оплаты майнерам за проверку, добавление и сохранение транзакций в общую базу данных. Но в основном это метод предотвращения СПАМа, потому что майнеры получают 5 (с прошлого месяца «лишь» 3) ETH за каждый успешно полученный блок. Да, это 600 долларов США по текущей цене на 24 сентября каждые 15 секунд. Хороший бизнес.
Как БЕСПЛАТНО получить транзакцию 8ETH от фонда Ethereum
Проверка баланса счета
Давайте сначала убедимся, что баланс на нашем счету равен 0, если кто-то уже не успел послать немного эфира от души.
Гет предоставляет консоль JavaScript, которую можно подсоединить к исполняемому двоичному файлу для удобного взаимодействия с блокчейном. Мы можем подключиться к нему, указав файл сокета, открывающийся один раз Гет сапоги. Файлы сокетов очень полезны для межпроцессной связи на одной машине, или IPC.
Этот файл можно найти в каталоге данных по умолчанию при работе программы Geth:
enchanter@lukas-gaming:~$ ls -la ~/.gophersland_ethereum_r1/
drwx------ 4 enchanter enchanter 4096 Sep 24 15:44 .drwxr-xr-x 18 enchanter enchanter 4096 Sep 24 15:47 ..drwx------ 4 enchanter enchanter 4096 Sep 24 15:44 gethsrw------- 1 enchanter enchanter 0 Sep 24 15:44 geth.ipcdrwx------ 2 enchanter enchanter 4096 Sep 24 15:47 keystore
Давайте взаимодействовать с сетью Rinkeby с помощью «geth attach” cmd в другом терминале, пока ваш блокчейный узел все еще работает. Обязательно передайте абсолютный путь в файл IPC, иначе вы получите ошибку.
enchanter@lukas-gaming:~$ geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.15-stable-89451f7c/linux-amd64/go1.10.1coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4at block: 3044891 (Mon, 24 Sep 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
> eth.accounts["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> eth.syncingfalse
> eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4")0
Запрос на блокчейн:
eth.accounts: для проверки доступных аккаунтов
eth.syncing: чтобы убедиться, что наше состояние, DB полностью обновлено остальной сети, чтобы гарантировать, что ответ getBalance будет основан на последнем состоянии
eth.getBalance(“<ваш адрес>”): чтобы запросить БД.
Получение транзакции 8ETH от фонда Ethereum БЕСПЛАТНО
Фонд Ethereum имеет очень аккуратную программу под названием «Смеситель” доступна онлайн для назначения Ether учетным записям, которые запрашивают это в режиме реального времени.
Запрос на эфир:
- Опубликуйте адрес своего аккаунта в одной из общедоступных социальных сетей
- Например, опубликуйте твит с вашим адресом Ethereum в любом месте твита, как этот, убедитесь, что вы пометили @Web3Coach и @freeCodeCamp и сообщите нам, понравился ли вам учебник!
- Откройте и вставьте URL-адрес твита
- Нажмите «Дайте мне эфир», выберите между 3, 7,5 или 18,75 эфира
- Подождите несколько секунд
- Снова спросите баланс своего счета
Вуаль
Вы богаты… в тестовой сети. Поздравляю с тем, что так далеко.
Вы можете продолжать расширять свои навыки блокчейна, создавая их с нуля в Go!»