최근에 비탈릭 부테린은 이더리움 심천 키노트에서 EOS에 대한 질문을 받았습니다. 저는 오늘 EOS에 대한 그의 주장에 대해 사실 정정을 하려고 합니다. 그의 주장을 하나하나 짚어가며 반박하겠습니다.
위의 8분 20초 짜리 비디오에서 비탈릭 부테린은 다음과 같이 말했습니다.
EOS가 이더리움보다 많은 트랜젝션을 처리할 수 있다고 주장하는 이들은 2가지 근거를 내세웁니다. 첫 번째는 이더리움에 EOS가 가지고 있지 않은 많은 프로토콜 기능들이 있다는 것입니다. 그 중 한 가지가 merkle trees였습니다. 거래에 대해 무엇이든 증명하고자 할 때 네트워크상의 모든 사람들은 이를 증명할 수 있어야 합니다. 사실 특정 트랜잭션이 포함된 계정이 얼마를 갖고 있는 지 확인하기 위해서 엄청나게 큰 컴퓨팅 파워는 필요하지 않습니다. EOS는 그만한 파워를 가지고 있지 않습니다.
EOS는 블럭 내 모든 트랜잭션에 대해 merkle tree를 가지고 있습니다. 이는 모든 블럭을 처리하거나 전체 노드를 신뢰하지 않고도 지급받은 사실을 입증할 수 있다는 점을 의미합니다. 사실 EOS의 경량 노드는 블록 헤더의 전체 내역을 요구하지 않기 때문에 이더리움의 증명보다 간소합니다.
'블록 체인 상태 표현은 추상적이어야 하며, 합의의 일부가 되서는 안된다'라는 제 포스팅에서 상태에 따라 merkle tree를 생성할 때 발생하는 문제를 제기한 바 있습니다. 저는 블록 체인의 상태를 상자를 열기 전까지 죽었는 지 살았는 지 알 수 없는 슈뢰딩거의 고양이로 비유했었습니다. 구체적인 예를 들면, 1분 전 어떤 상태였는지 증명할 수 있으나(여러분이 마지막으로 상자를 열어 보았을 때입니다), 현재 상태는 증명할 수 없습니다. 트랜잭션은 언제든지 상태가 변할 수 있기 때문에 마지막 읽어들이는 순간까지 트랜잭션은 일정하지 않습니다. 일정 시간동안 상태를 변경할 수 없는 ‘타임 락’을 제외하면 말입니다. 과도한 타임 락의 사용은 성능 저하를 불러오고 애플리케이션을 제한적으로 만듭니다.
여러분이 EOS 네트워크에 참여중이고 전체 노드를 소유하지 않는다면 노드는 모든 트랜잭션을 처리중이라는 것을 의미합니다. 따라서 전체 노드를 신뢰해야만 합니다. 하지만 여러분은 모든일이 제대로 행해지고 있다는 사실을 스스로 증명할 방법이 없습니다.
EOS에서 노드는 부분 상태를 입증할 수도록 디자인 되었습니다. 이는 전체 노드가 모든 컨트랙트를 마다 실행될 필요가 없다는 것을 의미합니다. 즉 전체 노드를 필요로 하는 방대한 자원 없이도 애플리케이션과 컨트랙트의 상태를 파악할 수 있습니다. 둘째, 경량 클라이언트도 유저의 행동을 증명할 수 있으므로 지불 여부를 검증할 수 있습니다. 셋째, 상태에 대한 입증이 필요한 경우 트랜잭션을 전송할 수 있습니다. 상호 참조할 수 있는 독립적인 블록 체인 사실들이 없다면 큰 문제에 봉착할 수 있습니다. 마지막으로 EOS 생태계의 모든 구성원은 규칙에 의해 보호 받으며 API 노드가 블록 체인 상태에 대해 거짓 행위를 하면 암호학적 증거로 거짓 주장에 대해 손해 배상에 대한 책임을 지울 있습니다.
이더리움에서는 경량 클라이언드가 올바른 블록 체인을 증명하고 동기화한다는 것을 신뢰해야합니다. 그들이 생성하는 상태에 관한 merkle 증명은 뒤쳐지고 부적절해 보입니다.
DPOS에 대한 공격
비탈릭은 대표자 지분 증명(DPOS)에 대해 비판했습니다.
EOS에서 전체 노드의 수는 작아질 것입니다. 댄 라이머는 오직 100개의 노드만 합의에 참여하고 나머지는 얇은 클라이언트 존재인 이 네트워크의 개념을 DPOS라 부릅니다. EOS가 많은 트랜잭션을 처리할 수 있다고 주장하는 또 다른 이유는 각 노드의 요구사항(대역폭과 컴퓨팅)이 훨씬 높기 때문입니다. 이는 확장성을 위한 한 가지 방법일 뿐입니다.
시스템에서 100개의 노드만 갖는다면 중앙 집권화 될 수 있다는 문제점이 발생합니다. 여러분은 서비스를 거부할 수 있습니다. 대표자를 뽑기 위한 투표를 해야 하기 때문에 당선된 노드들을 모두가 알게 됩니다. 따라서 노드를 운영하는 사람들을 공격하는 것은 무척 쉽습니다. 인터넷 서비스 사업자, 기업, 정부가 쉽게 셧다운 시킬 수 있습니다. 큰 노드를 통해 확장성을 추구하려는 전략은 노드의 수를 줄이고, 시스템이 중앙 집중화되는 결과를 야기할 것입니다.
그는 적은 수의 노드는 간단하게 식별되며 정부에 의해 중단될 수 있다고 말합니다. 그는 더욱이 커다란 노드를 통한 확장성 추구는 시스템의 중앙 집중화를 초래한다고 주장합니다. ‘무엇을 위한 중앙화인가’라는 질문을 고민해볼 필요가 있습니다.
여기 이더리움 노드에서 생산된 블럭 분포가 있습니다. 보시다시피 두 풀이 51%의 해쉬 파워를 조종하기 때문에 다른 풀에서 생성한 블록이 무시될 수 있습니다.
실용적인 관점에서 살펴볼만한 사실은 이더리움의 전체 노드에서 비중이 큰 과반수에 대한 자원 의존성이 너무 높다는 것입니다. 거의 모든 경량 클라이언트들은 merkle 증명에 대한 비탈릭의 주장만큼 중요하지 않습니다.
블럭 생성자 관점에서 이더리움과 모든 다른 프로토콜은 DPOS 블록 체인보다 훨씬 중앙화되어 있습니다. 특히 의미있는 중앙화에 대한 정의(트랜잭션 컨펌 윈도우 하나 당 특별한 생성자 수)에 따르면 말입니다.
암시장
비탈린은 마지막으로 DPOS가 정부, 인터넷 서비스 사업자, 기업에 의해 쉽게 중단될 수 있다고 지적했습니다. 제가 이미 증명한 바와 같이 비탈릭은 그릇된 가정에 기초해서 EOS를 비판했습니다. 중요한 사실은 이더리움과 비트코인은 이미 서비스 거부 공격을 당한 반면, 스팀과 비트쉐어는 네트워크의 홍수 속에서도 피해를 입지 않았다는 것입니다. 위의 파이 차트가 증명하듯이, 7개의 노드만 가지고도 90%를 장악하여 이더리움 네트워크를 무너뜨릴 수 있습니다.
외면할 수 없는 사실은 모든 공공 블록 체인이 P2P 탐사 프로세스에 의존한다는 것입니다. 전 세계 정부와 인터넷 서비스 사업자들은 모든 이더리움 노드가 어디에 있는 지 정확하게 알 수 있으며 공개된 노드의 접속점(endpoint)을 간단하게 차단할 수 있습니다.
이더리움의 전체 노드는 현재 스케일에서 너무 비실용적입니다. 이는 실제 애플리케이션이 공개 API 종단점에 의존하게 될 것을 의미합니다. 최근 EOS 토큰 분배 애플리케이션은 사용가능한 모든 공개 API 종단점(역주: 이더리움 노드의 API 종단점)을 다운시킬 정도의 부하를 일으켰습니다.
정부가 서비스 중단을 시킬 것이라는 위험은 불법적인 활동에 대한 가정을 기초로 합니다. 저희는 국제적 협력으로 인한 셧다운 위협에서 자유로운 곳에 블루오션이 있다고 믿습니다. 블록 제공자와 API 종단점은 무료 관할 구역에 설치 되야 합니다.
결론
EOS는 현실적인 가정과 논리적인 사고 아래 디자인되었고, 비트코인과 이더리움 거대 마이닝 풀의 독단과 오류로부터 자유로운 확장성을 추구합니다. 저는 DPOS가 지방 분권의 실제 척도적인 측면에서 가장 실용적으로 지방 분권화 되었다는 사실을 여러 번 설명드렸습니다. 또한 EOS에는 경량 클라이언트를 위한 많은 옵션이 있고, 비탈릭의 정부 저항에 대한 주장은 공공 블록 체인의 기본적인 속성과 취약점을 무시하고 있다는 사실을 증명했습니다.
분권화 주제에 관심이 많다면 제가 쓴 블로그의 다른 포스트들을 읽어보세요.
- Decentralization of Nxt vs BitShares
- Decentralization, Scalability, and Fault Tolerance of Bitcoin
- How to Measure the Decentralization of Bitcoin
- The Most Decentralized Proof of Stake System
원문: @dan/response-to-vitalik-buterin-on-eos
@yguhan 님께서 번역해 주셨고, @clayop 가 감수하였습니다.