EOS vs Ethereum: консенсус, смарт-контракты, управление
Ethereum является самой популярной платформой для запуска смарт-контрактов. Однако совсем недавно состоялось если не событие года в мире криптовалют, то, как минимум, этого полугодия: запустили основную сеть EOS — возможно, самого сильного конкурента Ethereum.
О том, как устроены блокчейны EOS и Ethereum, в специальном материале для ForkLog рассказал CEO Smartz Юрий Васильчиков.
Истоки появления EOS
Как многие помнят, Ethereum появился три года назад, а EOS запускается в этом году, однако новый блокчейн не возник из пустоты. EOS сделан на основании опыта, который разработчики получили с децентрализованной биржей BitShares и социальной блокчейн-платформой Steemit (сторонние разработчики создали ее русскоязычный форк — Golos).
В основе BitShares и Steemit лежит один движок — Graphene. Биржа BitShares появилась в 2014 году, то есть раньше, чем Ethereum. Соцсеть Steemit была запущена в 2016 году. По сути, в рамках проекта EOS ведется работа с, условно, третьим поколением движка. Капитализация EOS на данный момент составляет порядка $12 млрд, что говорит об интересе и доверии комьюнити.
Стоит оговориться, что признанная сообществом основная сеть EOS еще не запущена, а разработчики продолжают совершенствовать код и вносить в него изменения, выпуская новые версии. Поэтому какие-то характеристики EOS могут измениться к моменту, когда вы читаете эту статью. На момент публикации актуальная версия EOS – 1.0.3.
Общее сравнение
Модель токена. В EOS и Ethereum модель токена (кто-то предпочтет назвать его коином) одинаковая — инфляционная. То есть токены довыпускаются для того, чтобы выдавать премии майнерам. Недавно Виталик Бутерин написал, что хочет убрать или снизить инфляцию в Ethereum, но пока она есть. В EOS прописана инфляция 5% в год — это заложено в алгоритм и, предположительно, останется без изменений.
Модель оплаты транзакций. Платность транзакций важна не только для мотивации блок-продюсеров aka майнеров, но и для защиты сетей от DDoS-атак и заспамливания. Это защита от условного бесконечного цикла в смарт-контракте, который мог бы «повесить» все майнерские машины.
В Ethereum защита сделана с помощью газа. Каждая операция в смарт-контракте стоит определенное количество газа, а в блоке его ограниченное количество. Нельзя сделать бесконечно сложный смарт-контракт, потому что газ платный, и сеть защищена от спама.
В EOS транзакции условно бесплатные. Мы не платим за газ — его нет. Вместо него существует пропускная способность сети, так называемая bandwidth, которая выдается каждому пользователю в зависимости от доли в сети EOS, которой он обладает.
Если вам не хватает мощности сети, вы можете докупить токены EOS и запустить более сложные контракты. Допустим, у вас есть 100% производительности сети. Если вы держите 1% токенов EOS, то можете использовать 1% пропускной способности.
Ресурс, который потребляет смарт-контракт, высчитывается из трех параметров: процессорная вычислительная мощность, объем хранимых данных и используемая память.
Количество транзакций в секунду. В сети Ethereum на пике было примерно 15 транзакций в секунду. EOS обещает уже в июне от 1000 до 6000, а потом еще и масштабировать этот параметр.
В EOS всего 21 «майнер», то есть блок-продюсер. Они не майнят в том понимании, в котором майнят биткоин или Ethereum, это не Proof-of-Work (PoW).
Чтобы транзакций в секунду стало больше, майнеры должны поставить более мощное оборудование. В движке EOS хорошо предусмотрено разделение потоков, потенциально он способен обеспечить очень большое число транзакций в секунду.
Смарт-контракты
Virtual machine. Ethereum использует собственную виртуальную машину EVM (Ethereum Virtual Machine), а EOS применяет открытый стандарт WebAssembly. Движок EOS считается более современным и универсальным.
Языки разработки. Языки для разработки смарт-контрактов в этих блокчейнах могут быть любыми. Главное, они должны компилироваться в EVM для Ethereum и в WebAssembly для EOS.
На практике в Ethereum преимущественно используется язык Solidity. Он проще в освоении, чем C++ и Rust, которые сейчас преимущественно используются для программирования под EOS. Это может измениться в будущем с появлением новых компиляторов, например из JS в WebAssembly.
Защита от DDoS. Как уже упоминалось, в Ethereum используется газ, а в EOS — bandwidth.
Модель аккаунтов. Аккаунт («адрес» в терминах EOS) в обеих сетях — пара ключей (публичный и приватный). В Ethereum модель плоская, то есть все адреса абсолютно равны и нет разделения доступов.
В EOS встроена иерархическая модель, почти как в операционных системах. Именно поэтому EOS-разработчики и преподносят ее как блокчейн-ОС. Основной аккаунт в EOS может управлять дочерними, выдавая им различные права доступа: на запись, на отправку определенных транзакций. При этом все аккаунты наследуются от аккаунтов блок-продюсеров («майнеров»). И поэтому у них очень большое влияние на сеть.
Модель взаимодействия смарт-контрактов. В Ethereum есть адрес смарт-контракта и транзакция. Используется плоская модель: и мы сами, и смарт-контракты могут посылать транзакцию.
В EOS для отправки транзакции (называемой тут «action») в смарт-контракт нужно сначала получить права («permissions») на запуск определенных транзакций. Это очень гибкая система в плане настройки доступов, безопасности, возможности обновления и т. д.
Разделение ресурсов. В Ethereum чтобы дать одному смарт-контракту доступ к ресурсам другого (хранилищу), нужно специально предусмотреть функцию delegate call.
В EOS возможностей гораздо больше — можно назначать различные права: какой контракт, адрес или аккаунт имеет доступ.
Исправление ошибок. В Ethereum нужен форк для исправления ошибок, а в EOS блок-продюсеры могут забанить неудобный контракт или исправить другую ошибку.
Консенсус
Вид консенсуса. В Ethereum ограниченным ресурсом является вычислительная мощность майнеров — это известная модель консенсуса Proof-of-Work.
В EOS представлен алгоритм достижения консенсуса Delegated Proof-of-Stake — ограниченным ресурсом выступают голоса владельцев сети. Есть специально выделенные блок-продюсеры, за которых держатели EOS голосуют. Они закрывают блоки, выполняя полезную нагрузку.
Ресурс консенсуса. Сегодня блок-продюсеры в Ethereum и Bitcoin — крупные майнинговые пулы, обладающие огромной вычислительной мощностью.
В EOS только 21 блок-продюсер. Каждый избирается общим голосованием. Голосование может быть многоступенчатым — вы голосуете за кандидата, который может сам отдать голос за какую-то ноду, которая является кандидатом в блок-продюсеры.
Алгоритмический тип. В Ethereum вероятностный (probabilistic) алгоритмический тип консенсуса, то есть мы не знаем, какая нода и когда закроет следующий блок.
В EOS действует детерминистический (deterministic) тип алгоритма: точно известно, какая нода закрывает блок и когда. Ноды чередуются в строгом порядке, и время тоже строго определено.
Формирование блоков. В Ethereum в среднем формируется 0,03 блока в секунду — примерно 1 блок в 30 секунд.
У EOS — 2 блока в секунду.
Количество нод для закрытия блока и атак. В Ethereum достаточно всего лишь одной живой ноды, чтобы закрыть блок.
В EOS нужно 15 нод: 2/3 всех активных блок-продюсеров и еще одна нода.
Столько же (14+1) нужно для атаки, как и в атаке на Ethereum: 50%+1 (51%).
Транзакции как доказательство доли: Traded Average Price Options (TaPoS). TaPoS — это верификация цепи, когда в каждую транзакцию добавляется хэш предыдущего блока. В Ethereum такого нет.
В EOS это дополнительный уровень защиты. Если мы вдруг «переигрываем» блокчейн и что-то меняем, у нас меняется хэш предыдущих блоков и все транзакции в новом блоке становятся невалидными.
Управление сетью
Управление блокчейном Ethereum происходит вне сети (offchain). EOS управляется (onchain) путем долевого голосования всех держателей токена.
Предполагается, что управление сетью в EOS будет происходить с помощью отправки транзакций. Вы отправляете голосующую транзакцию, как бы свой голос, и хранимыми у вас EOS голосуете за решение о выборе блок-продюсера (БП) или о каких-то изменениях непосредственно в коде.
Представить это можно следующим образом: на GitHub есть какой-то коммит, за который голосуют, таким образом принимается решение, изменять что-то или нет.
То же самое касается бана недобросовестных блок-продюсеров и делегирования голосов.
Награды и инфляция
За последние пару месяцев правила распределения наград между блок-продюсерами претерпели изменения. И скорее всего, они еще будут меняться. Актуальные данные можно узнать непосредственно из кода EOS.
На данный момент из 5% фиксированной годовой инфляции только 1/5 (20%) предназначена для вознаграждения блок-продюсеров. Остальные 4/5 (80%) идут в отдельный фонд, правила распределения которого пока недостаточно ясны, и мы оставим их за пределами данной статьи. Ранее предполагалось, что БП сами голосованием будут решать, какую часть направлять себе на вознаграждение, а какую – в фонд.
В свою очередь, 25% от той самой 1/5 части объема годовой инфляции получают активные блок-продюсеры, которые закрывают блоки (это топ-21 БП). Оставшиеся 75% — все блок-продюсеры, как активные, так и резервные, делят между собой в той пропорции, в которой они получили голоса.
Пока что экономический смысл этой системы не очень понятен. Есть вероятность, что после релиза EOS будет запущено сразу несколько сетей. Ведь кандидатов в блок-продюсеры уже зарегистрировалось более 180 — и все они предположительно будут претендовать на попадание в топ-21. А сами разработчики EOS не планируют запускать свой блокчейн, оставив это полностью на стороне сообщества.
Существуют дебаты на тему того, должны ли ноды оплачивать голоса своим избирателям. 5% инфляции EOS и даже 1% – это довольно большие деньги. При капитализации сети около $10 млрд (на момент публикации статьи), 1% — это сто миллионов долларов. У блок-продюсеров возникает экономический смысл привлекать голоса оплатой, но подавляющее большинство БП-кандидатов заявляет о том, что покупать голоса не будут и вообще это порочная практика, которой необходимо избегать. Не исключено, что эти заявления делаются, скорее, по юридическим причинам.
Заключение
В заключение стоит отметить, что при появлении биткоина, в нем уже были возможности программирования, но не столь широкие. Потом пришел Ethereum со своими тьюринг-полными смарт-контрактами, и открылись новые удивительные возможности. EOS – это следующий шаг, который открывает новые горизонты, не всегда сходу очевидные даже тем, кто знаком с Ethereum.
UPD: На момент публикации материала в первой сети, претендующей на звание EOS mainnet, общая «явка» держателей на голосование превысила 15% необходимые для начала полноценной работы.
Скачивайте приложение ForkLog для Android-смартфонов!
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!