> ## Documentation Index
> Fetch the complete documentation index at: https://injectivelabs-docs-ai-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Concepts

# Concepts

`ocr` 모듈은 Chainlink의 OCR 정보를 검증된 멤버에 의해 온체인에 저장하기 위한 모듈입니다.

Off-chain reporting은 외부 소스에서 데이터를 수집하는 N개의 노드(oracle)로 구성됩니다. Report는 승인 서명을 얻기 위해 oracle 간에 P2P 방식으로 교환됩니다. 노드의 하위 집합(transmitter)은 온체인 `ocr` 모듈에 의해 식별되며, 이들은 모듈에 report를 제출해야 합니다. 체인에 가장 먼저 도달한 transmitter가 가스 비용을 충당하기 위한 추가 보상을 받습니다. 다른 transmitter는 받지 않습니다. 라운드에 참여한 모든 oracle은 보상을 받습니다. `ocr` 모듈은 report의 중앙값을 저장합니다.

## OCR 용어

프로토콜은 주기적으로 **oracle report**를 OCR 모듈에 전송합니다. Reporting 프로토콜은 **pacemaker**, **report generation**, **transmission**의 세 가지 구성 요소로 이루어져 있습니다.

**Pacemaker**

Pacemaker는 **epoch**로 구조화된 report generation 프로세스를 주도합니다. 각 epoch에는 지정된 리더가 있으며, pacemaker는 이 리더에게 report generation 프로토콜을 시작하도록 지시합니다. 리더가 제시간에 유효한 report를 생성하지 않으면, pacemaker는 현재 report generation을 중단하고 새 epoch를 시작합니다.

**Report Generation**

주어진 epoch에서 report generation 프로토콜은 **round**에 진입하여 **observation**을 수집하고 (heartbeat 및 deviation과 같은 조건이 충족되면) 서명된 oracle **report**를 생성합니다. Round는 리더 노드에 의해 제어되며, 리더 노드는 round의 빈도를 제어하고 observation을 수집하며 report를 생성합니다.

**Transmission**

Transmission 프로토콜은 생성된 report를 OCR 모듈에 전송합니다.

## Off-chain OCR 통합

* sdk-go를 사용하여 Injective와 통신하는 수단 제공
* 승인된 oracle 목록과 같은 모듈에서 데이터 읽기
* Msg로 report 제출 (`ContractTransmitter` 구현)
* `OffchainConfigDigester` 구현
* 대상 체인 모듈에서 작동할 서명 생성을 위한 `OnchainKeyring` 구현
* 체인 모듈 구성(거버넌스 승인)의 변경 사항을 추적하기 위한 `ContractConfigTracker` 구현

참고사항:

* Report는 Epoch-Round 방식으로 타임스탬프가 지정됩니다
* `ocr` 모듈은 report에 대한 oracle의 서명을 검증합니다
* `ocr` 모듈은 지급을 위해 report에 기여한 oracle을 기록합니다
* `ocr` 모듈은 observation의 중앙값을 저장합니다
* `ocr` 모듈은 Msg의 첫 번째 제출자에게 추가 보상을 제공합니다

### 통합 개요

Chainlink는 다음을 포함한 여러 [가격 데이터 피드](https://data.chain.link/ethereum/mainnet/stablecoins)를 보유하고 있습니다:

* 80개의 Crypto/USD 쌍 (예: ETH/USD, BTC/USD)
* 17개의 Stablecoin 쌍 (예: USDT/USD, USDC/USD)
* 73개의 ETH 쌍 (예: LINK/ETH)
* 17개의 Forex 쌍 (예: GBP/USD, CNY/USD)

Injective의 파생상품 시장은 다음과 같은 oracle 파라미터를 지정합니다:

* oracleBase (예: BTC)
* oracleQuote (예: USDT)
* oracleType (예: Chainlink)

따라서 Injective의 BTC/USDT 파생상품 시장의 경우, oracleBase는 BTC/USD, oracleQuote는 USDT/USD, oracleType은 Chainlink가 됩니다. 그러면 시장 가격은 BTC/USD 가격을 USDT/USD 가격으로 나누어 BTC/USDT 가격을 얻습니다.
