January 17

Starport Kernel Framework для протоколов кредитования

Перевод

Это вольный перевод: arhat.mirror.xyz/q0dVeibFDQ4jzckisHqJgAvPemgVBHz50OdKLG0qdBY

Введение

Ссылка на WP: github.com/AstariaXYZ/starport-whitepaper/blob/master/starport-whitepaper.pdf.

Сегодня я ознакомился с техническим описанием Starport, кредитного ядра, созданного и разработанного Astaria.

Мне очень понравилось его читать. В основном потому, что в нём рассматривается одна ключевая проблема DeFi, которая, уверен, не даёт покоя многим из нас: обратная совместимость.

На сегодняшний день это является основной проблемой многих протоколов DeFi.

Под обратной совместимостью понимается то, продолжают ли смарт-контракты работать так, как задумано, после обновления или изменения. Например, если популярный кредитный протокол выпустит LoanContract V2, перестанут ли существующие заёмщики V1? [Ответов несколько может быть]:

  • перестанут получать выплаты, или
  • не смогут предоставить залог, или
  • просто будут ограничены устаревшей средой?

Затрону все эти вопросы позже в статье, но сначала давайте подробно рассмотрим Starport.

Starport разработан как основа для обеспечения исполнения кредитных договоров.

В техническом описании Starport представлен кредитный фреймворк для создания специализированных кредитных протоколов на Ethereum.

По своей сути Starport состоит из двух ключевых компонентов:

  • Контракт Starport выступает в качестве основной точки входа для выдачи новых и рефинансирования существующих кредитов. Его ключевой задачей является обеспечение соблюдения соглашений и правил, связанных с выдачей или рефинансированием займа. Он также поддерживает запись текущего состояния любого займа, представляя критические данные займа в структуре Loan, хэшируя эту структуру в уникальный идентификатор займа и сохраняя хэш ончейн. Этот "loanID" затем используется как хэндл для ссылки на заём в будущих транзакциях.
  • Контракт Custodian - точка входа для погашения или расчёта/ликвидации займа. В его обязанности входит хранение залоговых активов заемщика, а также обеспечение соблюдения условий погашения или урегулирования займа, определенных соответствующими модулями ценообразования и расчетов (см. ниже). Хранитель может быть настроен заёмщиками и кредиторами, но Starport предоставит стандартную газосберегающую реализацию.

В техническом описании отмечается, что команда выпустит контракт Custodian по умолчанию, оптимизированный для экономии газа. Это важное решение по двум ключевым причинам.

Во-первых, наличие готовой реализации Custodian может значительно снизить барьеры для начала создания кредитных протоколов на Starport. Команды разработчиков могут просто интегрироваться с Custodian по умолчанию, а не создавать собственную логику управления залогом и ликвидации с нуля. Ускоренное время выхода на рынок очень привлекательно!

Основная команда Starport может обеспечить оптимизацию этого контракта по умолчанию на уровне кода Solidity для минимального потребления газа за счёт продуманных моделей хранения данных и минимизации внешних вызовов. Учитывая, что цены на газ являются заклятым врагом многих пользователей DeFi, повышение эффективности ключевых транзакций, таких как расчёты и погашение, имеет большое значение.

Подозреваю, что со временем этот “производительный дефолт” станет конкурентным эталоном по мере того, как более продвинутые команды будут публиковать собственные варианты Custodian. Конечный результат - снижение расходов на газ для

конечных пользователей.

В дополнение к этим основным компонентам Starport использует модульную архитектуру, состоящую из трёх ключевых модулей:

  1. Модуль Pricing определяет конкретные условия погашения кредита или рефинансирования существующего кредита. Например, в нём можно указать процентную ставку и график погашения. Он предоставляет эти правила погашения и рефинансирования контрактам Custodian и Starport соответственно.
  2. Модуль Status просто указывает, является ли данный заём активным или неактивным. Неактивный статус означает, что заём может быть погашен/ликвидирован. Активный статус означает, что он может быть погашен. Этот статус может меняться со временем, если расчёты не происходят.
  3. Наконец, модуль "Расчёты" определяет конкретные условия урегулирования/ликвидации неактивного займа, например, какие активы могут быть ликвидированы и каким образом. Он также определяет уполномоченного исполнителя, которому разрешено выполнять расчеты.

