Был ли Сатоши жадным майнером?
Технический анализ поведения майнера, демонстрируемого неким субъектом, который скорее всего и является Сатоши Накамото.
Этот материал – редактура адаптивного перевода данной статьи
Если вы проведете достаточно времени в криптоэкосистеме, то, несомненно, столкнетесь с аргументами, гласящими, что распределение токенов в некоторых проектах несправедливо, потому что основателями проекта обогатились за счет так называемых “премайнов” с момента первоначального запуска проекта.
Обиженные этим стороны, желающие опровергнуть критику в адрес распределения токенов, неизбежно укажут на то, что Сатоши владеет примерно 1,100,000 биткоинов — почти 5% от общего количества, которое когда-либо будет существовать.
Преамбула: узоры Патоши
ДИСКЛЕЙМЕР: В рамках следующей статьи я буду исходить из предположения, что так называемый “узор Патоши” на самом деле представляет одного майнера, и что этим человеком был Сатоши. Поэтому я буду использовать слова “Сатоши” и “Патоши” как взаимозаменяемые. Хотя это утверждение невозможно доказать, поведение, демонстрируемое этим майнером, позволяет предположить, что кто-то обладал чрезвычайно глубокими знаниями о Биткоине на самом раннем этапе его существования — пониманием уровня Сатоши. Но это тема для другой статьи.
Что такое узор (паттерн) Патоши? Если вы знакомы с основами майнинга Биткоина, то знаете, что майнеры увеличивают nonce в попытке создать действительный блок с хэш-значением, соответствующим заданной сложности. Поле ExtraNonce, расположенное в coinbase-транзакции, увеличивается каждый раз, когда поле nonce переполняется, то есть пространство поиска исчерпано. Поскольку длина поля nonce составляет 32 бита, а первоначальная цель сложности Биткоина требовала сканирования в среднем 32 бит, то иногда, но не всегда, nonce переполнялось.
- ExtraNonce работает как “свободно тикающий счетчик”, не обнуляясь между добытыми блоками.
- Скорость, с которой определенный майнер увеличивает ExtraNonce, намного выше, чем его фактический хэшрейт, основанный на исходном коде Биткоина.
- Каждые несколько секунд во время майнинга проверяется лучший блок. Если лучший блок меняется, ExtraNonce дополнительно увеличивается. Обычно каждый полученный внешний блок увеличивает ExtraNonce, за исключением исключительного майнера Патоши, который, похоже, не следовал этому правилу.
При построении графика эти ExtraNonce позволили визуализировать узор Патоши, для которого мы можем наблюдать непрерывные склоны ExtraNonce.
Кроме того, майнер Патоши демонстрирует странное ограничение в значениях nonce, которые он находил для блоков. Существует несколько теорий, почему это может быть так, но я считаю наиболее правдоподобной ту, что Патоши разработал многопоточное программное обеспечение для майнинга, и эти диапазоны были распределены между различными ядрами процессора, так что каждое ядро параллельно сканировало уменьшенное пространство nonce.
Примечание: методы, используемые для идентификации блоков Патоши, содержат некоторую неопределенность, и при пересечении шаблонов ExtraNonce других майнеров возможны пересечения с блоками не от Патоши. Тем не менее, вероятность того, что блоки приписаны ему ошибочно не превышает 1%.
Характерные черты Патоши
Написано более десятка технических статей, в которых анализируются блоки, добытые Сатоши. Благодаря ним мы сможем сделать несколько выводов об этом майнере:
- Для добычи они использовали специальный многопоточный клиент Bitcoin, который не соответствовал поведению общедоступного клиента Bitcoin. Говоря простым языком, современные процессоры имеют несколько ядер — несколько процессоров внутри одного физического блока. Но если вы не напишете свое программное обеспечение таким образом, чтобы оно могло распределять свои вычисления параллельно по нескольким ядрам, оно сможет использовать только одно ядро.
- Ранний публичный клиент Bitcoin не поддерживал возможность многопоточности; он майнил только на одном ядре процессора.
- Их хэшрейт был постоянным в течение нескольких месяцев, а затем систематически снижался.
- Из более 22,000 добытых блоков было потрачено менее 20 UTXO (0,09%).
- Судя по всему, Сатоши включал и выключал майнер программно.
Тормозящий Сатоши
В распределении блоков, добытых Сатоши, по времени есть один странный аспект: они не соответствуют распределению, которое мы ожидали бы от майнера, который тратит 100% своего времени на добычу. На самом деле, он практически НИКОГДА не добывал блоки подряд с разницей менее 5 минут! Простое объяснение заключается в том, что он ставил свой майнер на паузу около 5 минут после добычи блока.
Satoshi did not pre-mine or even fast mine bitcoin - we can observe the timestamps.
— Jameson Lopp (@lopp) September 3, 2022
What we actually see is the deliberate throttling back of hashpower as the network bootstrapped itself.https://t.co/HyCKTE2j0j
Как объясняет Сержио в своем исследовании, возможно, что майнер Патоши продолжал добычу сразу после нахождения блока, но его собственное программное обеспечение для майнинга искусственно увеличивало временную метку следующего блока не менее чем на 300 секунд.
В любом случае, это явно было преднамеренным решением майнера. Можем ли мы копнуть глубже? Я проанализировал распределение блоков Патоши несколькими разными способами. Во-первых, если мы посмотрим на разницу временных меток между блоками, добытыми Патоши и только Патоши, мы увидим, что совершенно очевидно, что он редко добывал блоки с разницей менее 5 минут. Ожидаемая линия тренда распределения дельты временных меток для майнера с 4.35 мегахешами в секунду (Мхэш\сек) при сложности target 1 показана синим цветом. В этом графике я использую данные о блоках Патоши только за тот период, когда они добывали со скоростью 4.35 Мхэш\сек.
Таким образом, мы видим, что существует очевидный огромный пробел недостающих “быстрых” блоков. Что если мы посмотрим на ВСЕ дельты блоков Патоши, включая блоки, которые были добыты им после блоков не от Патоши?
Немного лучше — ясно, что Патоши не отключал свой майнер (или не корректировал временные метки шаблона блока) в течение 5 минут (300 секунд) после получения блока, добытого кем-то другим. Но мы также видим, что количество блоков, майнинг которых занял более 10 минут, намного выше, чем ожидалось! Хотя это частично объясняется тем, что Сатоши со временем снижает свой хэшрейт, это также может быть усугублено одним из видов майнинг-манипуляций.
Далее я взял набор данных из предыдущего графика и всякий раз, когда блок добывался более чем через 5 минут после предыдущего блока, я вычитал 5 минут из временной дельты. Мы видим, что в результате мы получили набор данных, который гораздо лучше соответствует ожидаемому распределению.
Если вы не читали мое исследование дисперсий времени блока, то вы можете задаться вопросом, действительно ли эти графики значимы — то есть, можем ли мы сравнить их с контрольной группой? Для сравнения, вот график ВСЕХ блоков, добытых во время “эры CPU” Биткоина до того, как в игру вступил майнинг на GPU:
Поэтому остается вопрос: связано ли это уникальное явление с тем, что Сатоши выключал свой майнер на 5 минут, или это связано с тем, что он подправлял свои временные метки на 5 минут? Я твердо убежден, что машина Сатоши простаивала. Почему?
Мысленный эксперимент: если бы Патоши просто устанавливал временную метку своего блока на 5 минут вперед после нахождения блока, то мы бы ожидали, что аномально высокий процент дочерних блоков не от Патоши будет иметь временные метки, которые были раньше второго блока Патоши, потому что майнеры устанавливают временные метки на основе часов своей локальной машины. Давайте поищем:
- Последовательность блока от Патоши -> блок от Патоши -> блок не от Патоши.
- Второй блок Патоши должен быть добыт менее чем через 10 минут после первого.
- Найдём дельту временной метки между вторым блоком Патоши и блоком не Патоши.
Для этого я написал скрипт для поиска блоков с такими характеристиками. Был найден 1,881 блок, который соответствовал указанным характеристикам. Из этих блоков:
Только 1 имел отрицательную дельту временной метки от родительского блока Патоши
Только 5 (0,3%) были добыты менее чем через 5 минут после родительского блока Патоши
Кроме того, если бы Патоши манипулировали только временными метками добытых блоков, они НЕ смогли бы скрыть общее распределение добытых блоков в течение длительного периода времени и, следовательно, НЕ смогли бы скрыть свой эффективный хэшрейт. Попробуйте не забыть следующие цифры до конца этой статьи держите: 4.35 Мхэш\сек и 6 Мхэш\сек.
Доминирование хэшрейта Сатоши
Мы можем наблюдать, что майнер Сатоши прошел 4 разных эпохи хэширования. Сначала они следовали плану снижения хэшрейта на 1.7 Мхэш\сек каждые пять месяцев, но через месяц после второго такого снижения они отказались от этого метода в пользу постоянно снижающегося хэшрейта.
Сравнивая хэшрейт Сатоши с остальной сетью, мы можем более четко проследить, что загрузка хэшрейта другими майнерами началась в октябре 2009 года, когда Сатоши отошел на второй план.
На самом деле, Сатоши занимал опасно доминирующее положение, имея более половины хешрейта сети вплоть до октября 2009 года.
Что еще более интересно, Сатоши стал майнером с меньшим хэшрейтом только после того, как добровольно снизил свой хэшрейт в несколько раз.
Это говорит о нескольких вещах:
- Сатоши все время планировал снизить хешрейт.
- Вначале Сатоши довольно грубо контролировал хэшрейт.
- Позже Сатоши разработал очень тонкий контроль хешрейта.
Двойная спираль
Возможно, вы заметили, что первая диаграмма распределения временных меток в разделе “Тормозящий Сатоши” исключила блоки 1400–1916 из своего набора данных. Почему? Потому что в этот период времени произошло уникальное явление, которое искажает расчеты дельты временной метки блока Патоши. Одновременно работают 2 майнера Патоши!
Вы можете изучить этот паттерн на сайте SatoshiBlocks. Узор двойной спирали, вероятно, был вызван тем, что два экземпляра программного обеспечения Патоши работали параллельно. Мы не знаем, была ли это ошибка, допущенная Патоши, или он что-то тестировал. Какой вывод мы можем сделать из этого явления?
За этот период в 4 дня и 3 часа Сатоши добыл 458 блоков. Из этого можно сделать вывод, что общий суммарный хэшрейт за это время составил около 5.5 Мхэш\сек. Это примечательно, потому что хэшрейт Сатоши за первые 5 месяцев 2009 года в среднем составил 4.3 Мхэш\сек. Это также объясняет выделенное расхождение с предыдущим графиком хэшрейта.
Почему это интересно? Если бы Сатоши установил отдельную машину для майнинга, аналогичную первой, мы бы ожидали, что их общий хэшрейт будет ближе к 8,6 Мхэш\сек в период двойной спирали. Однако их хэшрейт был выше всего на 28%, а не на 100%. Мы видим, что производительность каждого экземпляра майнинга снижается, что приводит к равномерному снижению уклона ExtraNonces для обоих экземпляров по сравнению с любым другим склоном Патоши. Почему? Самое простое объяснение заключается в том, что потоки в обоих экземплярах майнинга конкурируют за одни и те же ядра процессора!
Сержио Лернер считает, что из этого можно сделать вывод, что компьютер Сатоши, вероятно, был четырехъядерным. Я думаю, это правдоподобно, потому что, похоже, средний однопоточный майнер в те времена достигал хэшрейта чуть более 1 Мхэш\сек. В любом случае, я думаю, можно с уверенностью предположить, что узор двойной спирали Сатоши был получен от двух экземпляров их пользовательского программного обеспечения, работающего на одном и том же оборудовании.
Несколько лет назад я собрал все временные метки публичной активности Сатоши из электронных писем, сообщений на форуме и коммитов кода, чтобы построить следующий график. Я пришел к выводу, что Сатоши придерживался графика сна, соответствующего человеку, живущему в тихоокеанском часовом поясе.
Почему я об этом говорю? Чтобы поддержать мою теорию, объясняющую феномен двойной спирали! Вот что, по моему мнению, произошло:
- Сатоши добыл блок 1386 в 16:00 по тихоокеанскому времени 22 января 2009 года.
- Вскоре после этого аппаратное/программное обеспечение Сатоши для майнинга вышло из строя
- Сатоши проснулся и проверил свой майнер незадолго до 8 утра по тихоокеанскому времени на следующий день, обнаружив, что тот вышел из строя.
- Он снова запустил майнер и нашёл блок в 8 утра по тихоокеанскому времени.
- Сам того не подозревая, Сатоши, случайно запустил 2 экземпляра майнера.
- Майнер работал в течение следующих 3 дней, в выходные дни, и Сатоши не заметил этого.
- Вскоре после добычи блока 1916 в 10:30 вечера по тихоокеанскому времени 25 января майнер снова дал сбой.
- Сатоши проснулся и проверил свой майнер незадолго до 7 утра по тихоокеанскому времени 26 января, обнаружил, что тот дал сбой, и возобновил его работу в нормальном режиме.
Серия Сатоши
Мы знаем, что Сатоши держал большую долю хэшрейта в течение первых 9 месяцев 2009 года; можем ли мы узнать что-нибудь из их самого большого количества добытых подряд блоков? Я написал скрипт для поиска серий и определил, что Сатоши удавалось добыть серию из 47 блоков с высоты 80 по 127.
Это, конечно, следует воспринимать с долей недоверия, учитывая, что это ~8-часовой период, а оценки хэшрейта становятся менее точными по мере сокращения временного диапазона, но мы видим, что среднее время блока составило 720 секунд, что позволяет нам оценить их хэшрейт в 5.97 Мхэш\сек за этот период.
Сатоши майнил медленнее, чтобы снизить сложность?
Напомним, что у нас есть несколько точек данных, которые указывают на то, что машина Сатоши, хотя в целом наблюдалось хэширование со скоростью 4,35 Мхэш\сек, скорее всего, была способна только на максимальную потенциальную скорость хэширования в 6 Мхэш\сек. При хэшрейте 6 Мхэш\сек это приводит к ожидаемому среднему времени блока в 708 секунд. Помните, что цель сложности не корректируется до тех пор, пока последние 2016 блоков не будут добыты со средней скоростью менее 600 секунд. Таким образом, хэшрейт глобальной сети для каждой единицы сложности можно выразить как:
хэши в секунду = 2³² / 600 = 7,158,278 хэшей в секунду
Таким образом, чтобы увеличить среднее время майнинга блока настолько, чтобы Биткоин изменил целевой уровень сложности с 1 на 2, в сети должно быть более 7 158 278 * 1,5 = 10737417 хэшей в секунду = 10.7 Мхэш\сек.
Это означает, что в сети должно быть более 4.7 Мхэш\сек других майнеров, чтобы повысить уровень сложности, если бы Сатоши добывал как можно быстрее. Трудно точно сказать, скольким машинам это соответствует, хотя, основываясь на некоторых доступных здесь эталонных тестах процессора, я бы предположил, что средний обычный настольный процессор, использующий ранний, неоптимизированный, однопоточный майнер Bitcoin, вероятно, производит чуть более 1 Мхэш\сек. Есть также полу-мифические свидетельства того, что ранние майнеры публиковали свои хэшрейты на BitcoinTalk. Мы также можем оценить эти данные и доказать, что это вполне вероятно. Нужно лишь сравнить склоны ExtraNonce майнеров, не работающих с Патоши, со склонами ExtraNonce майнеров, добывающих блоки Патоши — у Патоши они в 3 раза круче, чем у других майнеров. Таким образом, нам понадобилось бы всего 4 или 5 других майнеров в сети, чтобы повысить сложность.
Я написал еще один скрипт для извлечения истории корректировок сложности из блокчейна.
Вот график общего хешрейта сети за указанный период:
Чтобы понять, как изменились бы цели сложности, мы должны спросить, в какой момент хэшрейт глобальной сети превысил бы 10.7 Мхэш\сек, если бы Сатоши добывали с максимальной мощностью в 6 Мхэш\сек.
Если посмотреть на график и добавить недостающий потенциальный дополнительный хэшрейт от Сатоши, то получается, что сеть превысила бы 10.7 Мхэш\сек в середине декабря 2009 года, а сложность установилась бы на уровне 2 в блоке 32256, примерно на 2.5 месяца раньше.
Так что нет, утверждение, что Сатоши добывал медленнее, чтобы не повышать сложность, нелепо. Они могли добывать ГОРАЗДО БОЛЬШЕ блоков и, таким образом, зарабатывать ГОРАЗДО БОЛЬШЕ BTC, работая на максимальных мощностях, не вызывая роста сложности. К тому времени, когда сложность действительно возросла, Сатоши уже значительно снизил свой хэшрейт.
Как бы поступил жадный Сатоши?
Анализ паттерна Патоши, проведенный Сержио, выявил ~22 000 блоков-кандидатов на блоки Патоши. Некоторые из них, безусловно, являются ложноположительными результатами, но есть все основания полагать (из-за множества отпечатков, используемых для идентификации блоков), что процент ложных срабатываний составляет менее 1%. Таким образом, общее количество добытых Сатоши монет оценивается примерно в 1,100,000 BTC.
Если бы Сатоши НЕ решился в несколько раз снизить хэшрейт в конце 2009 года, насколько больше BTC он бы заработал? Это легко подсчитать, если принять постоянную цель сложности 1. Согласно скорости майнинга блоков Сатоши и целевой сложностью 1, их первоначальный хэшрейт составлял приблизительно 4,350,000 хэшей в секунду (4.35 Мхэш\сек) Последний блок, приписываемый Сатоши, был #54316; ровно через 14 месяцев после майнинга генезис-блока. Сколько блоков мог бы добыть Сатоши, если бы он майнил при 4.35 Мхэш\сек в течение 14 месяцев при заданной сложности 1?
ожидаемое время поиска блока = сложность* 2³² / хэшей в секунду
1 * 2³² / 4,350,000 = 987.35 секунд на блок для Сатоши
36817200 сек(14 месяцев)/ 987.35 блоков = 37,302 блоков = 1,865,100 BTC
К сожалению, все немного сложнее, поскольку сложность майнинга начала увеличиваться с блока #40320 14 февраля 2010 года, и Сатоши продолжали добывать по крайней мере до 3 мая 2010 года. Сложность еще больше возрастает, если учесть, что добыча Сатоши с максимальной потенциальной хэш-мощностью привела бы к переносу первого целевого изменения сложности на ~2.5 месяца вперед.
Поэтому мы можем использовать историческую таблицу изменения сложности, опубликованную ранее, и сдвинуть временные рамки на столько же вперед. Если мы предположим, что Сатоши по-прежнему майнил в течение 479 дней, но с постоянной скоростью 4.35 Мхэш\сек, то мы увидим примерно следующий результат:
Что составляет 31,783 блока или в общей сложности 1,589,150 BTC.
Однако мы также должны помнить, что Сатоши регулярно отключал свой майнер, когда находил блоки с интервалом менее 5 минут. Это фактически является дополнительным преднамеренным ограничением хэшрейта. Так сколько же хэшрейта Сатоши фактически выдавал? Мы можем получить довольно хорошую оценку, основываясь на наших знаниях о пуассоновском распределении блоков. Примечание: если вы хотите спуститься в эту кроличью нору, вы можете ознакомиться с моей предыдущей статьей о дисперсии времени блока.
Какой процент блоков, как ожидается, будет добыт менее чем через 5 минут после предыдущего блока? 1 — exp(-5/10) = 39,35%. Таким образом, максимальный потенциальный хэшрейт Сатоши на самом деле составлял скорее 6.06 Мхэш\сек. Это интересный результат, поскольку он также довольно близок к наблюдаемому хэшрейту в 5.5 Мхэш\сек в эпоху двойной спирали и чрезвычайно близок к наблюдаемому хэшрейту в 5.97 Мхэш\сек во время ранней серии из 47 блоков.
Итак, давайте проведем аналогичные расчеты, но учтем, что Сатоши использовал свое оборудование с теоретически максимальной скоростью 6 Мхэш\сек:
В общей сложности 43,829 блоков или 2,191,450 BTC.
Почему Сатоши не сжег свои биткоины?
Первая транзакция, которая сделала депозит на доказательно неизрасходованный адрес, была проведена по адресу 1111111111111111111111111111111114oLvT2 10 августа 2010 года, а первое сообщение, которое я могу найти со ссылкой на него, появилось спустя 1 месяц, в котором отмечалось, что это “наименьший возможный биткоин-адрес”, в то время как в других сообщениях его называли “нулевым адресом”, поскольку он создается из хэша только нулей. Эти обсуждения, как правило, фокусировались на граничных случаях достоверности биткоин-адресов, а не на случаях использования для целенаправленного сжигания монет.
Насколько я могу судить, первое осознанное использование burn-адреса произошло 20 июня 2011 года в транзакции на адрес 1BitcoinEaterAddressDontSendf59kuE. Самое первое обсуждение адресов сжигания, которое мне удалось найти, имело место 23 июня 2011 года в этой ветке BitcoinTalk о “Черной дыре биткоина”.
Последняя активность Сатоши на BitcoinTalk наблюдалась 13 декабря 2010 года. Последний раз о нем слышали 26 апреля 2011 года. Вполне возможно, что Сатоши никогда не рассматривал вариант сжигания своих монет.
Выводы
Прекратил ли Сатоши добычу с помощью майнера Патоши после блока #54316? Невозможно выяснить, было ли изменено программное обеспечение для майнинга, в результате чего обнаружить его стало невозможно, или же Сатоши продолжал майнить с помощью общедоступного программного обеспечения для майнинга.
В чем я уверен в отношении Сатоши?
- Его целью было поддержание “сердцебиения” сети во время ее становления.
- Он майнил на одной машине с максимальным хэшрейтом в 6 Мхэш\сек.
- Он мог бы легко заработать более чем в два раза больше BTC, если бы майнил на полную мощность.
- Он не хотел доминировать над хэшрейтом сети, но, возможно, считал это необходимым в первые дни, когда сеть была гораздо более хрупкой из-за присутствия менее пяти майнеров.
- Он очень заботился о корректировке сложности. Алгоритм корректировки был одним из величайших нововведений Сатоши, и он высказывался на эту тему больше, чем на любую другую.
- Он хотел, чтобы как можно больше людей могли майнить на домашних компьютерах (Сатоши осуждал гонку майнинга на FGPA и GPU).
Мы должны заключить джентльменское соглашение, чтобы отложить гонку вооружений GPU на максимально длительное время для блага сети. Новых пользователей гораздо легче ввести в дело, если им не нужно беспокоиться о драйверах GPU и совместимости. Приятно, что сейчас любой желающий с лишь одним процессором может конкурировать на равных.
Любой, кто утверждает, что Сатоши был жадным, просто не разобрался в этом вопросе.