image

Мы знаем, как создать биткоины, но вот как их можно уничтожить?

Сжечь биткоины – значит, сделать так, чтобы их нельзя было потратить. Этому можно придумать несколько применений – к примеру, быстро запустить новую криптовалюту (как сделали в Counterparty) или немного поднять стоимость оставшейся части биткоинов, уменьшив количество доступных. В этой статье мы опишем три метода для сжигания биткоинов.

Простейший метод


Очень легко сжечь биткоины, отправив их на фиктивный адрес. К счастью, у пользователей Bitcoin шанс нечаянно сжечь биткоины таким способом чрезвычайно мал, поскольку в адресе присутствует 4-байтовая контрольная сумма, предотвращающая опечатки (на bitcoin wiki есть подробная инструкция по созданию биткоин-адресов).

Именно поэтому для создания фиктивного биткоин-адреса нужно потратить немного усилий, а не просто ударить пару раз по клавиатуре. Для создания адреса используется hash160, он может принимать любые значения, и это значение превращается в первые символы адреса (а последние обозначают контрольную сумму).

Известные примеры фиктивных адресов:

1BitcoinEaterAddressDontSendf59kuE (получено 2,10556692 BTC),
1CounterpartyXXXXXXXXXXXXXXXUWLpVr (2 130,84717717 BTC),
1111111111111111111114oLvT2 (43.2884582 BTC), в этом адресе закодирован минимально возможный hash160,
1QLbz7JHiBTspS962RLKV8GndWFwi5j6Qr (0.01159201 BTC), в этом адресе закодирован максимально возможный hash160.

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

Осмысленный метод


Уже довольно долгое время пользователи Bitcoin включают в блокчейн различные данные, будь то доказательство авторских прав на документ, подтверждение личности, обеспечение контрактов или цифровое представление реальных активов.

В 2013 году был представлен простой способ добавления данных в любую биткоин-транзакцию. Доселе некорректная инструкция OP_RETURN была сделана стандартной, и пользователь обрёл возможность добавления до 40 байт данных в транзакцию.

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

С момента его введения на выводы через OP_RETURN было потрачено уже 3,66 BTC, и количество таких выводов только растёт, что говорит о растущем количестве способов разнообразного использования блокчейна.

Однозначный метод


И хотя предыдущие методы довольно эффективные, они не уничтожают биткоины. Их всё ещё можно видеть в блокчейне, просто нельзя потратить. Однако существует способ эффективно уничтожить биткоины, удалив их из блокчейна.

Делая свой сайт со статистикой по транзакциям биткоинов, я принимал меры для того, чтобы не пропустить данные ни одной транзакции, и чтобы данные в базе были непротиворечивыми. Я подсчитал количество существующих битконов как сумму биткоинов, хранящихся в непотраченных, но подтверждённых выводах. Если всё правильно, эта сумма должна совпасть с количеством существующих биткоинов (это число можно подсчитать, только зная количество блоков в основной цепочке блокчейна).

Однако я обнаружил, что 10,19768818 BTC куда-то пропали. Сначала я думал, что я пропустил какие-то транзакции или что у меня в коде была ошибка. Разбираясь с этим я увидел, что я был прав: 1031 не получили награду, которая им предназначалась. Награда за блок – это комбинация созданных монет (50 BTC в самом начале существования Bitcoin, уполовинивающиеся каждые 210 000 блоков), и комиссий, содержащихся в транзакциях блоков.

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

Первый такой блок датирован 18 мая 2011 года, а последний появлялся 15 августа 2015 (в нём не хватало всего одного сатоси, а намайнили его при помощи CoiniumServ). Большую часть этих блоков намайнили в период с января 2012 по март 2013.

Несколько пулов майнили блоки и не забирали награду. Согласно Blocktrail API, больше половины этих блоков намайнили EclipseMC и Eligius. Интересно, что эти два пула начали майнить их одновременно – возможно, они использовали один и тот же софт. Однако EclipseMC закончил майнить в сентябре 2012 года, а Eligius – в январе 2013. Другие пулы, вроде Slush или P2Pool тоже намайнили такие блоки, но совсем мало.

Пропавшие биткоины пропали навсегда. Отправка биткоинов на фиктивные адреса или трата на неподходящие для этого выводы не приводит к их исчезновению – их можно наблюдать в блокчейне. А если не запрашивать всю награду за блок, биткоины на самом деле исчезают – их нельзя увидеть в блокчейне. Единственная проверка величины награды за блок состоит в том (судя по исходникам bitcoind), что она не должна превышать максимальное значение – получаются, что уничтожить можно всю награду полностью, включая и сгенерённые монеты.

Заключение


Есть и другие способы сжигания биткоинов (к примеру, использование нестандартных некорректных скриптов), но самые распространённые – это фиктивные адреса и скрипты OP_RETURN. И хотя это неподкреплённые доказательствами рассуждения, мне было очень интересно узнать, какие пулы использовали одинаковый софт, просто изучив блокчейн.
Поделиться с друзьями
-->

