Принципы работы
Ethereum
Из предыдущей главы мы узнали, что такое децентрализованные приложения,
и познакомились с обзором некоторых популярных приложений.
Одним из них яв-
ляется Ethereum. Сегодня Ethereum занимает второе место по популярности после
Bitcoin. В этой главе мы детально разберемся в том, как работает Ethereum, и какие
приложения мы можем разработать на его основе. Мы также рассмотрим наиболее
важные клиентские программы и реализации узлов платформы Ethereum.
В этой главе будут раскрыты следующие темы:
учетные записи пользователей Ethereum;
что такое смарт-контракты и как они работают?
виртуальная машина Ethereum;
как работает майнинг в протоколе консенсуса?
использование команд консольного приложения Geth;
настройка приложений-клиентов Ethereum Wallet и Mist;
обзор протокола связи Whisper и платформы для хранения данных Swarm;
перспективы Ethereum.
Знакомство с Ethereum
Ethereum — это децентрализованная платформа, поверх которой можно разворачи-
вать децентрализованные приложения. Смарт-контракт (smart contract,
умный кон-
тракт) — это программа, которая выполняется исключительно так, как запрограм-
мировано, без какой-либо возможности простоя, цензуры, мошенничества и вмеша-
тельства третьей стороны. Смарт-контракты для платформы Ethereum могут быть
написаны на различных языках программирования, включая Solidity, LLL и Serpent.
Принципы работы Ethereum
____________________________________
[ 45 ]
___________________________________
Наиболее популярен язык Solidity. Ethereum имеет внутреннюю валюту, которая
называется
эфир
(ether). Для того чтобы развернуть на платформе смарт-контракт
или вызвать его методы, нам нужен эфир. Может существовать несколько экземп-
ляров смарт-контракта или приложения, и каждый экземпляр идентифицируется по
его уникальному адресу.
Как счета пользователей, так и смарт-контракты могут
хранить эфир.
Ethereum основан на структуре данных блокчейна и протоколе консенсуса с доказа-
тельством выполнения работы. Метод смарт-контракта может быть вызван через
транзакцию или через другой метод. В сети есть два типа узлов: майнеры и обыч-
ные узлы. Обычные узлы просто хранят копию блокчейна, а майнеры строят блок-
чейн, вырабатывая блоки.
Учетная запись Ethereum
Для создания учетной записи Ethereum нам требуется пара асимметричных ключей.
Ключи шифрования могут генерироваться на основе различных алгоритмов.
Ethereum использует криптографию на эллиптических кривых (Elliptic Curve
Cryptography, ECC). Алгоритм ECC имеет различные параметры, от которых зави-
сят скорость и безопасность. В Ethereum использована эллиптическая кривая
secp256k1
. Погружение в ECC и его параметры требует наличия серьезных матема-
тических знаний, но в этом нет необходимости, если мы хотим строить децентрали-
зованные приложения на основе Ethereum.
Ethereum использует 256-битное шифрование. Открытый и
закрытый ключи
Ethereum представляют собой 256-битные числа. Поскольку процессор не может
обработать настолько большие числа целиком, их представляют в виде шестнадца-
теричной строки из 64 символов.
Каждая учетная запись представлена адресом. Когда у нас есть ключи, мы должны
сгенерировать адрес. Процедура генерации адреса происходит следующим обра-
зом:
1.
Генерируем хеш открытого ключа по алгоритму
keccak-256
. Это дает вам 256-
битное число.
2.
Отбрасываем первые 96 битов (12 байтов) — теперь у вас должно остаться
160 битов (20 байтов).
3.
Затем кодируем адрес в шестнадцатеричную строку. Итак, вы получили строку
из 40 символов — это и есть ваш адрес.
Теперь любой желающий может перевести эфир на этот адрес.
Транзакции
Транзакция — это подписанный пакет данных, предназначенный для перемещения
эфира из одного счета на другой счет или в контракт, вызова метода контракта или
развертывания нового контракта. Транзакция
подписана цифровой подписью