Не так давно хайп вокруг блокчейна и криптовалют коснулся и меня, и я решил разобраться, что же это такое и почему эта тема сейчас так популярна. По-моему мнению, самый лучший способ разобраться в какой-либо технологии — это попытаться самому реализовать эту технологию, поэтому в качестве подопытного кролика я взял Ethereum — децентрализованную платформу на основе блокчейна.
Я планирую реализовывать виртуальную машину Ethereum’а на языке программирования Elixir. Почему Elixir? Потому что Elixir классный, масштабируемый, устойчивый к ошибкам, функциональный, и, вообще, Elixir является лекарством от всех болезней… Если серьезно, то, по существу, неважно на каком языке будет реализована виртуальная машина, потому что основная задача проекта — понять, как работает Ethereum, и производительность и скорость вычислений отходят на второй план. К тому же, на высокопроизводительных языках программирования уже есть свои реализации — parity на Rust’е и go-ethereum на Go, на Elixir’е же пока нет своей реализации.
Документировать свои изыскания я буду в виде серии коротких статей, в которых буду пытаться описывать сложности, с которыми столкнулся. Также, я надеюсь, эти статьи помогут мне самому лучше понять исследуемую область, уложить все мысли в голове.
Приведу для затравки пару идей, которые должны убедить вас в крутости данной технологии.
Мысли о распределенных цифровых валютах начали появляться с 80-х годов XX века, но переворотный момент в их истории наступил в 2009, когда Сатоши Накамото впервые на практике реализовал распределенную валюту Bitcoin, объединив инструменты на основе криптосистемы с открытым ключом для определения собственности и алгоритм для отслеживания того, кому принадлежат монеты (этот алгоритм известен, как “доказательство работы” [анг. proof of work]).
Доказательство работы решило 2 проблемы:
-
Доказательство работы предоставило сравнительно эффективный алгоритм для прихода к консенсусу, предоставляя возможность узлам сети коллективно соглашаться на обновлениях состояния учетного журнала Bitcoin’а.
- Доказательство работы предоставило механизм для свободного входа в процесс прихода к консенсусу, решая политическую проблему того, кто влияет на процесс консенсуса.
Основное преимущество Ethereum’а над другими криптовалютами — это наличие своего полного по Тьюрингу языка программирования, который позволяет писать смарт контракты и распределенные приложения для платформы.
На данном этапе, я думаю, этой информации достаточно, по мере прогресса в процессе разработки, я буду приводить дополнительные теоретические аспекты. Но, все-таки, советую хотя бы по горизонтали прочитать белую книгу Ethereum’а, там все довольно четко и понятно разложено по полочкам, для самых смелых предлагаю желтую книгу Ethereum'a, в котором представлена сама спецификация.
Для данного проекта была создана организация на github’е, в которой и будут храниться все связанные репозитории.
До встречи в следующей статье!
Автор: new player