скачать
Закрыть меню -

SyncChain: Синхронизированные сайдчейны как инструмент повышения безопасности и удобства использования

Published on: 24 апреля, 2020

By Sergio Demian Lerner, IOV Labs Chief Innovation Scientist

[TL;DR] Мы разработали новый тип сайдчейна со слитным майнингом, который назвали SyncChain. Такой сайдчейн обеспечивает быструю входную и выходную привязки (между Биткойн и RSK, всего 30 минут для входной привязки и 2 часа для выходной привязки); кроме того, его можно параметризовать для безусловной защиты привязки от двойной траты. Это значительное улучшение по сравнению с существующими сайдчейнами, которым требуются сотни подтверждений блоков, а безопасность основана только на криптоэкономических предположениях. Протокол SyncChain, который был основан на некоторых идеях, которые мы опубликовали в 2016 году, не зависит от метода, используемого для разблокировки выходной привязки. Одна из интересных разработок — это создание федеративного SyncChain. Наконец, в этой статье мы рассматриваем преимущества и недостатки перехода RSK от сайдчейна Биткойн SPV к Биткойн SyncChain, а также предлагаем предварительный план обновления сети SyncChain. 

Введение

Одной из целей проекта по созданию RSK было сделать сеть RSK максимально независимой от сети Биткойн, чтобы оградить RSK от сбоев в Биткойн. В 2015–2016 годах Биткойн находился под постоянным давлением, часто возникали угрозы спорных хард-форков, при этом комиссионные сборы за транзакции значительно возросли, что ограничило использование Биткойн для доступа к финансовым услугам, где требуются дешевые платежи. Поэтому в RSK был принят консенсус слитного майнинга вместо протокола наложения, аналогичного использованию контрагентов. В отличие от наложения, слитный майнинг обеспечивает полную независимость системы (в том числе от разворота блоков Биткойн). По той же причине мы использовали доказательства упрощенного подтверждения платежей (SPV) для внешнего консенсуса. 

Со временем риск разрыва цепочки Биткойн снизился. Это позволило нам пересмотреть требования к двусторонней привязке и переоценить пространство проектных параметров в поисках лучших альтернатив.

Безопасность для моста SPV

В нескольких предыдущих сообщениях в блоге мы анализировали работу привязки RSK. Одно из свойств привязки RSK заключается в том, что разворот блокчейна Биткойн не подразумевает разворот RSK Blockchain. Поэтому, чтобы предотвратить двойные траты, в RSK требуется очень надежная гарантия того, что блокчейн Биткойн не будет разворачиваться в обратную сторону после транзакции привязки, например, ожидая 100 подтверждений блоков Биткойн. Предположим, что участие в слитном майнинге находится на уровне около 50%, и существует один большой вредоносный пул майнинга, который мы назовем Mallory, которому принадлежит 51% хэшрейта RSK (25% хэшрейта Биткойн). Mallory может попытаться использовать весь свой хэшрейт, чтобы создать ложный блокчейн, включающий только заголовки, и передавать его через мост, заставляя систему принимать любые поддельные транзакции, внесенные Mallory. Такая фиктивная цепочка заголовков не будет действующим блокчейном Биткойн, поэтому Mallory не будет нарушать этот блокчейн, но не сможет получать награду за блоки во время подготовки к атаке. В настоящее время сеть RSK защищена от атак подобного типа, потому что должностные лица Федерации не отправляют регистрационное сообщение о привязке, если их лучшая локальная цепочка не совпадает с лучшей цепочкой Биткойн, загруженной в контракт моста. Однако мы можем предположить, что если бы входная привязка на основе SPV была максимально децентрализована и ограждена от вмешательства Федерации, такая атака могла бы стать успешной. Мы будем называть это «фальшивой входной привязкой». Расходы на электричество для фальшивой входной привязки для Mallory в незащищенной версии RSK составляют около 10 миллионов долларов США. Хотя складывается впечатление, что такую атаку можно легко связать с «отсутствующим майнером», рассматривая базу монет Биткойн, Mallory может утверждать, что ее системы были взломаны, и переложить вину на неизвестную сторону. 

Также существует атака двойной траты с входной привязкой. Для этой атаки требуется сообщение об альтернативной лучшей цепочке в контракте моста, и одновременно изоляция должностных лиц Федерации, чтобы заставить их поверить, что указанная альтернативная лучшая цепочка является единственной. Стоимость такой атаки по-прежнему составляет 10 миллионов долларов США, плюс взлом должностных лиц, а в результате злоумышленник получает не произвольное создание Биткойн, а только удвоение первоначально вложенной суммы.

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