Комментарии (20)


  1. QDeathNick
    08.06.2017 16:26

    Этому можно придумать несколько применений – к примеру, быстро запустить новую криптовалюту (как сделали в Counterparty)

    Кто-то может объяснить, как запуск Counterparty уничтожает биткоины?


    1. alff31
      08.06.2017 21:20
      +2

      Биткойны собирали в обмен на монеты Counterparty. Приславшие биткойны в обмен получили монеты Counterparty, а все присылаемые биткойны «сожгли» путем отправки на несуществующий кошелёк.


      1. QDeathNick
        09.06.2017 00:12
        +1

        Спасибо, почитал про proof-of-burn.


      1. goricvet
        10.06.2017 13:59

        Интересно, полученные монеты counterparty на данный момент стоят больше или меньше уничтоженной суммы.


  1. olekl
    08.06.2017 17:17

    Интересно, а откуда на 1CounterpartyXXXXXXXXXXXXXXXUWLpVr взалось пару тысяч бтц?


    1. Tufed
      08.06.2017 17:21
      +1

      Чтобы что-то где-то появилось, нужно чтобы кто-то туда это положил. Это же очевидно!


      1. olekl
        08.06.2017 17:27

        Это понятно, но зачем это кому-то делать?


        1. Tufed
          08.06.2017 17:49

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


          1. alff31
            09.06.2017 14:01

            Если верить Википедии, «непринципиальная сумма» составляла $1.8 млн на момент перевода


    1. LexS007
      08.06.2017 17:37

      В blockchain.info перейдите. Там же название адреса есть Proof-of-Burn. Для подтверждения транзакции надо сжечь монеты.


  1. StjarnornasFred
    09.06.2017 00:45

    А не может ли кто-то создать якобы фиктивный кошелёк-топку с соответствующим адресом типа BitcoinBurner1488hahaha, а на самом деле иметь к нему доступ и в один прекрасный момент тихонько вывести награбленное выброшенное?


    1. Barnaby
      09.06.2017 02:15
      +1

      С тем же успехом можно сбрутить приватный ключ от любого адреса.


    1. Exaybachay
      09.06.2017 02:30
      +1

      Можно, но времени и ресурсов много надо. Я брутил 5 дней адрес из (первых) 7 символов что мне надо было. И чем дальше тем хуже.


  1. madf
    09.06.2017 12:14
    +1

    всё проще, достаточно забыть пароль)


  1. saboteur_kiev
    09.06.2017 14:37

    Я верно понял, что «Известные примеры фиктивных адресов» — это для любителей взломать — кто первый подберет приватный ключ, того и биткоины?

    И то, что эти «известные примеры фиктивных» адресов до сих пор содержат свои биткоины, косвенно показывает, что ключ к алгоритму не найден никаким анонимусом?


    1. LexS007
      09.06.2017 19:05

      Нет не правильно. Это не решаемая задача.
      Объяснение


      1. sic
        10.06.2017 03:28
        -1

        Объяснение красивое, но доказательств, что перебор действительно потребует порядка 2^256 операций нет. Потом, как обычно, через сколько-то лет находится хитрый криптоаналитик, который может понизить порядок перебора на порядок-другой, а за ним еще, и, вот, например, MD5 вовсе не безопасен, хотя начиналось все с 2^128.

        А может быть вообще генератор seed'ов плохой, и в некоторых использованных реализациях выдает всего пару миллиардов различных пар ключей, но мы пока об этом не знаем.


      1. saboteur_kiev
        10.06.2017 04:26

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

        Например, что может сказать это объяснение на кубитовый компьютер?


        1. a5b
          10.06.2017 07:43
          +1

          Квантовые атаки для получения закрытого ключа из открытого для RSA и ECC проработаны в теории ("elliptic curve cryptography is expected to be more vulnerable to an attack based on Shor's algorithm"). Однако адрес в биткоине является не публичным ключом, а отпечатком ключа — ripemd160(sha256(Key)). Чтобы начать взлом ключа, требуется, чтобы с адреса была отправлена транзакция (https://www.reddit.com/r/Bitcoin/comments/3filud/whats_the_difference_between_public_key_and/):


          The reason Bitcoin uses the hash in addition to the public key is security. Let's say elliptic curves suffered a flaw that allowed somebody to derive a private key from a public key in 3 hours, but the hash functions were still unbroken.

          Если отправлений с адреса не было, потребуется сначала подобрать ключ для адреса. Обращение хэшей также ускоряется на кв.комп, но сложность (теоретически) сокращается лишь до 2^80 для ripemd160 и 2^128 для sha256. При этом теряется возможность эффективного распараллеливания поиска ("Fixing t bits of the input does not change the overhead of the Grover iteration"; [1]) — все 2^80 или 2^128 обратимых операций ripemd160 и sha256 должны быть выполнены над единым квантовым регистром последовательно, без декогеренции (а также точно и обратимо). Ныне времена T1 и T2 для отдельных кубитов не превышают минут-часов (https://www.aps.org/units/fiap/meetings/conference/upload/1-5-Wecker-Quantum-Computing.pdf#page=18, https://nqit.ox.ac.uk/sites/www.nqit.ox.ac.uk/files/2016-11/NQIT%20Technical%20Roadmap.pdf#page=16), a даже на квантовом компьютере, исполняющим операцию Uw c хешированием условно за 1 нс (на самом деле хеширование состоит из нескольких тысяч последовательных операций, а вентили в кв.комп работают пока что на единицах МГц), то потребуется всего лишь… 3.8 млн лет для 2^80 и 10^21 лет для 2^128 — все это время схема должна быть охлаждена до десятка-сотни милликельвинов, получаемых растворением гелия в гелии.


  1. Psychosynthesis
    09.06.2017 17:47
    +3

    скрипты OP_RETURN

    Из статьи абсолютно непонятно каким образом этот способ позволяет избавиться от коинов.