Midnight планирует вызовы смарт контрактов в рамках одной транзакции
Грядущее обновление позволит разработчикам соединять многократно используемые функции контрактов. Дорожная карта сети указывает приватную компонуемость на первый квартал 2027 года.
By SongMarketCap
Updated:
Midnight объявила о предстоящем обновлении, которое позволит смарт контрактам вызывать друг друга в пределах одной и той же транзакции. Планируемая функция, называемая исполнением из контракта в контракт, даст разработчикам еще один способ сочетать функции в приложениях, построенных на ориентированной на конфиденциальность сети.
Midnight ожидает, что изменение поможет создателям расширять имеющиеся возможности контрактов и переиспользовать компоненты при создании более сложных контрактов. В объявлении не указана дата активации.
Как контракты Midnight будут работать вместе
Смарт контракт содержит код, который определяет операции, которые приложение может выполнять. С планируемой функцией один контракт сможет вызвать функцию в другом и использовать результат как часть транзакции.
Способность сочетать отдельные компоненты называется компонуемостью. Разработчик может спроектировать приложение, в котором один контракт проверяет условие, а другой использует результат для выполнения операции. Это иллюстрирует возможный вариант проектирования приложения, а не продукт, анонсированный Midnight.
Документация Midnight по Compact включает более простой пример: функция удваивает переданное число и передает результат функции в другом контракте. Этот пример показывает, как один контракт может вызвать операцию, определенную другим, и предоставить ей необходимую информацию.
Сеть также проверяет, что вызовы, заявленные контрактом, соответствуют вызовам, включенным в транзакцию. Вызывающий контракт указывает ожидаемую цель, точку входа и криптографический коммитмент, связанный с входными и выходными данными вызова. Чтобы транзакция удовлетворяла соответствующему условию валидности, каждый заявленный вызов должен соответствовать ровно одному вызову в том же сегменте транзакции.
Ledger 9 и инструменты разработки Compact
Вызовы между контрактами требуют Ledger 9 и совместимую версию набора инструментов Compact, набора средств, используемых для компиляции контрактов Midnight. В документации указано, что наборы инструментов, нацеленные на Ledger 8, отклоняют такие вызовы на этапе компиляции.
Согласно последнему обновлению документации, сети Midnight Preview, Preprod и Mainnet работают на Ledger 8. Следовательно, контракты с использованием новых вызовов пока не могут быть развернуты в этих публичных сетях. Набор инструментов Compact версии 0.35.0 нацелен на Ledger 9 и включает изменения в интерфейс рантайма для вызовов между контрактами.
Текущая справка по Compact также описывает ограничения на то, как контракты могут вызывать друг друга. Циклическая последовательность, например контракт A вызывает контракт B, а B снова вызывает A, завершается неудачей во время выполнения. В документации это обозначено как текущее ограничение реестра.
Midnight выпустила Ledger 9.1.0.0 для следующего хард форка сети. Выпуск программного обеспечения и инструменты, нацеленные на него, отделены от активации соответствующих возможностей в сети.
[NEWSBREAK]
Конфиденциальность и дорожная карта для компонуемости
Midnight использует доказательства с нулевым разглашением, чтобы поддерживать приложения, которые проверяют условия без раскрытия всей исходной информации. Ее контракты могут включать публичное состояние, записанное в реестре, а также приватное состояние, хранимое на устройстве пользователя.
Дизайн контракта определяет, какая информация становится видимой. Справка по Compact для Midnight отмечает, что вызов между контрактами раскрывает адрес вызываемого контракта и требует от разработчиков учитывать раскрытие при передаче аргументов между контрактами. Связанное приложение таким образом может включать как публичную информацию, так и приватные данные, обрабатываемые вне публичного реестра.
Дорожная карта Midnight включает Private Composability на первый квартал 2027 года. Проект описывает цель как обеспечение возможности контрактам вызывать друг друга при сохранении конфиденциальности их данных, что позволит разработчикам объединять приватные приложения в более крупные продукты.