Последние и потенциальные новинки в Биткойне

Биткойн постоянно развивается в техническом плане. Растущее с каждым годом сообщество разработчиков ведущей криптовалюты трудится не покладая рук над совершенствованием её протокола и всего, что только можно. Большой прогресс проделан в таких важных проектах, как, например, Taproot, Stratum V2, OP_CHECKTEMPLATEVERIFY и драйвчейны. Между тем растёт использование SegWit, с каждым месяцем всё больше монет перемешивается с помощью чаумовских CoinJoin-инструментов и всё больше кошельков и сервисов внедряют стандарт адресов bech32. Сегодня давайте проанализируем, как изменилось это технологическое поле за прошлый год, и выясним, чего можно ждать в будущем.

Рассмотрим для начала новые технологии, запущенные за последние пару лет.

Guix позволяет меньше полагаться на доверие

Компьютеры общаются посредством двоичного кода: они получают инструкции от программ в виде единичек и нулей. Но люди не говорят на двоичном языке. Поэтому программы пишутся на понятных человеку языках программирования, после чего компилируются («переводятся») в двоичный код.

Но это значит, что когда вы скачиваете двоичный код, например последний релиз Bitcoin Core, вы не можете проверить, действительно ли он совпадает с открытым кодом, находящимся в GitHub-репозитории Bitcoin Core. Вы доверяете тому, кто прислал вам ПО, или сайту, откуда вы его скачали.

Чтобы решить эту проблему, ряд разработчиков Bitcoin Core в качестве стандартной части процесса релиза компилируют последнюю версию в двоичный код и сверяют, всё ли совпадает. Если всё совпадает и только в этом случае, они криптографически подписывают двоичный код. Пользователи, скачивающие двоичный код, могут, в свою очередь, проверить эти подписи. Поэтому доверять какому-то одному разработчику не нужно. (Конечно, если пользователь не хочет доверять даже группе разработчиков, он может самостоятельно скомпилировать в двоичный код).

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

Чтобы решить эту проблему, разработчики Биткойна используют программу Gitian. Gitian лучше всего описать как виртуальный компьютер в компьютере, где можно компилировать программы, чтобы они всегда давали одинаковый двоичный код.

Но Gitian тоже имеет проблему доверия: программа сильно полагается на двоичные коды Ubuntu. Теоретически это открывает дверь для изощрённых атак на процесс Gitian, что потенциально может отразиться на скачиваемом пользователями двоичном коде Bitcoin Core.

Поэтому инженер Chaincode Labs Карл Донг представил Guix – систему верификации двоичного кода, позволяющую пользователям удостовериться, что скачанный ими клиент Bitcoin Core в точности соответствует коду, написанному его разработчиками. В июле 2019 г. в проект Bitcoin Core внедрили поддержку решения Донга, вследствие чего стало ещё одним уровнем доверия меньше.

«Guix позволяет нам построить такую среду, где мы доверяем существенно меньшему набору двоичных кодов, – сказал Донг Bitcoin Magazine. – Большая часть среды строится из крошечных двоичных ядер, и этот процесс намного лучше поддаётся аудиту».

Рост числа активов, предлагаемых на сайдчейнах

В 2018 г. были запущены первые сайдчейны Биткойна: Liquid от Blockstream и RSK от RSK Labs. Оба сайдчейна гарантируются федерацией: группа держателей ключей – известных отраслевых компаний – позволяет пользователям переводить монеты из блокчейна Биткойна в альтернативный блокчейн, где они подчиняются другим протокольным правилам.

Сейчас сайдчейны Биткойна используются для всё большего спектра активов. Liquid, в частности, предлагает целый ряд альтернативных активов, которые можно быстро и конфиденциально обменивать в соответствии с протокольными правилами сайдчейна. Не считая некоторых тестов и игровых токенов, а также активов, которые на самом деле пока ещё не используются (как INF от Infinite Fleet, поскольку игра ещё не вышла), первой видной компанией, представившей свой токен (SAI) на сайдчейне Liquid, стала SideShift AI.

иллюстрации: БитНовости

Кроме того, на Liquid обосновалось несколько стейблкойнов, например выпущенные Listed Reserve и Condensat Technologies. А в июле 2019 г. к сайдчейну от Blockstream подключился крупнейший по рыночной капитализации стейблкойн – Tether (USDT). USDT, одна из ведущих криптовалют вообще, теперь может использоваться для арбитража между биржами и потенциально для атомарных свопов и доступна в кошельке Green от Blockstream.

«Рост числа альтернативных активов в сети Liquid, таких как стейблкойны и токенизированные ценные бумаги, свидетельствует о том, что технология сайдчейнов быстро развивается, – сказал главный стратег Blockstream Самсон Моу. – Мы надеемся и ожидаем, что использование Liquid будет и дальше расти».