Другим недостатком моста SPV является то, что для входных и выходных привязок требуется 100 подтверждений блоков Биткойн (или эквивалентных блоков RSK для той же совокупной сложности). Но это снижает удобство использования системы. Можем ли мы обеспечить большую безопасность и одновременно удобство использования, чем у моста SPV?

 

Безопасность двухсторонней привязки

Для сравнения особенностей двухсторонней привязки мы определяем 8 защитных механизмов, которые предотвращают атаки с двойной тратой и кражу Биткойн майнерами. В данном случае мы не рассматриваем атаки со стороны других групп. Эти защитные механизмы применяются к любой системе привязки S, которая допускает перекрестную передачу по двум блокчейнам с доказательством выполнения работы. Методы защиты определяются исходя из предположения о безопасности или стоимости атаки (предположений о бюджете злоумышленников). Защиты рассортированы от самых надежных (1) до самых слабых (8), но система может предлагать более одной защиты. Сочетание нескольких защит описывает систему S лишь частично, потому что для входной и выходной привязки могут использоваться разные защиты. Поскольку выходная привязка всегда является более слабым подчиненным протоколом, мы сосредоточимся именно на защите входной привязки, поскольку мошенники стараются выбрать для атаки самое уязвимое место. Для системы могут потребоваться различные допущения относительно устойчивости и жизнеспособности, но в данном случае мы сфокусируемся на надежности. Также для простоты мы будем игнорировать другие дополнительные атаки на сеть, например, возможность изоляции узла. Обратите внимание, что, как правило, атака с двойной тратой не приводит к потере злоумышленником награды за блок: если он разворачивает блокчейн для индивидуального создания новой лучшей цепочки, эта новая цепочка будет выплачивать вознаграждение самой себе, поэтому будут потеряны только награды других майнеров. Единственным исключением из этого правила является защита с помощью Armadillo и некоторых согласованных алгоритмов (как правило, их можно взломать), которые оценивают блоки по времени получения [1][2][3].

Поскольку Биткойн не может оценить совокупное доказательство работы другого сайдчейна, мы предполагаем, что существует некоторая форма статической или динамической группы с мультиподписью для входных и выходных привязок. Однако мы не будем рассматривать никакие атаки, в которых участвуют недобросовестные владельцы мультиподписи, получающие привязанные монеты. Мы предполагаем, что держатели ключей на 100% честны или используют аппаратные модули безопасности (HSM), которые не позволяют им получить доступ к закрытым ключам, как это делает RSK.

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

Первый тип защиты — «Безусловная безопасность» означает, что согласно правилам протокола двойная трата в системе S невозможна. Следующий тип защиты — «Нереализуемость
из-за недостатка ресурсов» (2), который не позволяет удвоить затраты на S, предполагая, что злоумышленник не сможет выполнить сложную вычислительную задачу. Следующий — «Биткойн  M.A.D» (3). Аббревиатура M.A.D. означает взаимное гарантированное уничтожение. Протокол защищен Биткойн M.A.D, поэтому, если для двойной траты злоумышленник вынужден развернуть основной блокчейн, это повлияет на цену токена. Таким образом, долгосрочные стимулы майнеров для поддержания основного блокчейна не пострадают, что также относится и к привязке. К сайдчейну можно применить ту же концепцию, что и в пункте (5). Защита «Осведомленность о длинных атаках» (4) наблюдается тогда, когда сеть может заранее обнаруживать злонамеренные действия тайно сговорившихся майнеров. RSK плюс система мониторинга Armadillo имеют криптоэкономический вариант Long Attack Awareness: злоумышленник либо обнаруживает, что готовит атаку, либо должен отказаться от вознаграждений за блоки, которые он производит в приватной обстановке. Следующая защита — «Потеря награды за блок биткойнов» (7), которая представляет все криптоэкономические системы, основанные на доказательствах SPV, где злоумышленнику необходимо добывать блоки с помощью поддельной транзакции, чтобы обмануть систему для разблокировки монеты в цепочке, которая не была заперта в противоположной цепи. Текущий протокол привязки RSK (с системой мониторинга Armadillo) имеет эту защиту, так же как XCLAIM и TBTC. Прочие категории говорят сами за себя.

