오라클 (Oracle) FAQ¶
오라클은 무엇인가요?¶
오라클은 블록체인 상에 있는 데이터와 블록체인에 없는 데이터를 스마트 컨트랙트에서 사용할 수 있도록 해줍니다. 예를 들어 ETH와 MKR의 가격 피드 (price-feed)와 같은 데이터를 사용할 수 있도록 해줍니다. 시스템은 자체 스마트 컨트랙트에서 CDP가 발행할 수 있는 Dai의 수량, 청산 가격, 청산 가격 체결 여부 등 여러 변수를 결정할 때 오라클이 제공하는 각 자산의 가격에 의존합니다.
왜 오라클은 악의적인 참가자들의 공격 대상인가요?¶
만약 ETH의 기준 가격이 한 그룹에 의해 정해진다면, 의도적으로 잘못된 가격을 보고해 많은 문제를 야기할 수 있습니다. 예를 들어 ETH의 가격이 의도적으로 $0.01로 낮게 보고된 경우, 시스템에 있는 모든 CDP들이 청산되고 담보가 부족해 청산 페널티를 물게 될 것 입니다. 반대로 ETH의 가격을 의도적으로 $1,000,000.00로 높게 보고할 경우, 담보가 실제 담보 가치보다 많다고 착각하여 모든 CDP 소유자들이 지나친 양의 Dai를 발행할 수 있게 될 것입니다. 이는 추가 발행된 Dai에 대한 담보가 부족함을 의미하고, 시스템은 파산하게 됩니다.
오라클의 신뢰성은 어떻게 보장되나요?¶
악의적인 데이터 보고를 막기 위해, 보고 과정은 탈중앙화 되어있고 독립적인 보고자들이 여럿 있습니다. 현재 ETH는 14명의 가격 피드 제공자가 있으며 이들은 중간 값 계산자(Medianizer) 컨트랙트에 데이터를 보냅니다. 중간 값 계산자(Medianizer)는 보고된 가격의 중간 값을 공식 기준가격으로 사용합니다. 평균값이 아닌 중간 값을 사용하면 가격 피드 제공자 중 절반을 조작해야 거짓 가격을 보낼 수 있기 때문에 기준가격을 조작하기 더 힘들어지기 때문입니다. 또한 중간 값을 사용하면 이상치를 자동으로 걸러낼 수도 있습니다.
오라클 보안 모듈 OSM은 가격 피드 데이터를 한시간 지연시켜 위 절차를 더 안전하게 만듭니다. 이를 통해 MKR 토큰 소유자들에게 가격 피드 시스템의 버그나 공격을 식별할 수 있는 시간을 제공합니다. 현재 MKR 가격 피드에는 OSM이 적용되어있지만 ETH 피드에는 적용되지 않았습니다. 이는 단일 담보 기반 Dai에서 CDP가 청산될 때, 담보는 피드에서 제공한 현재 시장 가격에 청산되기에 ETH 가격의 지연이 생기면 안되기 때문입니다. 다중 담보 기반 Dai에서는 모든 가격 피드가 지연될 수 있도록 바뀔 것입니다.
오라클 보안 모듈은 무엇인가요?¶
오라클 보안 모듈OSM은 새로운 기준가격의 발표를 한시간 지연시킵니다. 이를 통해 MKR 토큰 소유자들은 가격 피드 시스템의 버그나 공격에 대처할 수 있는 시간을 확보할 수 있습니다. 현재 MKR 가격 피드에는 OSM이 적용되어있지만 ETH 피드에는 적용되지 않았습니다. 이는 단일 담보 기반 Dai에서 CDP가 청산될 때 담보는 피드에서 제공한 현재 시장 가격에 청산되지만 다중 담보 기반 Dai (MCD)에서는 가격 피드가 필요없는 경매 방식으로 청산되기 때문입니다.
가격 피드 제공자는 누구인가요?¶
피드 제공자는 익명이며, Maker의 관계자, 가상화폐 커뮤니티에서 영향력이 상당한 분들, 커뮤니티에서 열심히 활동하는 분들 등으로 구성되어있습니다.
오라클 가격 피드를 제공하는 사람들의 신원은 알려져 있나요?¶
Maker 재단의 관계자들 중 극소수가 모든 가격 피드 제공자들을 알고 있습니다.
가격 피드 시스템은 어떻게 작동하나요?¶
ETH의 기준가격은 중간 값 계산자(Medianizer) 컨트랙트에 의해 발표되며 이는 14명의 가격 피드 제공자들이 보고한 가격에 의해 결정됩니다. 각 피드 제공자들은 다음의 경우에 중간 값 계산자(Medianizer)에 새로운 가격을 보냅니다:
- 발표된 가격과 최근 가격의 차이가 특정 수치를 넘어설 때 현재 피드 제공자에 따라 1%에서 2% 사이.
- 마지막 가격 업데이트가 특정 시간을 넘어섰을 때 시간은 각 피드 제공자에 의해 결정됨
각 가격 피드 제공자는 Setzer라는 툴을 이용해 특정 거래소 가격들의 중간 값을 중간 값 계산자(Medianizer)로 보냅니다. 이후 중간 값 계산자(Medianizer)는 보고된 가격 피드 중간 값들의 중간 값을 계산합니다. 가격 피드 제공자는 Setzer를 다르게 설정하여 원하는 거래소들의 가격을 불러올 수 있습니다.
중간 값 계산자(Medianizer)는 무엇인가요?¶
중간 값 계산자(Medianizer)는 오라클 시스템의 스마트 컨트랙트로서 가격 피드 정보를 모아 각 자산의 기준가격을 발표합니다. 또한 가격 피드 제공자들의 whitelist를 유지하고 각 제공자들의 최근 가격 정보들을 기록합니다. 중간 값 계산자(Medianizer)는 새로운 가격을 받을 때마다 기준가격을 다시 계산하고 발표합니다.
중간 값 계산자(Medianizer)는 새로운 기준가격을 얼마나 자주 발표하나요?¶
각 가격 피드의 중간 값이 바뀔 때마다 중간 값 계산자(Medianizer)가 이 새로운 정보를 받습니다. 이 가격은 다른 피드 가격들과 같이 추가되며 가격이 바뀔 때마다 중간 값을 다시 계산하고 발표합니다.
MakerDAO 거버넌스가 오라클 보안 모듈의 지연 시간을 바꿀 수 있나요?¶
바꿀 수 있으며 해당 매개변수는 "Price Feed Delay"입니다.
어떻게 피드 제공자가 될 수 있나요?¶
현재 피드 제공자가 되기 위한 공식적인 방법은 없습니다. Maker가 처음 피드를 만들 때에는 Maker 재단 내부에서 자발적으로 제공자가 된 사람들이 있었습니다. 그 후 커뮤니티와 다른 프로젝트에서 더 많은 사람들이 추가되었습니다. 신분은 밝히지 않았습니다.
오라클 시스템은 시빌 공격에 안전한가요?¶
위키피디아의 시빌 공격 페이지에 의하면, "시빌 공격에서는 다수의 익명 신분을 만들어 영향력을 비정상적으로 늘리고 P2P 네트워크의 명성 시스템을 훼손시킨다. 명성 시스템의 시빌 공격 취약점은 새로운 신분 생성의 용이성, 신뢰할 수 있는 개체와의 연관성이 없는 개체의 입력 수용 수준, 그리고 모든 개체의 동일한 취급 여부에 달려있다."
요약하면 오라클 시스템은 가격 피드 제공자의 whitelist를 가지고 있기 때문에 시빌 공격으로부터 안전합니다. 가격 피드 제공자가 되기 쉽지 않으며 중간 값 계산자(Medianizer) 컨트랙트에 승인이 되어야 데이터를 받을 수 있습니다. 그러므로 피드 제공자로 활동하는 저렴한 익명 개체들을 여럿 만들어 과반수의 영향력을 얻을 수는 없습니다.
거래소에서 갑작스러운 폭락이 발생하면 어떻게 되나요?¶
Dai 크레딧 시스템에서 사용되는 기준가격은 14명의 개별적인 피드 제공자가 보고한 중간 값의 중간 값이기 때문에 이상치는 자동으로 걸러집니다. 실질적인 예로, 한 거래소에서 폭락이 발생하면 가격 세트는 다음과 같을 것입니다:
[0.70, 104.00, 104.11, 104.13, 104.49, 105.02, 105.45]
이 가격들의 중간 값은 여전히 실제 전반적인 시장 가격을 반영합니다. 한 거래소의 폭락은 발표되는 기준가격에 영향을 미치지 않습니다.