DotOracle (DTO) - соединяет реальный мир с экосистемой Polkadot

DotOracle (DTO) - первый блокчейн, совместимый с EVM, с программируемыми оракулами для чтения данных вне сети из смарт-контрактов.

DotOracle (DTO) предлагает децентрализованную сеть, которая соединяет реальный мир с экосистемой Polkadot, предоставляя децентрализованную службу Oracle для передачи информации из реального мира в Polkadot в режиме реального времени.

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

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

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

Несмотря на то, что несколько децентрализованных оракулов были реализованы и запущены, есть еще несколько проблем:

  • Удобство использования: разработчикам по-прежнему сложно создать задание оракула для предоставления определенных данных вне сети для смарт-контрактов. Большинство разработчиков DeFi знакомы с EVM-совместимой моделью программирования, такой как модель программирования Solidity.
  • Скорость и стоимость: некоторые оракулы требуют, чтобы каждый валидатор совершал транзакции для отправки внешней информации в смарт-контракты. Этот процесс громоздкий, медленный и дорогостоящий, а также зависит от скорости блокчейна, в котором находятся смарт-контракты.

Блокчейн DotOracle обеспечивает:

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

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

Многослойная архитектура

В отличие от других блокчейнов, совместимых с EVM, DotOracle добавляет Oracle Data Layer к многоуровневой архитектуре системы. Ниже показана многоуровневая архитектура блокчейна DotOracle.

  • Уровень сети и консенсуса: этот уровень отвечает за связь между валидаторами сети. Этот уровень обеспечивает консенсус сети о том, что все валидаторы будут иметь согласованные данные. Подобно другим сетям блокчейнов, модель безопасности этого уровня также следует модели византийской отказоустойчивости в большинстве блокчейнов Proof-of-Stake.
  • Уровень данных Oracle: этот дополнительный уровень используется для хранения всех данных вне сети (внешней информации), которые необходимы для транзакций, которые будут взаимодействовать со смарт-контрактами с использованием данных вне сети. Этот уровень служит слоем, содержащим данные вне сети в реальном времени, к которым можно получить доступ с помощью смарт-контрактов Oracle. Это полностью отличается от всех существующих оракулов, в которых смарт-контракты приложений получают доступ к данным вне сети не в реальном времени через смарт-контракты оракула. Не в реальном времени означает, что данные, к которым получают доступ приложения, не являются данными в реальном времени. В этих оракулах смарт-контракты приложений считывают данные вне сети из смарт-контракта, где данные обновлялись узлами оракула.
    • Например, для оракула на Ethereum, который предоставляет данные о цене пары ETH / USD. Приложения используют данные о ценах для этой пары, считывая данные из смарт-контракта в цепочке, где данные о ценах обновляются (максимум) каждые 15 секунд (среднее время блока Ethereum). Это означает, что данные о ценах, которые используют эти приложения, представляют собой данные о ценах за 15 секунд до выполнения транзакции приложения.
    • Oracle Data Layer будет объяснен ниже, где в статье объясняются шаги, как работает цепочка.
  • Уровень Oracle и смарт-контрактов: этот уровень содержит все смарт-контракты, развернутые разработчиками для разработки приложения DeFi или оракула, который предоставляет данные, защищенные от несанкционированного доступа. Контракты Oracle могут использовать наши предварительно скомпилированные контракты для чтения данных вне сети в реальном времени с уровня данных Oracle. Смарт-контракты Oracle похожи на любые смарт-контракты и могут быть написаны с использованием предпочтительного языка смарт-контрактов, такого как Solidity. EVM DotOracle хорошо настроен для предоставления предварительно скомпилированных контрактов, которые могут быть вызваны любым смарт-контрактом для чтения данных вне сети в реальном времени. Предоставляя этот уровень, блокчейн DotOracle предоставляет разработчикам возможность программировать свои собственные оракулы с использованием самого популярного языка разработки смарт-контрактов Solidity.
  • Уровень приложения: этот уровень содержит все смарт-контракты приложений, которые взаимодействуют с любым пользователем.

Кросс-цепной мост

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

DotOracle использует механизм на основе Proof-of-Stake, который требует, чтобы общедоступные узлы блокировали количество токенов DTO (мы думаем о 500 000 DTO на узел), чтобы стать валидаторами. 

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

Запрос на транзакцию моста выдается пользователем в приложении bridge.dotoracle.network. Транзакция моста запроса блокирует количество токена источника в цепочке или сжигает количество обернутого токена. Например, когда пользователь хочет перевести USDT из Ethereum в цепочку MoonBeam, пользователь выполняет транзакцию моста запроса в цепочке блоков Ethereum, используя приложение моста DotOracle. Затем транзакция блокирует сумму, которую необходимо связать, в смарт-контракте моста DotOracle на Ethereum.

