Был ли Сатоши жадным майнером?

THORChain Warior
14 min readSep 22, 2022

Это адаптивный перевод данной статьи

Технический анализ поведения майнера, демонстрируемого неким субъектом, который скорее всего и является Сатоши Накамото.

Если вы проводите достаточно времени в криптоэкосистеме, то, несомненно, столкнетесь с аргументами о том, что некоторые проекты имеют несправедливое распределение токенов, потому что были “премайнены” / “мгновенномайнены” / “быстромайнены” основателями проекта, эффективно обогатившимися с момента первоначального запуска проекта.

Обиженные этим стороны, желающие опровергнуть критику в адрес распределения токенов, неизбежно укажут на то, что Сатоши владеет примерно 1 100 000 биткоинов — почти 5% от всего количества, которое когда-либо будет существовать.

Преамбула: узоры Патоши

ДИСКЛЕЙМЕР: Для целей следующей статьи я буду исходить из предположения, что так называемый “узор Патоши” на самом деле является одним майнером, и что этим человеком был Сатоши. Поэтому я буду использовать слова “Сатоши” и “Патоши” как взаимозаменяемые. Хотя это утверждение невозможно доказать вне всяких разумных сомнений, поведение, демонстрируемое этим майнером, позволяет предположить, что кто-то обладал чрезвычайно глубокими знаниями о Биткойне на самом раннем этапе его существования — пониманием уровня Сатоши. Но это тема для другой статьи.

Что такое узор(паттерн) Патоши? Если вы знакомы с основами майнинга Биткойна, то знаете, что майнеры увеличивают nonce в попытке создать действительный блок с хэш-значением, соответствующим заданной сложности. Поле ExtraNonce, расположенное в coinbase-транзакции, увеличивается каждый раз, когда поле nonce переполняется, то есть пространство поиска исчерпано. Поскольку длина поля nonce составляет 32 бита, а первоначальная цель сложности Биткойна требовала сканирования в среднем 32 бит, то иногда, но не всегда, nonce переполнялось.

  1. ExtraNonce работает как “свободно тикающий счетчик”, не обнуляясь между добытыми блоками.
  2. Скорость, с которой определенный майнер увеличивает ExtraNonce, намного выше, чем его фактический хэшрейт, основанный на исходном коде Биткойна.
  3. Каждые несколько секунд во время майнинга проверяется лучший блок. Если лучший блок меняется, ExtraNonce дополнительно увеличивается. Обычно каждый полученный внешний блок увеличивает ExtraNonce, за исключением исключительного майнера Патоши, который, похоже, не следовал этому правилу.

При построении графика эти ExtraNonce позволили визуализировать узор Патоши, для которого мы можем наблюдать непрерывные склоны ExtraNonce.

Кроме того, майнер Патоши демонстрирует странное ограничение в значениях nonce, которые он находил для блоков. Существует несколько теорий, почему это может быть так, но я считаю наиболее правдоподобной ту, что Патоши разработал многопоточное программное обеспечение для майнинга, и эти диапазоны были распределены между различными ядрами процессора, так что каждое ядро параллельно сканировало уменьшенное пространство nonce.

Примечание: методы, используемые для идентификации блоков Патоши, содержат некоторую неопределенность, и при пересечении шаблонов ExtraNonce других майнеров возможны перекрытия с блоками не от Патоши. Тем не менее, вероятность того, что блоки приписаны ему ошибочно не превышает 1%.

Характерные черты Патоши

Если мы прочитаем более десятка технических статей, в которых анализируются блоки, добытые Сатоши, мы сможем сделать несколько выводов об этом майнере:

  1. Для добычи они использовали специальный многопоточный клиент Bitcoin, который не соответствовал поведению общедоступного клиента Bitcoin. Говоря простым языком, современные процессоры имеют несколько ядер — несколько процессоров внутри одного физического блока. Но если вы не напишете свое программное обеспечение таким образом, чтобы оно могло распределять свои вычисления параллельно по нескольким ядрам, оно сможет использовать только одно ядро.
  2. Ранний публичный клиент Bitcoin не был написан с возможностью многопоточности; он майнил только на одном ядре процессора.
    Их хэшрейт был постоянным в течение нескольких месяцев, а затем систематически снижался.
  3. Из 22 000+ блоков было потрачено менее 20 UTXO (0,09%).
  4. Судя по всему, Сатоши включал и выключал майнер программно.

Тормозящий Сатоши

В распределении блоков, добытых Сатоши, по времени есть один странный аспект: они не соответствуют распределению, которое мы ожидали бы от майнера, который тратит 100% своего времени на добычу. На самом деле, он практически НИКОГДА не добывал блоки подряд с разницей менее 5 минут! Простое объяснение заключается в том, что он ставил свой майнер на паузу около 5 минут после добычи блока.

Как объясняет Сержио в своем исследовании, возможно, что майнер Патоши продолжал добычу сразу после нахождения блока, но его собственное программное обеспечение для майнинга искусственно увеличивало временную метку следующего блока не менее чем на 300 секунд.

