◊ 0,099x от общего количества проданного эфира (60, 102, 216 ETH) будут выделены организации для поощрения ранних участников и оплаты ETH-расходов перед созданием первичного блока.
◊ 0,099x от общего количества проданного эфира будет сохранено в качестве долгосрочного резерва.
◊ 0,26x от общего количества проданного эфира будет распределено между майнерами за год, и так будет всегда.
Несмотря на линейный во времени выпуск валюты, показатель роста количества валюты, как и у биткойна, со временем стремится к нулю
При создании этой модели мы приняли два важных решения: во-первых, о наличии и размере собственного фонда; во-вторых, о постоянно растущем линейном предложении, в отличие от ограниченного предложения в биткойне. Фонд мы считаем необходимым по следующей причине: если его не создать и уменьшить линейную эмиссию до 0,217x для сохранения того же процента инфляции, то общее количество эфира будет на 16,5 % меньше и каждая единица будет обладать на 19,8 % большей стоимостью. Следовательно, при продаже будет раскуплено на 19,8 % больше эфира, и каждая единица будет иметь абсолютно ту же стоимость, что и раньше. Организация при этом получит 1,198x BTC, которые разделятся на изначальные BTC и дополнительные 1,198x. Таким образом, ситуация с отсутствием фонда приводит в точности к тому же, что и ситуация с фондом, с одним лишь важным отличием: организация получит только BTC и будет уже не так заинтересована в росте ценности эфира.
Непрерывный линейный рост валюты уменьшает риск того, что некоторые считают чрезмерной централизацией активов в Bitcoin, а также обеспечивает будущим поколениям майнеров те же шансы получить валюту, что и у нынешнего поколения. При этом, поскольку процент, на который растет количество валюты, со временем стремится к нулю, пользователи будут заинтересованы в хранении сбережений. Также, поскольку какая-то часть монет всегда будет теряться (из-за неосторожности людей, их смерти и по многим другим причинам) и эти потери можно усреднить до определенного процента от всего предложения в год, количество монет в обращении стабилизируется на значении, равном годовой эмиссии, поделенной на процент потерь (например, при норме потерь в 1 % по достижении предложения 26x каждый год будет добываться 0,26x и столько же теряться, что создаст равновесие).
Отметим, что из соображений безопасности в будущем 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], предъявленным майнером.
Злоумышленники также могут провести более изощренную атаку, опубликовав неполные блоки, – в таком случае полной информации, которая могла бы показать валидность/невалидность блока, попросту не будет существовать. Здесь может помочь протокол ответа на вызов: ноды верификации выпускают «вызовы» в форме индексов целевых транзакций, и после получения ноды легкая нода воспринимает блок как невалидный до тех пор, пока еще одна нода – майнер или другой верификатор – не предоставит подмножество нод дерева Патрисии в качестве доказательства валидности.
ЗАКЛЮЧЕНИЕ
Протокол Ethereum изначально задуман как улучшенная версия криптовалюты, которая предоставляет дополнительные возможности благодаря крайне обобщенному языку программирования: эскроу внутри блокчейна; ограничение суммы снятия; финансовые контракты; рынки азартных игр и прочее. Протокол Ethereum не должен «поддерживать» какое-либо из приложений напрямую, но использование полного по Тьюрингу языка программирования теоретически позволяет создавать произвольные контракты для любого типа транзакций и приложений. Но самое интересное в Ethereum – то, что его протокол выходит далеко за рамки просто криптовалюты. Протоколы децентрализованного хранения файлов, децентрализованных вычислений и децентрализованных рынков предсказаний, а также десятки других концепций могут существенно повысить эффективность IT-индустрии и стимулировать другие p2p-протоколы, впервые добавив экономический уровень. Наконец, есть и значительное множество приложений, не имеющих никакого отношения к деньгам.
Концепция произвольности функции изменения состояния, включенная в протокол Ethereum, предоставляет платформу с уникальным потенциалом; в отличие от протоколов закрытого типа, созданных с конкретной целью и для конкретного типа приложений, скажем, в области хранения данных, азартных игр или финансов, архитектура Ethereum крайне открыта, и мы верим, что в ближайшие годы она станет прекрасным базовым уровнем для огромного количества финансовых и нефинансовых протоколов.
Глоссарий