탈중앙화를 구현하는 방법

1. 출처의 탈중앙화

체인 링크는 외부 데이터를 불러올 때 해당 데이터의 출처를 한 Src로 한정하는 것이 아니라 여러 Src로 둔다. 이 방식으로 한 Src에서 잘못된 정보를 제공하더라도 이를 처리할 수 있다.

2. 노드의 탈중앙화

분산시스템으로 네트워크를 구현한다. 그렇다면 당연히 악성 노드가 있을 수 있다. 여기서 말하는 악성노드는 고의적이든 고의적이지 않든 잘못된 정보를 제공하는 노드를 말한다. 이러한 노드를 체인링크는 어떻게 처리했을까?

1) In-contract aggregation

  1. USER-SC로부터 Req를 받을때까지 기다린다.
  2. sid <-$ SID
  3. Broadcast(requst, sid)
  4. 분산된 노드로부터 2f+1개의 메시지로 구성된 set C를 기다린다.(commit, ci = Commitri(Ai), sid)
  5. Broadcast(commit, sid)
  6. 분산된 검증 decommitments들 f+1개로 구성된 set D를 기다린다. (decommit, (ri,Ai,sid)
  7. USER-SC에 (Answer, A, sid)를 반환한다.

온체인에서는 블록 넘버를 활용해 동기식 프로토콜을 설계할 수 있다. 하지만 ChainLink에서 오라클 노드들은 응답 시간이 오래걸릴 수도 있는 소스에서 데이터를 얻고 이더리움에서 가스 가격이 서로 다르기 때문에 응답 시간이 노드마다 달라질 수 있다. 그렇기때문에 ChainLink는 비동기로 운영된다.

2) Off-chain aggregation