Судя по всему, активов на Liquid в ближайшем будущем действительно будет становиться всё больше. В частности, в декабре 2019 г. дубайская криптовалютная биржа BTSE анонсировала предложение токенов на сайдчейне от Blockstream.

Shamir Backups для более безопасного хранения
: Bitcoin Magazine

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

В августе 2019 г. компания SatoshiLabs представила решение этой проблемы: Shamir Backups. Компания, выпускающая аппаратные кошельки Trezor, потратила больше года на разработку формата seed-фраз на основе схемы разделения секрета Шамира – криптографического алгоритма, созданного известным криптографом Ади Шамиром. Теперь можно разделить seed-фразу на несколько «долей», и для восстановления кошелька будет требоваться определённое их количество. Shamir Backups от SatoshiLabs позволяет создать до 16 долей, причём их можно даже делить на ещё меньшие доли.

«Вот вариант практического применения: если хотите, чтобы ваши дети или близкие имели справедливый доступ к вашим цифровым активам даже после того, как вас здесь больше не будет, можете поровну разделить доли между ними, чтобы никто в одиночку доступа к вашим средствам не имел, – предложил CEO SatoshiLabs Марек «Slush» Палатинус. – Возможностей сейчас намного больше, и мы рады предложить это решение с открытым кодом всем проектам в индустрии».

Новые инструменты конфиденциальности с Pay to Endpoint (P2EP)

Pay to Endpoint (P2EP) – это метод обеспечения конфиденциальности, популяризованный через блоги и подкасты летом 2018 г. после мероприятия с участием исследователей конфиденциальности Биткойна (хотя кто именно там присутствовал – неизвестно).

Если кратко, то P2EP позволяет обойти допущения, на которых чаще всего основывается анализ блокчейнов. Для этого получатель участвует в транзакции через CoinJoin, фактически отправляя средства самому себе, помимо платежа как такового. Если блокчейн-шпионы предположат, что все монеты, пересылаемые в транзакции, принадлежат отправителю – как обычно бывает, – то окажутся неправы. А если такая эвристика слишком часто будет оказываться неверной, это сделает её бесполезной.

В конце 2018 г. были представлены ранние версии этого инструмента конфиденциальности в виде Bustapay и PayJoin для JoinMarket.

В августе 2019 г. кошелёк Samourai, фокусирующийся на конфиденциальности, выпустил собственную версию P2EP – Stowaway – в составе инструмента Cahoots. Stowaway отличается от других версий P2EP тем, что позволяет пользователям отправлять такие платежи только непосредственно выбранным пирам. Разработчики кошелька Samourai считают, что это несколько лучше для конфиденциальности, так как получателю не нужно раскрывать отправителю полную информацию о своих монетах.

В том же году в инструменте Cahoots кошелька Samourai также появилась похожая опция STONEWALLx2. Благодаря STONEWALL (без «x2») пользователи могли делать так, чтобы обычные платежи выглядели, как CoinJoin-транзакции, чтобы сбить с толку шпионов. В случае STONEWALLx2 совершаются реальные CoinJoin-транзакции, где в перемешивании используются монеты выбранного пира. Этот выбранный пир в итоге просто получает свои средства обратно.

«Одна из наших целей – предоставить пользователям лучшую возможную конфиденциальность транзакций в блокчейне, – сказал разработчик кошелька под псевдонимом Samouraidev. – Мы хотим, чтобы инструменты для конфиденциальности транзакций были доступны всем».

В 2019 г. кошелёк Samourai также добавил в Cahoots (и в чаумовскую CoinJoin-реализацию Whirlpool) Dojo – выделенный полный узел, улучшающий конфиденциальность (и безопасность).

Miniscript делает программирование Биткойна проще

На техническом уровне тратить биткойны фактически означает «разблокировать» их и затем снова «заблокировать». Условия для «разблокировки» монет прописаны в коде, созданном на специально разработанном для Биткойна языке программирования Script. Однако Script имеет ряд сложностей, в частности его не всегда легко интерпретировать человеку, так что работа с ним требует искушённости.

Чтобы решить эту проблему, сотрудники Blockstream Эндрю Поэлстра, Питер Вюлле и Санкет Канджалкар (практикант) разработали «облегчённую» версию Script, содержащую меньше инструментов, что упрощает использование и верификацию. Miniscript позволяет делать почти всё то же, что и Script, кроме некоторых редко используемых опций, но этот язык более прямолинеен и предсказуем.

«В теоретическом смысле Miniscript более ограничен, чем Script, – сказал директор по исследованиям Blockstream и один из разработчиков Miniscript Эндрю Поэлстра. – Но он может всё то, для чего люди действительно используют Script».