Основная цель модулей в архитектуре Starport - (надеюсь) обеспечить возможность настройки и расширения основного протокола кредитования. Различные команды могут разрабатывать свои собственные модули, которые наилучшим образом подходят для конкретного случая кредитования - будь то кредиты под залог, специализированные модели ценообразования, поддержка экзотических залогов NFT и т. д.

Благодаря тому, что модули могут быть заменены, можно создавать множество вариантов кредитных продуктов, используя при этом прочную основу Starport - данные о кредитах, обеспечение исполнения соглашений, инфраструктуру расчётов.

Модули должны реализовывать только специфические интерфейсные функции, задокументированные в контрактах Starport Core для предоставления параметров. Команды могут реализовывать модули на выбранном ими языке и регистрировать их в Starport Core.

Таким образом, пользовательская логика абстрагируется и слабо связана с базовым уровнем.

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

Позвольте мне подробнее рассказать о том, как это может работать и что это даст:

  • Активы реального мира в качестве обеспечения: Новые модули ценообразования и расчётов могут быть созданы специально для поддержки активов реального мира (RWA), таких как счёта-фактуры, роялти, недвижимость в качестве обеспечения кредита. Ключевые усовершенствования:
    • Пользовательские модели ценообразования, настроенные на профили волатильности и ликвидности различных классов RWA. Учёт исторических эталонных данных о производительности.
    • Интеграция с Oracle для надёжного получения оценок активов в режиме реального времени. Использование профессиональных оценочных услуг или платформ токенизации, предоставляющих фид.
    • Бизнес-логика, связанная с соблюдением нормативных требований, KYC, юрисдикционными нюансами при приёме и ликвидации RWA. Это открывает совершенно новую категорию трансграничного кредитования с недостаточным обеспечением, приемлемого только под реальные активы.
  • Оценка NFT: Аналогичным образом, специально разработанные модули могут позволить использовать NFT в качестве залога. NFT представляют собой уникальную проблему в силу своей (малоликвидной) природы и сложности оценки. Специальные модули могут учесть это:
    • Оценки на основе исторических данных о продажах NFT - например, признаки редкости, коллекционные коэффициенты. Учёт общих рыночных циклов.
    • Утвержденные андеррайтерами списки с указанием коллекций NFT, признанных приемлемыми на основании экспертной оценки. Это обеспечивает децентрализованную инфраструктуру для кредитования под залог NFT, отвечающую требованиям заёмщиков Web3.
  • Активы, генерирующие доход: Приём генерирующих доход залогов, таких как акции хранилища Yearn, AAVE aTokens, и управление периодической реализацией дохода также требуют пользовательской логики:
    • Модули расчётов, которые задерживают или предотвращают ликвидацию, если доход от доходности в достаточной степени покрывает процентные расходы.
    • Автоматическое копирование реализованной доходности обратно в залог в качестве стратегии погашения.
    • Маршрутизация доходов в соответствии со стратегиями, основанными на управлении. Это позволяет создавать совершенно новые кредитные продукты с процентными платежами, покрываемыми за счёт доходности залога.

Приведенные выше примеры - мои догадки. В любом случае, мы можем чего-то ожидать.

В Starport существует три различные роли участников

Заёмщик предоставляет залоговые активы в обмен на долг.

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

Fulfiller фактически выполняет транзакции, такие как выдача кредита или расчёты от имени заемщиков и кредиторов.

При этом одна организация может выполнять несколько ролей:

1. Создание

Действие Originate - это создание нового займа в Starport. Оно обеспечивает выполнение соглашения и передачи для выдачи нового займа между заемщиком и кредитором.

В частности, при выдаче кредита происходит несколько ключевых событий:

  • Обеспечение передаётся от заёмщика в договор с Хранителем. Это обеспечение хранится в депозитарии в течение всего срока действия кредита.
  • Долг передается от кредитующей стороны к заёмщику. Он представляет собой фактические средства, которые заёмщик попросил одолжить.
  • Применяются любые другие дополнительные условия - например, дополнительные комиссии за перевод, условия погашения и т. д. Эти дополнительные условия определяются различными модулями.
  • Контракт Starport обновляет своё хранилище, чтобы создать новую структуру Loan, представляющую этот заем, с такими деталями, как адрес заемщика, сумма займа, данные о залоге и т. д.
  • Эта структура Loan хэшируется в уникальный идентификатор loanID, который служит идентификатором этого кредита в будущих транзакциях.
  • Кредит переходит в состояние OPEN, указывающее на то, что его выдача завершена.

Originate обрабатывает исполнение и передачу данных для открытия нового кредита между заёмщиком и кредитором, при этом данные хранятся в Starport в структуре Loan и передаются в кредит.

2. Погашение

Действие "Погашение" позволяет заёмщику погасить кредит, который он выдал, и забрать свой залог у Хранителя:

  • Заёмщик совершает операции погашения по контракту с Хранителем на основании условий погашения, определенных в модуле "Ценообразование". Таким образом погашается задолженность перед кредитором.
  • После погашения задолженности в соответствии с условиями модуля ценообразования Хранитель передаёт обратно залог заемщика, который находился у него на хранении.
  • Starport переводит состояние займа в CLOSED, указывая на то, что погашение завершено.

Погашение позволяет завершить активный кредит, выплатив долг и получив обратно размещённый залог.

3. Расчёт

Расчёты означают ликвидацию залога по неактивному кредиту для погашения кредитора. Это может произойти только в том случае, если статус займа изменился на неактивный в модуле Статус.

Модуль "Расчёты" определяет условия, например, какое обеспечение может быть ликвидировано, какие стрижки должны применяться и кто является уполномоченным исполнителем для проведения расчетов.

Уполномоченный исполнитель запускает расчеты по контракту кастодиана на основе этих условных параметров.

Хранитель ликвидирует залог заемщика в соответствии с условиями модуля и использует его для погашения первоначального долга + штрафов, причитающихся кредитору.

Любой оставшийся залог после погашения кредитора может быть возвращён заёмщику.

Как и при погашении, состояние займа после этого переходит в состояние Закрыто.

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

4. Рефинансирование

Рефинансирование позволяет заменить существующего кредитора по кредиту на нового. При этом закрывается старый кредит и создается новый, а проценты по нему накапливаются:

  • Исполнитель инициирует рефинансирование на основе таких условий, как процентная ставка и график погашения из модуля Pricing.
  • Starport рассчитывает общую сумму задолженности по текущему кредиту и осуществляет перевод: новый кредитор выплачивает её старому кредитору.
  • Старый кредит переходит в состояние CLOSE, а для рефинансированного кредита между заемщиком и новым кредитором создаётся новая структура кредита и идентификатор кредита. Обновляются параметры ценообразования.
  • Новый кредит начинается с состояния OPEN - теперь он может быть погашен или ликвидирован новым кредитором отдельно.

Рефинансирование позволяет заменить финансирующую сторону и перенести обязательства заемщика в новую кредитную запись.

В рамках Starport обеспечение аутентификации исполнителя, который отвечает за выполнение транзакций от имени заемщика или кредитора, является критически важным компонентом.

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

1. Аутентификация msg.sender

Метод msg.sender основан на основном принципе смарт-контрактов Ethereum. В этом контексте msg.sender относится к адресу, который непосредственно инициирует транзакцию.

В рамках фреймворка Starport транзакция может быть аутентифицирована, если msg.sender (адрес, выполняющий транзакцию) является адресом заёмщика или кредитора.

Предположим, что А. - заёмщик, который должен выполнить транзакцию, связанную с его займом. А. выполнит транзакцию с его Ethereum-аккаунта (или EOA). Смарт-контракт проверит, совпадает ли msg.sender (адрес, с которого инициирована транзакция) с адресом А. Если это так, транзакция считается аутентифицированной, так как она непосредственно выполняется заемщиком.

2. Аутентификация с разрешением

Этот метод включает процесс подтверждения, при котором заемщик или кредитор предоставляют разрешение другой сущности (другому адресу Ethereum) выполнять транзакции от их имени.

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

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

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

3. CaveatEnforcer.SignedCaveats

Этот метод основан на стандарте EIP-712, который позволяет подписывать и проверять структурированные данные в Ethereum. Это обеспечивает более ясное и безопасное взаимодействие, чем простые шестнадцатеричные строки.

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

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

Контракт CaveatEnforcer также может накладывать дополнительные условия на основе содержимого подписанной структуры. Например, он может разрешить транзакцию только в том случае, если она находится в указанном диапазоне суммы или до определенной даты истечения срока.

Представьте себе заёмщика, О., который хочет авторизовать транзакции в определенных условиях. Он подписывает структуру с условиями, такими как максимальная сумма возврата и период действия. Когда транзакция инициируется в соответствии с этими условиями, CaveatEnforcer проверяет подпись О. и условия транзакции. Если оба соответствуют спецификациям О., транзакция аутентифицируется.

Эти три метода в фреймворке Starport предоставляют различные варианты аутентификации транзакций, от простого использования msg.sender до более сложных условных разрешений с использованием подписанных данных EIP-712. Эта гибкость обеспечивает безопасное и настраиваемое выполнение транзакций, соответствующее различным потребностям и сценариям в протоколе кредитования.

Репрезентация - ключевой механизм в Starport для оптимизации затрат на хранение и газ, связанных с обеспечением доступности данных для состояния займа.

Критически важные детали займа, такие как сумма залога, адрес заемщика, условия займа и т. д., хранятся в единой структуре Starport.Loan.

Когда займ создается в Starport, все важные детали, такие как сумма залога, адрес заемщика, условия займа и т. д., объединяются в единую структуру Starport.Loan. Эта структура становится центральным хранилищем всех необходимых данных для займа.

Затем структура Starport.Loan хешируется с использованием алгоритма keccak256. Этот процесс хеширования упрощает разнообразные и потенциально большие объёмы данных в структуре в одно значение bytes32, известное как loanID. Этот loanID хранится в блокчейне, в то время как сама структура Starport.Loan не хранится на цепи блоков. Такой подход существенно уменьшает объем данных, хранящихся в блокчейне.

Когда структура займа хешируется, и loanID сохраняется, генерируется событие Representment. Это событие содержит данные из структуры Starport.Loan и генерируется с целью индексации. Фронтенд-системы или другие вне-блокчейн сервисы могут проиндексировать это событие, эффективно отслеживая детали займа, необходимые для хранения, без необходимости хранения всех данных на цепи блоков.

Теперь давайте рассмотрим, что происходит в любой последующей транзакции, такой как возврат средств или ликвидация.

Внешняя система, взаимодействующая с Starport, должна "репрезентировать" исходную структуру Starport.Loan. Эта репрезентация основана на данных, которые они проиндексировали из предыдущего события Representment.

Затем контракт Starport повторно хеширует эту представленную структуру Starport.Loan, чтобы убедиться, что она соответствует исходному сохраненному loanID. Этот шаг критичен для проверки того, что данные, используемые в транзакции, согласуются с первоначальными данными по займу.

Если хеши совпадают, контракт Starport распознаёт, что представленные данные верны, и продолжает выполнение транзакции с использованием этих данных.

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

Храня только хеш (loanID), а не весь набор данных, и полагаясь на внешние системы для представления исходных данных из проиндексированных событий, Starport достигает значительного сокращения затрат на хранение и газа. Этот метод позволяет проверять критически важные детали займа без избыточного хранения данных для каждой транзакции.

Важно отметить, что Starport разработан как ядро/фреймворк для кредитования: для создания и применения соглашений и правил вокруг выдачи, возврата, закрытия и рефинансирования займов на Ethereum. Он предоставляет основной слой доступности данных и применения соглашений, на который любой протокол кредитования может построиться, подключившись к модульной архитектуре Starport.

Starport хранит всю критическую информацию о займе на цепи блоков в структуре данных Loan. К этой информации относится:

  • Адрес заёмщика
  • Тип и сумма залогового актива
  • Основная сумма займа
  • Процентные ставки
  • Другие условия

Эта структура Loan представляет собой полное состояние займа. Starport управляет хранением этой структуры на цепи блоков, обновляя ее при изменении состояния, и удаляя при закрытии займа. Надежное поддержание этих данных на цепи блоков решает сложную проблему информации о состоянии займа, необходимую для любого протокола кредитования.

На основе данных каждого займа Starport также обеспечивает фактические перемещения активов и правила, необходимые при основных действиях, таких как создание займа, возврат средств, урегулирование дефолта и т. д.

Например, во время создания он обрабатывает:

  • Передачу залоговых активов от заёмщика к Управляющему
  • Передачу основной суммы займа от кредитора к заемщику

Во время возврата он обрабатывает:

  • Расчет сумм возврата согласно условиям ценообразования
  • Передачу суммы возврата от заемщика кредитору
  • Возвращение залога заемщику

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

Наконец, Starport предоставляет различные модули, такие как Pricing, Settlement и др. Специально разработанные для того, чтобы позволить определить и подключить собственную логику для параметров ценообразования, условий ликвидации и т. д.

Этот модульный подход позволяет протоколам кредитования использовать всю тяжелую работу, которую выполняет Starport в области данных и применения соглашений, сохраняя возможность настройки определенных аспектов, таких как моделирование процентных ставок, согласно их потребностям.

Таким образом, Starport сам по себе не стремится быть полноценным кредитным приложением. Вместо этого он занимается:

  • Соблюдением передач и условий, необходимых во время ключевых транзакций по займу (выдача, возврат и т. д.).
  • Хранением и управлением критическими данными состояния займа, такими как суммы залога, адреса заемщика, условия займа и т. д.
  • Предоставлением возможности для подключения модулей для ценообразования, логики урегулирования и процентных ставок.

Такой модульный подход позволяет разработчикам использовать инфраструктуру Starport для создания собственного протокола кредитования, при необходимости настраивая определенные аспекты в соответствии с их требованиями.

Это ответ на проблему обратной совместимости?

Как я упоминал ранее, я считаю, что Starport действительно решает проблему обратной совместимости в смарт-контрактах.

Когда любой DeFi-протокол выпускает обновленную версию контракта, существует потенциальный риск нарушения существующей функциональности.

Например, если протокол кредитования запускает новую версию LoanContractV3, могут возникнуть опасения, связанные с тем, будут ли существующие заемщики продолжать получать возвраты или смогут ли они по-прежнему предоставлять залоги, как предполагалось.

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

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

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

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

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

Для разработчиков эта четкая раздельность между неизменяемой логикой обработки займов и обновляемой параметрической логикой обеспечивает более простое тестирование и верификацию. Они могут удостовериться, что взаимодействие между старыми и новыми займами под разными модулями остается стабильным и предсказуемым.

Мысли вслух

Считаю, что Starport представляет собой элегантно спроектированную и гибкую архитектуру для создания децентрализованных протоколов кредитования. Несколько аспектов, которые привлекли мое внимание:

Модульный подход, позволяющий создавать пользовательские реализации компонентов, таких как Pricing, Settlement terms и Custody, кажется весьма расширяемым.

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

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

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

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

Это, вероятно, расширит привлекательность Starport как для розничных, так и для сложных институциональных случаев использования.

Могу сказать, что на бумаге это выглядит очень хорошо.

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

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

До!