DeFi Morse#15 - 프로토콜의 버그는 누가 책임질 수 있을까?(1)

🐛프로토콜의 버그는 누가 책임질 수 있을까?

최근 들어 Yield Farming의 분야에서 많은 해킹들이 있었고, 이러한 사건들에 따라서 누가 책임을 가질 수 있는지, 제가 알고 있는 다양한 요소들을 한 번 정리해 보려고 합니다.

블록체인 서비스? 프로토콜?

대체로 국내에서는 블록체인을 이용한 제품에는 사업자가 존재하고, 사업자가 실질적인 관리 권한을 가지고 있습니다. 이는 블록체인을 이용했을 뿐이며, 사업자가 사라지면 제품 또한 사라지는 형태를 가집니다. 사업자가 서비스 유지 비용을 지불하지 않으면 접근할 수 없으며, 이러한 속성을 가지는 것을 간단하게 서비스라고 불러 볼 수 있을 것 같습니다.

프로토콜의 경우 다른 속성을 가집니다. 어떠한 비즈니스 로직을 수행하기 위해 인터페이스에 접근할 수 없더라도, 대체할 수 있는 인터페이스를 통해서 동일한 작업을 수행할 수 있습니다. 그렇기 때문에 블록체인이 가지는 비허가성이 중요하며, 누구나 인터페이스를 대신할 수 있습니다.

또한 블록체인 상의 비즈니스 로직은 자율적으로 작동하기 때문에 수용할 수만 있다면, 그래픽 인터페이스여도 되고 터미널 인터페이스여도 충분히 작동할 것입니다. 이더리움을 기준으로 해당 로직이 필요한 사람만이 수수료를 지불하여 사용하게 됩니다.

다만 프로토콜도 관리자가 없는 경우가 있고, 관리자가 필요한 경우가 있습니다. 관리자가 있는 경우에는 이후의 변경 사항에 대해 충분한 공개적 논의를 거친 이후에 다수결을 통해서 변경 사항을 적용합니다. 기본적으로 비허가성을 가지는 것은 공통적인 사양이기 때문에 이 경우에도 프로토콜성을 유지한다고 볼 수 있습니다.

프로토콜의 책임은 누가 가지는가?

서비스와 프로토콜을 분리하려는 이유는, 최근 많은 사고들이 프로토콜에서 발생했기 때문입니다. 더군다나 프로토콜의 관리 권한 또한 동등하게 나누어지는 과정에 있으며, 프로토콜을 배포한 사람들은 관리 권한이 최소화되어 있는 것이 일반적이었습니다.

Yield Farming이 유행하면서, 최소한의 검증 과정도 가지지 못한 아이디어들이 무분별하게 만들어지고 있으며, 이로 인하여 사고 또한 많이 발생하고 있습니다.

제가 본 사례 중에서 가장 안타까웠던 것은, “인터페이스만 보고 Yield Farming인 줄 알았는데, 예치했던 이더가 다 사라졌다.”라는 것이었습니다.

단순히 초기부터 참여했기 때문에 수익이 생길 것이라는 기대와 함께 남들이 Yield Farming이라는 것으로 수익을 내는 것을 보았기 때문에 모든 것을 동일하게 보았을 것입니다. 하지만, 비트코인 다르고 이더리움 다르듯이 Yield Farming이라고 다 같은 이익을 제공하는 것이 아닙니다.