Система SyncChain 

SyncChain предоставляет гораздо более надежную гарантию безопасности, чем криптоэкономика. Он обеспечивает безусловную безопасность для входных и выходных привязок. Использование SyncChain позволяет нам устранить риск двойной траты, то есть не перегружать сеть слитного майнинга. В этом обзоре мы описали разработку SyncChain во всех его вариантах. В этом коротком блоге мы представим только идеи SyncChain и самый простой из его вариантов. Все варианты основаны на трех компонентах: отложенное двойное установление родительских связей, привязка транзакций и привязка к монетарной базе. Основная идея SyncChain (двойное установление родительских связей) изложена в одном из наших постов в блоге в 2016 году. Идея состоит в том, что блоки сайдчейна должны указывать и родительский элемент сайдчейна, и родительский элемент основного блокчейна. Наследованное состояние до обработки блока сайдчейна соответствует состоянию после обработки обоих родительских блоков, а разворот любого из родительских блоков вызывает разворот дочернего блока сайдчейна. Но эту технику нельзя использовать для сайдчейна с более высокой скоростью блоков, чем в основном блокчейне, так как отмена блока основного блокчейна может вызвать отмену многих блоков сайдчейна. Необходима новая форма переплетения, которая поддерживает более высокую скорость создания блоков, но не зависит от длительных разворотов.

Отложенное двойное установление родительских связей

Двойное установление родительских связей — одна из возможных техник связывания основного блокчейна и сайдчейна. Она заключается в том, что каждому блоку сайдчейна назначается два родительских блока, один в сайдчейне, а другой — в основном блокчейне. Но мы не используем этот метод напрямую, а используем его разновидность под названием «отложенное двойное установление родительских связей (DDP)». Во-первых, чтобы упростить терминологию, мы будем называть родительский блок основного блокчейна «контрольной точкой», но читателю не следует путать контрольную точку SyncChain с другими системами контрольных точек, основанными на полномочиях [4][5]. При использовании DDP контрольная точка задается с задержкой на определенное количество блоков (в среднем K блоков) на основе как временных отметок, так и количества подтверждений блоков в основном блокчейне. Например, реальным значением для K является 3, что приводит к тому, что контрольные точки могут отставать в среднем на 30 минут. На следующей диаграмме показан пример для K = 3.

Отложенное двойное установление родительских связей

Как было описано ранее, проблема с немедленным переплетением заключается в том, что разворот блока Биткойн автоматически вызывает разворот примерно 20 блоков RSK. Это недопустимо с точки зрения UX, но, что важнее, несет угрозу безопасности при расчете транзакции. При использовании отложенной контрольной точки RSK Blockchain разворачивается в обратную сторону только в том случае, если было развернуто более K блоков основного блокчейна. Для наглядности давайте предположим, что средний интервал блокировки RSK составляет 30 секунд, а средний интервал блокировки Биткойн — 10 минут. То есть, если блокчейн Биткойн разворачивается назад на R блоков, где R > K, то RSK Blockchain разворачивается на (R-K)*20 блоков. На следующей схеме мы видим, что, если развернут только один блок Биткойн, в RSK не возникают неожиданные удаления.

Разворот одного блока основного блокчейна не вызывает разворот в SyncChain

Минимальное значение для K равно 1, то есть блок можно проверить только в том случае, если у него есть один дополнительный блок для подтверждения.

Двойные узлы

SyncChain требует, чтобы каждый клиент сайдчейна запускал как экземпляр узла основного блокчейна, так и узел сайдчейна. Основная причина, по которой мы разработали SyncChain, состоит в том, чтобы недопустимая ветвь блокчейна Биткойн не могла войти в контракт моста на основе SPV в качестве действительной цепочки SPV (только для заголовка), потому что доказательства упрощенного подтверждения платежей (SPV) можно скрыть от честной сети, и это уменьшает напряжение M.A.D. Чтобы максимизировать напряженность, мы хотим, чтобы прозрачность выявляла, судила и в конечном итоге наказывала майнеров, как только они начнут добывать блоки для атаки и до ее завершения. Поэтому мы должны убедиться, что любые блоки, которые мост принимает для проверки входной или выходной привязки, полностью доступны (как заголовок, так и полезная нагрузка транзакции) и могут быть включены в блокчейн Биткойн, в соответствии с требованиями программного обеспечения ядра Биткойн. Поэтому узел SyncChain должен запускать эталонный узел основного блокчейна вместе с узлом, связанным только с сайдчейном. Другими словами, узел SyncChain запускает экземпляр программы bitcoind и экземпляр rskj.

