The Ethereum Roadmap
Про спикера
Игорь Мандригин, CTO Gateway.FM — один из главных партнеров Gnosis Chain. Ранее: Ethereum Foundation, Erigon team’19, core dev; исследование «the verge/the purge», Status.im, Opera/OPay.
Про Gateway.FM
Gateway.fm — провайдер распределенной инфраструктуры c разными моделями распределения на четырех дата-центрах.

О чем доклад
- История и динамика развития Ethereum;
- Текущий роадмап и фазы: The Merge, The Verge, The Purge, etc.
- Ближайший теневой форк: Shanghai.
История развития Ethereum
Ранний этап
Изначально Ethereum назывался World Computer и основывался на идее, что код можно выполнять распределенным образом. При этом у системы должно быть сообщение в реальном времени и хранилище. Поэтому сначала родились сразу три проекта: Ethereum (и смарт-контракты), Swarm для хранения файлов, и Whisper для передачи данных. Изначально не было роадмапа, как такового — изучали все на ошибках. Это выглядело так: были созвоны core-разработчиков, кто-то говорил, что удалось запустить какую-то фичу и все решали — оставлять или нет. Виталик что-то писал, потом это как-то появлялось на AllCoreDevs, потом это как-то реализовывалось.

Project Serenity
В 2015 году был Project Serenity, переименованный в последствии в ETH 2.0. Была задача переделать Ethereum, внедрив новые прикольные штуки: шардинг, переход на PoS, 100К транзакций в секунду и так далее. Этот проект очень долго был в процессе исследований. Некоторые команды получили гранты на создание Beacon Chain, но это была пустая сеть — там были только блоки без транзакций и смарт контрактов. Это занимало очень много времени. У Виталика был пост о методах разработки, который повернул всю эту историю в другую сторону. Он опубликовал работу A rollup-centric Ethereum roadmap, в которой советует вместо масштабирования Ethereum, строить второй слой поверх сети. Роллапы в такой системе будут брать на себя задачи по масштабированию. А Ethereum будет предоставлять уровень settlement и data availability.
Переход на консенсус PoS продвигался медленно, роадмап был переделан несколько раз в течение этого процесса.
The Merge
Виталик решил вместо запуска еще одной сети соединить ноды разных уровней: ноду Becon Chain и ноду сети Ethereum. После успешного завершения The Merge, роадмап снова переделали и внедрили фазы: Purge, Verge и так далее.
Процесс улучшения сети
- Есть группы исследователей (внутри и вне EF). Они публикуют свои результаты на форуме Eth Research. Виталик там тоже иногда что-то публикует.
- Из достойных идей формируется EIP — предложение включить улучшение в будущие обновления сети.
- Реализация прототипа на одном клиенте.
- Запуск девнета — временная сеть для экспериментов.
- Multi-client devnet.
- Тестнет — сеть для тестов хардфорков и shadow-форков.
- Теневые (shadow) форки — запуск сети с отдельным набором валидаторов с новыми правилами. Во время The Merge было около 13 теневых форков. Теневой форк живет неделю или две и умирает.
- Хардфорк начинается с тестнетов и только потом переходит в майннет.
На любой из этих фаз предложение может отмениться или вернуться на стадию исследований.

Роадмап Ethereum
Последний апдейт довольно большой и включает шесть направлений, которые развиваются параллельно.

The Merge
Кажется, что The Merge уже завершился, но это не так. Остались некоторые завершающие шаги.
Есть понятие набора валидаторов, но в Ethereum любая нода валидирует сеть. Это ложное представление. Валидаторы нужны, чтобы записывать данные в блокчейн.
Распределенные валидаторы (distributed validators) позволяют шерить ноду среди нескольких валидаторов.
Что еще должно быть сделано:
- вывод средств (после хардфорка Shanghai / EIP-4895).
- Single Slot Finality. Раньше про тему финализации не говорили. Но сейчас это на слуху. Финализация — при отправке транзакций, указывается, сколько подтверждений нужно до исполнения. Это нужно, чтобы транзакций не могла отправиться назад в пул транзакций. В EF придумали запрашивать финализирован блок или нет. В Ethereum есть два консенсус-алгоритма с разными свойствами. Эта модель делает блок available, но не consistent. Но раз в 12 блоков (в эпоху) работает второй алгоритм, который consistent, но не available. Идея Single Slot Finality — делать это каждый блок, а не каждый 12й.
The Verge
Тут нужно объяснить, что такое Деревья Меркла (Merkle Trees) — это иерархическая структура, которая используется для верификации данных. Можно отправлять не весь массив данных, а только верхний элемент в виде хеша, который содержит информацию про все другие. Этот хэш записывается в хэдере. Этот процесс называется commitment — проверка правильности стейта Ethereum, в соответствии со структурой блока.
У Merkle Tree есть много достоинств: они просты, удобные, занимают мало места. Но сейчас появилось много более сложных систем вроде zk proofs и так далее. Например, есть Verkle — дерево zk-пруфов (если сильно упрощать).
Нодам в теории не надо будет исполнять каждую транзакцию на этом этапе. Будут добавлены SNARKs и state diffs.
Таким образом получаются легкие клиенты, которые можно запускать на смартфонах и планшетах. Они не требуют хранения информации в полном объеме и менее требовательны в целом. Легкие клиенты помогают улучшить мосты между сетями. Почти все мосты сейчас работают по принципу мультиподписей (16-20 участников) Но с применением легких клиентов можно распределить между всему валидаторами (400К участников).
Пока что The Verge движется не так быстро, как хотелось бы. Дерево Merkle строится 7 минут, а Verkle — 18 часов.

