상세 컨텐츠

본문 제목

체인링크 데이터 피드 Chainlink Data Feeds

Blockchain/Oracle - Chainlink

by Yongari 2023. 4. 13. 23:13

본문

체인링크 데이터 피드는 스마트 콘트랙트를 자산 가격, 예치금 잔액, NFT 플로어 가격, L2 시퀀서 상태와 같은 실제 데이터에 연결하는 가장 빠른 방법입니다.

이미 프로젝트를 시작했고 체인링크를 통합해야 하는 경우, @chainlink/contracts NPM 패키지를 사용해 기존 프로젝트에 체인링크를 추가할 수 있습니다.

 

Types of data feeds

Data feeds provide many different types of data for your applications.

 

Price Feeds

스마트 콘트랙트는 자산 가격과 같은 데이터에 실시간으로 반응하는 경우가 많습니다. 이는 탈중앙 금융에서 특히 그렇습니다.

예를 들어 신세틱스는 데이터 피드를 사용해 파생상품 플랫폼의 가격을 결정합니다. AAVE와 같은 대출 및 차용 플랫폼은 데이터 피드를 사용해 담보의 총 가치를 보장합니다.

데이터 피드는 탈중앙화 데이터 모델과 오프체인 보고의 조합을 사용해 많은 데이터 소스를 집계하고 온체인에 게시합니다.

가격 피드 사용법을 알아보려면 가격 피드 문서를 참조하시기 바랍니다.

사용 가능한 네트워크와 주소 목록은 데이터 피드 콘트랙트 주소 페이지를 참조하세요.

 

 

Proof of Reserve Feeds

보유량 증명 피드는 스테이블코인, 랩드 자산, 실물 자산의 보유량 현황을 제공합니다. 보유량 증명 피드는 가격 피드와 비슷하게 작동하지만 온스(oz) 또는 토큰 수와 같은 측정 단위로 답변을 제공합니다.

준비금 증명 피드에 대해 자세히 알아보려면 준비금 증명 문서를 참조하세요.

사용 가능한 네트워크와 주소 목록은 예치금 계약 주소 증명 페이지를 참조하세요.

 

NFT Floor Price Feeds

NFT 플로어 가격 피드는 컬렉션에서 사용 가능한 가장 낮은 가격의 NFT 가격을 제공합니다. 이러한 피드는 가격 피드와 유사하게 작동하므로 AggregatorV3Interface.sol 컨트랙트를 사용하여 가격 답을 검색할 수 있습니다.

자세한 내용은 NFT 플로어 가격 피드 문서를 참조하세요.

사용 가능한 네트워크와 주소 목록은 NFT 플로어 가격 계약 주소 페이지를 참조하세요.

 

 

L2 sequencer uptime feeds

L2 시퀀서 피드는 특정 시점에 L2 네트워크에서 마지막으로 알려진 시퀀서의 상태를 추적합니다. 이를 통해 고객이 이러한 이벤트에 대응할 수 있는 유예 기간을 제공함으로써 대량 청산을 방지할 수 있습니다.
L2 시퀀서 가동 시간 피드 피드를 사용하는 방법을 알아보려면 L2 시퀀서 가동 시간 피드 문서를 참조하세요.

 

 

Components of a data feed

 

데이터 피드는 분산형 오라클 네트워크의 한 예이며 다음과 같은 구성 요소를 포함합니다:

Consumer(소비자): 소비자는 데이터 피드를 사용하는 온체인 또는 오프체인 애플리케이션입니다. 소비자 콘트랙트는 AggregatorV3 인터페이스를 사용하여 프록시 콘트랙트의 함수를 호출하고 어그리게이터 콘트랙트에서 정보를 검색합니다. AggregatorV3 인터페이스에서 사용할 수 있는 전체 함수 목록은 데이터 피드 API 참조를 참조하세요.

Proxy contract(프록시 컨트랙트): 프록시 컨트랙트는 특정 데이터 피드에 대한 어그리게이터를 가리키는 온체인 프록시입니다. 프록시를 사용하면 컨트랙트를 소비하는 서비스에 대한 서비스 중단 없이 기본 어그리게이터를 업그레이드할 수 있습니다. 프록시 컨트랙트는 데이터 피드마다 다를 수 있지만, Github의 AggregatorProxy.sol 컨트랙트가 일반적인 예입니다.

Aggregator contract(애그리게이터 컨트랙트): 애그리게이터는 오라클 네트워크에서 주기적으로 데이터 업데이트를 수신하는 컨트랙트입니다. 애그리게이터는 집계된 데이터를 온체인에 저장하여 소비자가 동일한 트랜잭션 내에서 데이터를 검색하고 그에 따라 행동할 수 있도록 합니다. 대부분의 어그리게이터 콘트랙트에서 사용할 수 있는 함수와 변수의 전체 목록은 데이터 피드 API 참조를 참조하세요.

 

