[이더리움][Ethereum] Oracle

근상·2024년 12월 24일

Oracle은 간단히 외부에 있는 데이터다.
지금 이것이 왜 필요할까?

외부에 있는 데이터를 블록체인상으로 가져오는 상황이 있다.
하지만 여기서 발생하는 문제가 있다.

이 문제를 블록체인 상에서 어떻게 해결하는지 알아보자


Oracle 문제

이더리움 네트워크가 보안성이 뛰어나고 위변조가 불가능하다고 하지만
이 내용은 블록체인 내부에 해당되는 부분이다.

결국, 외부 데이터에 대한 위변조의 안전성을 보장할 수 없다.

NFT에서 언급한 문제인데, 예술작품을 NFT로 발급한다는 것은
그 토큰 자체가 위변조가 되지 않고 블록체인 상에서 관리하겠다는 의미로 보면 되지만,
그 블록체인 내 데이터는 이미지가 저장된 파일 위치다.

이더리움 네트워크에 한 번 파일 위치가 들어오게 되면 절대 변경될 수 없다.
위변조 불가가 보장되지만 그 파일 자체의 위변조나 손상 등을
이더리움에서 확인이 불가하다.

그래서 블록체인을 반대를 주장하는 사람들이
이에 대한 안정성을 해결하지 못하면 활용도가 떨어진다는 인식이 강함을 주장한다.

이더리움경우, Contract가 API를 통해 외부 서부와 직접적인 통신이 불가해서
특정 사용자가 외부 데이터를 네트워크상에 직접 넣어야 활용이 가능한 문제가 있다.

이 경우에도 넣은 사람의 위변조 행위 여부 또한 확인이 불가하다.

블록체인 상에서 외부 데이터를 활용하는 것은 매우 어려운 일이다.


랜덤생성 문제

이더리움 내에서 랜덤 값 생성 문제다.

  1. 동일한 결과

    Smart Contract상에서 Tx를 검증하기 위해서 모든 Contract는
    동일한 랜덤값을 생성해야 한다.

    무슨말일까? 한국, 미국, 일본 등 여러 노드에서 주사위를 던졌는데
    주사위가 실제로 모두 같은 값이 나온다면 이를 랜덤하다고 볼 수 없다.

    하지만 각 노드가 랜덤하게 서로 다른 값이 나온다면 Tx를 검증할 수 없다.

    그렇기 때문에 Smart Contract상에서 모두 동일한 결과가 나와야
    Tx검증이 가능하지만 그런 점을 랜덤 생성을 통해서는 할 수 없다.

  2. 블록 해시 등을 활용

    해시 함수가 랜덤함수에 가까워 랜덤값 생성에 이용 가능 하지만
    사용하지 않는 이유는 동일한 블록에서 동일한 해시값을 갖기 때문이다.

    블록 해시를 통해 랜덤값을 생성 한다고 하면
    해당 블록 내의 다른 Tx를 통해
    동일한 해시값을 미리 알고 공격이 가능한 문제점이 있다.

    그래서 블록해시 값을 랜덤값으로 또한 사용하지 않는다.

  3. 외부 랜덤 데이터의 필요성

    이더리움은 기본으로 랜덤함수를 제공하지 않는다.
    그래서 동일한 결과를 내는 랜덤값을 사용하기 위해서는
    안전한 랜덤값을 제공하는 Oracle서비스를 이용해야한다.

다음으로 Oracle서비스를 살펴보자


Augur

가장 대표적인 Oracle 서비스다

미래 예측 시장에 적용하는 블록체인 플랫폼이다.

이더리움 초창기 Dapp으로 Real World에 있는 데이터를
블록체인 내로 가져오는 방식이다.

예로 온라인 승부예측 도박뿐만 아니라 대선 투표에 누가
승리할 지에 대해 입력을 하는 사용자가 위변조를 할 수 있다.

그래서 이 문제를 해결 하기 위해 경기 결과를 등록하고 수수료를 제공받는
Reporter라는 제 3자의 사용자를 구성한다.