В любом случае, это интересное явление, которое явно является преднамеренным решением майнера. Можем ли мы копнуть глубже? Я проанализировал распределение блоков Патоши несколькими разными способами. Во-первых, если мы посмотрим на разницу временных меток между блоками, добытыми Патоши и только Патоши, мы увидим, что совершенно очевидно, что он редко добывал блоки с разницей менее 5 минут. Ожидаемая линия тренда распределения дельты временных меток для майнера с 4,35 мегахешами в секунду (Мхэш\сек) при сложности target 1 показана синим цветом. Для целей этого графика я использую данные о блоках Патоши только за тот период, когда они добывали со скоростью 4,35 Мхэш\сек.

Таким образом, мы видим, что существует очевидный огромный пробел недостающих “быстрых” блоков. Что если мы посмотрим на ВСЕ дельты блоков Патоши, включая блоки, которые были добыты им после блоков не от Патоши?

Это выглядит немного лучше — ясно, что Патоши не отключал свой майнер (или не корректировал временные метки шаблона блока) в течение 5 минут (300 секунд) после получения блока, добытого кем-то другим. Но мы также видим, что количество блоков, майнинг которых занял более 10 минут, намного выше, чем ожидалось! Хотя это частично объясняется тем, что Сатоши со временем снижает свой хэшрейт, это может быть так же усугублено одним из видов манипуляций с майнингом.

Далее я взял набор данных из предыдущего графика и всякий раз, когда блок добывался более чем через 5 минут после предыдущего блока, я вычитал 5 минут из временной дельты. Мы видим, что в результате мы получили набор данных, который гораздо лучше соответствует ожидаемому распределению.

Если вы не читали мое предыдущее исследование(англ.) дисперсий времени блока, то вы можете спросить себя, действительно ли эти графики значимы — то есть, можем ли мы сравнить их с контрольной группой? Для сравнения, вот график ВСЕХ блоков, добытых во время “эры CPU” Биткойна до того, как майнинг на GPU взял старт:

Поэтому остается вопрос: связано ли это уникальное явление с тем, что Сатоши выключал свой майнер на 5 минут, или это связано с тем, что он подделывал свои временные метки на 5 минут? Я твердо убежден, что машина Сатоши простаивала. Почему?

Мысленный эксперимент: если бы Патоши просто устанавливал временную метку своего блока на 5 минут вперед после нахождения блока, то мы бы ожидали, что аномально высокий процент дочерних блоков не от Патоши будет иметь временные метки, которые были раньше второго блока Патоши, потому что майнеры устанавливают временные метки на основе часов своей локальной машины. Давайте поищем:

  1. Последовательность блок от Патоши -> блок от Патоши -> блок не от Патоши
  2. Второй блок Патоши должен быть добыт менее чем через 10 минут после первого.
  3. Найдём дельту временной метки между вторым блоком Патоши и блоком не Патоши

Для этого я написал данный скрипт для поиска блоков с такими характеристиками. Сценарий нашел 1 881 блок, который соответствовал указанным характеристикам. Из этих блоков:

  • Только 1 имел отрицательную дельту временной метки от родительского блока Patoshi
  • Только 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 Мхэш\сек) Последний блок, приписываемый Сатоши, был 54 316; ровно через 14 месяцев после майнинга генезисного блока. Сколько блоков мог бы добыть Сатоши, если бы он расходовал 4,35 Мхэш\сек в течение 14 месяцев при заданной сложности 1?

ожидаемое время поиска блока = сложность* 2³² / хэшей в секунду

1 * 2³² / 4,350,000 = 987.35 секунд на блок для Сатоши

36817200 сек(14 месяцев)/ 987.35 блоков = 37302 блоков = 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 года. Хотя и вполне правдоподобно, что Сатоши никогда не рассматривал вариант сжигания своих монет.

Выводы

Прекратил ли Сатоши добычу с помощью майнера Патоши после блока 54 316? Невозможно узнать, было ли изменено программное обеспечение для майнинга, в результате чего оно стало необнаруживаемым, или же Сатоши продолжал майнить с помощью общедоступного программного обеспечения для майнинга.

В чем я уверен в отношении Сатоши?

  • Его целью было поддержание “сердцебиения” сети во время ее становления.
  • Он майнил на одной машине с максимальным хэшрейтом 6 Мхэш\сек.
  • Он мог бы легко заработать более чем в два раза больше BTC, если бы майнил на полную мощность.
  • Он не хотел доминировать над хэшрейтом сети, но, возможно, считал это необходимым в первые дни, когда сеть была гораздо более хрупкой из-за присутствия менее пяти майнеров.
  • Он очень заботился о корректировке сложности. Алгоритм корректировки был одним из величайших нововведений Сатоши, и он высказывался на эту тему больше, чем на любую другую.
  • Он хотел, чтобы как можно больше людей могли майнить на домашних компьютерах (Сатоши осуждал гонку майнинга на FGPA и GPU).

Мы должны заключить джентльменское соглашение, чтобы отложить гонку вооружений GPU так долго, как это возможно для блага сети. Новых пользователей гораздо легче ввести в дело, если им не нужно беспокоиться о драйверах GPU и совместимости. Приятно, что сейчас любой человек с лишь одним процессором может конкурировать на равных.

Любой, кто утверждает, что Сатоши был жадным, просто не может в математику.

--

--