기존 데이터 피드를 사용하는 소비자 계약을 생성하는 방법을 알아보려면 데이터 피드 사용 문서를 참조하세요.

Reading proxy and aggregator configurations

프록시 및 어그리게이터 컨트랙트는 모두 온체인에 있으므로 ABI를 통해 변수를 읽거나 네트워크에 대한 블록체인 탐색기를 사용하여 현재 구성을 확인할 수 있습니다. 예를 들어, 이더스캔을 사용하여 이더리움 네트워크의 BTC/USD 프록시 구성을 확인할 수 있습니다.

BTC/USD 프록시 구성을 읽으면 해당 컨트랙트에 대해 공개적으로 액세스할 수 있는 모든 함수 및 변수를 쿼리할 수 있으며, 여기에는 aggregator 주소, latestRoundData() 함수, latestAnswer  변수, owner 주소, latestTimestamp 변수 등이 포함됩니다. 프록시 컨트랙트 변수 및 함수에 대한 설명을 보려면 이더스캔에서 특정 데이터 피드의 소스 코드를 참조하세요.

프록시 컨트랙트는 어그리게이터를 가리킵니다. 이를 통해 애그리게이터가 업그레이드되더라도 프록시를 통해 데이터를 검색할 수 있습니다. 프록시 구성에 정의된 어그리게이터 주소를 확인하면 어그리게이터와 해당 구성을 볼 수 있습니다. 예를 들어 이더스캔의 BTC/USD 어그리게이터 컨트랙트를 참조하세요. 이 컨트랙트에는 또 다른 최신 라운드데이터()를 포함한 여러 변수와 함수가 포함되어 있습니다. 어그리게이터 변수와 함수에 대한 설명을 보려면 GitHub 또는 이더스캔의 소스 코드를 참조하세요.

최신RoundData() 함수는 어그리게이터에서 직접 호출할 수 있지만, 어그리게이터의 변경 사항이 애플리케이션에 영향을 미치지 않도록 프록시를 대신 사용하는 것이 좋습니다. 프록시 컨트랙트와 마찬가지로, 애그리게이터 컨트랙트에는 최신 응답 변수, 소유자 주소, 최신 타임스탬프 변수 및 기타 여러 가지가 있습니다.

 

Components of an aggregator

애그리게이터 컨트랙트에는 애플리케이션에 유용할 수 있는 여러 변수와 함수가 있습니다. 각 데이터 피드에 대해 애그리게이터 컨트랙트는 비슷하지만 일부 애그리게이터에는 다른 변수가 있습니다. 애그리게이터에서 typeAndVersion() 함수를 사용하여 어떤 유형의 애그리게이터인지, 어떤 버전이 실행 중인지 식별하세요.

특정 데이터 피드의 작동 방식을 이해하려면 항상 컨트랙트 소스 코드와 구성을 확인하세요. 예를 들어, 아리트럼의 BTC/USD에 대한 어그리게이터 컨트랙트는 다른 네트워크의 어그리게이터와 다릅니다.

일반적으로 어그리게이터 배포에 사용되는 컨트랙트의 예는 GitHub의 libocr 리포지토리를 참조하시기 바랍니다.

대부분의 어그리게이터 콘트랙트에서 사용할 수 있는 함수 및 변수의 전체 목록은 데이터 피드 API 참조를 참조하시기 바랍니다.

 

Updates to proxy and aggregator contracts

오프체인 환경의 역동적인 특성을 수용하기 위해 체인링크 데이터 피드는 수시로 업데이트되어 새로운 기능을 추가하고 토큰 마이그레이션, 프로토콜 리브랜딩, 극단적인 시장 이벤트, 데이터 또는 노드 운영의 업스트림 문제와 같은 외부 요인에 대응합니다.

이러한 업데이트에는 애그리게이터 구성 변경 또는 프록시가 사용하는 애그리게이터의 완전한 교체가 포함됩니다. 프록시를 통해 데이터 피드를 사용하는 경우, 이러한 변경이 진행되는 동안에도 애플리케이션은 계속 작동할 수 있습니다.

프록시 및 애그리게이터 컨트랙트에는 모두 변수와 함수를 변경할 수 있는 권한이 있는 소유자 주소가 있습니다. 예를 들어 이더스캔에서 BTC/USD 프록시 컨트랙트를 읽으면 소유자 주소를 확인할 수 있습니다. 이 주소는 다중 서명 금고(멀티시그)로, 사용자가 검사할 수도 있습니다.

