«Вопрос на $500k»: Как русскоязычный пользователь BitcoinTalk охотился за «джекпотом» Bitcoin Cash

20 ноября 2017 года русскоязычный пользователь форума BitcoinTalk «amaclin1» опубликовал следующее сообщение:
Долго думал, стоит ли писать сюда. И сейчас пишу и сомневаюсь, правильно ли я поступаю.
Есть интересная задача. Представьте себе, что есть казино с джекпотом на $500 000.
Чтобы сорвать этот джекпот, надо сделать ставку. Цена ставки – около $15 000. Вероятность, что ставка выиграет, около 60%. Проблема в том, что про этот джекпот знают ещё несколько
человек в мире. Они пока тоже наблюдают, но не факт, что в любой момент не воспользуются. Что бы вы делали в подобной ситуации?
Нажмите, чтобы раскрыть...
Чтобы понять, о чём идёт речь, необходимо вернуться к событиям того времени, что и сделал аналитик Coin Metrics Антуан Ле Кальвез.

За несколько недель до публикации сообщения amaclin1 в мире криптовалют произошло два важных события. 1 августа Bitcoin Cash отделился от биткоина. 24 августа биткоин активировал обновление Segregated Witness (SegWit).

Форк Bitcoin Cash привёл к возникновению двух активов, которые были похожи почти во всём. Для нашей истории важно отметить, что обе сети поддерживают специальный тип адресов – P2SH (pay-to-script hash), которые начинаются с «3». Такие адреса позволяют использовать сложные скрипты, например схемы мультиподписей. Скрипт, связанный с P2SH-адресом, раскрывается только в том случае, если кто-то совершает транзакцию с такого адреса, иначе он неизвестен.

SegWit, помимо прочего, добавил особый тип P2SH-адресов – адрес со встроенным SegWit. Они выглядят как обычные P2SH-адреса, но их скрипт использует SegWit. Такие адреса преподносились как простой и обратно совместимый способ привлечения пользователей к SegWit.

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

a11.png
На графике представлено минимальное оценочное значение утраченных из-за отправки на неверные адреса BCH. Мы можем узнать, использовал ли пользователь адрес со встроенным SegWit, только после раскрытия применяемого этим адресом скрипта. Со временем будет выявляться всё больше и больше таких адресов, в результате чего значение будет расти.

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

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

На этом этапе становится ясно, о чём в размытых выражениях писал amaclin1:
  • Джекпот на $500 000 – на момент написания оригинального сообщения адреса Bitcoin Cash со встроенным SegWit содержали немногим более 400 BCH или $500 000;
  • Ставка в $15 000 – это стоимость аренды 1/144-й хеш-рейта Bitcoin Cash в день;
  • Шанс выплаты 60% – майнер с 1/144-й хеш-рейта будет добывать один блок в сети Bitcoin Cash за один день с вероятностью в 63%.
Если бы amaclin1 только мог добыть блок, то уже тогда забрал бы джекпот себе: «Мне нужно добыть блок. Но все пулы находятся в Китае, а у меня нет друзей среди админов».

Как формировался джекпот

10 сентября 2017 года пользователь Reddit /u/btctroubadour заметил тревожную тенденцию: многие пользователи Trezor отправляли BCH на адреса со встроенным SegWit. Он предложил майнерам создать сервис по восстановлению утраченных активов и возвращать их пользователям с удержанием комиссии. Как водится в интернете, дискуссия быстро скатилась в неконструктивные пререкания.

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

14 ноября автор материала Антуан Ле Кальвез написал о проблеме, дав первую публичную оценку заблокированной сумме: 478 BCH или около $644 000 на тот момент. Два дня спустя произошёл первый вывод средств. Майнинг-пул BTC.com извлёк 100,7 BCH с адреса со встроенным SegWit.

В игру входят этичный хакер и BTC.com

21 ноября 2017 года надежды amaclin1 канули в лету. Пользователь Reddit /u/bchsegwitrecover вывел 493,5 BCH ($600 000) и предложил вернуть их владельцам за комиссию в 30%, которым было необходимо оформить заявки до 6 декабря 2017 года. Данные из блокчейна свидетельствуют о том, что в общей сложности /u/bchsegwitrecover вернул 75,59 BCH семи пользователям. Судьба невостребованных BCH остаётся неизвестной, так как эти активы были распределены в ходе множества транзакций на мелкие части, что затрудняет их отслеживание.

23 ноября BTC.com запустил официальный сервис по восстановлению BCH за комиссию в 10%, таким образом реализовав замысел /u/btctroubadour, о котором тот писал несколькими месяцами ранее. Это новый этап в восстановлении утраченных BCH. Теперь к решению проблемы подключились публичные майнинг-пулы.

Так выглядит распределение восстановленных BCH по пулам, включая неизвестных майнеров:

a12.png

Собираемые комиссии за свою услугу BTC.com, предположительно, отправлял на один адрес. Всего на него поступило 368,03 BCH. В то же время, этот пул восстановил 5 779,30 BCH. Таким образом, иногда комиссия составляла меньше 10%. Вероятно, в определённый момент владельцы пула решили ограничить максимальную сумму комиссии в 10 BCH.

Хард форки Bitcoin Cash

Как известно, Bitcoin Cash проводит запланированные хард форки дважды в год, 15 мая и 15 ноября. Два следующих хард форка имеют отношение к рассматриваемым событиям:
  • 15 ноября 2018 года была полностью ликвидирована возможность восстановления активов с SegWit-адресов;
  • 15 мая 2019 года был осуществлён частичный откат предыдущего правила, чтобы сделать эти транзакции возможными.
В результате на протяжении 6 месяцев никто не мог восстанавливать активы с SegWit-адресов, на которых снова начал накапливаться джекпот. Форк 15 мая позволил его опустошить, что видно на графике:

a13.png

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

Затем майнинг-пул BTC.TOP восстановил 3 800 BCH с адресов со встроенным SegWit, воспользовавшись новым методом. Он не стал ждать, пока владельцы средств обратятся к нему, и собирать с них подтверждения. Вместо этого BTC.TOP создал адреса без поддержки SegWit, доступ к которым могут получить только владельцы начальных адресов.

Заключение

Публичные майнинг-пулы в этой ситуации повели себя безукоризненно, вернув большую часть восстановленных BCH их владельцам. Вместе с тем, судьба половины утерянных монет остаётся загадкой. Фактически, они были «восстановлены» или присвоены неизвестными майнерами. Расследование продолжается.

a14.png

Доля неизвестных и публичных майнеров в общем объёме восстановленных BCH
Фото: igorovsyannykov
Комментарии 0
Вы должны войти на сайт, чтобы разместить свой комментарий.