이 3자가 수수료를 받는 대신 혹시나 악의적으로 잘못된 결과를
일부로 등록했을 때는 고유한 REP토큰을 잃게되는 구조로 안정성을 보장한다.

그러나 이는 완전한 안정성을 보장하지 못한다.

이유는 Reporter가 잃게되는 REP토큰 가격 보다
본인이 잘못된 등록으로 얻은 금액이 더 크면

악의적인 경기 결과를 등록할 수 있기 때문에
이 서비스가 실제로 성공을 하지 못했다.

이 자료는 Augur 서비스의 흐름 구조다.


Oraclize

외부 Real World 데이터를 대신 가져와 Smart Contract에 입력을 해주는 형태다.

Smart Contract 상에 내가 가져오고 싶어하는 API 형태의 URL을 입력을 하면
Oraclize 서비스가 대신 외부에 조회를 하고 이를 Smart Contract에
콜백형식으로 입력을 해주는 형태다.

하지만 이 서비스는 중앙화된 기관을 통한 방식이다.
중앙화된 기관에 신뢰를 갖고 이용하는 서비스의 Oracle이다.

기관에서 문제 발생해 직원이 위변조를 해도 확인할 방법이 없는 문제도 있다.

중앙화되 서비스를 알아봤고 다음은 탈중앙화 서비스를 알아보자


탈중앙화된 외부 데이터 조회 서비스다.

  • 탈중앙화된 데이터 제공

    오픈소스 방식으로 데이터 제공 소스를 공개해
    사용자들이 코드 상에 악성 코드가 있는지 확인 할 수 있다.

  • 노드 분산

    노드를 분산시켜 Oraclize의 문제인 단일 장애 위험을 제거하고,
    데이터를 정해진 시간안에 Smart Contract에 제공을 보장한다.

  • 서명을 통한 인증

    노드가 Smart Contract에 데이터 제공시
    서명을 통해 어떤 노드가 데이터 제공했는지 증적을 제공한다.

    ETH를 거래 할 때 개인키로 부인 방지 하는 것처럼
    이것 또한 노드가 데이터 제공할 때 본인 서명으로 부인을 방지한다.
    그래서 본인이 전송하지 않았다는 것을 부정할 수 있다.

  • 평판 관리

    잘못된 정보를 전달하거나 데이터 지연이 발생하는 경우를 대비해
    분산화된 노드들의 평판을 관리한다.
    평판이 너무 떨어지는 노드를 네트워크상에서 제거를 한다.


이런 구조로 외부 데이터를 보다 안전하고 투명하게
Smart Contract에 제공할 수 있는 기능을 갖는다.


Defi Oracle 활용

Defi는 담보 대출 형식만 갖는다.

그러기 위해서 Defi는 항상 이 담보의 가치를 알고 있어야 한다.
만약 담보 가치가 떨어지게 되면 추가 담보를 요구하거나 청산을 진행해야 하기 때문이다.

ETH의 가치와 ERC-20의 가치는 동일하게 증감하는 것이 아니라
각각의 가치가 다르게 돼있어 해당 담보의 가치를 평가하는 것이 중요하다.

그래서 담보의 가치를 계산할 때 특정 시점마다 Oracle 서비스를 통해 가격 정보를 갖고와
담보의 가치를 재계산해 추가 담보를 요구하거나 청산할 지를 판단할 근거를 만든다.

중앙화된 거래소에서 거래되고 있는 ETH/USD 가격을 받아오고
Defi Contract에 전달해 실제 계산을 하고
그 정보를 운영 조직에 전달하는 형태다.


결론

Ethereum Smart Contract가 나오면서
다양한 서비스가 나오게 됐다.

그 중 Oracle문제라는 것이 있고, 이를 해결하기 위해
탈중앙화된 서비스인 ChainLink가 등장했다.


출처)) 자료 및 내용 : 패스트캠퍼스

0개의 댓글