Ключова роль системи оракулів у технології блокчейн
Оракул-машина є важливою інфраструктурою в області Блокчейн, яка може надавати зовнішню інформацію для смарт-контрактів на ланцюгу. Як проміжне програмне забезпечення, що з'єднує смарт-контракти та світ поза ланцюгом, оракул-машина відіграє незамінну роль в екосистемі Блокчейн, її основна функція полягає в наданні необхідних зовнішніх даних для смарт-контрактів.
Наприклад, якщо ми розгорнемо смарт-контракт на Ethereum, який потребує отримати дані про обсяги торгівлі нафтою за певну дату. Оскільки сам смарт-контракт не може безпосередньо отримувати дані з реального світу поза блокчейном, для реалізації цієї функції необхідно використовувати Оракул-машину. Конкретний процес виглядає так: смарт-контракт записує обсяги торгівлі нафтою за потрібну дату в журнал подій, після чого запускається процес, який моніторить цей журнал подій. Коли виявляється відповідний запит, цей процес викликає відповідний метод контракту, подаючи транзакцію на блокчейні, і передає інформацію про обсяги торгівлі нафтою за задану дату в смарт-контракт.
Серед численних проектів оракулів Chainlink займає найбільшу частку ринку. Chainlink — це децентралізована мережа оракулів, що має на меті надавати блокчейну дані з реального світу найбезпечнішим і надійним способом. Окрім реалізації основних функцій оракулів, Chainlink також побудував екосистему навколо токена LINK, що формує позитивний цикл через економічні стимули. У мережі Chainlink оракульні послуги потрібно активувати шляхом передачі токенів LINK, а LINK є токеном ERC677 на Ethereum. Функції оракулів, реалізовані на базі токена LINK, належать до моделі запит/відповідь.
! Chainlink Частина 1 серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp)
Стандарт ERC677 додає метод transferAndCall на базі ERC20, об'єднуючи платіж і запит на послугу в один, краще задовольняючи вимоги бізнес-сценаріїв Оракул-машини. Коли користувач викликає transferAndCall для переказу, окрім звичайного переказу ERC20, якщо отримувачем є адреса контракту, також буде викликано метод onTokenTransfer цієї адреси.
У процесі запиту oracle в ланцюзі, коли споживач оракула використовує метод transferAndCall для оплати зборів та запиту послуги, метод onTokenTransfer оракул-контракту спочатку виконує ряд перевірок безпеки, включаючи перевірку, чи є переказ токеном LINK, перевірку відповідності довжини запитуваних даних, перевірку селектора функцій тощо. Лише після цих перевірок буде викликано метод oracleRequest оракул-контракту через deleGatecall.
! Chainlink Частина 1 серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp)
метод oracleRequest генерує унікальний requestId, встановлює час закінчення запиту та записує відповідну інформацію в мапу commitments. Найважливіше, що він викликає подію OracleRequest, яка містить дані запиту. Дані в цій події зазвичай представлені у форматі CBOR( для зручності розбору та обробки вузлами поза ланцюгом.
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(
Вузли, що знаходяться поза блокчейном, під час відповіді на запит викликають метод fulfillOracleRequest. Цей метод спочатку проводить ряд перевірок, включаючи перевірку прав виклику, перевірку дійсності запиту тощо. Після успішної перевірки оновлюється кількість токенів, які можна отримати, видаляється відповідний запис про зобов'язання, і в кінцевому підсумку викликається функція зворотного виклику контракту запитувача.
![Оракул-машина детальний опис серії Chainlink (частина 1)])https://img-cdn.gateio.im/webp-social/moments-bb84d77f358852f47e9adf3e74ba5bf9.webp(
Для розробників, якщо потрібно використовувати наявні дані про ціни валютних пар, можна безпосередньо викликати інтерфейс Price Feed, наданий Chainlink. Кожна валютна пара має незалежний Price Feed ), також відомий як Aggregator (, насправді є контрактом AggregatorProxy. Ці інтерфейси надають можливості отримувати точність ціни, опис, номер версії, а також останні дані про ціни тощо. У більшості сценаріїв застосування контракт може лише зчитувати останню ціну, викликавши метод latestRoundData )(. Варто зазначити, що валютні пари, що оцінюються в доларах США, зазвичай використовують єдину точність 8 знаків, що спрощує обробку точності між різними токенами.
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-527bd8714534f5f06ccdd9afe40b253a.webp(
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Оракул-машина система: Блокчейн та ключовий міст між реальним світом
Ключова роль системи оракулів у технології блокчейн
Оракул-машина є важливою інфраструктурою в області Блокчейн, яка може надавати зовнішню інформацію для смарт-контрактів на ланцюгу. Як проміжне програмне забезпечення, що з'єднує смарт-контракти та світ поза ланцюгом, оракул-машина відіграє незамінну роль в екосистемі Блокчейн, її основна функція полягає в наданні необхідних зовнішніх даних для смарт-контрактів.
Наприклад, якщо ми розгорнемо смарт-контракт на Ethereum, який потребує отримати дані про обсяги торгівлі нафтою за певну дату. Оскільки сам смарт-контракт не може безпосередньо отримувати дані з реального світу поза блокчейном, для реалізації цієї функції необхідно використовувати Оракул-машину. Конкретний процес виглядає так: смарт-контракт записує обсяги торгівлі нафтою за потрібну дату в журнал подій, після чого запускається процес, який моніторить цей журнал подій. Коли виявляється відповідний запит, цей процес викликає відповідний метод контракту, подаючи транзакцію на блокчейні, і передає інформацію про обсяги торгівлі нафтою за задану дату в смарт-контракт.
Серед численних проектів оракулів Chainlink займає найбільшу частку ринку. Chainlink — це децентралізована мережа оракулів, що має на меті надавати блокчейну дані з реального світу найбезпечнішим і надійним способом. Окрім реалізації основних функцій оракулів, Chainlink також побудував екосистему навколо токена LINK, що формує позитивний цикл через економічні стимули. У мережі Chainlink оракульні послуги потрібно активувати шляхом передачі токенів LINK, а LINK є токеном ERC677 на Ethereum. Функції оракулів, реалізовані на базі токена LINK, належать до моделі запит/відповідь.
! Chainlink Частина 1 серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp)
Стандарт ERC677 додає метод transferAndCall на базі ERC20, об'єднуючи платіж і запит на послугу в один, краще задовольняючи вимоги бізнес-сценаріїв Оракул-машини. Коли користувач викликає transferAndCall для переказу, окрім звичайного переказу ERC20, якщо отримувачем є адреса контракту, також буде викликано метод onTokenTransfer цієї адреси.
У процесі запиту oracle в ланцюзі, коли споживач оракула використовує метод transferAndCall для оплати зборів та запиту послуги, метод onTokenTransfer оракул-контракту спочатку виконує ряд перевірок безпеки, включаючи перевірку, чи є переказ токеном LINK, перевірку відповідності довжини запитуваних даних, перевірку селектора функцій тощо. Лише після цих перевірок буде викликано метод oracleRequest оракул-контракту через deleGatecall.
! Chainlink Частина 1 серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp)
метод oracleRequest генерує унікальний requestId, встановлює час закінчення запиту та записує відповідну інформацію в мапу commitments. Найважливіше, що він викликає подію OracleRequest, яка містить дані запиту. Дані в цій події зазвичай представлені у форматі CBOR( для зручності розбору та обробки вузлами поза ланцюгом.
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(
Вузли, що знаходяться поза блокчейном, під час відповіді на запит викликають метод fulfillOracleRequest. Цей метод спочатку проводить ряд перевірок, включаючи перевірку прав виклику, перевірку дійсності запиту тощо. Після успішної перевірки оновлюється кількість токенів, які можна отримати, видаляється відповідний запис про зобов'язання, і в кінцевому підсумку викликається функція зворотного виклику контракту запитувача.
![Оракул-машина детальний опис серії Chainlink (частина 1)])https://img-cdn.gateio.im/webp-social/moments-bb84d77f358852f47e9adf3e74ba5bf9.webp(
Для розробників, якщо потрібно використовувати наявні дані про ціни валютних пар, можна безпосередньо викликати інтерфейс Price Feed, наданий Chainlink. Кожна валютна пара має незалежний Price Feed ), також відомий як Aggregator (, насправді є контрактом AggregatorProxy. Ці інтерфейси надають можливості отримувати точність ціни, опис, номер версії, а також останні дані про ціни тощо. У більшості сценаріїв застосування контракт може лише зчитувати останню ціну, викликавши метод latestRoundData )(. Варто зазначити, що валютні пари, що оцінюються в доларах США, зазвичай використовують єдину точність 8 знаків, що спрощує обробку точності між різними токенами.
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-527bd8714534f5f06ccdd9afe40b253a.webp(