Обновления, которые могут произойти в блокчейне биткоина в 2020 году и за его пределами

Обновления, которые могут произойти в блокчейне биткоина в 2020 году и за его пределами

06.01.2020
0
Александр Сорокин

Аарон ван Вирдум – Bitcoin Magazine

Биткоин на уровне консенсуса не изменялся уже более двух лет. С момента активации Segregated Witness (SegWit) в августе 2017 года не проводилось ни хард форков, ни софт форков, что знаменует длиннейший срок без консенсусных форков в истории биткоина.

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

Schnorr/Taproot/Tapscript

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

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

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

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

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

В Taproot также может быть включена усовершенствованная версия языка программирования биткоина Script, которая в данном случае носит название «Tapscript». Благодаря этому в биткоин будет проще добавлять новые функции или так называемые «коды операций» (OP code) в дальнейшем.

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

Великая чистка консенсуса

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

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

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

Класс Noinput

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

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

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

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

Тем не менее, существуют исключения, когда вход транзакции действительно можно заменить. Например, биткоин-транзакции для нового типа протокола платёжного канала Lightning Network под названием «Eltoo» разрешают заменить вход на другой совместимый. Это позволяет существенно упростить исполнение платёжных каналов. Самое главное, баги и другие непреднамеренные ошибки больше не будут приводить к потере средств в канале, а пользователям придётся уделять значительно меньше внимания резервному копированию данных.

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

OP_CHECKTEMPLATEVERIFY

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

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

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

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

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

Главное возражение состоит в том, что могут найтись другие, более эффективные методы достижения того же эффекта. Некоторые заявляют, что это может быть реализовано посредством класса Noinput.

Drivechain

Сайдчейны являются блокчейнами, привязанными к основному блокчейну биткоина. Они позволяют перемещать монеты между самим сайдчейном и блокчейном биткоина. Как только монеты оказываются в сайдчейне, они подчиняются правилам, действующим в этом конкретном блокчейне. Правила могут различаться, как и во всём многообразии существующих сегодня блокчейнов. Например, можно создать «сайдчейн Zcash» для обеспечения приватности, «сайдчейн Ethereum» для смарт-контрактов и «сайдчейн больших блоков» для снижения комиссий.

Определённые сайдчейны уже существуют. Самыми известными примерами являются Liquid от Blockstream (преимущественно для пересылки средств между биржами) и RSK от RSK Labs («сайдчейн Ethereum»). Это «федеративные сайдчейны», где мостом между блокчейном биткоина и сайдчейном управляет «федерация» известных компаний. По сути, они контролируют адрес с мультиподписью в блокчейне биткоина и сообща подписывают перемещение монет туда и обратно.

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

Для реализации этого замысла разработчик Tierion Пол Сторц и псевдонимный разработчик CryptAxe предлагают провести два софт форка. Первый, «эскроу хеш-рейта», позволит блокировать средства в контракте на блокчейне биткоина («перемещать» их в сайдчейн) с последующей разблокировкой («возвращать» в блокчейн) по достижении достаточного согласия со стороны владельцев хеш-рейта. Второй, «слепой объединённый майнинг», позволит защищать сайдчейны теми же вычислительными мощностями, которые работают в блокчейне биткоина.

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


Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x