Шрифт:
Интервал:
Закладка:
Отметим, что из соображений безопасности в будущем Ethereum, скорее всего, перейдет на модель proof-of-stake, после чего требование к эмиссии снизится до значения от 0 до 0,05x в год. В случае если организация Ethereum потеряет финансирование или исчезнет по какой-либо другой причине, мы оставляем открытым «социальный контракт»: любой имеет право создать свою версию будущего Ethereum с единственным условием, что количество эфира должно быть не более 60102216 × (1,198 + 0,26 × n), где n – количество лет, прошедших после создания первичного блока. Чтобы оплатить разработку, создатели могут свободно прибегать к краудсейлу или частично или полностью распределять разницу между увеличением монет за счет PoS и максимально допустимым увеличением монет каким-либо иным способом. Если версия обновится так, что перестанет соответствовать социальному контракту, с помощью форка ее вполне обоснованно можно будет откатить до подходящего варианта.
ЦЕНТРАЛИЗАЦИЯ МАЙНИНГА
Алгоритм майнинга биткойна устроен следующим образом: майнеры делают миллионы попыток вычислить хеш SHA256 чуть модифицированных заголовков блоков, пока кто-нибудь наконец не обнаружит хеш, который меньше таргета (сейчас он составляет около 2192). Такой алгоритм майнинга уязвим для двух форм централизации. Во-первых, в экосистеме майнинга доминируют ASIC (application-specific integrated circuits, «интегральная схема специального назначения») – компьютерные чипы, разработанные специально для майнинга биткойнов и, соответственно, в тысячи раз более эффективные. По этой причине майнинг нельзя назвать полностью децентрализованным и эгалитарным, и для заметного участия в нем требуются многомиллионные инвестиции. Во-вторых, большинство биткойн-майнеров на самом деле не производят валидацию блока самостоятельно, а полагаются на централизованные майнинг-пулы, которые предоставляют им заголовки блоков. Возможно, дело обстоит даже хуже: на сегодня три самых крупных майнинг-пула косвенно контролируют примерно 50 % вычислительных мощностей сети Bitcoin, хотя положение улучшает тот факт, что майнеры могут переключиться на другие майнинг-пулы, если пул или несколько пулов попробуют совершить атаку 51 %.
На данный момент мы собираемся решить эту проблему с помощью алгоритма, где майнеры получают случайный фрагмент данных о состоянии, высчитывают несколько случайно выбранных транзакций из последних N блоков и возвращают хеш результата. У такого подхода есть два важных плюса. Во-первых, контракты Ethereum могут включать в себя вычисления любого рода, так что для Ethereum ASIC должны справляться с любого вида вычислениями – то есть обладать более мощным процессором. Во-вторых, для майнинга необходим доступ ко всему блокчейну, из-за чего майнерам придется хранить весь блокчейн и как минимум иметь возможность верифицировать каждую транзакцию. При таких условиях в централизованных майнинг-пулах нет необходимости, поскольку p2p-пулы, по определению децентрализованные, справятся с их функцией не хуже, хотя централизованные майнинг-пулы тоже могут остаться и сглаживать беспорядочность, возникающую при распределении вознаграждений.
Эта модель еще не тестировалась, и может возникнуть проблема ее «хитрых» оптимизаций, при которых исполнение контракта будет использоваться в качестве алгоритма майнинга. Однако у этого алгоритма есть интересная особенность: он позволяет кому угодно «отравить колодец», добавив в блокчейн много контрактов, намеренно непригодных для вычисления ASIC. Производителям ASIC было бы выгодно использовать эту возможность для атаки друг друга. Таким образом, решение, которое мы разрабатываем, – скорее социальное и экономически адаптивное, нежели сугубо техническое.
МАСШТАБИРУЕМОСТЬ
Вопрос масштабируемости очень важен для системы 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], предъявленным майнером.
Злоумышленники также могут провести более изощренную атаку, опубликовав неполные блоки, – в таком случае полной информации, которая могла бы показать валидность/невалидность блока, попросту не будет существовать. Здесь может помочь протокол ответа на вызов: ноды верификации выпускают «вызовы» в форме индексов целевых транзакций, и после получения ноды легкая нода воспринимает блок как невалидный до тех пор, пока
- Большие данные. Революция, которая изменит то, как мы живем, работаем и мыслим - Виктор Майер-Шенбергер - Прочая околокомпьтерная литература
- Журнал PC Magazine/RE №11/2008 - PC Magazine/RE - Прочая околокомпьтерная литература
- Цифровой журнал «Компьютерра» № 27 - Коллектив Авторов - Прочая околокомпьтерная литература
- Шифровальщики. Как реагировать на атаки с использованием программ-вымогателей - Олег Скулкин - Прочая околокомпьтерная литература
- Блог «Серп и молот» 2019–2020 - Петр Григорьевич Балаев - История / Политика / Публицистика
- Сирия, Ливия. Далее везде! Что будет завтра с нами - Эль Мюрид - Публицистика
- Цифровой журнал «Компьютерра» № 162 - Коллектив Авторов - Прочая околокомпьтерная литература
- Записки философствующего врача. Книга вторая. Манифест: жизнь элементарна - Скальный Анатолий - Публицистика
- Руководство по компьютерной безопасности и защите информации для Больших Боссов - Карл Шкафиц - Прочая околокомпьтерная литература
- Русь и Орда. Великая империя средних веков - Глеб Носовский - Публицистика