상세 컨텐츠

본문 제목

체인링크 예치금 피드 - Chaink Proof of Reserve Feeds

Blockchain/Oracle - Chainlink

by Yongari 2023. 4. 14. 09:42

본문

 

 

Proof of Reserve Feeds

 

체인링크 예치금 증명 피드는 여러 자산에 대한 예치금 현황을 제공합니다. 이러한 피드는 다른 데이터 피드를 읽는 것과 동일한 방식으로 사용할 수 있습니다. 가격 피드 주소를 지정하는 대신 읽으려는 Proof of Reserve Feed Address를 지정하세요. 자세한 내용은 Using Data Feeds를 참조하세요.

사용 가능한 예약금 증명 피드 목록을 찾으려면  Proof of Reserve Feed Addresses 페이지를 참조하세요.

 

 

 

Types of Proof of Reserve Feeds

준비금은 크로스체인 자산과 오프체인 자산 모두에 사용할 수 있습니다. 이 분류는 준비금 증명 피드의 다양한 데이터 증명을 설명하며, 이러한 피드의 데이터 품질과 관련된 내재된 시장 위험을 강조하는 데 도움이 됩니다.

준비금은 오프체인 자산과 크로스체인 자산 모두에 사용할 수 있습니다. 토큰 발행자는 여러 가지 방법을 통해 자산의 준비금을 증명합니다.

 

 

 

Off-chain reserves

오프체인 예치금은 외부 어댑터를 통해 API에서 공급받습니다.

 

오프체인 보유고는 다음 방법을 사용하여 데이터를 제공합니다:

Third-party: : 감사자, 회계법인 또는 기타 제3자가 준비금을 증명합니다. 이는 법정자산과 투자 자산을 모두 토큰과 비교하여 보고되는 수치로 결합하는 방식으로 이루어집니다.

Custodian: 예치금 데이터는 은행이나 수탁기관에서 직접 가져옵니다. 수탁자는 자산을 보관하는 은행이나 금고에 직접 액세스할 수 있습니다. 일반적으로 이는 가져온 기초 자산에 추가 평가가 필요하지 않고 단순히 온체인으로 보고될 때 작동합니다.

⚠️ 자체 인증: 토큰 발행자가 호스팅하는 API에서 준비금 데이터를 읽습니다. 자체 증명 피드는 추가적인 위험을 수반합니다.

 

 

 

Cross-chain reserves

크로스 체인 예치금은 예치금이 보관된 네트워크에서 공급됩니다. 체인링크 노드 운영자는 외부 어댑터를 실행하고 소스 체인 클라이언트에 직접 쿼리하여 크로스 체인 예치금을 보고할 수 있습니다. 경우에 따라 복합 어댑터를 사용해 동적 ID 또는 주소 목록으로 준비금을 구성하기도 합니다.

크로스 체인 리저브는 다음 방법을 사용하여 데이터를 제공합니다:

지갑 주소 관리자: 프로젝트는 IPoRAddressList 지갑 주소 관리자 컨트랙트를 사용하며, 어떤 주소를 소유하고 있는지 자체적으로 증명합니다.

지갑 주소: 프로젝트는 자체 호스팅 API를 통해 어떤 주소를 소유하고 있는지 증명합니다.

 

 

Using Proof of Reserve Feeds

다른 데이터 피드를 읽는 것과 같은 방식으로 예약 증거금 피드의 답변을 읽으세요. 가격 피드 주소를 지정하는 대신 읽으려는  Proof of Reserve Feed Address 를 지정하세요. 자세히 알아보려면  Using Data Feeds 페이지를 참조하세요.

솔리디티를 사용하는 스마트 콘트랙트는 데이터 피드에 의해 구현된 외부 기능을 정의하는  AggregatorV3Interface를 참조해야 합니다.

 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract ReserveConsumerV3 {
    AggregatorV3Interface internal reserveFeed;

    /**
     * Network: Ethereum Mainnet
     * Aggregator: WBTC PoR
     * Address: 0xa81FE04086865e63E12dD3776978E49DEEa2ea4e
     */
    constructor() {
        reserveFeed = AggregatorV3Interface(
            0xa81FE04086865e63E12dD3776978E49DEEa2ea4e
        );
    }

    /**
     * Returns the latest price
     */
    function getLatestReserve() public view returns (int) {
        // prettier-ignore
        (
            /*uint80 roundID*/,
            int reserve,
            /*uint startedAt*/,
            /*uint timeStamp*/,
            /*uint80 answeredInRound*/
        ) = reserveFeed.latestRoundData();

        return reserve;
    }
}

 

 

관련글 더보기