Гостевой пост Барбары Лиау, Джеймса Прествича и Коннера Суонна

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

Аутентификация против авторизации

К сожалению, криптография не очень выразительна. Он может обрабатывать аутентификацию, но не предоставляет много инструментов для детальной авторизации. В Ethereum много исследований и дискуссий было посвящено более сложной авторизации доступа к внешним учетным записям (EOA). Абстракция учетной записи направлена ​​на то, чтобы позволить пользователям устанавливать произвольные программы, которые контролируют доступ к их учетной записи, чтобы токены в учетной записи могли перемещаться кем угодно, если движение следует определенным правилам. Более новые разработки, такие как EIP-3074, обеспечивают многие преимущества абстракции учетных записей при гораздо меньших затратах на сложность.

Список контроля доступа

Инструменты контроля доступа к ресурсам блокчейна обычно стандартизированы на границе между доменом сети и остальным миром. Наиболее сложные доступные схемы авторизации состоят из скромного списка контроля доступа (ACL) — доступ к ресурсу (например, функция монетного двора в смарт-контракте ERC-20) ограничен определенными внешними учетными записями. Однако сообщения в домене цепочки также нуждаются в аутентификации и строгой авторизации.

Даже самые простые смарт-контракты Ethereum имеют одну и ту же точку напряжения: доступ к их возможностям контролируется списками адресов. Контракты токенов предоставляют контроль над балансом его владельцу. Контракты децентрализованной биржи (DEX) должны убедиться, что они получили ценность, прежде чем отдавать ее. В то время как виртуальная машина Ethereum (EVM) обрабатывает внутреннюю аутентификацию (каждое сообщение содержит адрес отправителя в поле msg.sender), у нее нет стандартного шаблона для проверки авторизации. Каждому разработчику смарт-контрактов необходимо создать собственную систему списков доступа для отслеживания разрешений на определенные вещи. Неправильно реализованные системы аутентификации лежат в основе ряда сложных ошибок DeFi и нанесли ущерб на миллионы долларов.

Фатальный недостаток свойственен любой системе, в основе которой лежат списки ACL. Процитируем отличный пост в блоге Что такое возможности? Чипа Морнингстара:

Когда вы запускаете приложение, с точки зрения ОС, все, что делает приложение, делается вами. Другими словами, запускаемое вами приложение может делать все то же, что и вы.

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

OCAP, ERTP и Zoe

Блокчейн Agoric использует OCAP в основе своего протокола электронной передачи прав (ERTP) (стандарт токенов Agoric для цифровых активов). Подобно ERC-20 и ERC-721, ERTP — это стандарт, реализующий API для создания цифровых активов. В отличие от ERC-20 и ERC-721, ERTP написан на знакомом языке JavaScript и использует некоторые языковые функции JavaScript для обеспечения более детальной авторизации. Вместо контракта, содержащего список адресов, ERTP использует OCAP для обеспечения контроля доступа и действует по основному правилу:

«Если в вашей программе есть ссылка на объект, она может вызывать методы этого объекта. Если у него нет ссылки, он не может."

Другими словами, если у вас нет доступа к фактическому объекту, вы не можете его использовать. Простое знание имени переменной или общедоступного класса не дает вам ссылки на объект. Вы можете получить его, только если вы 1) создадите его, 2) создадите его или 3) познакомитесь с ним.

Если вы знакомы с JavaScript, эту идею доступа по ссылке можно проиллюстрировать концепцией замыканий. Замыкание — это комбинация функции, связанной вместе (вложенной) со ссылками на окружающее ее состояние( лексическое окружение). [ «МДН]

Даже после выполнения функции она может содержать ссылку на свою внешнюю область видимости. Используя замыкания, разработчики могут создавать частные методы и данные, которые доступны только в том случае, если у вас есть ссылка на объект. Это означает, что сторонние лица не могут получить к нему доступ, даже если они его видят. Эта концепция авторизации по ссылке значительно упрощает написание безопасных контрактов. (Одно предостережение здесь заключается в том, что смарт-контракты с использованием ERTP должны выполняться в безопасном подмножестве JavaScript, поскольку некоторые языковые функции в JavaScript делают его менее безопасным для написания смарт-контрактов).

Чтобы помочь разработчикам писать смарт-контракты с использованием OCAP и ERTP, Agoric также разработала структуру смарт-контрактов, известную как Zoe. Контракты Zoe написаны на безопасном подмножестве JavaScript и автоматически депонируют все цифровые активы пользователей и обрабатывают их последующую выплату. Это означает, что даже ошибочный контракт не приведет к потере пользователями своих активов.

Сложность часто может привести к непреднамеренным и дорогостоящим ошибкам. Возможность писать смарт-контракты на известном языке, который существует уже несколько десятилетий, может помочь уменьшить количество этих ошибок. Используя возможности OCAP в JavaScript, Agoric может предоставить разработчикам более точную авторизацию и помогает решать проблемы доступа в огороженных садах.

Первоначально опубликовано на https://agoric.com 27 мая 2021 г.