Чтобы ещё больше упростить программирование на Miniscript, Вюлле также разработал «процедурный язык», который можно рассматривать как самостоятельный язык программирования. После программирования условий расходования монет на этом процедурном языке его можно скомпилировать в Miniscript и, следовательно, в Script. Дополнительное преимущество процедурного языка в том, что он автоматически компилируется в лучшую возможную, наиболее эффективную версию Miniscript.

 

Далее речь пойдёт о потенциальных обновлениях протокола Биткойна в ближайшем будущем.

Подписи Шнорра/Taproot/Tapscript

Многие криптографы считают подписи Шнорра лучшими существующими криптографическими подписями. Они предлагают высокий уровень точности, не подвержены искажениям, относительно быстро верифицируются и – что, пожалуй, интереснее всего – позволяют выполнять над собой математические операции. Одно конкретное преимущество для Биткойна в том, что несколько подписей можно объединить в одну, что может, например, экономически мотивировать улучшающие конфиденциальность CoinJoin-транзакции.

Работа по добавлению подписей Шнорра в протокол Биткойна идёт уже достаточно давно. Но в прошлом году разработчики, занимающиеся предложением о включении подписей Шнорра, такие как Питер Вюлле и Джонас Ник из Blockstream и Энтони Таунс из Xapo, раскрыли ещё более амбициозные планы. Подписи Шнорра должны стать частью более масштабного обновления протокола в виде софт-форка под названием Taproot, предложенного разработчиком Bitcoin Core Грегори Максвеллом, который, в свою очередь, вдохновлялся более старым предложением под названием MAST (Merkelized Abstract Syntax Tree – абстрактное синтаксическое дерево на основе дерева Меркла).

Для расходования биткойнов можно задать разные условия, такие как блокировка по времени и подтверждение разблокировки монет несколькими участниками. С MAST эти различные условия хешируются и включаются в дерево Меркла: компактную криптографическую структуру данных. Тогда монеты фактически блокируются в конечном хеше этого дерева – корне Меркла. Чтобы потратить монеты, нужно раскрыть только условие, которое вы будете использовать. Альтернативные способы, которыми могли быть потрачены монеты, остаются скрытыми навсегда.

Taproot основывается на интересном наблюдении: независимо от сложности, почти любая MAST-конструкция может (или должна) включать условие, позволяющее всем участникам согласиться с исходом и вместе подписать расчётную транзакцию. Это «совместное закрытие» будет приоритетнее всех других условий.

Taproot, исходя из этого наблюдения, использует подписи Шнорра, чтобы совместное закрытие выглядело как обычная транзакция. Если упрощённо, то совместное закрытие осуществляется с помощью объединённой подписи, выглядящей как обычная. При этом MAST-конструкция остаётся полностью скрытой от внешнего мира. Это способствует конфиденциальности и эффективности.

Полезно почитать: BLS-подписи: лучшая альтернатива подписям Шнорра

Вместе с Taproot может также увидеть свет обновлённая версия языка программирования Биткойна Script – Tapscript. Это также упростит добавление в язык программирования Биткойна в дальнейшем новых свойств («операционных кодов»).

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

The Great Consensus Cleanup

The Great Consensus Cleanup – это софт-форк, предложенный разработчиком из Square Crypto Мэттом Коралло. В отличие от других обновлений протокола – включая упоминаемые в этой статье, – The Great Consensus Cleanup не обогатит Биткойн новыми свойствами или возможностями. Вместо этого, как следует из названия («большая консенсусная чистка»), этот софт-форк должен убрать из протокола Биткойна кое-какие мелкие уязвимости.

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

Основное возражение против (отдельных частей) The Great Consensus Cleanup заключается в том, что некоторые существующие монеты (UTXO) после изменений теоретически может быть невозможно потратить. Хотя вероятность существования таких UTXO крайне мала, невозможно знать наверняка, и некоторые считают, что идти на такие риски нельзя.

Класс Noinput

Транзакции Биткойна содержат криптографические подписи, подтверждающие, что владелец публичного ключа действительно хочет потратить соответствующие монеты в данной транзакции. Но подписывается не вся транзакция. Подписываемая часть транзакции отмечается так называемым sighash-флагом.

Разработчик из Blockstream Кристиан Декер и Энтони Таунс из Xapo предлагают новый класс sighash-флагов. То, что они называют SIGHASH_NOINPUT, SIGHASH_ANYPREVOUT и SIGHASH_ANYPREVOUTANYSCRIPT – это похожие решения, поэтому мы объединим их под названием «класс Noinput».

Если транзакция содержит sighash-флаг класса Noinput, это означает, что подписываться будет выход («получаемая» часть транзакции) и другие данные, но не вход («отправляемая» часть). Поскольку вход не подписывается, даже после того как транзакция подписана, её вход можно заменить на другой, но сопоставимый.