프록시로 읽기 기능을 사용하여 이더스캔에서 다중 서명 컨트랙트를 확인하면 서명할 수 있는 주소 목록과 다중 서명이 소유한 컨트랙트에 대한 작업을 승인하는 데 필요한 서명자 수를 포함하여 다중 서명의 전체 세부 정보를 확인할 수 있습니다.

체인링크 데이터 피드의 다중서명 조율 업그레이드 기능에는 오랜 시간 테스트를 거친 프로세스가 포함되며, 이는 담합 저항성과 개선 사항을 구현하고 외부 조건에 신속하게 대응하는 데 필요한 유연성의 균형을 맞추는 것입니다. 업그레이드 가능성에 대한 접근 방식은 사용자 요구 사항을 충족하기 위해 시간이 지남에 따라 계속 발전할 것입니다.

 

 

Monitoring data feeds

데이터 피드에 의존하는 애플리케이션과 프로토콜을 구축할 때는 극단적인 시장 이벤트, 타사 장소 또는 계약에 대한 악의적인 활동 가능성, 잠재적인 지연 및 중단의 부정적인 영향으로부터 보호하기 위한 모니터링 및 안전 장치를 포함하세요.

데이터 피드가 제공하는 답변의 편차를 기반으로 나만의 모니터링 알림을 생성하세요. 이렇게 하면 잠재적인 문제가 발생할 때 이를 알려주므로 이에 대응할 수 있습니다.

 

 

Check the latest answer against reasonable limits

데이터 피드 애그리게이터에는 최소 답변 및 최대 답변 값이 모두 포함됩니다. 이러한 변수는 애그리게이터가 허용 가능한 값의 합의된 범위를 벗어나 최신 답변을 업데이트하는 것을 방지하지만 애플리케이션이 가장 최근 답변을 읽는 것을 막지는 못합니다.

보고된 답변이 최소 답변 또는 최대 답변에 가까워질 때를 감지하여 경고를 발행하도록 애플리케이션을 구성하여 잠재적인 시장 이벤트에 대응할 수 있도록 하세요. 이와 별도로 극심한 가격 변동성이나 허용 한도를 벗어난 가격을 감지하고 이에 대응하도록 애플리케이션을 구성하세요.

 

Check the timestamp of the latest answer

체인링크 데이터 피드는 스트리밍 데이터를 제공하지 않습니다. 대신, 값이 지정된 임계값을 벗어나거나 하트비트 유휴 시간이 지나면 애그리게이터는 최신 응답을 업데이트합니다. 각 데이터 피드에 대한 하트비트와 편차 값은 data.chain.link 또는 컨트랙트 주소 목록에서 확인할 수 있습니다.

애플리케이션은 최신 타임스탬프 변수를 추적하거나 최신 라운드데이터() 함수의 updatedAt 값을 사용하여 애플리케이션에서 사용할 수 있을 만큼 최신 답변인지 확인해야 합니다. 애플리케이션에서 보고된 응답이 하트비트 내에 또는 애플리케이션에 허용되는 시간 제한 내에 업데이트되지 않은 것을 감지하면 지연의 원인을 파악하는 동안 작업을 일시 중지하거나 다른 작업 모드로 전환합니다.

변동성이 낮은 기간에는 하트비트가 최신 답변으로 업데이트를 트리거합니다. 일부 하트비트는 몇 시간 동안 지속되도록 구성되어 있으므로 애플리케이션에서 타임스탬프를 확인하여 최신 답변이 애플리케이션에 적합한 최신 답변인지 확인해야 합니다.

사용자는 랩드 또는 유동성 스테이킹 자산에 대한 데이터 피드가 기초 자산과 다른 하트비트 및 편차 임계값을 가질 수 있다는 점을 이해하고 애플리케이션을 구축해야 합니다. 하트비트와 편차 임계값은 다른 블록체인에서 동일한 자산에 대해서도 다를 수 있습니다. 공통 분모가 있는 여러 피드의 데이터를 결합하면 사용자가 위험 완화 관행에서 고려해야 하는 오차 범위가 발생할 수 있습니다.

하트비트와 편차 임계값에 대해 자세히 알아보려면 탈중앙화 데이터 모델 페이지를 참조하세요.

 

 

출처:https://docs.chain.link/data-feeds/

 

Chainlink Data Feeds | Chainlink Documentation

Chainlink is the most widely used oracle network for powering universally connected smart contracts, enabling any blockchain to access real-world data & APIs.

docs.chain.link

 

 

관련글 더보기