과거 메일에서도 여러 번 설명(https://nonceclassic.substack.com/p/defi-morse9-yearn-)드리기도 했듯이 이자는 하늘에서 뚝 떨어지는 것이 아니라서 이러한 오해를 했다는 것에는 쉽사리 이해되지는 않네요.

프로토콜에도 관리자가 있는 경우가 있습니다. 다만 Yield Farming의 경우에 관리자가 있더라도 익명인 경우가 많아 사고가 일어나더라도 책임을 묻기 어렵습니다. 관리자를 특정할 수 있더라도 프로토콜을 이용할 때 가치가 없다는 점을 명시하고, 버그로 인해 자산을 잃어버릴 수 있다고 명시합니다.

실제로 일어난 일,

실제로 Andre Cronje의 배포된 코드로 인해서 사고가 한 번 발생한 적이 있습니다. 대체로 Andre는 테스팅을 위한 코드 배포를 Mainnet에서 하기로 유명합니다. 그의 트위터 프로필 설명란에 적혀있는 “I test in prod”라고 적혀있는 문구는 DeFi에 관심이 있는 사용자라면 잘 알고 계실듯합니다.

이러한 문구에 맞게 yearn에 포함되지 않은 많은 실험용 컨트랙트들이 Andre의 이더리움 주소에서 배포되었습니다. 유명한 StableCredit의 다양한 버전들도 이러한 방법으로 배포되었죠, 그 외에도 Andre Cronje가 설명하지 않는 많은 컨트랙트들이 배포되었습니다.

이런 방식으로 배포된 Eminence 컨트랙트도 그중 하나 입니다. 다만 이는 Andre Cronje와 주변인들이 Eminence에 대한 힌트를 지속적으로 제공하고 있었기 때문에 Andre Cronje의 이더리움 계정을 사람들이 지속적으로 관찰할 수 있게끔 하였습니다.

Eminence 컨트랙트가 배포되었으나 발표는 없었고, 사람들은 인터페이스도 존재하지 않는 컨트랙트에 Dai를 보내고 $EMN을 채굴하기 시작했습니다. 다만 모두가 잘 알고 계시듯 해커는 Flashloan을 이용, 경제적인 공격을 수행하여 예치된 Dai의 대부분을 출금했습니다.

다만 짚고 넘어가야 할 점은 Eminence 컨트랙트에 대해서 Andre Cronje는 아무런 발표를 하지 않았으며, 보안 감사가 수행되지 않은 컨트랙트라는 점입니다. Next YFI를 노리는 사람들이 컨트랙트를 검증하지 않았다는 점을 중점적으로 봐야할 것입니다.

또한 이번에 배포된 Eminence 컨트랙트가 앞으로 배포될 컨트랙트들과 연동되지 않을 수도 있다는 점도 명확히 할 필요가 있습니다.

보안감사를 수행한 프로젝트는 어떻게 검증할까?

지금 Yield Farming에서 전반적으로 이뤄지고 있는 보안 감사에 대해서, “의도한 기능이 버그 없이 작동하는가”에 초점이 맞춰져 있습니다. 따라서 Yield Farming으로 구현된 아이디어 자체가 결함이 있다고 하더라도 보안 감사에서 이러한 형태의 검증을 할 수 있는 것은 아닙니다.

다른 의견으로, 보안 감사 업체가 감사를 제대로 하지 않아서라는 의견이 있습니다. 하지만, Yield Farming의 경우 다양한 DeFi 프로토콜들을 이용하기 때문에, 다른 프로토콜과 결합되었을 때 어떤 영향이 생길 수 있는지 확신할 수 없으며, 프로토콜이 많이 통합되어 있을수록 문제가 생길 확률이 더욱 커지게 됩니다. 이 모든 것을 통합하여 보안 감사를 하는 것은 아이디어를 검증하는 것과 다름이 없습니다. 

보안 감사 업체는 일종의 인센티브를 위해서 작업을 수행하는 것이며, 그들의 보안 감사 보고서에는 하나같이 모든 보안 요소에 대해 검증한 것이 아니라는 문구가 적혀있습니다. 감사된 내용은 참고용일뿐이라는 것이죠.

일부 보안 감사 업체의 경우 계약 당사자가 프로토콜 배포자이지만, 자산의 손실을 입은 이용자에게 사과하는 경우가 있습니다. 이러한 경우는 감사에 대한 일부 책임을 인정하는 것이기 때문에 사업적 위치를 고수하는 것이 좋아 보일듯하네요.

결론은 전부 이용자의 몫.

확인되지 않은 컨트랙트를 이용하는 것은 결국 사용자가 감내해야 할 문제입니다. 결국 자산을 예치하겠다고 결정하고 행동하는 것은 자산의 소유자이며, 컨트랙트 배포자가 훔치는 것이 아닙니다.

이용자는 컨트랙트 배포자에게 강도 높은 비난을 하기에는 자신의 잘못이 있다는 것을 인정해야 합니다. 로직을 이해할 수 없다면 사용하지 않는 것이 자신의 자산을 지킬 수 있다는 최선의 길이라는 사실을 명심하면 좋을 것 같습니다.



⁉️이더리움이 멈췄었나요?

지난 11월 11일 오후는 국내 거래소들이 이더리움에 대한 입출금을 정지시키면서 가시화 되었습니다. 결국 가장 처음 입출금을 정지시켰다는 곳을 찾을 수 있었는데 Binance였습니다.

Binance의 대표인 CZ는 트위터에 다음과 같은 트윗으로 정지 이유를 밝혔습니다.

Explorer중 하나인 Blockchair에서 다른 Explorer과 다른 Block을 가리키고 있어 체인 분할이 감지되어 닫았다는 내용이었습니다. 결론적으로 Blockchair와 Infura가 Geth의 버전을 업그레이드 하지 않아, 합의 계층이 분리되는 취약점에 노출된 것이었습니다.

다만 Binance에 대처에서 의문을 느꼈던 것은, Block Explorer이라 하더라도 네트워크에서 바라봤을 때, 하나의 노드에 지나지 않는점입니다. 노드 하나의 상태가 분리된 것을 보면 그 노드가 건강하지 않은 상태(버그, 네트워크 단절, 자율적 포크 등등…) 이기 때문인데, Explorer가 제대로된 블럭 정보를 표시하지 못하는 것으로 입출금을 닫았다고 하는 것은 쉽사리 이해되는 설명은 아닙니다.

이더리움 자체는 중단없이 잘 동작하고 있었지만 이중화를 하지 않고 Infura 노드를 이용하고 있는 다양한 프로토콜들의 인터페이스가 멈추는 현상이 발생했습니다.

Infura가 다운되었을 뿐이었기 때문에 이더리움상의 다양한 프로젝트와 노드 서비스 제공자들은 자신의 노드 RPC들을 무료로 나눠주기 시작했고, 이 소식을 접한 사용자들은 무리없이 이더리움을 사용할 수 있었습니다.

다만 아쉬운 것은 국내 거래소에서 이러한 유형의 설명을 볼 수 없었다는 것입니다. 단순히 이더리움 네트워크의 긴급 점검이라는 공지만 올라왔을 뿐이었고, 이마저도 거래소가 점검할 수 있는 수준이었는지, 이더리움 네트워크가 점검 상태라고 하는 것인지도 불분명합니다.

이는 분명 아쉬운 점입니다. 거래소가 이용자들의 자산들 대리하여 가지고 있으면서도, 어떠한 의사결정에 의해 입출금이 중단 되었는지 알 수 없기 때문입니다. 이를 좀 더 투명하게 공개해 준다면 좋을 것 같네요.

(2에서 계속됩니다)


비 정기적으로 Nonce Classic의 DeFi Morse가 발행됩니다.

이 뉴스레터의 모든 내용은 투자 조언이 아니며 공개된 정보를 통해 투자의 손실이 발생한 경우 발행인은 책임지지 않습니다. 또한 특정 단체, 회사 그리고 개인을 대표하지 않으므로 정보의 습득에 유의할 필요가 있습니다.

마스크 착용이 11월 13일 부터 의무화 되었습니다. 실내와 거리두기 어려운 실외에서도 필수적으로 마스크 착용이 의무화 되어야 합니다. 정확한 내용은 질병 관리청자주하는 질문을 참고해주세요!

DeFi Morse 뉴스레터의 스폰서가 되길 바라신다면, 개인적으로 연락 바랍니다. 또한 다시 커피를 소개 해드리고 있으니, with☕️ 토큰을 구매하시고 저에게 알려주세요!