Больше денег: что такое Ethereum и как блокчейн меняет мир
- Автор: Виталий Бутерин
- Жанр: Околокомпьютерная литература / Деловая литература: прочее
- Дата выхода: 2023
Читать книгу "Больше денег: что такое Ethereum и как блокчейн меняет мир"
МАСШТАБИРУЕМОСТЬ
Вопрос масштабируемости очень важен для системы Ethereum, поскольку ей свойственен недостаток, который есть и у Bitcoin: каждая транзакция должна быть проведена каждой нодой сети. Текущий размер блокчейна Bitcoin – 15 Гб, и он растет примерно на 1 Мб в час. Если бы сеть Bitcoin производила 2000 транзакций в секунду, как Visa, то блокчейн рос бы на 1 Мб каждые три секунды (1 Гб в час, 8 Тб в год). Ethereum, по-видимому, будет испытывать те же трудности, отягощенные тем, что, в отличие от Bitcoin, поверх него будет действовать множество приложений. Ситуацию ухудшает тот факт, что в Ethereum полным нодам не нужно хранить историю блокчейна, достаточно лишь помнить текущее состояние.
Большим блокчейнам неизбежно угрожает централизация. Если размер блокчейна возрастает, скажем, до 100 Тб, то с большой вероятностью полными нодами будет управлять незначительное количество крупных компаний, а простые пользователи будут держать легкие SPV-ноды. В такой ситуации владельцы полных нод могут вступить в сговор (например, чтобы изменить выплату за найденный блок или выдать BTC самим себе). Легкие ноды не смогут быстро обнаружить такой вид мошенничества. Конечно, хотя бы один владелец полной ноды будет честен, и буквально через несколько часов информация о мошенничестве просочится в условный Reddit, но будет уже поздно: обычным пользователям придется объединиться и внести конкретные блоки в черные списки, что потребует такого же сложного и, вероятно, недостижимого уровня координации, какой необходим для победы над атакой 51 %. Сейчас Bitcoin испытывает эти трудности, но их смягчает модификация блокчейна, предложенная Питером Тоддом.
В ближайшем будущем Ethereum собирается прибегнуть к двум дополнительным стратегиям, направленным на то, чтобы справиться с этой ситуацией. Во-первых, из-за того что майнинг-алгоритмы основаны на блокчейне, каждый майнер будет обязан как минимум держать полную ноду, что создаст нижний предел для количества полных нод. Во-вторых, что более важно, мы включим промежуточный корень дерева состояния в блокчейн после проведения каждой транзакции. Даже если валидация блоков будет централизована, пока хотя бы нода, занимающаяся верификацией, остается честной, проблемы можно избежать за счет протокола верификации. Если майнер публикует невалидный блок, то у этого блока либо неправильный формат, либо некорректное состояние S[n]. Поскольку начальное состояние S[0] корректно, должно существовать какое-то первое некорректное состояние S[i], где состояние S[i–1] будет корректно. Верифицирующая нода предоставит индекс i вместе с proof-of-invalidity, состоящим из подмножеств нод дерева Патрисии, которые пытаются произвести APPLY(S[i–1],TX[i]) – > S[i]. Ноды смогут использовать эти части дерева Патрисии для выполнения нужного фрагмента вычисления и убедиться, что получившееся S[i] не совпадает с S[i], предъявленным майнером.
Злоумышленники также могут провести более изощренную атаку, опубликовав неполные блоки, – в таком случае полной информации, которая могла бы показать валидность/невалидность блока, попросту не будет существовать. Здесь может помочь протокол ответа на вызов: ноды верификации выпускают «вызовы» в форме индексов целевых транзакций, и после получения ноды легкая нода воспринимает блок как невалидный до тех пор, пока еще одна нода – майнер или другой верификатор – не предоставит подмножество нод дерева Патрисии в качестве доказательства валидности.