Схема уменьшения награды за блок: ошибка Сатоши?Часовая стрелка Bitcoin clock отсчитывает время до уменьшения награды за блок
Николя Куртуа (Nicolas Courtois) — специалист в области криптографии и криптоанализа, старший преподаватель в Университетском колледже Лондона (University College London), автор и соавтор более 100 научных работ (индекс Хирша 32). Сферы его научных интересов — криптоанализ (в том числе советского блочного шифра ГОСТ 28147-89), пост-квантовая криптография и криптовалюты. С 2013 года года Куртуа (один и в соавторстве) написал шесть работ о проблемах биткойна, резко и при этом обоснованно раскритиковав некоторые решения Сатоши Накамото и показав, что биткойн далеко не так децентрализован и безопасен, как принято считать.
Изложение далее идёт от первого лица, аналогично оригинальной работе.Есть ли в биткойне что-то неправильное? Мы считаем, что есть как минимум одно свойство биткойна, которое ничем не оправдано и должно быть изменено как можно скорее. Мы впервые исследовали данные о рынке биткойна в связи с регулярным уменьшением вдвое награды за блок примерно раз в четыре года. Биткойн существует уже шесть лет, но данные, сопутствующие первому уполовиниванию награды, были сильно искажены последующим резким ростом количественных показателей сети и масштабных инвестиций в криптовалюты. Тем не менее, алгоритм уменьшения награды за блок — неотъемлемая часть протокола, и это нельзя оставлять без внимания.
Искусственный четырехлетний циклНапомним, как устроен механизм изменения награды за блок. Каждые примерно четыре года награда уменьшается вдвое: изначально она составляла 50 биткойнов, с ноября 2012 года — 25 биткойнов. Уменьшение до 12,5 биткойнов ожидается летом 2016 года.
Происхождение такого принципа неясно. Он НЕ был предложен в первой работе Сатоши в 2008 году: там говорилось лишь, что «любые необходимые правила протокола могут быть реализованы через данный механизм голосования» («any needed rules and incentives can be enforced with this consensus mechanism»). Эти константы жестко прописаны в текущей версии канонического биткойн-клиента. Значения констант связаны с ограничением на общее количество биткойнов, которое не может превысить 21 миллион. Фактически, 21-миллионный предел денежной массы обеспечивается именно механизмом уменьшения награды за блок. Может показаться, что такого рода жёстко заданные произвольные константы — это баг, но отчего-то он часто удоставивается похвалы. По-видимому, мы первые, кто критикует этот аспект биткойна.
Принципиальный недостаток описанного положения вещей — резкое изменение важного экономического показателя биткойн-экосистемы. Это влечет за собой серьёзный пересмотр мотиваций майнеров и может вести к нестабильности на рынке. Удивительно, что создатель биткойна посчитал оптимальным уменьшать награду за блок редкими резкими скачками. Это решение имеет серьезные последствия для всей экосистемы.
Искусственный цикл и встроенная нестабильностьВ текущей канонической реализации биткойн-клиента награда за майнинг уменьшается вдвое в определённые моменты времени. Это НЕ возмещается растущей сложностью майнинга, а просто добавляет резкий скачок к обычно плавно растущей кривой сложности. Мы предсказываем, что график сложности в 2016 году впервые испытает разрыв: в 2012 году этого не произошло, так как лишь небольшое количество майнеров выключили свои устройства 29 ноября, в день уменьшения награды.
В один момент в следующем году прибыльность майнинга упадёт вдвое и значительное количество майнеров неизбежно потеряют к нему интерес. Инвесторы могут передумать вкладывать деньги в IT-отрасль, прибыльность которой по прихоти неизвестного автора протокола вдруг упала вдвое и сделала убыточной работу множества ферм из-за странного, ничем не оправданного правила, которое в принципе несложно было изменить. Они могут вывести средства из биткойн-экономики и вложить их в другую криптовалюту. Мы ожидаем, что резкий скачок производительности биткойн-майнинга спровоцирует масштабные флуктуации рынка, которые могут длиться до четырех лет.
Мы утверждаем, что действующее правило изменения награды за блок влечёт серьёзные последствия. Оно создаёт искусственный четырёхлетний цикл во всей биткойн-экономике, в том числе для майнеров, трейдеров и инвесторов. Правило создаёт мотивации для резкого движения капитала, создаёт «привилегированные» моменты для инвестиций, приносящих высокую прибыль. Майнеры неизбежно поймут, что производят большое количество SHA256-хешей себе в убыток, и выключат свои устройства. В зависимости от курса биткойна это может произойти даже раньше, чем сам момент уменьшения награды.
Цикличность биткойн-протокола легко исправить. Разработчики вполне могут договориться и выпустить патч к протоколу, который бы сглаживал кривую изменения награды для майнеров. Но какое бы решение ни было принято, оно будет иметь серьёзнейшие последствия и пересмотреть его потом будет крайне сложно.
Комиссии компенсируют уменьшение награды?Сейчас биткойн не обязывает включать в транзакции комиссию. Размер транзакции определяет пользователь в момент создания транзакции. Комиссия служит дополнительной мотивацией для майнера включить транзакцию в блок. Манер может собрать сотни комиссий с каждым найденным блоком. Хотя в теории комиссия необязательна, на практике большинство кошельков включают в транзакции комиссию по умолчанию. Пользователь может настоять на нулевой комиссии, понимая, что это увеличит время подтверждения.
Странно было бы думать, что размер комиссий существенно изменится за один день. Поэтому доход от комиссий не станет для майнеров компенсацией упавшей вдвое награды за блок. В момент, когда прибыльность майнинга резко уменьшится, майнеры попытаются хотя бы частично скомпенсировать потери за счёт комиссий. Это можно было бы сделать, внедрив определённые новые решения. Например, майнеры могли бы предоставлять услуги по повышению анонимности транзакций, разделяя транзакции на множество мелких и используя вновь сгенерированные временные адреса. Больше транзакций означает больше комиссии. В свою очередь, пользователи биткойна готовы платить повышенную комиссию за анонимность транзакций. Так что в конечном итоге резкое падение доходов майнеров будет отчасти скомпенсировано повышенными комиссиями, но это не произойдёт за один день. Напротив, за счёт описанных эффектов экономические последствия уполовинивания награды будут ощущаться ещё долго, возможно, следующие четыре года.
Предлагаемое усовершенствованиеМы считаем, что награда за блок должна меняться гораздо чаще, чем раз в 210 тысяч блоков. Действовать нужно осторожно и дать достаточно времени на обновление ПО. Мы предлагаем начать постепенно и поменять алгоритм, начиная с блока номер 420000, на который запланировано уменьшение награды (2016 год). Мы хотим, чтобы новый механизм в значительной степени унаследовал свойства старого. Мы не сторонники революции, напротив: мы предлагаем эволюционное улучшение, которое сохранит базовые принципы биткойна. Единственное, чего мы хотим, — добиться плавного изменения награды за блок.
Проектирование такого механизма нетривиально. К примеру, мы могли бы предложить уменьшать награду за блок каждые 2016 блоков (около двух недель), одновременно с изменением сложности (difficulty). Для майнеров это было бы легко. Проблема в том, что 210000 не делится на 2016, что ухудшает совместимость со старой схемой, предусматривающей скачки каждые 210 тысяч блоков. Поэтому мы предлагаем уменьшение награды каждые 336 блоков. Наибольшее общее кратное 210000 и 2016 равно 336; 336 = 3*2^4*7, 2016 = 6*336. Майнерам легко поддерживать такие циклы: изменения будут происходить только на границах двух циклах длиной 2016 или 210000 блоков. Интересно, что 210000 = 336*5^4, так что изменение сложности будет происходить в точности трижды в неделю, так как 3*336*10 минут = 7 дней. Это придаёт нашему решению элегантности.
Наш новый механизм отвечает следующим требованиям: Награда за блок уменьшается каждые 336 блоков, начиная с блока 420336, когда она составит чуть меньше 25 биткойнов.
Мы сохраняем ограничение на количество биткойнов в обращении (21 миллион).
Поначалу награда будет больше, чем была бы при старом механизме, затем она станет меньше.
Мы хотим добиться непрерывного изменения награды, начиная с блока 420000, выраженного единой простой формулой.
Сейчас награда уменьшается вдвое каждые 210 тысяч блоков.
После добычи блока 419999 в обращении будет 15,75 млн биткойнов.
С блока 420000 останется добыть 5,25 млн биткойнов. Мы должны сохранить значение этого параметра с блока 420000 до бесконечности.
Мы предлагает следующий механизм, удовлетворяющий всем требованиям:
После блока 420000 награда НЕ уменьшается вдвое.
Награда уменьшается малыми скачками каждые 336 блоков.
Для блоков 0 — 209999 награда составляла 50 биткойнов.
Для блоков 210000 — 419999 награда составляет 25 биткойнов.
Для блоков с 420000 награда будет уменьшаться по формуле: для блока t = 336*k награда составит r(t) = 25,0*(625/624)^(1250-k) для всех k >= 1250.
Награда округляется до ближайшего сатоши.
В первые два года после блока 420000 награда по нашей схеме будет больше, чем по существующей, затем она станет меньше. Это неизбежно, если мы хотим сохранить предел на 21 млн биткойнов в обращении.