Интеграция с Band Protocol (оракулы)
Band Protocol — кросс-чейн оракул поверх BandChain — специализированного blockchain на Cosmos SDK оптимизированного для oracle данных. В отличие от Chainlink и Pyth, Band не просто поставляет ценовые данные — он позволяет создавать кастомные oracle scripts на Owanscript (OWasm) для любых верифицируемых данных.
Архитектура Band Protocol
BandChain: отдельный blockchain где validators выполняют data requests. Validators запрашивают данные с внешних API, агрегируют, публикуют результат on-chain.
Oracle Scripts: Owanscript программы на BandChain определяющие как агрегировать данные. Аналог Chainlink custom jobs.
Data Sources: верифицированные источники данных на BandChain (CoinGecko, Binance, CryptoCompare).
IBC + Bridges: результаты оракулов передаются на другие chain через IBC (для Cosmos) или через Bridge контракты (для EVM).
EVM интеграция
Standard Reference Data
Для стандартных цен (BTC/USD, ETH/USD, etc.):
interface IStdReference {
struct ReferenceData {
uint256 rate; // base/quote exchange rate (18 decimals)
uint256 lastUpdatedBase; // last update time for base symbol
uint256 lastUpdatedQuote; // last update time for quote symbol
}
function getReferenceData(string memory _base, string memory _quote)
external view returns (ReferenceData memory);
function getReferenceDataBulk(
string[] memory _bases,
string[] memory _quotes
) external view returns (ReferenceData[] memory);
}
contract BandConsumer {
IStdReference ref;
constructor(IStdReference _ref) {
ref = _ref;
}
function getPrice(string memory symbol) external view returns (uint256) {
IStdReference.ReferenceData memory data = ref.getReferenceData(symbol, "USD");
// Проверка freshness
require(block.timestamp - data.lastUpdatedBase < 3600, "Stale price");
return data.rate; // 18 decimals
}
}
Кастомный Oracle Script
Преимущество Band — custom data запросы:
# Oracle script на BandChain (Python-like OBI)
# Запрашивает любые данные с внешних API
def execute(params: Input) -> Output:
rates = []
for source in DATA_SOURCES:
rate = fetch_price(source, params.symbol)
rates.append(rate)
# Медиана от всех источников
return Output(rate=median(rates))
Cosmos интеграция через IBC
Если ваш протокол на Cosmos-совместимой сети (Osmosis, Juno, Terra 2.0) — нативная IBC интеграция:
// Cosmos SDK module
import bandoracle "github.com/bandprotocol/chain/x/oracle/types"
// Отправить oracle request через IBC
msg := &bandoracle.MsgRequestData{
OracleScriptID: 37, // BTC price script
Calldata: encodedParams,
AskCount: 4,
MinCount: 3,
ClientID: "your-client-id",
}
Сравнение с Chainlink
| Аспект | Chainlink | Band Protocol |
|---|---|---|
| Модель | Push (on-chain updates) | Pull via bridge |
| Кастомизация | Ограниченная | Высокая (oracle scripts) |
| Кросс-чейн | Через CCIP | Нативно через IBC |
| TVL secured | $100B+ | $5B+ |
| Cosmos ecosystem | Слабо | Нативно |
Band Protocol — хороший выбор для Cosmos экосистемы и кастомных data feeds. Для Ethereum mainnet DeFi — Chainlink остаётся стандартом.
Интеграция Band standard reference data — несколько часов. Кастомный oracle script — 1-2 недели.