Где почитать об этом:
- Guillaume Ballet - https://twitter.com/gballet
- Giulio Rebuffo - https://twitter.com/GiulioRebuffo○ https://dankradfeist.de/ethereum/2021/06/18/verkle-trie-for-eth1.html
The Surge
Этот этап подразумевает масштабирование. Сейчас Ethereum производит блок раз в 12 секунд. Это очень низкий TTP. Есть идея запихнуть этот процесс в роллапы, и самая большая проблема тут — data availability. Роллапы требуют много данных. Для решения проблемы, разработчики развили идею шардинга в Danksharding. Изначально была идея сделать шарды почти независимыми блокчейнами с уровнем исполнения и валидаторами. Потом решили, что все шарды будут для данных и только один шард для исполнения кода.
Danksharding состоит из трех идей:
- Шарды будут создаваться на одной машине одним валидатором. А уровень исполнения — Beacon Chain. Шарды потом распределяются дальше по сети. Для создания шардов нужно много ресурсов, мощная машина. И это проблема. Также нужны сервера для хранения шардов. Для этого есть PBS — валидаторы делятся на две части: пропозеры и билдеры. Пропозер может создавать блоки локально или передавать блок билдеру, а билдеры друг с другом соревнуются.
- KZG + data availability.
- Одновременная валидация шардов.

EIP-4844: Protodanksharding
Тут нет шардинга, но смысл тот же. Сейчас роллапам приходится присылать много данных в майннет. И на это тратится газ. В протоданкшардинге эти данные будут записываться отдельно и дешевле.
Есть роллапы и валидиумы: когда провайдер роллапа умирает, функционал все равно можно восстановить и забрать свои деньги, а с валидиумом так не получится. Роллап не только проверяет данные, но и сохраняет экстраданные. Валидиум используется только для пруфов. Валидиум сделать не сложно, но не очень эффективно, а роллап — очень дорого. Сейчас Ethereum сам по себе не масштабируется, но делается все, чтобы поверх него можно было построить уровни.
The Purge
Архивная нода Geth занимает 12 терабайт и продолжает расти. Проблема не в архивных данных, а в том, что количество адресов растет, в день увеличивается на 100 тысяч.
Давно была идея, что надо чистить старые ненужные данные, она прошла через разные стадии:
- Появилась идея State Rent — аренда за место смарт-контрактов в сети. Не всем нравилась эта идея, плюс она сложна в имплементации.
- После этого была идея Stateless Ethereum и блок witnesses — ноде для синхронизации не нужны все данные, с каждым блоком также возникает блок witness, который хранит все необходимые данные для выполнения транзакций и хэши для построения деревьев Меркла.
- ReGenesis — новейшая идея, которая подразумевает, что каждый раз нужно начинать с начала — с хэша Меркл-дерева. Отправитель предоставляет пруф для выполнения транзакции.
- Эта идея получила новое название State Expiry — добавилось хранение истории на несколько эпох назад.
- EIP-4444 — snapshot сети + остановка обслуживания старых блоков, которые не используются.

The Scourge: MEV
MEV-буст стал возможен потому что в консенсус-клиентах сделали тестовый APY и разработчики внедрили MEV boost, который выбирает рилей и делает оптимальное построение блока. Мало того, что APY был не доделан, но еще основной фокус был на The Merge, поэтому многие блоки билдились не очень эффективно, что было невыгодно блок-билдерам.

Самое простое решение: реализовать crList внутри протокола и делать больше рилееров, которые не будут цензурироваться.
Дополнительно об этом:
- https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance
- https://ethresear.ch/t/two-slot-proposer-builder-separation/10980
- https://ethresear.ch/t/single-slot-pbs-using-attesters-as-distributed-availability-ora

The Splurge
На этот этап скинули разные процессы, которые никуда не вошли. Тут хочется остановиться на двух моментах:
- VDF — функции рандомности: как в распределенной системе добиться, чтобы следующее случайное число на всех нодах было одинаковым, но нельзя было угадать заранее, что это за число. Сейчас часто используется runDAO, но VDF в будущем может стать приоритетным (https://blog.trailofbits.com/2018/10/12/introduction-to-verifiable-delay-functions-vdfs/).
- Account Abstraction: сейчас в Ethereum есть аккаунты и контракты, но в будущем планируется система аккаунтов, чтобы менять ключи, делать распределенные ключи, отзывать ключи и т.д. (ERC-4337 — https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a)

Следующий хардфорк
- Планируется +- в первой половине следующего года, в него войдут 4 EIP и 3 еще рассматриваются. Много изменений и оптимизаций для Solidity, выводы и другие изменения.
- Подробнее: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md

Полезные ссылки
● ACD calls ● ETH Cat Herders/Peep an EIP ● Tim Beiko ● Twitter Vitalik Buterin
