У blockchain-екосистемі оракул-машина відіграє життєво важливу роль інфраструктури, будучи мостом між смарт-контрактами на ланцюгу та зовнішнім світом. Його основна функція полягає в наданні зовнішніх даних для смарт-контрактів на blockchain.
Наприклад, якщо ми розгортаємо смарт-контракт в мережі Ethereum, який потребує отримання даних про обсяги торгівлі нафтою за певну дату, оскільки сам контракт не може безпосередньо отримувати дані з реального світу поза ланцюгом, ми повинні скористатися оракулом-машиною для досягнення цієї мети. Конкретний процес: смарт-контракт записує потребу в обсягах торгівлі нафтою за необхідну дату в журнал подій, після чого процес поза ланцюгом буде прослуховувати та підписувати цю подію. Коли виявляється відповідний запит, цей процес через подання транзакції в ланцюзі викликає певний метод контракту, щоб завантажити інформацію про обсяги торгівлі нафтою за вказану дату до смарт-контракту.
Серед численних проектів оракулів, один децентралізований проект оракулів займає одне з провідних місць за часткою ринку. Цей проект прагне надійно постачати дані з реального світу для блокчейну. Окрім реалізації основних принципів оракулів, проект також побудував екосистему з добрим циклом навколо свого рідного токена, забезпечуючи сталий розвиток системи через економічні стимули. У цій системі активація оракулів здійснюється шляхом переказу рідного токена, а ця функція оракулів, що базується на токенах, відноситься до моделі запит/відповідь.
Цей проект використовує покращений стандарт гомогенного токена, який на базі стандартного ERC20 додав метод transferAndCall. Цей метод майстерно поєднує оплату та запит на послугу, що добре відповідає вимогам бізнес-сценаріїв оракул-машини. Коли користувач викликає transferAndCall для переказу, окрім звичайного переказу ERC20, також перевіряється, чи є адреса отримувача адресою контракту, і якщо так, то викликається метод onTokenTransfer цього адреси.
! Chainlink Частина 1 серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp)
В контракті оракул-машини метод onTokenTransfer спочатку перевіряє, чи використано в переказі зазначений токен, а потім перевіряє законність запитуваних даних. Після серії перевірок безпеки контракт генерує унікальний ID запиту, встановлює час закінчення терміну дії та записує відповідну інформацію в відображенні commitments. Найважливіше, що контракт видає подію, що містить запитувані дані, які кодуються у форматі легковагових бінарних об'єктів.
Поза-мережевий вузол після отримання запиту викликає метод fulfillOracleRequest для відповіді на запит. Цей метод спочатку виконує ряд перевірок, включаючи перевірку авторизації виклику, дійсності запиту тощо. Після успішної перевірки буде зафіксовано кількість токенів, які можна вилучити, та видалено ідентифікатор запиту з відображення commitments. Нарешті, якщо залишкового газу достатньо, буде викликано функцію зворотного виклику контракту запитувача.
У зворотному виклику ще раз перевіряється дійсність запиту та обробляються повернені дані відповідно до конкретних потреб. Наприклад, для оракул-машини ціни може бути оновлено поточні дані ціни.
Для розробників певний проєкт оракул-машини також пропонує зручніший інтерфейс для запиту цін. Кожна торгова пара має незалежний агрегатор цін, розробники можуть безпосередньо викликати ці інтерфейси для отримання останніх даних про ціни, не вказуючи URL джерела даних. Ці інтерфейси зазвичай включають функції запиту точності, опису, версії, історичних даних та останніх даних, що значно спрощує процес розробки.
Варто відзначити, що в більшості випадків контракти можуть лише читати останню ціну. Крім того, для торгових пар, що оцінюються в доларах США, точність цін зазвичай уніфікована на 8 знаків, що дозволяє уникнути проблем з обробкою відмінностей у точності різних токенів.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Оракул-машина технології: смартконтракти та міст між реальним світом
Оракул-машина технологічна Глибина аналізу
У blockchain-екосистемі оракул-машина відіграє життєво важливу роль інфраструктури, будучи мостом між смарт-контрактами на ланцюгу та зовнішнім світом. Його основна функція полягає в наданні зовнішніх даних для смарт-контрактів на blockchain.
Наприклад, якщо ми розгортаємо смарт-контракт в мережі Ethereum, який потребує отримання даних про обсяги торгівлі нафтою за певну дату, оскільки сам контракт не може безпосередньо отримувати дані з реального світу поза ланцюгом, ми повинні скористатися оракулом-машиною для досягнення цієї мети. Конкретний процес: смарт-контракт записує потребу в обсягах торгівлі нафтою за необхідну дату в журнал подій, після чого процес поза ланцюгом буде прослуховувати та підписувати цю подію. Коли виявляється відповідний запит, цей процес через подання транзакції в ланцюзі викликає певний метод контракту, щоб завантажити інформацію про обсяги торгівлі нафтою за вказану дату до смарт-контракту.
Серед численних проектів оракулів, один децентралізований проект оракулів займає одне з провідних місць за часткою ринку. Цей проект прагне надійно постачати дані з реального світу для блокчейну. Окрім реалізації основних принципів оракулів, проект також побудував екосистему з добрим циклом навколо свого рідного токена, забезпечуючи сталий розвиток системи через економічні стимули. У цій системі активація оракулів здійснюється шляхом переказу рідного токена, а ця функція оракулів, що базується на токенах, відноситься до моделі запит/відповідь.
Цей проект використовує покращений стандарт гомогенного токена, який на базі стандартного ERC20 додав метод transferAndCall. Цей метод майстерно поєднує оплату та запит на послугу, що добре відповідає вимогам бізнес-сценаріїв оракул-машини. Коли користувач викликає transferAndCall для переказу, окрім звичайного переказу ERC20, також перевіряється, чи є адреса отримувача адресою контракту, і якщо так, то викликається метод onTokenTransfer цього адреси.
! Chainlink Частина 1 серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp)
В контракті оракул-машини метод onTokenTransfer спочатку перевіряє, чи використано в переказі зазначений токен, а потім перевіряє законність запитуваних даних. Після серії перевірок безпеки контракт генерує унікальний ID запиту, встановлює час закінчення терміну дії та записує відповідну інформацію в відображенні commitments. Найважливіше, що контракт видає подію, що містить запитувані дані, які кодуються у форматі легковагових бінарних об'єктів.
Поза-мережевий вузол після отримання запиту викликає метод fulfillOracleRequest для відповіді на запит. Цей метод спочатку виконує ряд перевірок, включаючи перевірку авторизації виклику, дійсності запиту тощо. Після успішної перевірки буде зафіксовано кількість токенів, які можна вилучити, та видалено ідентифікатор запиту з відображення commitments. Нарешті, якщо залишкового газу достатньо, буде викликано функцію зворотного виклику контракту запитувача.
У зворотному виклику ще раз перевіряється дійсність запиту та обробляються повернені дані відповідно до конкретних потреб. Наприклад, для оракул-машини ціни може бути оновлено поточні дані ціни.
Для розробників певний проєкт оракул-машини також пропонує зручніший інтерфейс для запиту цін. Кожна торгова пара має незалежний агрегатор цін, розробники можуть безпосередньо викликати ці інтерфейси для отримання останніх даних про ціни, не вказуючи URL джерела даних. Ці інтерфейси зазвичай включають функції запиту точності, опису, версії, історичних даних та останніх даних, що значно спрощує процес розробки.
Варто відзначити, що в більшості випадків контракти можуть лише читати останню ціну. Крім того, для торгових пар, що оцінюються в доларах США, точність цін зазвичай уніфікована на 8 знаків, що дозволяє уникнути проблем з обробкою відмінностей у точності різних токенів.