Пользователь по-прежнему может запускать только узлы, связанные только с сайдчейном (rskj), но он не сможет проверять входную и выходную привязки. В этом смысле при выполнении транзакции входной или выходной привязки он автоматически становится «облегченным» узлом SPV с такой же моделью безопасности, как у клиентов SPV. 

Для создания отложенного двойного установления родительских связей нужен алгоритм выбора контрольной точки (CSA). CSA — это согласованный алгоритм, который выбирает контрольную точку основного блокчейна и проверяет правильность этого выбора. По сути, при принятии решений CSA должен опираться на метки времени блока. Но метки времени блока в Биткойн не соответствуют текущему времени и, тем более, глобальному времени. Обзор SyncChain  представляет два простых алгоритма RTA (MedianTime11 и AdjustedTime), поэтому мы не будем обсуждать их здесь. 

Контрольные точки и обработка блоков

В заголовке блока сайдчейна контрольная точка определяется номером блока основного блокчейна (checkPointBN) и его хэшем (checkPointHash). Для экономии места можно использовать заголовок хэш-дайджеста уменьшенного размера. 

Каждый узел сайдчейна должен запускать узел основного блокчейна (для RSK это bitcoind), чтобы отслеживать правильность контрольных точек в заголовках блоков RSK. Если хэш контрольной точки RSK не совпадает с хэшем блока Биткойн, на который ссылается номер блока, то блок RSK становится «временно недействительным». Блок RSK можно пересмотреть позже, если будет реорганизована лучшая сеть Биткойн.

Не каждый блок Биткойн может стать контрольной точкой: значения checkPointBN не покрывают все блоки, поэтому возникают пробелы. Когда блок checkPointBN ссылается на транзакцию входной привязки в блоке Биткойн или перепрыгивает через транзакцию входной привязки, пропуская блок, консенсус RSK определяет, что связанный блок RSK ДОЛЖЕН включить транзакцию, отправляющую сообщение входной привязки в контракт моста для немедленного выпуска соответствующих монет. Консенсус также требует, чтобы транзакции входной привязки имели приоритет над другими транзакциями, то есть предшествовали им в блоке. 

Связывание операций привязки 

Все транзакции входной и выходной привязки в Биткойн связаны между собой. Это сделано по нескольким причинам. Одна из них — избегать атак, при которых злоумышленник реорганизует блокчейны Биткойн и RSK для двойной траты средств при привязке мультиподписи, для которой сам злоумышленник обладает или не обладает входной привязкой. Связывание значительно уменьшает возможности для атаки. Вторая причина связана с тем, как закреплены выходные привязки, и позволяет нам доказать невозможность двойной траты из-за выходной привязки. На следующей схеме показана входная и выходная привязки для федеративного сайдчейна, такого как RSK. Средства привязки защищены федеративной мультиподписью, а стороны, которые обладают закрытыми ключами для этой мультиподписи, называются функционерами. В этой цепочке есть две дополнительные внутренние транзакции, называемые входная ссылка и выходная ссылка, которые мы объясним позже. Красная линия соответствует контрольной цепочке, использующей «фиктивные» входы/выходы. Все транзакции, подписанные функционерами, привязаны к этой цепочке. Поскольку каждая транзакция использует один фиктивный вход и создает один фиктивный выход, всегда остается только один неиспользуемый выход для транзакции. Мы называем этот специальный UTXO локен (сокращенное от link token (токен соединения)). Мы используем «цепочку локенов» для обозначения цепочки транзакций, которые потребляют и создают локен. Значение локена будет определенным небольшим значением, превышающим предел пыли для Биткойн.

Цепочка локенов

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

Привязки

