Межсетевая проверка транзакций

Проблема

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

Предложенное решение

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

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

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

Терминология

Программа SPV — клиентский интерфейс для межсетевой системы SPV, управляет ролями участников. SPV Engine — проверяет доказательства транзакций, подмножество программы SPV. Клиент — вызывающий абонент программы SPV, как правило, другой контракт solana. Доказывающая сторона — Сторона, которая создает доказательства для транзакций и представляет их в Программу SPV. Доказательство транзакции — создано Provers, содержит доказательство Меркла, транзакцию и ссылку на блок-заголовок. Merkle Proof — базовое доказательство SPV, подтверждающее наличие транзакции в определенном блоке. Заголовок блока — представляет основные параметры и относительное положение данного блока. Доказательный запрос - Заказ, размещенный клиентом для проверки транзакции(ей) доказывающими. Хранилище заголовков — структура данных для хранения и ссылок на диапазоны заголовков блоков в доказательствах. Запрос клиента — транзакция от клиента к Программе SPV для инициирования создания запроса подтверждения. Дочерняя учетная запись — учетная запись Solana, принадлежащая другой учетной записи контракта, без собственного закрытого ключа.

Услуга

Программы SPV работают как контракты, развернутые в сети Solana, и поддерживают тип общедоступной торговой площадки для доказательств SPV, которая позволяет любой стороне отправлять как запросы на доказательства, так и сами доказательства для проверки в ответ на запросы. В любой момент времени будет активным несколько экземпляров программы SPV, по крайней мере один для каждой подключенной внешней сети и, возможно, несколько экземпляров для каждой сети. Экземпляры программы SPV будут относительно согласованными в своем высокоуровневом API и наборах функций с некоторыми различиями между валютными платформами (биткойн, лайткойн) и платформами смарт-контрактов из-за возможности проверки изменений состояния сети помимо простых транзакций. В любом случае, независимо от сети, программа SPV полагается на внутренний компонент, называемый механизмом SPV, для обеспечения проверки без сохранения состояния фактических доказательств SPV, на основе которых построены функции и API более высокого уровня, ориентированные на клиента. Движок SPV требует конкретной сетевой реализации, но позволяет легко расширить более крупную межсетевую экосистему любой командой, которая решит выполнить эту реализацию и поместить ее в стандартную программу SPV для развертывания.

Для целей запроса подтверждения запрашивающая сторона называется клиентом программы, который в большинстве, если не во всех случаях, будет другим контрактом Solana. Клиент может отправить запрос, относящийся к конкретной транзакции, или включить более широкий фильтр, который может применяться к любому из диапазона параметров транзакции, включая ее входы, выходы и сумму. Например, клиент может отправить запрос на любую транзакцию, отправленную с заданного адреса A на адрес B, с суммой X через определенное время. Эта структура может использоваться в ряде приложений, таких как проверка конкретного предполагаемого платежа в случае атомарного свопа или обнаружение движения залоговых активов для кредита.

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

Выполнение

Механизм Solana Inter-chain SPV состоит из следующих компонентов и участников:

Двигатель СПВ

Контракт, развернутый на Солане, который без сохранения состояния проверяет доказательства SPV для вызывающего абонента. Он принимает в качестве аргументов для проверки:

Программа SPV

Контракт, развернутый на Solana, который координирует и выступает посредником во взаимодействии между клиентами и доказывающими, а также управляет проверкой запросов, заголовков, доказательств и т. д. Это основная точка доступа для клиентских контрактов для доступа к межцепочке. Механизм СПВ. Он предлагает следующие основные функции:

Запрос подтверждения

Сообщение, отправляемое Клиентом механизму SPV, обозначающее запрос на подтверждение конкретной транзакции или набора транзакций. Proof Requests может либо вручную указать определенную транзакцию по ее хэшу, либо выбрать отправку фильтра, который соответствует нескольким транзакциям или классам транзакций. Например, фильтр, соответствующий «любой транзакции с адреса xxx по адресу yyy», может использоваться для обнаружения выплаты долга или расчета по межсетевому свопу. Аналогичным образом фильтр, соответствующий «любой транзакции с адреса xxx», может использоваться договором о кредитовании или выпуске синтетических токенов для отслеживания и реагирования на изменения в обеспечении. Запросы подтверждения отправляются с оплатой, которая выплачивается контрактом на механизм SPV соответствующему Проверщику после проверки подтверждения, соответствующего этому запросу.

Запросить книгу

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

Доказательство

Доказательство наличия данной транзакции в рассматриваемой цепочке блоков. Доказательства охватывают как фактическое доказательство Меркла, так и ссылки(s) на цепочку действительных последовательных заголовков блоков. Они составляются и представляются испытателями в соответствии со спецификациями общедоступных запросов на подтверждение, размещенных в книге запросов программой SPV. После проверки они сохраняются в данных учетной записи соответствующего запроса подтверждения, которые могут использоваться Клиентом для отслеживания состояния запроса.

Клиент

Инициатор запроса на подтверждение транзакции. Клиентами чаще всего являются другие контракты в составе приложений или конкретных финансовых продуктов, таких как кредиты, свопы, условное депонирование и т. д. Клиент в любом заданном цикле процесса проверки первоначально отправляет ClientRequest, который сообщает параметры и комиссию, и в случае успешной проверки приводит к создание учетной записи Proof Request программой SPV. Клиент также может отправить CancelRequest со ссылкой на активный запрос подтверждения, чтобы обозначить его как недействительный для целей предоставления подтверждения.

Доказательство

Податель доказательства, который заполняет запрос доказательства. Доказывающие отслеживают книгу запросов программы SPV на наличие невыполненных запросов на подтверждение и генерируют соответствующие доказательства, которые они отправляют в программу SPV для проверки. Если доказательство принято, плата, связанная с рассматриваемым Запросом на подтверждение, выплачивается Доказывающему. Доказывающие обычно работают как узлы Solana Blockstreamer, которые также имеют доступ к узлу Биткойн, который они используют для создания доказательств и доступа к заголовкам блоков.

Хранилище заголовков

Структура данных на основе учетной записи, используемая для поддержки заголовков блоков с целью включения в представленные доказательства путем ссылки на учетную запись хранилища заголовков. хранилища заголовков могут поддерживаться независимыми объектами, поскольку проверка цепочки заголовков является компонентом механизма проверки проверки программы SPV. Сборы, выплачиваемые Proof Requests Provers, распределяются между отправителем самого доказательства merkle и хранилищем заголовков, на которое ссылается представленное доказательство. Из-за текущей невозможности увеличить уже выделенную емкость данных учетной записи, вариант использования требует структуры данных, которая может неограниченно расти без повторной балансировки. Суб-аккаунты — это аккаунты, принадлежащие программе SPV, без собственных закрытых ключей, которые используются для хранения путем выделения блокировщиков для данных их аккаунтов. Возможны несколько потенциальных подходов к реализации системы хранения заголовков:

Хранить заголовки в субаккаунтах программы, проиндексированных по публичному адресу:

Связанный список нескольких субаккаунтов, хранящих заголовки: