오라클: 블록체인은 바깥에서 일어나는 일을 어떻게 알게 될까

·4분 읽기·작성자: SSP Editorial Team
SSP Academy 표지: 블록체인 오라클 해설

오라클: 블록체인은 바깥에서 일어나는 일을 어떻게 알게 될까

스마트 컨트랙트는 잔액, 서명, 자신의 상태를 완벽하게 확인할 수 있습니다. 하지만 무언가를 찾아볼 수는 없습니다. ETH가 몇 달러인지, 경기에서 누가 이겼는지, 어제 마드리드에 비가 왔는지 전혀 알지 못합니다. 블록체인은 의도적으로 닫혀 있습니다. 모든 노드가 같은 데이터로 같은 결과에 도달해야 하는데, 바깥 세상은 그런 보장을 해 주지 않기 때문입니다.

그런데도 대출 프로토콜에는 가격이, 스테이블코인에는 환율이, 보험 컨트랙트에는 현실 세계의 사건이 필요합니다. 닫힌 체인과 바깥 세상을 잇는 다리를 오라클이라고 부르며, 이는 탈중앙화 금융에서 가장 많이 공격받는 부분 중 하나입니다.

오라클이 하는 일

오라클은 외부 데이터를 체인 위에 올려 컨트랙트가 읽을 수 있게 하는 모든 메커니즘을 말합니다. 일반적으로 다음과 같이 작동합니다.

  1. 하나 이상의 데이터 제공자가 정보를 수집합니다. 예를 들어 여러 거래소의 ETH/USD 가격입니다.
  2. 제공자는 그 정보에 서명해 체인 위의 오라클 컨트랙트에 제출합니다. 정기적으로, 또는 값이 충분히 바뀌었을 때 제출합니다.
  3. 다른 컨트랙트는 그 오라클 컨트랙트에서 최신 값을 읽고 그에 따라 동작합니다.

컨트랙트는 오라클을 전적으로 신뢰합니다. 오라클이 ETH가 10달러라고 하면, 이를 읽는 대출 프로토콜은 ETH를 10달러로 취급하고 그에 맞춰 청산하거나 대출합니다.

오라클 문제

이것이 핵심적인 어려움입니다. 프로토콜의 코드가 완벽하더라도 신뢰도는 데이터의 신뢰도를 넘을 수 없습니다. 가격을 공급하는 출처가 하나뿐이라면 컨트랙트를 탈중앙화해도 큰 도움이 되지 않습니다.

오라클 설계는 여러 방식으로 이 의존성을 줄이려 합니다.

  • 여러 독립 보고자의 답을 집계해, 잘못되었거나 침해된 출처 하나가 결과를 움직이지 못하게 합니다.
  • 다수의 기초 데이터 출처를 사용해, 조작된 거래소 하나가 가격을 왜곡하지 못하게 합니다.
  • 온체인 평균 가격을 탈중앙화 거래소에서 일정 기간에 걸쳐 산출해, 오래 움직이기 어렵게 합니다.
  • 경제적 처벌을 잘못된 데이터를 제출한 보고자에게 부과합니다.

오라클은 어떻게 악용되는가

DeFi에서 발생한 최대 규모의 손실 중 상당수는 일반적인 의미의 컨트랙트 버그가 아니라 오라클의 실패였습니다.

  • 현물 가격 조작. 어떤 프로토콜이 작은 거래 풀 하나에서 현재 가격을 읽는다고 합시다. 공격자는 하나의 트랜잭션 안에서 큰 금액을 빌려 그 풀의 가격을 움직이고, 거짓 가격을 기준으로 대출하거나 청산한 뒤 거래를 되돌립니다. 이 모든 일이 트랜잭션이 끝나기 전에 일어납니다. 플래시 론을 이용하면 자기 자본이 전혀 없어도 가능합니다.
  • 유동성이 얕은 시장. 주로 작은 풀 하나에서 거래되는 토큰은 적은 비용으로 가격을 움직일 수 있고, 이를 담보로 받는 프로토콜은 모두 그 약점을 물려받습니다.
  • 오래된 데이터. 시장이 빠르게 움직이는 중에 업데이트가 멈춘 오라클은 이미 존재하지 않는 가격으로 대출하는 것을 허용할 수 있습니다.
  • 침해된 보고자나 관리자 키는 오라클이 데이터를 가져오는 곳을 바꿀 수 있습니다.

같은 논리가 브리지에도 적용됩니다. 시스템의 보안은 다른 곳에서 일어난 일을 알려 주는 구성 요소의 보안 수준을 넘을 수 없습니다.

왜 여러분에게 중요한가

여러분이 오라클과 직접 상호작용하지는 않지만, 많은 프로토콜에서 여러분의 돈에 무슨 일이 일어날지를 결정하는 것은 오라클입니다.

  • 대출: 담보의 가치, 그리고 청산 여부는 오라클에서 나옵니다.
  • 스테이블코인: 몇몇 설계는 목표 가격을 유지하기 위해 가격 피드에 의존합니다.
  • 파생상품과 합성 자산: 정산 가격은 오라클에서 나옵니다.

실제 돈으로 프로토콜을 사용하기 전에 알아 둘 가치가 있습니다. 가격을 어디서 가져오나요? 검증된 다중 출처 피드인가요, 아니면 풀 하나인가요? 피드 업데이트가 멈추면 어떻게 되나요? 이런 질문에 명확히 답하지 못하는 프로토콜은 여러분에게 보이지 않는 위험을 떠안으라고 요구하는 셈입니다.

오라클과 SSP

SSP 자체는 여러분의 자금을 보호하기 위해 오라클에 의존하지 않습니다. 코인은 2/2 멀티시그 볼트에 보관되며, 이를 옮길 수 있는지는 외부 가격이 아니라 오직 여러분의 두 기기에서 나온 서명에 달려 있습니다.

SSP에서 보이는 가격, 즉 선택한 통화로 표시된 포트폴리오 가치는 표시용일 뿐입니다. 트랜잭션이 무엇을 하는지나 유효한지에는 영향을 주지 않습니다.

WalletConnect를 통해 DeFi 프로토콜에 자금을 가져갈 때 오라클은 여러분의 문제가 됩니다. 그곳에서 SSP는 여러분이 무엇에 서명하는지 보여 주고 두 기기의 승인을 요구하지만, 프로토콜의 가격 피드가 건전한지는 평가할 수 없습니다. 그 실사는 여러분의 몫이며, 컨트랙트와 이를 통제하는 주체를 확인하는 것도 그 일부입니다.

솔직한 요약

블록체인은 자기 바깥을 볼 수 없기 때문에 오라클이 데이터를 들여오고, 그 데이터에 의존하는 모든 컨트랙트는 오라클의 약점을 물려받습니다. 대형 DeFi 공격 중 상당수는 코드를 깨뜨린 것이 아니라 가격 피드를 조작한 것이었습니다.

가격에 의존하는 프로토콜을 사용할 때는 그 가격이 어디서 오는지 물어보세요. 잘 집계된 다중 출처 오라클은 풀 하나보다 속이기가 훨씬 어렵습니다. 그리고 데이터 출처가 하나뿐인 '탈중앙화' 코드는 보이는 만큼 탈중앙화되어 있지 않습니다.

이 글 공유하기

관련 글