Смарт-контракт моста, который управляет всеми процессами входной и выходной привязки, автоматически подает команду функционерам на пересылку монет, полученных в транзакции входной привязки, на другой UTXO, адрес которого может быть таким же или отличаться от адреса входной привязки, но он в равной степени контролируется той же федерацией. Эта первоначальная пересылка полученных монет выполняется в транзакции Биткойн, которую мы называем входной ссылкой. Транзакция входной ссылки использует локен и создает новый локен. На следующей схеме показано, как инициируемая пользователем транзакция («Входная привязка Tx» на схеме) в блоке 1 основного блокчейна запускает действия для моста, когда блок 1 проверяется контрольной точкой блока А сайдчейна. Первое действие — это начальный период ожидания из 3 блоков сайдчейна, а затем, в блоке B, мост дает команду функционерам федерации подписать и передать транзакцию входной ссылки, которая немедленно получает средства входной привязки и перемещает их в конечный адрес привязки с мультиподписью.

Процесс входной привязки

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

Выходная привязка

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

Мы отмечаем, что полностью федеративная система сайдчейна, такая как Liquid, возможно, основанная на консенсусе типа PBFT, не может обеспечить полную атомарность выходных привязок, потому что она имеет окончательный расчет. После завершения транзакции в Liquid, даже если Биткойн будет отменен, сайдчейн не будет отменен, чтобы соответствовать лучшей цепочке Биткойна.

Протоколы выходной привязки

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

  • Выходная привязка для SyncChain More-Populous-Chain-Wins (MPCW)
  • Выходная привязка для SyncChain T-Synchronized (TS)
  • Выходная привязка для SyncChain GHOST-CSC (не T-синхронизированной)

В нашей предыдущей статье мы обсуждали все три варианта. В этой статье мы покажем только TS SyncChain. Чтобы переместить токены обратно из учетной записи в RSK в Биткойн, создается транзакция RSK, называемая запросом выходной привязки, которая передает RBTC в промежуточный смарт-контракт. На следующем рисунке эта транзакция включена в блок с меткой A. После небольшого количества подтверждений блока RSK (например, 3) мост создает шаблон транзакции выходной ссылки, содержащий заполнители, куда функционеры федерации вставляют свои подписи. Этот шаблон может использовать стандарт частично подписанных биткойн-транзакций (PSBT). Затем мост запросит функционеров федерации подписать его, и это событие называется запросом выходной ссылки. Это происходит в блоке В RSK на рисунке. Транзакция выходной ссылки должна содержать специальный вывод данных, который содержит OP_RETURN, хэш блока для блока A и номер блока A. Мы называем эти данные полезными данными слота контрольной точки сайдчейна. Этот слот может содержать одну или несколько фактических контрольных точек сайдчейна. Мы отмечаем, что контрольные точки сайдчейна вместе с контрольными точками основного блокчейна создают взаимные ссылки контрольных точек.

Процесс выходной привязки

Как только большинство подписей функционеров для транзакции выходной ссылки будет собрано, транзакция транслируется и, как ожидается, вскоре включается в цепочку Биткойнов. На рисунке это происходит в Биткойн-блоке 4. Выходная транзакция должна быть частью цепочки локенов (она должна использовать локен и создавать новый локен).  После того как транзакция выходной ссылки включена в Биткойн-блок 4, на блок 4 должна сослаться контрольная точка блока RSK (или контрольная точка должна его пропустить, что вызывает тот же эффект). Контрольная точка для блока 4 обычно задерживается примерно на 30 минут. На рисунке блок 4 указан в блоке С RSK. После этого мост будет ожидать те же блоки (166 на рисунке). По истечении периода ожидания мост создаст шаблон транзакции выходной привязки и попросит функционеров федерации подписать его. Транзакция выходной привязки является последней транзакцией, которая фактически возвращает пользователю Биткойн необходимую сумму. Поскольку все остальные транзакции привязки и ссылки подписаны федерацией, она связывается в цепочку локен. Транзакция выходной привязки будет включена в блок Биткойнов; на рисунке это происходит в блоке 11. Примерно через 30 минут на него будет ссылаться контрольная точка RSK, и локен будет доступен для других транзакций входных и выходных ссылок. Весь процесс выходной привязки занимает в среднем 2 часа 10 минут, требует двух раундов подписей федерации и производит две Биткойн-транзакции. Если транзакция входной привязки подтверждена, в то время как транзакция, которая использует локен, ожидает включения в основной блокчейн, входная привязка будет поставлена в очередь. Фактически многие транзакции входной ссылки и выходной привязки могут быть объединены в пакет, имея один вход/выход создания и уничтожения локена.

Безопасность выходной привязки

