블록체인 오라클 문제 (Blockchain Oracles)
서론
2023년 새해를 맞아 블록체인에 대한 기억을 꺼내 보려고 하는 인피덕
계모?흑묘?년 새해 복 많이 받으세요~ 모두 승승장구하시길 :)
지난주 회의 때 잠깐 언급된 블록체인 오라클에 대해 입맛대로 정리해 보려고 한다!
올해는 블로그 열심히 써야지!
본론
오라클이 뭐라클? ㅎ
자바에서 쓰는 거 아님 데이터베이스 회사 아님
블록체인에서 오라클이란,
블록체인 외부(오프체인)의 데이터를 블록체인 내부(온체인)로 가져오는 것을 말함
컨트랙트 메소드가 데이터를 사용할 때
-
블록체인 내부의 데이터를 사용하는 경우도 있지만
-
블록체인 외부의 데이터를 사용하는 경우도 있는데
2번의 경우가 오라클을 사용한다고 보면 되는 것
예를 들어, “핸드폰을 바꿀 때 마다 보상을 주는 컨트랙트” 를 만들었는데
“사용자가 핸드폰을 바꿨다.” 라는 정보는 블록체인 외부에서 가져와야 하는 정보임 <- 요걸 가져오는 게 오라클
오라클이 뭐가 문제인데요?
아까 예시로 든 “핸드폰을 바꿀 때 마다 보상을 주는 컨트랙트” 요거로 다시 이해해 보자면,
사용자가 핸드폰을 바꾸지 않고도 컨트랙트에 “나 핸드폰 바꿨음” 이라고 알려줄 수가 있다.
이미 여기서 부터 잘못됐지만
컨트랙트로 “사용자가 핸드폰을 바꿨음 삐리삐리” 라는 정보가 들어왔고
컨트랙트는 사용자가 핸드폰을 바꿨다고 인지했으니 보상을 주게 됨 (사용자: 개이득)
그러면 사용자의 데이터를 바꾸면 되지 않냐고 할 수 있는데
블록체인의 특성 중 하나인 “비가역성” 으로 인해 데이터를 바꾸는 것이 불가능함
(비가역성: 데이터를 되돌릴 수 없음)
이미 블록체인에 기록됐다면 블록체인 상에서는 그 정보가 맞는 것임
즉, 데이터를 가져올 때
-
데이터를 가져오는 주체가 누군지
-
가져온 데이터를 신뢰할 수 있는지
-
데이터를 가져올 때 정보의 위변조 가능성이 있는지
를 잘 판별해야 한다.
그렇지 않으면 오라클 문제(Oracle problem)가 발생할 가능성 매우 높음
오라클 문제에도 종류가 있어요?
하드웨어 오라클 문제
센서로 온도나 습도 등을 측정해 블록체인에 기록할 때, 센서의 이상으로 잘못된 정보가 기록될 수 있음
소프트웨어 오라클 문제
어떤 값을 계산해서 블록체인에 기록할 때, 계산식의 이상으로 잘못된 정보가 기록될 수 있음
위의 문제는 모두 블록체인 자체의 문제는 아니지만,
부정확한 데이터가 블록체인에 기록되어 해당 컨트랙트에 큰 결함이 발생하는 경우라고 볼 수 있음
이러한 문제가 실제 상황으로..?
블록체인을 보험에 대입해 보자.
보험에 가입한 사용자가 다쳤을 경우, 해당 사례를 블록체인에 기록하면
중증도에 따라 보상을 주는 컨트랙트 메소드가 있다고 생각해 볼 수 있음
하지만, 사용자가 진짜 다쳤는지 여부를 판별할 자격이 있는 사람은 누구이며
중증도를 어떻게 계산할 것인지(발목을 접질렀을 때 누구는 가벼운 찰과상으로, 누구는 입원까지 필요할 정도로 판단할 수 있음)에 대한 문제가 발생함
물류 관리 쪽에도 대입해 보자.
제품을 생산했을 때 부터 가공 및 운반 등의 이력을 블록체인에 기록하면 해당 이력을 투명하게 관리할 수 있다는 장점이 있음
하지만, 생산자 또는 가공하는 사람이 물건에 하자가 있을 때 그 사실을 숨기고 블록체인에 기록한다면
블록체인 내부에서는 위변조된 데이터를 올바른 데이터로 인식하는 문제가 생김
왜냐하면 내부에서 해당 데이터를 검증할 방법이 없기 때문임 (블록체인 외부의 데이터라서)
이같은 경우도 최종적으로 사용자가 받는 물품이 생산자가 만든 물품이라는 것을 신뢰하기 어려움
문제가 많네! 어떻게 해결하죠?
투표를 통해 해결 방안을 찾을 수 있음
예를 들어, 블록체인 노드에 참여하고 있는 사람 또는 기업(거버넌스)이나 해당 블록체인의 토큰을 가지고 있는 소유자들이
오프체인의 정보를 블록체인에 기록하려고 할 때 투표를 통해 결정할 수 있음
거버넌스나 소유자들이 신뢰를 가지고 투표하면 온체인에는 정확한 정보가 기록될 수 있지만,
그렇지 않은 경우 여전히 부정확한 정보가 블록체인에 기록되어버림
따라서 투표로 오라클 문제를 해결하려고 한다면,
올바르게 투표한 사람들에게 인센티브를 주고
잘못 투표한 사람에게는 패널티를 주는 방안으로 해결할 수 있음
다른 방법으로는 중간자 역할을 두는 방법이 있음
현실 세계와 블록체인 사이에 중간 다리 역할을 하는 조직을 만들어서
해당 조직이 데이터를 검증하고 제공하도록 함
다만, 중간자 역할의 조직이 중앙화된 역할을 할 가능성이 있으므로
탈중앙화를 지향하는 블록체인의 가치에 맞지 않는다는 단점이 있음
결론
블록체인 서비스는 컨트랙트 짰다고 끝나는 게 아니다.
이렇게 저렇게 따지다 보면 취약점이 나올 수 있으니 주의!