Что, если бы Вы теряли память каждый час? И Вам нужно постоянно просить кого-то рассказать Вам, что Вы сделали? Таково текущее состояние смарт-контрактов. На таких блокчейнах, как Ethereum, смарт-контракты не могут напрямую обращаться к состояниям, выходящим за пределы 256 блоков. Эта проблема еще более усугубляется в многоцепочечной экосистеме, где поиск и проверка данных на разных уровнях исполнения еще более затруднены.
В 2020 году Виталик Бутерин и Томаш Станчак предложили способ доступа к данным во времени. Несмотря на то, что EIP застоялся, его необходимость вновь возникла в мире мультицепочек, ориентированных на рулоны. Сегодня доказательства хранения появились как передовой рубеж, чтобы придать смарт-контрактам осознанность и память.
Существует несколько способов, с помощью которых dapps могут получить доступ к данным и состоянию. Все эти подходы требуют от приложения доверия к людям/существам, криптоэкономической безопасности или коду и имеют определенные компромиссы:
Учитывая проблемы и ограничения этих решений, существует очевидная необходимость хранить и предоставлять хэши блоков на цепочке. Именно здесь на помощь приходят доказательства хранения. Чтобы лучше понять доказательства хранения, давайте вкратце рассмотрим хранение данных в блокчейн.
Блокчейн - это публичная база данных, которая обновляется и распространяется по многим компьютерам в сети. Данные и состояние хранятся в последовательных группах, называемых блоками, и каждый блок криптографически ссылается на своего родителя, сохраняя хэш заголовка предыдущего блока.
В качестве примера возьмем блок Ethereum. В Ethereum используется особый тип дерева Меркле, известный как "дерево Меркле-Патриция" (MPT). Заголовки блоков Ethereum содержат корни четырех различных попыток Меркла-Патриция, т.е. Тройка состояний, тройка хранения, тройка поступлений и тройка транзакций. Эти 4 попытки кодируют отображения, из которых состоят все данные Ethereum. Деревья Меркле используются благодаря своей эффективности при хранении данных. При использовании рекурсивных хэшей в конечном итоге нужно хранить только корневой хэш, что позволяет сэкономить много места. Они позволяют любому доказать существование элемента в дереве, доказав, что рекурсивное хэширование узлов приводит к одному и тому же корневому хэшу. Доказательства Меркла позволяют легким клиентам на Ethereum получать ответы на такие вопросы, как:
Вместо того чтобы загружать каждую транзакцию и каждый блок, "легкий клиент" может загружать только цепочку заголовков блоков и проверять информацию с помощью доказательств Меркла. Это делает весь процесс высокоэффективным. Обратитесь к этому блогу Виталика и исследовательской статье Maven11, чтобы лучше понять реализацию, преимущества и проблемы, связанные с Merkle Trees.
Доказательства хранения позволяют нам доказать, что что-то зафиксировано в базе данных и является действительным, используя криптографические обязательства. Если мы можем предоставить такое доказательство, то это проверяемое утверждение, что что-то произошло в блокчейне.
Доказательства хранения позволяют выполнять две основные функции:
Доказательства хранения на очень высоком уровне проверяют, является ли конкретный блок частью канонической истории блокчейна, а затем проверяют, являются ли конкретные запрашиваемые данные частью этого блока. Этого можно достичь с помощью:
Некоторые из проектов, использующих этот подход, - Herodotus, Lagrange, Axiom, Hyper Oracle, Brevis Network и nil foundation. В то время как прилагаются значительные усилия для того, чтобы сделать приложения с поддержкой состояния в нескольких блокчейнах, IBC (Inter Blockchain Communication) выделяется как стандарт совместимости, который позволяет использовать такие приложения, как ICQ (Interchain queries) и ICA (Interchain accounts). ICQ позволяет приложениям на цепочке A запрашивать состояние цепочки B, включив запрос в простой пакет IBC, а ICA позволяет одному блокчейну безопасно контролировать учетную запись на другом блокчейне. Комбинируя их, можно создавать интересные сценарии использования цепочки. RaaS-провайдеры, такие как Saga, предлагают эти функции всем своим цепочкам приложений по умолчанию, используя IBC.
Существует множество способов оптимизации доказательств для хранения данных, чтобы найти правильный баланс между потреблением памяти, временем доказательства, временем проверки, эффективностью вычислений и опытом разработчиков. Общий процесс можно условно разделить на 3 основных подпроцесса.
Доступ к данным: В этом подпроцессе поставщик услуг получает доступ к заголовкам блоков исходной цепочки на уровне исполнения или через ведение кэша на цепочке. Для доступа к данным по цепочкам требуется проверка консенсуса исходной цепочки с целевой цепочкой. Некоторые из применяемых подходов и оптимизаций включают:
Наряду с доступом к данным, смарт-контракты должны иметь возможность выполнять произвольные вычисления поверх данных. Хотя для некоторых случаев использования вычисления могут и не потребоваться, они являются важной дополнительной услугой для многих других случаев использования. Многие поставщики услуг позволяют производить вычисления на данных, поскольку zk-доказательство вычислений может быть сгенерировано и предоставлено на цепочке для проверки достоверности. Поскольку существующие решения AMP, такие как Axelar, LayerZero, Polyhedra Network, потенциально могут быть использованы для доступа к данным, обработка данных может стать отличительным фактором для поставщиков услуг хранения данных.
Hyper Oracle, например, позволяет разработчикам определять пользовательские вычисления вне цепочки с помощью JavaScript. Компания Brevis разработала открытый рынок ZK Query Engines, который принимает запросы данных от dApps и обрабатывает их, используя подтвержденные заголовки блоков. Смарт-контракт отправляет запрос на данные, который подхватывается проверяющим с рынка. Доказательство генерируется на основе входных данных запроса, заголовков соответствующих блоков (из агрегирующего слоя Brevis) и результатов. Компания Lagrange представила ZK Big Data Stack для подтверждения моделей распределенного программирования, таких как SQL, MapReduce и Spark/RDD. Доказательства являются модульными и могут быть сгенерированы из любого заголовка блока, исходящего от существующих межцепочечных мостов и протоколов AMP. ZK MapReduce, первый продукт в стеке Lagrange ZK BigData, представляет собой механизм распределенных вычислений (основанный на известной модели программирования MapReduce) для доказательства результатов вычислений с использованием больших наборов многоцепочечных данных. Например, одно доказательство ZKMR может быть использовано для подтверждения изменений в ликвидности DEX, развернутого на 4-5 цепочках, за определенный промежуток времени. Для относительно простых запросов вычисления также могут выполняться непосредственно на цепи, как это делает Herodotus в настоящее время.
Доказательства состояния и хранения могут открыть множество новых вариантов использования смарт-контрактов на уровне приложений, промежуточного программного обеспечения и инфраструктуры. Вот некоторые из них:
Управление:
Все вышеперечисленные доказательства могут быть использованы для предоставления пользователям индивидуального опыта. Dapps могут предлагать скидки или привилегии, чтобы удержать опытных трейдеров или пользователей, и предлагать упрощенный пользовательский опыт для новичков.
Последние два варианта использования потребуют обновления доказательства каждый раз, когда в исходную цепочку добавляется новый блок.
Осведомленность дает технологическим компаниям возможность лучше обслуживать своих клиентов. От личности пользователя до покупательского поведения и социальных графов - технологические компании используют осведомленность для раскрытия таких возможностей, как точный таргетинг, сегментация покупателей и вирусный маркетинг. Традиционные технологические компании нуждаются в явном разрешении своих пользователей и должны быть осторожны при управлении пользовательскими данными. Однако все пользовательские данные в блокчейн без права доступа являются общедоступными без обязательного раскрытия личности пользователя. Умные контракты должны уметь использовать общедоступные данные, чтобы лучше обслуживать пользователей. Развитие и внедрение более специализированных экосистем сделает осознание состояния во времени и блокчейн все более важной проблемой, требующей решения. Доказательства хранения могут позволить Ethereum стать уровнем идентификации и владения активами, а также уровнем расчетов. Пользователи могли бы хранить свою личность и ключевые активы в Ethereum, которые можно было бы использовать в нескольких блокчейнах, не соединяя активы постоянно. Мы не перестаем радоваться новым возможностям и сценариям использования, которые откроются в будущем.
Что, если бы Вы теряли память каждый час? И Вам нужно постоянно просить кого-то рассказать Вам, что Вы сделали? Таково текущее состояние смарт-контрактов. На таких блокчейнах, как Ethereum, смарт-контракты не могут напрямую обращаться к состояниям, выходящим за пределы 256 блоков. Эта проблема еще более усугубляется в многоцепочечной экосистеме, где поиск и проверка данных на разных уровнях исполнения еще более затруднены.
В 2020 году Виталик Бутерин и Томаш Станчак предложили способ доступа к данным во времени. Несмотря на то, что EIP застоялся, его необходимость вновь возникла в мире мультицепочек, ориентированных на рулоны. Сегодня доказательства хранения появились как передовой рубеж, чтобы придать смарт-контрактам осознанность и память.
Существует несколько способов, с помощью которых dapps могут получить доступ к данным и состоянию. Все эти подходы требуют от приложения доверия к людям/существам, криптоэкономической безопасности или коду и имеют определенные компромиссы:
Учитывая проблемы и ограничения этих решений, существует очевидная необходимость хранить и предоставлять хэши блоков на цепочке. Именно здесь на помощь приходят доказательства хранения. Чтобы лучше понять доказательства хранения, давайте вкратце рассмотрим хранение данных в блокчейн.
Блокчейн - это публичная база данных, которая обновляется и распространяется по многим компьютерам в сети. Данные и состояние хранятся в последовательных группах, называемых блоками, и каждый блок криптографически ссылается на своего родителя, сохраняя хэш заголовка предыдущего блока.
В качестве примера возьмем блок Ethereum. В Ethereum используется особый тип дерева Меркле, известный как "дерево Меркле-Патриция" (MPT). Заголовки блоков Ethereum содержат корни четырех различных попыток Меркла-Патриция, т.е. Тройка состояний, тройка хранения, тройка поступлений и тройка транзакций. Эти 4 попытки кодируют отображения, из которых состоят все данные Ethereum. Деревья Меркле используются благодаря своей эффективности при хранении данных. При использовании рекурсивных хэшей в конечном итоге нужно хранить только корневой хэш, что позволяет сэкономить много места. Они позволяют любому доказать существование элемента в дереве, доказав, что рекурсивное хэширование узлов приводит к одному и тому же корневому хэшу. Доказательства Меркла позволяют легким клиентам на Ethereum получать ответы на такие вопросы, как:
Вместо того чтобы загружать каждую транзакцию и каждый блок, "легкий клиент" может загружать только цепочку заголовков блоков и проверять информацию с помощью доказательств Меркла. Это делает весь процесс высокоэффективным. Обратитесь к этому блогу Виталика и исследовательской статье Maven11, чтобы лучше понять реализацию, преимущества и проблемы, связанные с Merkle Trees.
Доказательства хранения позволяют нам доказать, что что-то зафиксировано в базе данных и является действительным, используя криптографические обязательства. Если мы можем предоставить такое доказательство, то это проверяемое утверждение, что что-то произошло в блокчейне.
Доказательства хранения позволяют выполнять две основные функции:
Доказательства хранения на очень высоком уровне проверяют, является ли конкретный блок частью канонической истории блокчейна, а затем проверяют, являются ли конкретные запрашиваемые данные частью этого блока. Этого можно достичь с помощью:
Некоторые из проектов, использующих этот подход, - Herodotus, Lagrange, Axiom, Hyper Oracle, Brevis Network и nil foundation. В то время как прилагаются значительные усилия для того, чтобы сделать приложения с поддержкой состояния в нескольких блокчейнах, IBC (Inter Blockchain Communication) выделяется как стандарт совместимости, который позволяет использовать такие приложения, как ICQ (Interchain queries) и ICA (Interchain accounts). ICQ позволяет приложениям на цепочке A запрашивать состояние цепочки B, включив запрос в простой пакет IBC, а ICA позволяет одному блокчейну безопасно контролировать учетную запись на другом блокчейне. Комбинируя их, можно создавать интересные сценарии использования цепочки. RaaS-провайдеры, такие как Saga, предлагают эти функции всем своим цепочкам приложений по умолчанию, используя IBC.
Существует множество способов оптимизации доказательств для хранения данных, чтобы найти правильный баланс между потреблением памяти, временем доказательства, временем проверки, эффективностью вычислений и опытом разработчиков. Общий процесс можно условно разделить на 3 основных подпроцесса.
Доступ к данным: В этом подпроцессе поставщик услуг получает доступ к заголовкам блоков исходной цепочки на уровне исполнения или через ведение кэша на цепочке. Для доступа к данным по цепочкам требуется проверка консенсуса исходной цепочки с целевой цепочкой. Некоторые из применяемых подходов и оптимизаций включают:
Наряду с доступом к данным, смарт-контракты должны иметь возможность выполнять произвольные вычисления поверх данных. Хотя для некоторых случаев использования вычисления могут и не потребоваться, они являются важной дополнительной услугой для многих других случаев использования. Многие поставщики услуг позволяют производить вычисления на данных, поскольку zk-доказательство вычислений может быть сгенерировано и предоставлено на цепочке для проверки достоверности. Поскольку существующие решения AMP, такие как Axelar, LayerZero, Polyhedra Network, потенциально могут быть использованы для доступа к данным, обработка данных может стать отличительным фактором для поставщиков услуг хранения данных.
Hyper Oracle, например, позволяет разработчикам определять пользовательские вычисления вне цепочки с помощью JavaScript. Компания Brevis разработала открытый рынок ZK Query Engines, который принимает запросы данных от dApps и обрабатывает их, используя подтвержденные заголовки блоков. Смарт-контракт отправляет запрос на данные, который подхватывается проверяющим с рынка. Доказательство генерируется на основе входных данных запроса, заголовков соответствующих блоков (из агрегирующего слоя Brevis) и результатов. Компания Lagrange представила ZK Big Data Stack для подтверждения моделей распределенного программирования, таких как SQL, MapReduce и Spark/RDD. Доказательства являются модульными и могут быть сгенерированы из любого заголовка блока, исходящего от существующих межцепочечных мостов и протоколов AMP. ZK MapReduce, первый продукт в стеке Lagrange ZK BigData, представляет собой механизм распределенных вычислений (основанный на известной модели программирования MapReduce) для доказательства результатов вычислений с использованием больших наборов многоцепочечных данных. Например, одно доказательство ZKMR может быть использовано для подтверждения изменений в ликвидности DEX, развернутого на 4-5 цепочках, за определенный промежуток времени. Для относительно простых запросов вычисления также могут выполняться непосредственно на цепи, как это делает Herodotus в настоящее время.
Доказательства состояния и хранения могут открыть множество новых вариантов использования смарт-контрактов на уровне приложений, промежуточного программного обеспечения и инфраструктуры. Вот некоторые из них:
Управление:
Все вышеперечисленные доказательства могут быть использованы для предоставления пользователям индивидуального опыта. Dapps могут предлагать скидки или привилегии, чтобы удержать опытных трейдеров или пользователей, и предлагать упрощенный пользовательский опыт для новичков.
Последние два варианта использования потребуют обновления доказательства каждый раз, когда в исходную цепочку добавляется новый блок.
Осведомленность дает технологическим компаниям возможность лучше обслуживать своих клиентов. От личности пользователя до покупательского поведения и социальных графов - технологические компании используют осведомленность для раскрытия таких возможностей, как точный таргетинг, сегментация покупателей и вирусный маркетинг. Традиционные технологические компании нуждаются в явном разрешении своих пользователей и должны быть осторожны при управлении пользовательскими данными. Однако все пользовательские данные в блокчейн без права доступа являются общедоступными без обязательного раскрытия личности пользователя. Умные контракты должны уметь использовать общедоступные данные, чтобы лучше обслуживать пользователей. Развитие и внедрение более специализированных экосистем сделает осознание состояния во времени и блокчейн все более важной проблемой, требующей решения. Доказательства хранения могут позволить Ethereum стать уровнем идентификации и владения активами, а также уровнем расчетов. Пользователи могли бы хранить свою личность и ключевые активы в Ethereum, которые можно было бы использовать в нескольких блокчейнах, не соединяя активы постоянно. Мы не перестаем радоваться новым возможностям и сценариям использования, которые откроются в будущем.