В следующих разделах представлены некоторые теоретические атаки и показано, как SyncChain противостоит им. Наиболее важной атакой на любую систему, принимающую криптовалюту, является двойная трата. Чтобы попытаться осуществить атаку двойной траты, злоумышленник может попытаться вернуть RSK, Биткойн или оба. В настоящее время RSK добывают от 35 до 50% Биткойн-майнеров. В этой статье мы предполагаем, что хэшрейт RSK ниже, чем Биткойна, и поэтому, если злоумышленник аннулирует Биткойн из-за слитного майнинга, он также получит шанс аннулировать обе цепочки. 

Выходные привязки двойной траты только путем возврата RSK 

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

Консенсус Накамото устанавливает четкие правила для каждого аспекта обработки блокчейна, за исключением случаев, когда транзакция считается завершенной. Это оставлено на усмотрение каждого пользователя, а единственное руководство, которое дается, состоит в том, что чем больше подтверждений блока, тем меньше вероятность реверсирования. Чтобы гарантировать невозможность двойных расходов на выходную привязку, мы должны добавить к консенсусу Накамото в сайдчейне условие, которое должно быть выполнено для принятия транзакций. Сначала введем определение: Сетевой узел Т-синхронизирован, если его лучшая локальная цепочка отстает на T секунд от текущего местного времени. Для построения SyncChain нам нужно, чтобы сайдчейн удовлетворял следующему новому условию: узлы принимают транзакцию как выполненную, только если они T-синхронизированы. Мы также можем принять транзакцию W, если она подтверждается огромным количеством накопленных сложностей, но сейчас мы будем использовать самое простое из возможных определений. 

Из-за свойства T-синхронизации мы можем видеть, что любая атака, которая аннулирует сайдчейн, должна добавить по крайней мере один блок сайдчейна с временной меткой после временной метки блока C, где блок 4 является контрольной точкой.  Поэтому, пока время между блоком 4 и блоком C больше, чем T, цепочка злоумышленника (на сайдчейн) никогда не сможет подтвердить транзакции. Это предполагает, что местное время узла не было возвращено. 

Выходные привязки двойной траты путем возврата Биткойна и RSK (но повторное проигрывание выходной привязки tx)

Один из возможных способов выполнить атаку двойной траты состоит в том, чтобы попытаться вернуть Биткойн-блокчейн к точке, предшествующей транзакции выходной ссылки, и одновременно вернуть RSK Blockchain к точке, предшествующей запросу на выходную привязку, создав новую ветку Биткойнов, которая имеет как транзакции выходной ссылки, так и транзакции выходной привязки, но в гораздо более позднем блоке. Например, злоумышленник возвращает 10 блоков Биткойнов и добывает еще 10 блоков без транзакций привязки и, наконец, добавляет одиннадцатый блок, содержащий как выходную ссылку, так и выходную привязку. Нечестные рациональные майнеры могут выполнить разворот с 10 блоками, что приблизительно стоит 1,5 млн долларов США (1), и, следовательно, это будет максимальная сумма, которую может перевести транзакция выходной привязки. Но если мы хотим не безусловной безопасности, тогда мы должны добиться большего успеха с помощью анкоринга. С помощью анкоринга мы можем предотвратить перемещение транзакции на выходе в будущие блоки.

Фиксация выходной привязки

Самый простой способ привязать транзакцию к конкретному блоку — добавить в Биткойн новый код операции OP_CHECK_INPUT_BLOCK_HASH, который получает хэш блока в качестве аргумента в стеке и делает блок недействительным, если данный хэш блока не соответствует хэшу блока, в котором был создан потраченный ввод. Мы не верим, что этот новый код операции может быть принят Биткойн-сообществом, так как он может производить менее конвертируемые Биткойны. Альтернативный код операции, который может сделать то же самое, это OP_CHECK_INPUT_BLOCK_TIME. Этот код операции сделает недействительной транзакцию, если блок, соответствующий потраченному вводу, имеет временную метку выше, чем аргумент кода операции. Напротив, этот код операции изменяет гораздо меньшую конвертируемость. Тем не менее, без какого-либо нового кода операции все еще есть способ достичь того же результата, а именно потребляя в транзакциях выходных привязок выход из транзакции монетной базы, которая существует в блоке B между блоками транзакций выходных ссылок и выходных привязок. Транзакция выходной привязки была бы недействительной, если бы B был аннулирован, и единственный способ удалить выходную ссылку состоял бы в том, чтобы аннулировать B. Недостатком является то, что, поскольку выходные данные на основе исходной монетарной транзакции имеют период погашения в 100 блоков, эта привязка вводит задержку в 100 блоков для выходной привязки. Хотя транзакция выходной привязки не сможет быть включена до периода в 100 блоков, транзакция выходной привязки может быть подписана и опубликована намного раньше, и поэтому у пользователя есть очень надежная гарантия того, что транзакция выходной привязки произойдет. Чтобы связать выходную привязку с монетарной базой, RSK может потребовать, чтобы RSK-майнеры слитного майнинга включили дополнительный вывод, выплачивая сумму в 1 сатоши (2) на определенный адрес федерации, и чтобы сатоши потреблялись в транзакции выходной привязки.

