메인 콘텐츠로 건너뛰기

State

Params

oracle module parameter입니다.

PriceState

PriceState는 모든 oracle type에 대해 cumulative price와 최신 가격을 timestamp와 함께 관리하는 공통 타입입니다.
여기서
  • Price는 정규화된 decimal price를 나타냅니다.
  • CumulativePrice는 oracle price feed 생성 시점부터 해당 oracle price feed에 대한 cumulative price를 나타냅니다.
  • Timestamp는 price state가 relay된 block time을 나타냅니다.
CumulativePrice 값은 Uniswap V2 Oracle에서 설정한 규칙을 따르며, module이 두 임의의 block time 간격 (t1, t2) 사이의 Time-Weighted Average Price (TWAP)를 계산할 수 있게 합니다. TWAP=CumulativePrice2CumulativePrice1Timestamp2Timestamp1\mathrm{TWAP = \frac{CumulativePrice_2 - CumulativePrice_1}{Timestamp_2 - Timestamp_1}}

Band

주어진 symbol에 대한 Band price 데이터는 다음과 같이 표현되고 저장됩니다:
  • BandPriceState: 0x01 | []byte(symbol) -> ProtocolBuffer(BandPriceState)
Rate는 Band chain에서 얻은 Symbol에 대한 원시 USD rate이며 1e9로 스케일링됩니다 (예: 1.42 가격은 1420000000). PriceState는 정규화된 decimal price를 가집니다 (예: 1.42). Band relayer는 다음과 같이 주소별로 저장됩니다.
  • BandRelayer: 0x02 | RelayerAddr -> []byte{}

Band IBC

이 섹션에서는 IBC를 통해 Band chain에 연결하여 가격을 유지하기 위한 모든 state 관리에 대해 설명합니다.
  • LatestClientID는 Band IBC packet에 대한 고유한 clientID를 관리하기 위해 유지됩니다. Band chain에 price request packet을 보낼 때 1씩 증가합니다.
  • LatestClientID: 0x32 -> Formated(LatestClientID)
  • LatestRequestID는 고유한 BandIBCOracleRequests를 관리하기 위해 유지됩니다. 새로운 BandIBCOracleRequest를 생성할 때 1씩 증가합니다.
  • LatestRequestID: 0x36 -> Formated(LatestRequestID)
  • 주어진 symbol에 대한 Band IBC price 데이터는 다음과 같이 저장됩니다:
  • BandPriceState: 0x31 | []byte(symbol) -> ProtocolBuffer(BandPriceState)
  • BandIBCCallDataRecord는 Band chain에 price request packet을 보낼 때 다음과 같이 저장됩니다:
  • CalldataRecord: 0x33 | []byte(ClientId) -> ProtocolBuffer(CalldataRecord)
  • BandIBCOracleRequest는 governance가 전송할 oracle request를 구성할 때 다음과 같이 저장됩니다:
  • BandOracleRequest: 0x34 | []byte(RequestId) -> ProtocolBuffer(BandOracleRequest)
  • BandIBCParams는 다음과 같이 저장되며 governance에 의해 구성됩니다:
  • BandIBCParams: 0x35 -> ProtocolBuffer(BandIBCParams)
BandIBCParams는 Band chain과의 IBC 연결에 대한 정보를 포함합니다.
참고:
  1. BandIbcEnabled는 Band IBC 연결 상태를 설명합니다.
  2. IbcSourceChannel, IbcVersion, IbcPortId는 IBC 연결에 필요한 공통 parameter입니다.
  3. IbcRequestInterval는 Injective chain의 beginblocker에서 자동으로 트리거되는 자동 price fetch request interval을 설명합니다.

Coinbase

주어진 symbol(“key”)에 대한 Coinbase price 데이터는 다음과 같이 표현되고 저장됩니다:
  • CoinbasePriceState: 0x21 | []byte(key) -> CoinbasePriceState
Coinbase price oracle에 대한 자세한 내용은 Coinbase API docs 및 이 설명 blog post에서 확인할 수 있습니다. Value는 Coinbase에서 얻은 원시 USD price 데이터이며 1e6으로 스케일링됩니다 (예: 1.42 가격은 1420000). PriceState는 정규화된 decimal price를 가집니다 (예: 1.42).

Pricefeed

주어진 base quote pair에 대한 Pricefeed price 데이터는 다음과 같이 표현되고 저장됩니다:
  • PriceFeedInfo: 0x11 + Keccak256Hash(base + quote) -> PriceFeedInfo
  • PriceFeedPriceState: 0x12 + Keccak256Hash(base + quote) -> PriceFeedPriceState
  • PriceFeedRelayer: 0x13 + Keccak256Hash(base + quote) + relayerAddr -> relayerAddr

Provider

Provider price feed는 다음과 같이 표현되고 저장됩니다:
  • ProviderInfo: 0x61 + provider + @@@ -> ProviderInfo
  • ProviderIndex: 0x62 + relayerAddress -> provider
  • ProviderPrices: 0x63 + provider + @@@ + symbol -> ProviderPriceState

Pyth

Pyth price는 다음과 같이 표현되고 저장됩니다:
  • PythPriceState: 0x71 + priceID -> PythPriceState

Stork

Stork price는 다음과 같이 표현되고 저장됩니다:
  • StorkPriceState: 0x81 + symbol -> PythPriceState
Stork publisher는 다음과 같이 표현되고 저장됩니다:
  • Publisher: 0x82 + stork_publisher -> publisher
마지막 수정일 2026년 3월 30일