체인링크
![](/images/thumb/8/89/%EC%84%B8%EB%A5%B4%EA%B2%8C%EC%9D%B4_%EB%82%98%EC%9E%90%EB%A1%9C%ED%94%84.jpg/200px-%EC%84%B8%EB%A5%B4%EA%B2%8C%EC%9D%B4_%EB%82%98%EC%9E%90%EB%A1%9C%ED%94%84.jpg)
![](/images/thumb/d/df/%EC%8A%A4%ED%8B%B0%EB%B8%8C_%EC%97%98%EB%A6%AC%EC%8A%A4.jpg/200px-%EC%8A%A4%ED%8B%B0%EB%B8%8C_%EC%97%98%EB%A6%AC%EC%8A%A4.jpg)
체인링크(Chainlink)는 블록체인의 스마트 계약을 블록체인 외부의 데이터, 결제, API 등에 연결하기 위해 사용하는 블록체인 미들웨어 플랫폼이자 암호화폐이다. 체인링크는 이더리움 기반으로 작동하는 각종 스마트 계약이 현실 세계의 데이터와 쉽게 연결되도록 돕는 역할을 한다. 체인링크는 오라클 문제(oracle problem)를 해결하기 위한 중간자(middleware)이다. 체인링크의 화폐 단위는 LINK이다. 창시자는 세르게이 나자로프(Sergey Nazarov)이며 최초 발행일은 2017년 9월 19일이며 소재지는 미국이다. 퍼블릭체인 및 프로토콜 서비스를 연구 및 개발하며 합의알고리즘은 POW 작업방식을 채택했다. 체인링크는 2014년에 9월 설립된 스마트컨트랙트닷컴의 자회사이다. 2017년 9월에 체인링크 코인 10억개가 발행되었다. 2017년 가트너에 의해 블록체인 애플리케이션 쿨 벤더 업체로 선정되었다. 또한 스위프트(Swift)와 협력하여 '스위프트 스마트 오라클'이라는 기능을 개발했다. 체인링크는 세계경제포럼(World Economic Forum)에서 스마트 계약 기술 업체로 소개되었다.[1]
목차
개요
스마트 계약은 블록체인과 같은 탈중앙화된 인프라이다. 스마트 계약의 특징 중 하나는 조작이 되지 않는다는 것이다. 즉, 스마트 계약을 설계한 사람까지 포함해서 그 누구도 코드를 변경하거나 실행을 방해할 수 없다는 것이다. 역사적으로 보면, 코드로 된 계약은 중앙화된 방식으로 사용돼서 다른 집단에 의한 변경, 종료, 심지어 삭제도 가능했다. 이와는 반대로 스마트 계약의 실행은 모든 집단을 서면 동의서에 묶기 때문에, 새롭고 강력한 신뢰의 관계를 생성함으로써 어느 한 조직의 신뢰에 의존하지 않는 관계를 보장한다. 스마트 계약은 자기검증, 가지실행이라는 기능들이 있기에 디지털 합의를 성립과 관리하는데 우월한 수단을 제공한다. 하지만 이 강력한 신뢰모델은 연결성이라는 새로운 기술적인 문제를 의미한다. 스마트 계약의 실제 적용도는 블록체인 외부의 데이터 피드나 API들에서 가져오는 데이터에 의존한다. 블록체인의 기반이 되는 합의 알고리즘의 알고리즘 때문에 블록체인이 그 대단히 중요한 데이터를 가져오는 것은 불가능하다. 이러한 문제의 답으로 제안하는 것이 바로 보안된 오라클 네트워크인 체인링크다. 체인링크가 다른 오라클 솔루션들과의 다른 점은 완전히 탈중앙화된 네트워크라는 것이다. 이 탈중앙화된 접근은 어느 한 집단의 신뢰의 의존을 제한함으로써 스마트 계약과 API의 엔드투엔드 오퍼레이션까지 조작을 불가능하게 한다. 현재 시용되고 있는 디지털 합의를 대체하려면 스마트 계약을 API 같은 데이터 피드들과 연동을 시키는 기능이 필수적이다. 현재 대부분의 디지털로 자동화된 전통적인 계약상의 동의들은 외부 데이터를 사용해서 계약상의 성능을 검증하고 데이터 아웃풋을 외부 시스템들에 보내야 한다. 스마트 계약이 현재 존재하는 계약상의 알고리즘을 대체하면 같은 데이터 인풋과 아웃풋들의 신뢰도가 더 높은 버전들이 필요할 것이다. 다음 세대의 가능할 수도 있는 스마트 계약과 그것이 필요로 할 데이터들의 예를 들자면, 1) 채권이나 금리 파생상품 같은 유가증권 스마트 계약이 생긴다면 금융시장의 정보들을 가져오는 API를 접속 할 수 있는 권한이 필요할 것이다. 2) 보험 스마트 계약은 그 보험의 관련된 이벤트에 관한 사물인터넷 데이터를 제공하는 데이터 피드가 필요할 것이다. 예를 들면 블록체인 웨어하우스(blockchain warehouse)가 도난당했던 시점에 문이 잠겼었는지, 회사의 방화벽이 작동중이였는지, 아니면 비행기가 제시각에 도착을 했는지이다. 3) 무역 금융 스마트 계약은 계약적인 의무를 만족시키려면 수송품의 GPS 데이터, 공급 사슬 ERP 시스템, 그리고 수송품의 세관정보들을 필요로 할 것이다. 이 예시들이 흔히 일어나는 또 다른 문제는 스마트 계약이 데이터를 블록체인 외부의 시스템들에 전달하지 못하는 점이다. 이 데이터를 전달하려면 유저들이 이미 계정이 있는 전통적인 중앙화된 인프라로 지불 메시지를 보내야 한다. 스마트 계약을 대신해서 데이터를 안전하게 API와 다양한 레거시 시스템으로 전달할 수 있는 체인링크의 기능은 외부와 연동되고 조작이 불가능한 계약의 생성을 가능하게 할 수 있다.
체인링크를 요약하여 설명하면 블록체인에서 구현되는 스마트계약이 데이터 피드, 웹 API 및 전통적인 은행 계좌 지불과 같은 주요 오픈 체인 리소스에 접근 할 수 있게 연결해주고 체인링크는 외부에 있는 데이터를 블록체인으로 들여온다. 또한 블록체인의 정보들을 외부로 내보낼 수 있는 오라클이라는 블록체인 미들웨어를 사용하여 스마트 계약과 이외 리소스 간의 연결을 지원한다.
주요 인물
- 세르게이 나자로프(Sergey Nazarov) : 블록체인의 스마트 계약을 블록체인 외부의 데이터, 결제, API 등에 연결하기 위해 사용하는 블록체인 미들웨어 플랫폼이자 암호화폐인 체인링크(Chainlink)의 창시자이다.[2]
- 스티브 엘리스(Steve Ellis) : 블록체인의 스마트 계약을 블록체인 외부의 데이터, 결제, API 등에 연결하기 위해 사용하는 블록체인 미들웨어 플랫폼이자 암호화폐인 체인링크(Chainlink)의 공동 창시자 겸 기술이사(CTO)이다.
특징
![](/images/thumb/d/d1/%EC%B2%B4%EC%9D%B8%EB%A7%81%ED%81%AC.jpg/400px-%EC%B2%B4%EC%9D%B8%EB%A7%81%ED%81%AC.jpg)
![](/images/thumb/6/61/Chainlink.png/400px-Chainlink.png)
체인링크는 블록체인 중간자로서 중간자 역할을 수행하여 스마트 계약을 외부 시스템이나 API에 쉽게 연결할 수 있도록 해준다는 특징이 있다. 또한 체인링크는 스마트 계약 기술이 적용된 마켓 데이터, 소매가 지불, 이벤트 데이터, 은행 지불과 같은 서비스를 90% 이상 통합적으로 연결해준다는 점에서 차별 점을 가진 블록체인 플랫폼이다. 또한 SWIFT(국제 은행 간 통신협정) 사와 사업적 파트너를 맺고 있다. SWIFT는 수많은 은행들의 연합체라고 이해할 수 있는데 이를 통해 각국의 주요 은행을 묶어 네트워크를 구성하고 은행 상호 간의 지급, 송금업무 및 데이터 통신교환을 할 수 있다. [3]
구조
체인링크의 핵심 기술적 목적은 온체인과 오프체인, 이 두 환경을 연결하는 것이다. 밑에서 체인링크의 구성 요소들의 구조를 하나씩 설명한다. 체인링크는 일단 이더리움에 설계될 것이지만, 현재 가장 많이 쓰이는 스마트 계약 네트워크들 모두를 지원할 수 있기를 의도한다. 체인링크는 온체인과 오프체인 버전 둘 다에서 모듈성을 염두하고 디자인됐다. 미래에 기능성이 더 높은 기술과 경쟁력이 있는 구현성이 생기는 것을 대비해서 체인링크 시스템의 모든 구성요소는 업그레이드가 가능하다.
온체인
체인링크는 오라클 서비스로서, 체인링크 노드들은 유저 계약들이 보낸 데이터 요청이나 질문에 답변한다. 체인링크는 이 계약 요청을 USER-SC라고 표현한다. 체인링크의 계약 요청을 하는 온체인 인터페이스 자체도 온체인 계약이고, 이 인터페이스를 체인링크-SC라고 표현한다.
체인링크-SC 안에는 주 계약 3개로 만들어진 온체인 요소가 있다. 이 계약들은 명성 계약, 순서 매칭 계약, 그리고 집계 계약이다. 명성 계약은 오라클 서비스 제공자의 퍼포먼스 단위를 기록한다. 순서 매칭 계약은 서비스 표준 합의를 하고, SLA 한도들을 기록하고, 오라클 제공사들에게서 경쟁 입찰을 모은다. 다음으로는 명성 계약을 사용해서 오라클 SLA를 완성한다. 집계 계약은 오라클 제공사들의 응답들을 모은 후 체인링크의 마지막 집단적인 결과를 계산하고 오라클 제공사의 퍼포먼스 단위를 명성 계약에 기록을 한다. 체인링크 계약들은 모듈성 있게 디자인 됐으므로, 유저들이 필요한 대로 구성이나 교체를 할 수 있다. 온체인 작업 흐름은 3단계가 있다. 1) 오라클 선택, 2) 데이터 보고, 3) 응답 집계이다.
- 오라클 선택 : 오라클 서비스 구매자는 구매 당시 서비스 표준 합의(SLA)를 이루는 구체적인 요건들을 제시한다. SLA 제안서는 질문의 한도와 구매자가 필요한 오라클의 개수 같은 정보를 포함한다. 추가로, 구매자는 합의에 쓰일 명성 계약과 집계 계약을 요구한다. 구매자들은 온체인에 유지되고 있는 명성과 과거 계약들에서 모은 더 정확한 데이터 집합을 사용해서 오프체인 리스팅 서비스들을 통해 수동으로 오라클들을 분류하고 필터하고 선택할 수 있다. 체인링크의 의도는 체인링크가 이 리스팅 서비스 중 딱 하나만 유지하는 것이다. 이것을 유지함으로써 체인링크에 관련된 기록들을 모으고 등록된 오라클 계약들의 바이너리를 검증할 수 있다. 리스팅들을 생성하는데 사용되는 데이터는 블록체인에서 가져온다. 이로써 대체가 가능한 오라클 리스팅 서비스들을 설계할 수 있을 것이다. 구매자들은 SLA 제안서들을 오프체인 오라클들에게 제출할 것이며, 온체인으로 SLA를 완성하기 전에 합의에 이를 것이다. 수동 매칭은 모든 상황에 가능하지 않다. 예를 들자면, 계약이 오라클 서비스를 데이터 분량에 따라 수시로 필요로 할 수도 있다. 자동화된 솔루션들은 이 문제를 해결하고 실용성을 향상한다. 이런 이유 때문으로 체인링크는 오더 매칭 계약을 통해서 자동화된 오라클 매칭도 제안하고 있다. 구매자가 SLA 제안서를 지정한 후에는 오라클들을 직접 접하지 않고 SLA를 오더 매칭 계약에 제출할 것이다. 이 제안서의 제출은 오라클 제공자들이 감시하고 기술력과 서비스 목적에 따라 필터를 할 수 있는 기록을 유발한다. 다음엔 체인링크 노드들이 그 제안서에 경쟁 입찰을 할지 말지를 결정한다. 오라클 서비스 제공자가 계약의 경쟁 입찰을 하면 그 계약을 지켜야 하고, 안 지켰을 경우에는 SLA에 적혀 있는 데로 페널티 벌금의 액수를 꼭 첨부해야한다. 경쟁 입찰을 비딩 윈도우(bidding window)라는 정해진 기간 동안 가능하다. SLA가 자격 있는 입찰을 충분히 받고 비딩 윈도우가 끝나면 구매자가 부탁한 개수의 오라클이 입찰들 중에서 선택된다. 선택되지 않은 오라클들에게는 첨부햇던 페널티 벌금이 다시 돌려지고, 완성된 SLA 기록이 생성된다. 완성된 SLA가 기록되면, 선택을 당한 오라클들에게 통보를 보낸다. 그리고 그 오라클들은 SLA에 적힌 지시를 실행한다.
- 데이터 보고 : 새로운 오라클이 생성된 후, 오프체인 오라클들이 지시를 실행하고 온체인에 보고를 한다.
- 응답 집계 : 오라클들이 오라클 의뢰인에게 결과를 보고한 후, 그 결과들은 집계 계약에 기록이 된다. 집계 계약은 집단적인 기록을 하고 평균 값을 낸다. 다음, 모든 오라클의 응답들은 명성 계약에 보고가 된다. 마지막으로는 계산된 평균 값이 USER-SC에 있는 지정된 계약 기능에게 반환된다. 부정확하거나 틀린 답을 발견하는 것은 데이터 피드와 적용된 방식에 따라 다를 수 있다. 예를 들면, 평균 값을 계산하기전에 오답을 발견하는 것은 숫자 데이터를 다룰 때 필요할 수 있지만, boolean 데이터를 다룰때는 아니다. 이 이유 때문에 특정된 집계 계약은 없을 것이지만, 구매자가 지정한 구성이 가능한 계약 주소가 있을 것이다. 체인링크는 집계 계약의 기본 세트는 포함할 것이지만, 기본 계산 인터페이스에 따르기만 하면 맞춤형 계약도 가능할 것이다.
오프체인
오프체인에서 체인링크는 일단 이더리움 네트워크에 연결된 오라클 노드들로 만들어진 네트워크로 이루어졌다. 체인링크는 이것으로 모든 스마트 계약 네트워크들을 이용할 때 사용할 생각이다. 이 노드들은 독립적으로 오프체인으로 의뢰의 대한 답변을 모은다. 이 답변들을 사용 가능한 합의 알고리즘 여러 개 중 하나로 단 하나의 글로벌 답변으로 집계된다. 그 글로벌 답변은 의뢰인 계약인 USER-SC한테 보내진다. 체인링크 노드들은 기본 블록체인 소통, 예정, 그리고 평범한 외부 자원들과의 연결을 다루는 기본오픈소스코어실행(open source core implementation)으로 운영된다. 노드 관리자들은 외부 어댑터라는 추가 소프트웨어 기능을 추가할 수 있는 선택권이 있다. 관리자들은 외부 어댑터를 사용해서 특수화된 오프체인 서비스들을 추가할 수 있다. 체인링크 노드들은 벌써 기업들의 퍼블릭 블록체인들과 프라이빗 네트워크들에 투입되고 있다. 노드들은 탈중앙화된 방식으로 운영하는 게 체인링크 네트워크의 목적이다.
- 체인링크 코어(ChainLink Core) : 주요 노드 소프트웨어는 블록체인과 소통, 예정, 그리고 다양한 외부 서비스들 사이에 주어진 일을 분산시키는 일을 한다. 이 일은 연구 과제로 구성된다. 각 연구 과제는 더 작은 부과업들로 이루어졌으며, 이 부과업들은 파이프라인 형식으로 구성되어있다. 각부과업은 특정된 기능이 있고, 그 기능을 거쳐서 나온 결과가 다음 부과업으로 넘어간다. 이렇게 계속 이어지면 결국에는 결정적인 마지막 결과에 도달한다. 체인링크의 노드 소프트웨어는 HTTP 요청, 제이슨(JSON) 설명, 그리고 다양한 블록체인 서식들로 변환되는 부과업들을 기본적으로 포함하고 있다.
- 외부 어댑터(External Adapters) : 맞춤화된 부과업들은 어댑터들을 생성해 요청할 수 있다. 어댑터들은 미니멀 레스트 API가 포함된 외부 서비스들이다. 어댑터를 서비스 지향 방식으로 모델링하면 모든 프로그래밍 언어의 프로그램을 프로그램 앞에 작은 중간 API를 추가하여 간단히 구현할 수 있다. 마찬가지로 복잡한 다중 단계 API와의 연동은 한도가 정해진 개별 부과업들로 단순화할 수 있다.
- 부과업 스키마(Subtask Schemas) : 체인링크는 많은 어댑터들이 오픈 소스가 되어 다양한 커뮤니티 회원들이 서비스를 감시하고 실행할 수 있을 것으로 예상한다. 많은 개발자들이 다양한 종류들의 어댑터들을 개발하므로 어댑터들간의 호환성을 보장하는 것이 중요하다. 체인링크는 현재 제이슨 스키마(JSON Schema)를 기반으로 하는 스키마 시스템으로 작동하여 각 어댑터에 필요한 입력 및 형식 방법을 지정한다. 마찬가지로 어댑터는 각부과업의 출력 형식을 설명하는 아웃풋 스키마를 지정한다.
오라클 보안
체인링크의 보안 아키텍처를 설명하려면, 먼저 보안이 중요한 이유와 이것이 의미하는 바를 설명해야 한다. 스마트 계약 보안이 잘못된 데이터 피드를 얻으면 잘못된 계약자에게 지급 될 수 있으며, 스마트 계약 보험 데이터 피드가 피보험자에 의해 변조될 수 있는 경우 보험 사기가 발생할 수 있고, GPS 무역 금융 계약에 제공된 데이터는 데이터 제공 업체를 떠난 후 수정될 수 있으며 도착하지 않은 상품에 대해서는 지불이 이루어질 수 있다. 일반적으로, 그것의 장부 또는 게시판 추상화(bulletin-board abstraction)와 함께 잘 동작하는 블록체인은 매우 강력한 보안 속성을 제공한다. 사용자들은 트랜잭션을 올바르게 검증하고 데이터 변경을 방지하는 기능으로 블록체인을 사용한다. 그들은 그것을 사실상 신뢰할 수 있는 제3자처럼 다룬다. 오라클 서비스 지원은 자신이 지원하는 블록체인에 상응하는 수준의 보안을 제공해야 한다. 따라서 오라클은 사용자에게 신뢰할 수 있는 제3자로 제공돼야하며 정확하고 시기적절한 응답을 매우 높은 확률로 제공해야한다. 모든 시스템의 보안은 가장 약한 링크만큼만 강력하므로 잘 설계된 블록체인의 신뢰성을 유지하려면 신뢰할 수 있는 오라클이 필요하다.
- 오라클 보안의 정의 : 오라클 보안에 대해 설명하기 위해 먼저 이를 정의해야한다. 오라클 보안에 대해 추론할 수 있는 유익하고 원칙적인 방법은 다음과 같은 사고 실험에서 비롯된다. 모든 지시를 충실하게 수행할 수 있는 신뢰할 수 있는 제3자(trusted third party, TTP)가 오라클을 실행하라는 작업을 받았다고 생각해보자. 이 오라클을 ORACLE(일반적으로 모든 대문자를 사용하여 사용자가 완전히 신뢰하는 엔티티를 나타냄)로 나타내고 TTP가 완벽하게 신뢰할 수 잇는 데이터 소스인 Src로부터 데이터를 얻었다고 가정한다. 마법의 서비스 오라클을 고려해볼 때, 어떤지시를 내릴까? 신뢰성 속성이라고 불리는 무결성 속성을 이루기 위해 오라클이 다음 단계를 수행하도록 요청하면 된다. 1) 요청 수용(Accept request) : 스마트 계약 USER-SC에서 데이터 소스 Src, 시간 또는 범위 t 및 쿼리 q를 지정하는 Req=(Src, t, q) 요청을 수집한다. 2) 데이터 획득(Obtain data) : 쿼리 q를 시간 t에 Src로 보낸다. 3) 데이터 반환(Return data) : 대답 a를 받으면 스마트 계약으로 a를 반환한다. 이 지시들이 올바르게 수행 된다면 강력하고 의미 있으면서도 단순한 보안 개념을 정의한다. 직관적으로 보면 이 지시들은 오라클이 Src와 USER-SC 사이의 믿음직한 다리 역할을 하도록 명령한다. 예를 들어, Src가 https://www.FountOfKnowledge.com고, 오후 4시이고, q = "ticker INTC 가격"인 경우에는, 오라클이 오후 4시에 query한 INTC의 가격을 https://www.FountOfKnowledge.com으로부터 USER-SC에게 정확히 제공할 것을 보장한다. 기밀성은 오라클들에게 있는 또 하나의 바람직한 속성이다. USER-SC가 블록체인에서 Req를 오라클로 보냄으로써 Req가 공개된다. Req가 민감한 정보를 가지고 있고 공개가 되면 안되는 경우가 많이 있다. 예를 들어, USER-SC가 항공 보험 계약이고 특정 사용자의 항공편(q = "Ether Air Flight 338")에 대해 ORACLE에게 query Req를 전송한다면, 그 사용자의 비행 계획이 전 세계에 공개된다. USER-SC가 금융 거래 계약인 경우 Req는 사용자의 거래 및 포트폴리오에 대한 정보를 유출 할 수 있다. 물론 많은 다른 예도 있다. Req의 기밀성을 보호하기 위해서는 Req의 데이터를 오라클에 속한 공개키로 암호화 되도록 요구할 수 있다. 오라클의 TTP 특성을 계속 활용하면 단순히 오라클에 이 정보 흐름 제약 조건을 부여할 수 있다. (Req를 해독할 때는 Src를 쿼리하는 것을 제외하고 절대로 Req의 데이터를 공개하거나 사용하지 마라) 전통적인 CIA(Confidentiality-Integrity-Availability) 트라이어드(triad)의 가용성같은 다른 중요한 오라클 속성들이 있다. 진정으로 이상적인 ORACLE 서비스는 절대로 폐쇄되지 않을 것이다. 가용성은 검열 저항과 같은 미묘한 특성들을 포함한다. 정직한 오라클은 특정 스마트 계약을 단정하지 않고 요청을 거부하지 않는다. TTP의 개념은 특정 모델에서 암호화 프로토콜의 보안을 증명하는데 사용되는 이상적인 기능의 개념과 유사하다. 이상적인 게시판을 유지하는 TTP와 유사한 조건들로 블록체인을 모델링할 수도 있다. 거래를 수락하고, 검증하고, 직렬화하고, 추가만 가능한 데이터 구조인 게시판에 거래를 영구적으로 유지하는 것이 이 블록체인의 책임들이다.
- 이상적인 오라클을 만들기 어려운 이유 : 물론 완벽하게 신뢰할 수 있는 데이터 소스 Src는 없다. 오류가 있는 웹사이트, 부정 행위 서비스 제공자 또는 정직한 실수로 인해 데이터가 실수로 또는 악의적으로 손상되었을 수도 있다. Src를 신뢰할 수 없다면 오라클이 위에서 설명한 대로 TTP와 똑같이 작동하더라도 여전히 고객이 원하는 보안을 완전히 만족시키지 못한다. 오류가 있는 소스 Src가 주어지면 위에 정의된 정직한 특성은 더 이상 오라클의 대답이 옳다는 것을 의미하지 않는다. 예를 들어 인텔 주식의 실제 가격이 40달러이고 https://www.FountOfKnowledge.com이 50달러로 잘못 보고하면 오라클은 잘못된 값인 a = 50달러를 USER-SC로 보낸다. 이 문제는 싱글소스 Src를 사용할 때 불가피하다. 오라클은 Src가 질문에 제공하는 답변이 정확한지 알 수 있는 방법이 없다. 물론 더 큰 문제는 오라클에 대한 TTP가 추상적인 개념이라는 사실이다. 무조건 신뢰할 만한 서비스 제공자는 없다. 최선을 다하는 제공자조차도 버그가 있거나 해킹을 당할 수 있다. 따라서 사용자 또는 스마트 계약이 서비스 오라클이 지시를 충실하게 이행한다는 절대적인 확신을 가질 방법은 없다. 체인링크는 이 오라클이라는 이상적인 기능성을 고려해서 보안 프로토콜을 설계했다. 체인링크의 목표는 현실적인 가정하에 이상적인 오라클의 속성들에 최대한 근접한 실제 시스템을 달성하는 것이다.
체인링크 분산접근
체인링크는 결함이 생긴 노드에 대해 세 가지 보완적인 접근 방법을 제시한다. 1) 데이터 소스, 2) 오라클의 분산, 3) 신뢰할만한 하드웨어의 사용이다.
소스의 분산
결함이 있는 단일 소스 Src를 처리하는 간단한 방법은 여러 소스로부터 데이터를 얻는 것이다. 즉, 데이터 소스를 분산화시키는 것이다. 신뢰할 수 있는 오라클은 소스 모음 Src₁, Src₂,...,Srcκ을 조회할 수 있고 a₁, a₂,..., aκ의 응답을 얻을 수 있고 그것들은 하나의 답 A = agg(a₁,a₂,...,aκ) 으로 종합할 수 있다. 예를 들면 다수결 투표가 있다. 만약 소스의 다수가(>k/2) 동일한 값 a를 반환하면 함수 agg는 a를 반환한다. 그렇지 않으면 agg는 오류를 반환한다. 이 경우 다수의(>k/2) 소스가 올바르게 작동하고 있다면 오라클은 항상 올바른 값 A를 반환한다. 다양한 대체 가능한 함수들인 agg는 잘못된 데이터에 대해 견고성을 보장하거나 시간 경과에 따른 데이터 값의 변동을 처리할 수 있다. 예를 들어 agg는 특이치(특이치 : 비정상적으로 크거나 작은 값)를 삭제하고 그리고 남은 값들의 평균을 출력할 수 있다. 물론 오류가 집계에 의해 제공되는 보장을 악화시키는 방식으로 데이터 소스간에 상관관계가 있을 수 있다. 만약 사이트 Src₁= EchoEcho.com이 Src₂= TheHorsesMouth.com에서 데이터를 가져오는 경우 Src2의 오류는 항상 Src1의 오류를 의미한다. 데이터 소스 간의 더 많은 미묘한 상관 관계도 발생할 수 있다. 체인링크는 또한 오라클과 사용자가 원하지 않는 상관관계를 피할 수 있도록 데이터 소스의 독립성을 쉽게 이해할 방법으로 매핑하고 보고하는 연구를 추진할 것을 제안한다.
오라클의 분산
소스가 분산될 수 있는 것처럼, 체인링크의 이상적인 서비스 오라클 자체의 이상적인 서비스는 분산 시스템으로 근사될 수 있다. 다시 말하자면 단일 오라클 노드 O 대신 n개의 다른 오라클 노드 {O₁,O₂,...,On} 집합을 가질 수 있다. 각 오라클 Oi는 다른 오라클들의 데이터 소스와 겹칠 수도 있고 아닐 수도 있는 고유한 데이터 소스 집합에 접근한다. Oi는 데이터 소스들의 응답들을 모으고 자신의 고유한 답변인 Ai를 쿼리 Req로 출력한다. 이 오라클들 중 몇몇은 결함이 있을 수 있다. 그래서 오라클의 정답 집합들은 A₁,A₂,...,An은 단일하고 대표적인 값인 A로 명백히 집계되어야 한다. 그러나 결함있는 오라클이 주어질 가능성이 있다면, 체인링크에서 집합이 어디서 어떻게 발생할까? 그 해결책은 아래와 같다.
- 첫 번째 해결책 - 계약 내부 집합
- 체인링크에서 처음 제안된 솔루션은 계약 집합이라 불린다. 체인링크-SC는 또다시 강조하자면 체인링크의 온체인 부분을 나타내며 자체 오라클 응답을 집계한다. (대체로 체인링크-SC는 또 다른 집합 계약을 체결할 수 있지만, 개념상 단순화하기 위해 두 요소가 단일 계약을 체결한다고 가정한다.) 다른말로, 체인링크-SC는 몇 가지 함수 Agg(위에서 설명한 agg와 유사한) A = Agg(A₁,A₂,...,An)를 계산하고 결과 A를 USER-SC로 보낸다. 이러한 접근법은 작은 N에 대해 실용적이며 몇 가지 분명한 이점이 있다. 1) 개념적 단순성 : 오라클이 배포된다는 사실에도 불구하고 단일 엔티티 체인링크-SC는 Agg를 실행하여 집계를 수행한다. 2) 신뢰성 : 체인링크-SC 코드를 공개적으로 검사할 수 있으므로 올바른 동작 확인이 가능하다(체인링크-SC는 상대적으로 작고 간단한 코드일 것이다.) 또한 체인링크-SC의 실행은 체인상에서 완벽히 볼 수 있다. 따라서 사용자, 즉, USER-SC의 작성자는 체인링크-SC에서 높은 수준의 신뢰를 달성할 수 있다. 3) 유연성 : 체인링크-SC는 대부분의 원하는 집계 함수 Agg(대부분의 함수, 평균 등)를 구현할 수 있다. 간단하지만, 이 접근법은 새롭고 흥미로운 기술적 과제, 즉 프리로딩(freeloading)의 문제를 제시한다. 결함이 있는 오라클 Oz는 또 다른 Oi의 Ai 응답을 관찰할 수 있고 복사할 수 있다. 이러한 방식으로 오라클 Oz는 데이터 소스를 쿼리하는 비용을 피하여 쿼리 당 비용을 부과할 수 있다. 프리로딩은 데이터 소스 쿼리의 다양성을 손상함으로써 보안을 약화시키고 또한 오라클이 빠른 반응을 불필요하게 한다. 즉, 오라클에는 느린 응답속도와 프리로딩은 더 절약적인 전략이다. 체인링크는 이 문제에 대한 잘 알려진 해결책, 즉 commit/reveal 계획을 제안한다. 첫 번째 라운드에서 오라클은 체인링크-SC 암호화 약속을 그들의 응답에 보낸다. 그후 체인링크-SC가 정족수(합의에 필요한 최소 인원의 수)의 응답을 받은 후에, 오라클이 응답을 나타내는 두 번째 라운드가 시작한다. 알고리즘1은 주어진 3f+1 노드들의 가용성을 보장하는 간단한 순차 프로토콜을 보여준다. 그것은 프리로딩을 막기위해 commit/reveal 계획을 사용한다. 오라클의 응답은 해체되어 모든 약속이 이루어진 후에만 잠재적인 프리로더(freeloader)에 노출되므로 프리로더가 다른 오라클의 응답을 복사하는 것을 방지한다. 온체인 프로토콜은 블록 시간을 활용하여 동기식 프로토콜 설계를 지원할 수 있다. 그러나 체인링크의 경우, 오라클 노드들은 매우 다양한 응답시간을 가질 수 있는 소스에서 데이터를 가져오고 예를 들어 이더리움에서 상이한 가스 가격을 사용함으로써 노드에 의한 해체 시간이 달라질 수 있다. 그러므로 가능한 한 가장 빠른 프로토콜 응답을 보장하기 위해 Alg.1은 비동기 프로토콜로 설계된다. 여기서 Commitr(A)는 값 A와 증인 r을 나타내지만, SID는 유효한 세션 id 집합을 나타낸다. 이 프로토콜은 모든 사용자 중에서 인증된 채널을 사용한다고 가정한다. Alg.1이 성공적으로 종료된다는 것은 쉽게 알 수 있다. 단일 값 A에 대한 f+1 해체 중 적어도 하나는 정직한 노드에서 와야한다. Alg.1을 통한 계약 내 통합은 다기적으로 체인링크가 지원하는 주된 접근법이 될 것이다. 제안된 초기 구현에서는 보다 정교하고 동시적인 알고리즘의 변형이 포함될 것이다. 체인링크의 장기적 제안은 부록 A에 있는 알고리즘2와 3에 명시된 다소 복잡한 오프체인 알고리즘 프로토콜에 반영되어있다. 오프체인 알고리즘은 체인의 트랜잭션 비용을 최소화하는 오프체인 통합 프로토콜이다. 또한 이 프로토콜에서 오라클 노드에 대한 지급이 포함되어 있으며 프리로더들에 대한 지급을 보장한다.[4]
오라클 네트워크
오라클(Oracle)은 블록체인 외부의 데이터를 블록체인 내부로 들여올 수 있는 기술이다. 이는 스마트 계약이 실생활에서 제대로 작동하기 위해 필요한 필수 요소이다. LINK 네트워크 최초로 분산된 오라클 네트워크를 사용한다.[5]
중개수수료
중개수수료 없이, 계약에 대한 불이행 위험 부담 없이, 그리고 투명하고 강제적으로 프로그래밍에 의해 이행되는 계약 시스템인 스마트 계약이 성공적으로 이루어지기 위해 이전 중개자가 거래 당사자들의 거래 조건의 충족을 보증했던 역할들을 대체한다.
탈중앙화 방식의 스마트계약
체인링크는 외부 데이터를 내부로 가져올 때 발생할 수 있는 다양한 문제들을 보완하기 위해 스마트 계약을 통한 탈중앙화 방식을 채택하였으며, 체인링크의 스마트 계약은 3가지 기능을 수행한다. 첫째, 평판시스템(Reputation Assessment)이다. 평판 시스템은 체인링크 네트워크의 오라클 서비스 사용자들은 스마트 계약을 통해 오라클 서비스를 통해 전달받고자 하는 매개 변수의 범위를 제출한다. 하여 해당 스마트 계약 조건이 오라클(외부 데이터 제공자)로부터 충분한 입찰이 이루어질 경우, 서비스 계약은 시작된다. 이때 오라클들을 제공하는 데이터의 정확도와 신뢰성을 기반으로 평가한다. 둘째는 오라클링(Oracling)이다. 충분한 입찰을 통해 특정 매개 변수에 대한 스마트 계약이 시작되면, 계약 이행을 위해 각 오라클들은 요청자에게 데이터를 제공한다. 마지막으로 집계(Aggregation)이다. 이는 특정 매개 변수 요청에 의하여 오라클들이 제출한 모든 데이터들은 평균화 및 가중치 계산되어 요청자에게 전달된다.[6]
시장규모 및 정보
체인링크는 2018년 9월 5일기준 총 발행량이 1,000,000,000 LINK, 시장 유통량은 350,000,000 LINK, 시가총액은 1,159억원이며 거래량은 하루 24시간 기준 14억원이다. 체인링크의 총 발행량은 10억 코인(LINK)로 8월기준 2018년 1월보다 거래량이 34% 상승하며 100대 암호화폐 중 하나로 진입했다. [7]
전망
블록체인의 혁신적인 기술 중 하나인 스마트 계약은 자체적으로 외부 리소스와 상호작용을 하지 못하며, 데이터 피드(data feeds), APIS 및 기존의 은행 지불 시스템에 접속하기 위해서는 반드시 오라클과 같은 미들웨어 (middleware)를 필요로 한다. 체인링크는 기존 오라클 시스템의 탈중앙화를 이뤄 분산형 오라클 및 소스 시스템을 통해 실물 세계를 블록체인과 연결하는데 있어서 더욱 정확한 데이터를 제공하게 되는 등 업계의 주목을 받고 있다. 해당 프로젝트는 또한, 풍부한 지식과 경험을 겸비한 든든한 자문위원단을 보유하고 있으며 전세계 약 11,000 개 은행에서 사용되고 있는 SWIFT 외 다수의 파트너십 제휴를 맺고 있어 향후 스마트 계약 활성화의 촉매 역할을 할 수 있을 것으로 보여진다.
각주
- ↑ 배고푼쉘리, 〈체인링크〉, 《네이버 카페》, 2018-08-21
- ↑ 셀마코브라, 〈ChainLink(체인링크) ICO 기본정보〉, 《네이버 카페》, 2017-09-04
- ↑ 영보스, 〈체인링크(Chainlink)코인에 대해 알아보자〉, 《네이버 블로그》, 2018-09-24 09:24:00
- ↑ 체인링크 백서 - https://link.smartcontract.com/whitepaper
- ↑ 나동빈 기자, 〈블록체인의 연결성 문제를 해결해주는 블록체인 플랫폼〉, 《비트웹》, 2018-04-17
- ↑ 〈체인링크〉, 《OKCOIN》, 2018-09-06 18:27:00
- ↑ 주광민 기자, 〈'웹 어플에 스마트컨트랙트 제공' 체인링크, 34% 상승 100대 암호화폐 진입〉, 《글로벌경제신문》, 2018-01-08 13:52:00
참고자료
- 체인링크 공식 홈페이지 - https://chain.link/
- 체인링크 백서 - https://link.smartcontract.com/whitepaper
- 셀마코브라, 〈ChainLink(체인링크) ICO 기본정보〉, 《네이버 카페》, 2017-09-04
- 비트웹 편집국, 〈체인링크(ChainLink) - 블록체인의 연결성 문제를 해결해주는 블록체인 플랫폼〉, 《비트웹》, 2018-04-17
- 배고푼쉘리, 〈체인링크〉, 《네이버 카페》, 2018-08-21
- 코인 매니저, 〈체인링크 (LINK) - 개념, 특징, 투자가치〉, 《네이버 블로그》, 2018-10-17
- 황치규 기자, 〈체인링크, 타운크리어 인수...하드웨어 기반 오라클 시스템 개발 가속〉, 《더비씨체인》, 2018-11-05
- 황치규 기자, 〈블록체인 오라클 문제 해결...체인링크를 주목하는 이유〉, 《더비씨체인》, 2018-11-20
- 박상혁 기자, 〈(파커) 물린 사람 없다는 희귀 코인 체인링크, 누구냐 넌?〉, 《조인디》, 2020-06
같이 보기