(1)  по данным веб-сайта crypto51.app.

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

Процесс выходной привязки с анкорингом монетарной базы

Миграция RSK в SyncChain

Несмотря на то, что SyncChain предоставляет много преимуществ по сравнению с сайдчейном SPV, еще рано говорить, когда и как RSK может выполнить переход и стать SyncChain. Есть преимущества, но есть и миграционные риски. Кодирование, тестирование, моделирование и аудит безопасности должны подтверждать каждое проектное решение. Однако приятно иметь такой чистый дизайн, который обеспечивает множество преимуществ как в плане удобства использования, так и в плане безопасности. Как только все этапы R&D будут завершены, мы откроем дискуссию для миграции в SyncChain, и, надеюсь, благодаря отзывам сообщества RSK, мы можем увидеть миграцию в 2020 или 2021 году. 

Заключение

В этом посте мы представили SyncChain — новый тип сайдчейна, который позволяет в 32 раза сократить время входной привязки с 16 часов до 30 минут. Время выходной привязки также может быть сокращено с 16 часов до 1,6 часа, если мы сохраним ограничение скорости, чтобы в час передавалось не более 38 BTC. Мы также представили вариант, который использует анкоринг к монетарной базе для обеспечения безусловной безопасности выходной привязки, со временем выходной привязки 16 часов, что меньше, чем требуется в настоящее время RSK только с криптоэкономической безопасностью. Мы также предложили новый код операции OP_CHECK_INPUT_BLOCK_HASH для Биткойнов, который позволяет выполнять выходные привязки с безусловной безопасностью в течение нескольких часов и без ограничения скорости. 

Даже если текущая привязка RSK SPV также может обеспечить более низкие подтверждения блоков выходной и входной привязок, если увеличилось количество операций по слитному майнингу, то SyncChain предлагает меньшее количество подтверждений для того же уровня взаимодействия. 

Синхронизированная цепочка также обеспечивает другие вторичные преимущества: 

  1. Она уменьшает количество кода, который RSK выполняет в консенсусе в rskj: некоторые функции этого кода теперь предоставляет непосредственно bitcoind. 
  2. В зависимости от выбранного протокола, она обеспечивает безусловную безопасность или вынуждает атаку на RSK превращаться в атаку на Биткойн: M.A.D. свойство в теории игр.
  3. Это позволяет использовать перекрестные входные привязки, такие как инвестирование в краудфонд напрямую из Биткойна

 

У SyncChain также есть некоторые минусы. Например, SyncChain не может обеспечить окончательный расчет. Учитывая все плюсы и минусы, SyncChain, безусловно, является лучшим протоколом для Биткойн-сайдчейнов.

Ссылки

[1] Рен Чжан и Барт Пренель. Опубликовать или погибнуть: Обратная совместимая защита от эгоистичного майнинга в биткойнах. В Cryptographers’ Track на конференции RSA, стр. 277–292. Springer, 2017

[2] Предложение по изменению консенсуса Сатоши для усиления защиты от 51% атак. Система штрафов за задержку подачи блоков.

https://www.horizen.global/assets/files/A-Penalty-System-for-Delayed-Block-Submission-by-Horizen.pdf

[3] Задержка реорганизации цепочки.

 https://bitslog.com/2013/06/26/the-bitcoin-eternal-choice-for-the-dark-side-attack-ecdsa/

[4] Завершение транзакции через контрольные точки книги учета (https://ieeexplore.ieee.org/document/8975825 или https://github.com/MuhammadNurYanhaona/checkpoint-paper/blob/master/checkpoint-paper-reviewed.pdf)

[5] Защита книг учета доказательства работы с помощью контрольных точек (https://eprint.iacr.org/2020/173.pdf)