Технічний аналіз Оракул-машини: на прикладі Chainlink
У екосистемі блокчейн, оракул-машина відіграє надзвичайно важливу роль інфраструктури, будучи мостом між смарт-контрактами та зовнішнім світом. Його основна функція полягає в наданні зовнішніх даних для смарт-контрактів на блокчейні.
Наприклад, якщо ми розгорнемо смарт-контракт в мережі Ethereum, який потребує отримання даних про обсяги торгівлі нафтою за певний день, оскільки сам контракт не може безпосередньо отримати інформацію з реального світу поза ланцюгом, в цьому випадку необхідне втручання оракул-машини. У такій ситуації смарт-контракт запише необхідну інформацію про дату в журнал подій. Після цього зовні запуститься процес моніторингу, щоб підписатися на цю подію. Коли буде виявлено відповідний запит, цей процес передасть дані про обсяги торгівлі нафтою за вказану дату в смарт-контракт, подавши транзакцію в ланцюг та викликавши певний метод контракту.
! Chainlink (частина 1) серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-ced3348559da0aabbf1c67c4d84ddc88.webp)
Серед численних рішень оракулів, Chainlink вирізняється своєю децентралізованою характеристикою та часткою на ринку. Він створив економічно стимульовану екосистему за допомогою токену LINK, що забезпечує постачання даних з реального світу до блокчейну найбезпечнішим та надійним способом. Механізм активації оракулів Chainlink реалізується через перекази токенів LINK, а LINK є контрактом стандарту ERC677 на основі мережі Ethereum.
! Chainlink (частина 1) із серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-30dffd84ae22b9fa8f93929cd523ef99.webp0192837465674839201
Стандарт ERC677 додає метод transferAndCall на базі ERC20, що забезпечує специфічні потреби бізнес-сценаріїв Оракул-машини, реалізуючи інтеграцію платежів і запитів на послуги. Коли користувач викликає transferAndCall для переказу, окрім звичайних операцій переказу ERC20, також перевіряється, чи є адреса отримувача адресою контракту, і якщо так, то викликається метод onTokenTransfer цієї адреси.
! Chainlink Частина 1 серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp(
У дизайні Chainlink метод onTokenTransfer контракту ораклу виконує ряд перевірок безпеки, включаючи перевірку, чи є переказ токеном LINK, перевірку відповідності довжини даних, перевірку селектора функції тощо. Після цих перевірок контракт генерує унікальний requestId, встановлює термін дії запиту та викликає подію OracleRequest. Ця подія містить детальні дані запиту, закодовані у форматі CBOR (Стиснуте двійкове уявлення об'єкта).
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-d05f88f78a86510920ca9cb9cb97fcd6.webp(
Після отримання події OracleRequest, поза ланцюговий вузол аналізує інформацію запиту, здійснює виклик API для отримання необхідних даних, а потім, викликавши метод fulfillOracleRequest оракулу, передає дані в ланцюг. Цей процес включає в себе ряд етапів перевірки, щоб забезпечити дійсність і безпеку даних. Врешті-решт, контракт оракулу викликає функцію зворотного виклику контракту запитувача, завершуючи весь процес запиту та відповіді на дані.
! Chainlink Частина 1 серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp(
Для розробників Chainlink також пропонує зручнішу службу цінових оракулів. Кожна торговельна пара має незалежний Price Feed (також відомий як Aggregator), який насправді є екземпляром контракту AggregatorProxy. Ці контракти надають такі методи, як decimals)(, description)(, version)(, getRoundData)( та latestRoundData)(, що дозволяє розробникам легко отримувати необхідні дані про ціни.
![Оракул-машина детальна серія про Chainlink (частина 1)])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(
У більшості випадків застосування контракти в основному потребують отримання останньої ціни, що можна реалізувати, викликавши метод latestRoundData)(. Важливо зазначити, що для торгових пар, ціна яких виражена в USD, точність зазвичай уніфікована на 8 знаків після коми, що спрощує складність обробки точності між різними токенами.
Завдяки цьому дизайну Chainlink не лише надає гнучкі послуги оракул-машини, але й забезпечує розробників зручним доступом до цінових даних, значно спрощуючи процес взаємодії блокчейн-додатків з даними зовнішнього світу.
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-bb84d77f358852f47e9adf3e74ba5bf9.webp(
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
17 лайків
Нагородити
17
3
Поділіться
Прокоментувати
0/400
MysteriousZhang
· 14год тому
Оракул-машина ще гірше, ніж просто запитати Галактичну AE
Аналіз технології оракул-машини Chainlink: міст між смартконтрактами та реальним світом
Технічний аналіз Оракул-машини: на прикладі Chainlink
У екосистемі блокчейн, оракул-машина відіграє надзвичайно важливу роль інфраструктури, будучи мостом між смарт-контрактами та зовнішнім світом. Його основна функція полягає в наданні зовнішніх даних для смарт-контрактів на блокчейні.
Наприклад, якщо ми розгорнемо смарт-контракт в мережі Ethereum, який потребує отримання даних про обсяги торгівлі нафтою за певний день, оскільки сам контракт не може безпосередньо отримати інформацію з реального світу поза ланцюгом, в цьому випадку необхідне втручання оракул-машини. У такій ситуації смарт-контракт запише необхідну інформацію про дату в журнал подій. Після цього зовні запуститься процес моніторингу, щоб підписатися на цю подію. Коли буде виявлено відповідний запит, цей процес передасть дані про обсяги торгівлі нафтою за вказану дату в смарт-контракт, подавши транзакцію в ланцюг та викликавши певний метод контракту.
! Chainlink (частина 1) серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-ced3348559da0aabbf1c67c4d84ddc88.webp)
Серед численних рішень оракулів, Chainlink вирізняється своєю децентралізованою характеристикою та часткою на ринку. Він створив економічно стимульовану екосистему за допомогою токену LINK, що забезпечує постачання даних з реального світу до блокчейну найбезпечнішим та надійним способом. Механізм активації оракулів Chainlink реалізується через перекази токенів LINK, а LINK є контрактом стандарту ERC677 на основі мережі Ethereum.
! Chainlink (частина 1) із серії Oracle Explainer](https://img-cdn.gateio.im/webp-social/moments-30dffd84ae22b9fa8f93929cd523ef99.webp0192837465674839201
Стандарт ERC677 додає метод transferAndCall на базі ERC20, що забезпечує специфічні потреби бізнес-сценаріїв Оракул-машини, реалізуючи інтеграцію платежів і запитів на послуги. Коли користувач викликає transferAndCall для переказу, окрім звичайних операцій переказу ERC20, також перевіряється, чи є адреса отримувача адресою контракту, і якщо так, то викликається метод onTokenTransfer цієї адреси.
! Chainlink Частина 1 серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp(
У дизайні Chainlink метод onTokenTransfer контракту ораклу виконує ряд перевірок безпеки, включаючи перевірку, чи є переказ токеном LINK, перевірку відповідності довжини даних, перевірку селектора функції тощо. Після цих перевірок контракт генерує унікальний requestId, встановлює термін дії запиту та викликає подію OracleRequest. Ця подія містить детальні дані запиту, закодовані у форматі CBOR (Стиснуте двійкове уявлення об'єкта).
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-d05f88f78a86510920ca9cb9cb97fcd6.webp(
Після отримання події OracleRequest, поза ланцюговий вузол аналізує інформацію запиту, здійснює виклик API для отримання необхідних даних, а потім, викликавши метод fulfillOracleRequest оракулу, передає дані в ланцюг. Цей процес включає в себе ряд етапів перевірки, щоб забезпечити дійсність і безпеку даних. Врешті-решт, контракт оракулу викликає функцію зворотного виклику контракту запитувача, завершуючи весь процес запиту та відповіді на дані.
! Chainlink Частина 1 серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp(
Для розробників Chainlink також пропонує зручнішу службу цінових оракулів. Кожна торговельна пара має незалежний Price Feed (також відомий як Aggregator), який насправді є екземпляром контракту AggregatorProxy. Ці контракти надають такі методи, як decimals)(, description)(, version)(, getRoundData)( та latestRoundData)(, що дозволяє розробникам легко отримувати необхідні дані про ціни.
![Оракул-машина детальна серія про Chainlink (частина 1)])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(
У більшості випадків застосування контракти в основному потребують отримання останньої ціни, що можна реалізувати, викликавши метод latestRoundData)(. Важливо зазначити, що для торгових пар, ціна яких виражена в USD, точність зазвичай уніфікована на 8 знаків після коми, що спрощує складність обробки точності між різними токенами.
Завдяки цьому дизайну Chainlink не лише надає гнучкі послуги оракул-машини, але й забезпечує розробників зручним доступом до цінових даних, значно спрощуючи процес взаємодії блокчейн-додатків з даними зовнішнього світу.
! Chainlink (частина 1) із серії Oracle Explainer])https://img-cdn.gateio.im/webp-social/moments-bb84d77f358852f47e9adf3e74ba5bf9.webp(