2018 год – год хардфорков, только за последнее время на биржах начали торговать сразу тремя новыми хардфорками биткоина. В этой статье я расскажу, что это за форки, где они публикуют свой программный код и как получить свою долю монет, если вы на это все-таки решитесь.
Сразу оговорюсь, что рассматривать буду только хардфорки с открытым кодом, доступные на криптобиржах.
Bitcoin Diamond
Bitcoin Diamond (BCD) среди описываемых форков получил, пожалуй, самую активную поддержку криптобирж, причем еще до запуска. У разработчиков есть некоторое количество собственного программного кода, без сомнения, основанного на коде Bitcoin Core. Криптокошельки, за исключением BitPie, его не поддерживают. Про BitPie я знаю только то, что это мультивалютный кошелек. Он – ваш единственный вариант получить монеты без запуска полной ноды.
Главная особенность Bitcoin Diamond в том, что вы получаете в 10 раз больше монет, чем у вас было биткоинов. То есть, если до блока №495866 у вас был 1 ВТС, то теперь вы обладатель 10 BCD. Создатели добились этого простой перестановкой десятичной точки (более «делимой» монета от этого не стала): если 1 ВТС равен 100 млн сатоши, то 1 BCD равен 10 млн сатоши. Чистый маркетинг, не более.
Никто пока не знает, что за девелоперы стоят за проектом, но поскольку код весьма похож на Bitcoin Core, волноваться особенно не о чем. Хотя я бы все равно советовал запускать код на отдельной машине, физической или виртуальной.
Для технических гиков добавлю, что отличие транзакций Bitcoin Diamond от Bitcoin Legacy в том, что теперь Version указывается не 1, а 12. Версия 12 требует, чтобы хеш блока размещался сразу после версии – таким образом здесь решается проблема двойного расходования. В отличие от BTG и BCH, использующих стандарт BIP143 для подписывания транзакций, BCD использует legacy-подпись для «несегвитовских» транзакций (а следовательно, они подвержены квадратичному хешированию) и BIP143 для segwit-транзакций.
Непонятно зачем выбрали такой странный способ защиты от двойного расходования, учитывая, что благодаря стараниям BCH и BTG уже есть проверенные id-стандарты для форка. Но BCD решили делать всё по-своему. Тип хеша использован тот же, что и у биткоина (SIGHASH_ALL), но, в отличие от BTG и BCH, проигнорирован SIGHASH_FORKID.
На момент публикации статьи Bitcoin Diamond торгуется по цене ~$19/BCD.
Super Bitcoin
Форк супербиткоина (SBTC) произошел на блоке №498888. Это честный форк без всяких манипуляций с перестановкой десятичной запятой. Монета, как обещают, получит поддержку и Lightning Network, и технологий доказательства с нулевым разглашением (ZKP), и смарт-контрактов, хотя следов всего этого в программном коде, доступном на репозитории, я не нашел.
Девелоперы форка известны, у них есть сайт. Для SBTC тоже в основном использовали код Bitcoin Core с небольшими модификациями. Несколько криптобирж SBTC уже поддерживают или начнут поддерживать его в ближайшее время, так что кое-какой потенциал ликвидности у монеты есть.
Основное техническое отличие форка: здесь транзакции имеют версию 2, хотя принимаются и транзакции версии 1. Для подписи используется флаг SIGHASH_FORKID, но не с настоящим номером форка. Вместо него в конец сигнатуры хеша добавляется строка «sbtc». Звучит просто, но потратив на отладку около 12 часов, я обнаружил, что к самой строке добавлена еще и длина строки, так что в hex-редакторе получаешь что-то типа 0473627463, а не 73627463, как можно было бы ожидать. Нечто подобное я видел и в репозитории United Bitcoin, так что, уважаемые разработчики кошельков, запомните, что придется вводить длину строки, которую добавили в конце.
Опять таки, я считаю, что выбран странный способ защиты от двойного расходования, учитывая, что уже есть надежное решение этой проблемы, апробированное BTG и BCH. Но такой уж он – путь форков. Как и BCD, SBTC использует legacy-подпись для «несегвитовских» транзакций (привет, квадратичное хеширование) и BIP143 для segwit-транзакций. Снова таки – загадочный выбор, учитывая, что использование единого алгоритма подписи позволило бы сделать программный код кошельков заметно проще. Но, увы, не все готовы делать выбор, руководствуясь интересами разработчиков кошельков.
Единственным SPV-кошельком, поддерживающим Super Bitcoin, который я нашел, опять оказался BitPie. Даже не скажу, не подбросив монету, что безопаснее – этот софт-кошелек или «полный» кошелек SuperBitcoin Core.
SBTC сейчас стоит $115.
BitCore
Этот зверь – нечто среднее между хардфорком и airdrop’ом. BitCore (BTX) берет список UTXO (Unspent Transaction Output — Выходы неизрасходованных транзакций) у Bitcoin Legacy, сжимает выходы для каждого адреса и распространяет их в своем блокчейне. Проще говоря, вычищает реестр, делая его гораздо компактнее.
Это самый остроумный хардфорк из описанных – он не требует блокчейна биткоина, как в случае других хардфорков (а это больше 120Gb!), и он достаточно инновационен – убирает то, что можно убрать. К сожалению, дистрибуция монет здесь прижимистая – за каждый биткоин, который у вас был до блока №492820, вы получите 0,5 BTX. У BitCore продолжается airdrop, так что популяризации монеты способствует и этот аспект.
BTX поддерживает Coinomi – софт-кошелек, имеющий удобную sweep-функцию (здесь она называется «интеграция кошелька»), которая поможет перевести ваши средства с холодных кошельков, и функцию импорта сид-фраз, которая поможет восстановить доступ к монетам из кошельков, использующих стандарт BIP39 для генерации мнемонических фраз. К сожалению, это еще и самая недорогая монета – она стоит ~$22, то есть за каждый ваш биткоин вам перепадет $11.
Как получить эти монеты
Есть несколько способов получить монеты, и какой бы вы ни выбрали, первый шаг везде одинаков.
Сколько бы ни было у вас биткоинов на момент форка, переведите их. Если, допустим, вы храните их на Trezor, перебросьте их на другой Trezor, с другим сидом – сид-фраза с первого аппаратного кошелька понадобится вам для получения монет. Переводите всю сумму до последнего сатоши. Ради вашей же безопасности. Потому что ни одна, даже самая хитромудрая хакерская программа, не сможет лишить вас биткоинов, если вы переведете их на счет с другим приватным ключом.
Не торопитесь и перепроверьте всё еще раз. Ошибка в таких вещах может стоить очень дорого.
Вариант удобный
Как минимум в случае с SBTC и BTX у вас есть возможность ввести приватные ключи в приложение Bither (для SBTC) и Coinomi (для BTX). Можете просканировать свой приватный ключ (НА КОТОРОМ, НАПОМИНАЮ, К ЭТОМУ МОМЕНТУ НЕ ДОЛЖНО БЫТЬ ВАШИХ ВТС) и сохранить его в кошельке BitPie или Coinomi.
Это самый простой вариант, но и самый рискованный, если вы не доверяете этим кошелькам. Пока нет способа таким же образом получить BCD, поэтому имейте в виду – любые рассказы о том, что это можно сделать, указывают на то, что вы имеете дело с мошенниками, которые хотят украсть вашу криптовалюту (именно поэтому так важен первый шаг – перенос своих биткоинов на счет с другим приватным ключом). Если вы это сделали, единственный вред, который смогут нанести мошенники – лишить вас монет нового хардфорка.
Вариант надежный
Более надежный вариант – запустить на отдельном компьютере или виртуальной машине программу Core. Для этого скачайте программный код из репозитория хардфорка на Github и самостоятельно скомпилируйте. Поскольку это форки Bitcoin Core, вам помогут подробные инструкции Bitcoin Core по компиляции нужной версии для MacOs, Windows или Linux.
Как только исходный код скомпилирован, вы получаете исполняемые файлы. Запускайте их и ждите, пока синхронизируются блокчейны (при хорошей связи это занимает примерно день). После этого стоит отключить ваш компьютер от интернета.
Вам понадобится еще один компьютер (или виртуальная машина) с тем же исполняемым кодом, но подключенный к интернету. На него вы будете передавать транзакцию с первой машины.
Вернитесь к первой машине и импортируйте в core-кошелек приватные ключи счетов, по которым вам причитаются новые монеты. Монеты тут же будут начислены. Теперь перешлите их на любой другой свой адрес, используйте команду getrawtransaction, чтобы получить исходный шестнадцатеричный код. Скопируйте его на usb-флешку или sd-карту, перенесите на вторую, подключенную к интернету машину, и с нее транслируйте информацию в блокчейн.
Вcё – вы получили то, что хотели. Есть, конечно, малая вероятность того, что вы подхватите какой-нибудь вредоносный код, но он будет на машине, которую вы все равно после всей этой операции снесете, так что можно не переживать.
Параноидальный вариант
Параноидальная версия предполагает написание собственных транзакций и их передачи вручную, путем присоединения к ноде в сети. Сложная часть – не присоединение к сети, а само создание транзакции. Вам понадобится собственная библиотека, чтобы подписать транзакцию, а получить сигнатуру хеша – задача не из тривиальных. Зато это абсолютно безопасно, поскольку вам не надо доверять чужому софту. Лично я именно таким способом провел немало транзакций.
Заключение
Хардфорки – уже данность, и проведение подобных операций станет для пользователей обыденным делом в самом ближайшем будущем. К счастью, за это полагается награда, да и вообще не лишне научиться обращаться со своими приватными ключами (соблюдая, конечно, правила безопасности). Процесс это, безусловно, нервный, зато по ходу вы начинаете интуитивно понимать, что можно делать, а что – нельзя.
В общем, удачи вам в получении «бесплатных» монет!