본문 바로가기
블록체인

Chainlink 기초

by 맑은청이 2021. 5. 23.
반응형

1. 스마트 컨트랙트란 

이더리움에서 주요 기능으로 블록체인에 배포(Deploy) 됐을 때 제 3자의 개입(Third Party)없이 실행할 수 명령어로 어떠한 조건을 만족할 시 자동으로 수행된다. 스마트 컨트랙트의 코드를 입력에 응답하는 형식으로 작성하면 된다. 

 

스마트컨트랙트에서는 이더리움 지갑(wallet)을 사용하여 체인 내 자산(asset)을 저장하고 관리한다. 

여기서 지갑은 일종의 계좌에 접근할 수 있는 비밀번호를 저장하는 장소의 개념인데 인터넷 연결 유무에 따라 핫월렛과 콜드 월렛으로 나뉜다. 

 

2. 스마트 컨트랙트 작성 언어 

이더리움에서 스마트 컨트랙트를 작성하는데 가장 큰 비중을 차지하는 언어는 Solidity이다. 

이는 이더리움 재단에 의해 지속적으로 업데이트가 되고 있다. 

자바스크립트와 유사한 형태를 가지고 있다. 

 

3. 스마트 컨트랙트 코드

스마트 컨트랙트를 구현한 HelloWorld.sol

1) 솔리디티 언어의 버전 정의

해당 코드는 0.6.6 버전을 사용하고 있고 21년 5월 23일 기준으로 0.8.5까지 업데이트가 되었다. 

참고자료 깃허브에서 확인이 가능하다. 

2) 키워드 통해 계약 정의

3) 변수 선언

자바스크립트와 유사한 형태로 '타입, 접근범위, 변수명' 구성된다. 

 

4) 생성자를 통한 초기화

5) 함수 선언

 

아래의 함수는 업데이트 함수이다. 

 

4. 배포(deploying)의 의미 

스마트 컨트랙트를 블록체인에 배포한다는 의미는 코드를 블록체인에 푸시(Push) 하는 과정이고 이때 온체인 주소를 사용한다. (온체인이란 메인 체인 위에서 발생하는 트랜잭션이다 = 메인 블록에 기록되는 트랜잭션) 

이렇게 배포된 코드는 변경할 수가 없다. 

여기서 스마트 컨트랙트(SC) 는 다른 블록체인고 상호 작용할 수 있습니다. 

 

5. 오라클의 중요성 

오라클은 SC를 운용하는데 매우 중요한 역할을 수행합니다. SC를 현실 세계에서 사용하기 위해서는 안정적인 연결이 필요하는데 오라클이 신뢰가능한 데이터 소스로서 현실 세상과 온체인 SC의 다리 역할을 합니다. 

 

6. SC가 오라클을 사용하는 방법

오라클이 가장 많이 사용되는 용도는 가격 피드(Price feed)로 AAVE나 Synthetix와 같은 DeFi 플랫폼은 Chainlink 가격 피드 오라클을 이용하여 실시간 자산 가격을 얻습니다. 

 

즉 체인링크 가격피드는 다수의 독립 체인링크 노드 운영자로 부터 집계된 원소인 것입니다.(many independent Chainlink node operators) 

각 가격 피드에는 온테인 주소와 주소를 읽을(read) 수 있는 함수를 제공합니다.
아래는 이더리움/달러 피드 입니다. 


1) 체인링크 가격피드 사용(Using Chainlink Price Feeds) 

아래는 이더리움의 세가지 테스트넷 중(Ropesten, Kovan, Rinkeby) 하나인 Kovan 테스트 넷을 사용하여 최신 ETH/USD 가격을 얻는 계약입니다.

생성자의 priceFeed = AggregatorV3Interface(주소) 를 확인할 수 있는데 이는 인터페이스다. 

이 인터페이스를 사용하여 상속을 좀 더 유연하게 사용할 수 있다. 이 인터페이스의 latestRounData() 함수를 통해서 getLatestPrice()라는 함수를 쉽게 정의할 수 있다. 

이 인터페이스는 참고 자료의 깃허브를 확인할 수 있다.

AggregatorV3Interface인터페이스의 latestRounData 함수

 

참고 

솔리디티 컴파일러 업데이트 현황

https://github.com/ethereum/solc-bin/blob/gh-pages/bin/list.txt

 

ethereum/solc-bin

This repository contains current and historical builds of the Solidity Compiler. - ethereum/solc-bin

github.com

https://github.com/smartcontractkit/chainlink/blob/develop/evm-contracts/src/v0.6/interfaces/AggregatorV3Interface.sol

 

 

smartcontractkit/chainlink

node of the decentralized oracle network, bridging on and off-chain computation - smartcontractkit/chainlink

github.com

 

반응형