Інтеграція Chainlink (Оракули)
Chainlink — de facto стандарт цінових оракулів у DeFi. $100B+ забезпечено Chainlink price feeds в Aave, Compound, Synthetix та сотнях інших протоколів. Інтеграція Chainlink — обов'язковий навик для будь-якого DeFi розробника.
Price Feeds: базова інтеграція
Chainlink Data Feeds — агреговані ціни від мережі незалежних node operators.
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
contract PriceConsumer {
AggregatorV3Interface internal priceFeed;
constructor() {
// ETH/USD на Ethereum mainnet
priceFeed = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419);
}
function getLatestPrice() public view returns (int256) {
(
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
) = priceFeed.latestRoundData();
// Перевірити staleness
require(updatedAt >= block.timestamp - 3600, "Stale price");
require(answer > 0, "Invalid price");
return answer; // 8 decimals для USD feeds
}
}
Перевірка staleness — обов'язкова: якщо updatedAt надто давно — оракул не оновлювався. Краще revert на стейл цені, ніж використовувати застарілі дані.
Decimals та нормалізація
Різні feeds мають різні decimals:
- ETH/USD: 8 decimals (ціна × 10^8)
- ETH/BTC: 8 decimals
- USDC/ETH: 18 decimals
Завжди читайте priceFeed.decimals() та нормалізуйте.
Chainlink VRF (Verifiable Random Function)
Для програм, що вимагають верифіковану випадковість: NFT mint, лотереї, ігри.
Chainlink Automation
Автоматизація on-chain завдань без централізованого сервісу: децентралізована мережа keepers викликає performUpkeep коли умова виконана.
Chainlink Automation — заміна cron-ботам. Децентралізована мережа keeper викликає функцію коли умова виконана.
Інтеграція базових price feeds — кілька годин. VRF та Automation — 1-3 дні для production-ready реалізації.