В каждой цепочке, подключенной к сети ликвидности DotOracle, есть смарт-контракт моста DotOracle, который:

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

Любой узел / узел, который наблюдает за ложным доказательством, подписанным валидатором, может предоставить ложное доказательство вместе с подтверждениями ложного доказательства как минимум от валидаторов. Затем отправка будет выполнена посредством мостового контракта (который будет развернут на MoonBeam), который сожжет часть привязанного DTO плохого валидатора и вознаграждает оставшихся валидаторов и наблюдателя оставшейся частью привязанного DTO плохого валидатора.

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

После получения достаточного количества подтверждений для транзакции моста запроса пользователь может запросить подписи подтверждения требований у всех валидаторов. Количество подтверждений зависит от того, из какой сети пользователь передает цифровые активы. Например, при переходе с Ethereum на MoonBeam пользователю потребуется подождать не менее 12 подтверждений, прежде чем он сможет потребовать завернутый токен в целевой цепочке (MoonBeam). Пользователю необходимо как минимум ⅔ валидаторов для подтверждения подтверждения заявки путем сбора как минимум ⅔ подписей валидаторов, подтверждающих, что пользователи могут требовать токек в целевой цепочке.

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

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

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

Например, если пользователь переводит USDT (исходный токен в цепочке Ethereum) из Ethereum в MoonBeam, на MoonBeam будет выпущен завернутый токен dtoUSDT с десятичными знаками и суммой, равной сумме, которую переводит пользователь.

С другой стороны, если пользователь переводит dtoUSDT (обернутый токен) из MoonBeam обратно в Ethereum, переданная сумма dtoUSDT будет сожжена на MoonBeam, а соответствующая сумма USDT будет высвобождена на Ethereum посредством мостового контракта на соответствующих блокчейнах.

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

Межсетевой майнинг ликвидности

Межсетевой мост позволяет передавать любой токен из одной сети в другие сети с точки зрения обернутого токена, выпущенного контрактом моста DotOracle. Например, перевод 100 USDT из Ethereum в Binance Smart Chain (BSC) приведет к выпуску токена 100 dtoUSDT на BSC.

Однако есть проблема с этим подходом: токен USDT уже есть на BSC, и пользователи на BSC знакомы с этим USDT. Теоретически 1 dtoUSDT эквивалентен 1 USDT на BSC. Остается вопрос: как обменять 1 dtoUSDT на 1 USDT BSC, поскольку USDT BSC широко используется на BSC.

Мы реализуем программу добычи ликвидности, где:

  • Существует пул ликвидности с dtoUSDT и существующим USDT на BSC.
  • Любой пользователь с dtoUSDT на BSC может внести dtoUSDT в пул
  • Любой пользователь с существующим USDT на BSC может внести USDT в пул.
  • Вкладчики dtoUSDT и существующего USDT называются поставщиками ликвидности.
  • Поставщики ликвидности не обязаны предоставлять оба токена в пул.
  • Поставщики ликвидности не страдают от непостоянных потерь, как при майнинге других ликвидных средств. 
  • Любой пользователь может обменять 1 dtoUSDT на 1 USDT, N dtoUSDT на N USDT и наоборот, в зависимости от ликвидности в пуле.
  • Поставщики ликвидности могут в любой момент удалить ликвидность из пула. Поставщик ликвидности может выбрать вывод USDT и / или dtoUSDT, в зависимости от ликвидности в пуле.
  • Если недостаточно USDT для удаления для поставщика ликвидности USDT, поставщик может выбрать удаление с помощью dtoUSDT, с помощью которого поставщик может перевести dtoUSDT обратно в исходный блокчейн Ethereum, чтобы получить исходный USDT на Ethereum.
    • Например, если провайдер ликвидности предоставляет 100 USDT пулу dtoUSDT / USDT и хочет удалить ликвидность из пула, когда в пуле остается 40 USDT и 1000 dtoUSDT. Провайдер может удалить 40 USDT и 60 dtoUSDT или 100 dtoUSDT. Таким образом, провайдер может обменять 100 dtoUSDT обратно на 100 USDT на Ethereum.
  • Поставщики ликвидности будут вознаграждены из двух источников
    • Токен DTO 
    • Комиссия за своп с dtoUSDT на USDT и обратно
  • Этот майнинг ликвидности можно применить к любому токену.