Чаще всего другого сопоставимого входа не будет. Подпись соответствует публичному ключу, и этот публичный ключ соответствует конкретной монете (или её части). Замена входа на какой-нибудь случайный нарушит эту связь и сделает транзакцию недействительной.

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

Главное возражение против класса Noinput заключается в том, что, в частности, SIGHASH_NOINPUT может быть небезопасен при неправильном использовании. SIGHASH_ANYPREVOUT и SIGHASH_ANYPREVOUTANYSCRIPT решают эту проблему (и обеспечивают совместимость с Taproot), но за счёт большей сложности. Некоторые также считают, что похожие преимущества может также дать OP_CHECKTEMPLATEVERIFY (см. ниже) или OP_cat (отключённый операционный код, который можно вновь включить, возможно посредством Tapscript).

OP_CHECKTEMPLATEVERIFY

OP_CHECKTEMPLATEVERIFY (CTV), ранее известный как OP_SECURETHEBAG, – это новый операционный код, который предложил разработчик Bitcoin Core Джереми Рубин. Его главное преимущество в том, что он может снизить нагрузку на сеть Биткойна и комиссии в пиковые периоды, увеличив пропускную способность.

В частности, CTV в некотором смысле позволит делить транзакции Биткойна надвое. «Отправляемая» часть транзакции будет включать вход – в сущности, адреса, с которых отправляются монеты. «Получаемая» часть транзакции включает выход – адреса, на которые отправляются монеты.

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

Особенность в том, что обе «половинки» – «отправляемая» и «получаемая» транзакции – транслируются в сеть, но с важным различием. «Отправляемая» транзакция включает относительно большую комиссию, чтобы гарантировать быстрое подтверждение. «Получаемая» транзакция содержит относительно малую комиссию, что означает, что она может быть подтверждена не сразу.

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

Если всё же получателю нужно ускорить «получаемую» транзакцию, например потому что ему нужно потратить монеты, можно просто отправить средства непосредственно из неподтверждённой «получаемой» транзакции. Если комиссия новой транзакции достаточно большая, то и «получаемая», и новая транзакции будут быстро подтверждены (этот приём называется «ребёнок платит за родителя»). Что ещё интереснее, CTV делает возможными более эффективные решения благодаря разделению «получаемой» транзакции на меньшие, называемые «древесными платежами».

Главное возражение против CTV, пожалуй, в том, что то же самое можно сделать лучшими и/или более общими способами (более общее решение обычно называют ковенантами). Некоторые также считают, что похожие преимущества могут дать класс Noinput или OP_cat.

Предложения драйвчейнов

Сайдчейны – это блокчейны, «привязанные» к блокчейну Биткойна, фактически позволяющие перемещать монеты с него в сайдчейн и обратно. Оказавшись в сайдчейне, монеты подчиняются его протокольным правилам, которые могут быть самыми разными. Например, может быть «Zcash-сайдчейн» для конфиденциальности, «Ethereum-сайдчейн» для определённых смарт-контрактов или «сайдчейн больших блоков» для транзакций с низкими комиссиями. Выше уже упоминались существующие сайдчейны, такие как Liquid (главным образом, для перевода средств между биржами) и RSK («Ethereum-сайдчейн»). Это «федеративные сайдчейны»: перемещением между блокчейном и сайдчейном управляет «федерация» известных компаний. В сущности, они контролируют адрес с мультиподписью в блокчейне Биткойна и вместе подписывают транзакции для перемещения монет.

Безопасность же драйвчейнов будут обеспечивать майнеры Биткойна: те же самые, которые предоставляют вычислительную мощность, защищающую блокчейн первой криптовалюты. Для перемещения средств с сайдчейна в основной блокчейн нужно подтверждение большинством вычислительных мощностей. Кроме того, драйвчейны будут использовать объединённый майнинг, то есть вычислительная мощность блокчейна Биткойна одновременно будет защищать сайдчейн.

Чтобы реализовать это, разработчик Tierion Пол Шторц и некто под псевдонимом CryptAxe предложили два софт-форка. Первый – Hashrate Escrows – будет блокировать средства в контракте в блокчейне Биткойна («перемещать» их в сайдчейн), и они будут разблокированы («перемещены» обратно), только если за это проголосует достаточно вычислительных мощностей. Второй софт-форк – Blind Merged Mining («слепой объединённый майнинг») – позволит защищать сайдчейн с помощью той же вычислительной мощности, что и блокчейн Биткойна.

Драйвчейны несколько противоречивы, так как утверждается, что они дадут майнерам Биткойна больше власти. Некоторые также считают, что слепого объединённого майнинга можно достичь с помощью класса Noinput.

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

1 + 2

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *