June 25, 2022

Magnety protocol

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

Архитектура версии α

3 основных компонента:

  • Инициализатор фонда : управляйте развертыванием фонда и его инициализацией.
  • Контроллер: посредник между пользователем и фондом
  • Фонд: контракт NFT, хранение отслеживаемых активов и внешние позиции

3 подкомпонента:

  • Интерпретатор стоимости : управляйте ценой актива и коэффициентом конверсии.
  • Расширения: храните конфигурацию для каждого фонда.
  • Контракты до логики: набор контрактов, уникальный для каждого интегрированного протокола DeFi.

Давайте рассмотрим протокол через четыре основные функции.

  • Купить акции
  • Выкупить средства
  • Взаимодействие с DeFi
  • Развертывание и инициализация средств

Давайте сначала рассмотрим процесс приобретения акций:

Как пользователь, вам необходимо указать адрес фонда и сумму, которую вы хотите инвестировать.

  • Разрешенный вкладчик?

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

  • Допустимая валюта и сумма?

Актив, который вы отправляете, будет активом деноминации: он уникален для каждого фонда и хранится в самом фонде , это может быть ETH, BTC, USDC или что-то еще, он используется для оценки эффективности в целом. Сумма должна соответствовать минимальной и максимальной сумме для инвестирования, заданной расширением диспетчера политик.

  • Плата за вход

Вступительный взнос предоставляется расширением управления сборами, если оно включено, x% от этой суммы будет отправлено получателям сбора: 16% в хранилище ставок, 4% в казну DAO и 80% управляющему активами (это перераспределение одинаково для каждого вида сборов).

  • Сумма инвестиций в акции
перевод ниже

Нам нужно получить цену одной акции, как объясняется с помощью этой очень простой формулы. GAV (валовая стоимость активов) фонда представляет собой сумму всех активов и позиций фонда.

Чтобы рассчитать GAV, мы сначала получаем список всех отслеживаемых активов и позиций фонда и их сумму, а затем рассчитываем их цену один за другим с учетом деноминации актива фонда. Здесь нам нужен компонент ValueInterpretor , мы предоставляем актив, который мы хотим рассчитать, цену, его количество и актив деноминации, и, наконец, мы получаем сумму актива деноминации.

4 разных случая для расчета цены актива:

  1. Входящий актив является активом деноминации

Сумма возвращается.

2. Входящий актив является поддерживаемым примитивом

Интерпретатор стоимости вызывает Primitive PriceFeed Manager для преобразования входящего актива в актив номинала.

перевод ниже

Важно проверить, имеют ли оба актива одинаковые десятичные знаки и одинаковую ставку актива (доллары США с ценой Pontis).

S/o команде Pontis, чтобы помочь нам с реализацией 🤟

3. Входящий актив является производным активом

Здесь цель состоит в том, чтобы найти базовые активы дериватива, пока мы не получим примитивный актив, цена которого известна. Давайте посмотрим пример.

Я хочу получить цену ARFBTC-TST LP из пула ликвидности AMM Alpha Road Finance. ValueInterpretor распознает его как производный и вызовет calcUnderlyingValues ​​из контракта «ARF_LP_helper».

После вызова этой функции интерпретатор значений получит [ARFBTC, TST] и [ARFBTC_amount, TST_amount] и зациклится на этой вкладке, вызывая предыдущую функцию calculAssetValue. Первый актив ARFBTC будет признан примитивным, и мы получим желаемую сумму с помощью Pontis PriceFeed. Второй актив будет признан производным активом, затем мы реализуем ту же работу, но на этот раз с контрактом «ARF_token_helper». Мы получим следующую вкладку [ARFBTC_amount,ARFBTC] и еще раз вызовем функцию calculAssetValue. Опять же, ARFBTC будет признан примитивным, и сумма будет возвращена. Наконец, две суммы суммируются и возвращается результат.

Спасибо дорожной команде Alpha за помощь в интеграции AMM ⚡

4. Входящий актив — внешняя позиция

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

Теперь мы получаем цену акции, мы можем получить количество акций, отчеканить NFT и перевести сумму без платы за вход в хранилище 🚩

Мы решили представлять акции как NFT лучше, чем ERC20, потому что нам нужно хранить отметку времени и цену акции на момент чеканки для временной блокировки и платы за производительность. Таким образом, NFT может содержать одну или несколько акций.

Давайте теперь рассмотрим процесс продажи акций и выкупа ваших средств:

Вы можете выбрать актив, который хотите выкупить, указав вкладку адреса и вкладку суммы, сумма должна быть 100%. Кроме того, вы выбираете, сколько акций вы хотите продать. Если вы продадите все акции, NFT будет сожжен.

  • Разрешено продавать?

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

  • Допустимая валюта и сумма?

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

  • доли к сумме активов

Мы рассчитываем цену акции последним методом, а затем рассчитываем количество каждого актива на вкладке. Сначала мы вычисляем стоимость 1 единицы актива, который нам нужен (смотря на десятичные дроби) в активе деноминации благодаря ValueInterpreter.

перевод ниже

Затем мы делаем то же самое с каждым активом вкладок и получаем сумму для погашения.

  • Плата за производительность

Плата за производительность предоставляется расширением управления комиссией, если оно включено, x% от плюсовой стоимости доли будет взято из каждого актива и отправлено получателям комиссии.

  • Плата за выход

Плата за выход предоставляется расширением менеджера сборов, если он включен, x% сумм, оставшихся от платы за производительность, будет взят и отправлен получателям платы.

Затем мы отправляем оставшиеся суммы пользователю 🚩

Мы видели плату за вход, плату за выход и плату за результат, но когда управляющий активами будет воспринимать плату за управление?

Плата за управление может быть затребована непосредственно управляющим активами. Как и раньше, он может выбрать набор активов для выкупа.

Сначала мы рассчитываем сумму комиссии в ETH для погашения.

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

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

Давайте теперь посмотрим, как управляющий активами может взаимодействовать с протоколами DeFi.

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

  • Разрешен вызов?

Контролер запрашивает у Policy Manager Extension , разрешено ли использование контракта и селектора этим фондом. (см. позже, чтобы добавить разрешенные протоколы в фонд)

  • Предварительная логика?

Контролер попросит расширение диспетчера интеграции предоставить адрес контракта для запуска предварительных действий в зависимости от характера нашего вызова. Например, если мы выполняем своп на каком-либо AMM, нам нужно убедиться, что входящий актив отслеживается фондом. При необходимости мы вызываем runPreLogic к нужному контракту, и он анализирует аргумент _callData, чтобы убедиться, что все авторизовано.

Обратите внимание, что для любого протокола, который мы интегрируем, нам нужно написать код priceFeed и preLogic.

Если мы не получили никакой ошибки до этого момента, мы вызываем контракт фонда и запрашиваем выполнение вызова. 🚩

Закончим инициализацией фонда

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

Мы интегрируем некоторые новые функции позже, но фонд уже имеет широкие возможности настройки, вы можете выбрать:

  • Название фонда и символ
  • Актив деноминации (должен быть примитивным)
  • Лимит позиции (собрать актив и внешние позиции)
  • Интервал для вкладчиков
  • Конфигурация комиссий для монетизации вашего фонда (0–5% за вход и выход и 0–20% за эффективность и управление).
  • Конфигурация интеграции: выберите актив, который вам будет разрешено отслеживать, и протокол, с которым вы сможете взаимодействовать.

Доступные активы и интеграции протокола хранятся в расширении Integration Manager. Чтобы сохранить вашу конфигурацию интеграции, мы позаботимся о том, чтобы они были доступны в Magnety.

  • Блокировка по времени (от 3 часов до 15 дней)
  • Общественный или нет

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

Если вы хотите изменить эти правила после инициализации вашего фонда, вы можете выполнить реконфигурацию. Вам придется подождать как минимум 1 неделю (которую может изменить DAO), прежде чем вы сможете утвердить свои изменения, чтобы акционеры могли продать свои акции, если они не согласны с вашими новыми правилами.

После инициализации вам нужно будет активировать свой фонд (отчеканить первые акции). Мы не можем напрямую использовать функцию покупки акций, зная, что предложение акций и валовая стоимость активов равны нулю. Вы будете чеканить 10 000 акций, и цена акции будет равна сумме, которую вы инвестировали / 10 0000.

бета-версия

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

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

Отсюда вы сможете импортировать свои средства в свой кошелек. Поскольку адрес учетной записи не обязательно связан с закрытым ключом, мы не можем импортировать учетные записи, предоставляющие ваш закрытый ключ, в наиболее часто используемый кошелек в Starknet, такой как Argent X или Braavos. Вот почему мы разрабатываем наш кошелек, и как только он будет готов, мы развернем бета - версию в тестовой сети. Интеграция кошелька Magnety в Dapp будет легкой благодаря пакету get-starknet, который позволяет dApps подключаться к любому кошельку в StarkNet.

Magnety α — 19/06 в Testnet

Присоединяйтесь к дискорду, выибвайте себе роль, приглашайте друзей, помогайте развиваться проекту, делайте видео, мемы, статьи - https://discord.gg/rUQUPN7BmH