정규화란 중복을 없애라는 데이터베이스 설계 원칙이다. 원천데이터로부터 이끌어낼 수 있으면 실제 디비에 넣으면 안된다는 거지(물론 성능을 위해 종종 무시된다.) 그런 의미에서 utxo 모델(대표적으로 비트코인)과 account 모델(대표적으로 이더리움)의 차이점을 생각해보면 후자가 쓰기엔 편하고 직관에도 일부 맞는 것이 있지만 데이터 정규화의 관점에서 좋지 못하다는 걸 알 수 있다. 


이더리움은 내 주소의 잔고가 얼마인지가 블록체인에 '기록'되어 있기 때문에 바로 얼마인지를 알 수 있고 개발도 편하지만, 비트코인은 계좌의 잔고라는 개념 자체가 없고 잔고란 그저 내가 통제할 수 있는 utxo의 합일 뿐이다. 매번 다 합쳐서 계산해서 보여줘야 하지.


하지만 가만 생각해 보면 계좌의 잔고란 원래부터 존재하지 않는 데이터다. 잔고는 오직 내 주소에 오고 간 amount 들의 누적합일 뿐이니까. 결국 별도의 집계 정보를 중복해서 저장하는 거지. 이것은 데이터의 정합성이 어긋날 수 있는 위험성을 내포한다. 물론 amount의 누적합과 잔고계산은 atomic하게 이루어지게 만들어는 놨지만 그것은 결코 공짜로 이루어지는 것이 아니며 별도의 컴퓨팅 지원을 소모한다.


가장 대표적인 트레이드 오프는, 이더리움의 계좌의 논스값을 영구적으로 유지해야 한다는 점이다. 비트코인의 경우 utxo 하나하나가 완전히 별도로 존재하기 때문에 utxo를 사용하려는 tx가 각자의 tx만 검증하면 되지만 이더리움의 잔고는 말 그대로 이전에 받은 값의 합산이므로 특정 어느 동전을 사용하는 게 아니다. 따라서 별도로 검증할 수 없고 계좌에서 발생하는 모든 tx는 순서대로 논스값을 차례대로 지키며 처리되어야 한다. 계좌의 잔고는 차례차례 업데이트 되어야 하니까.


논스값은 더이상 그 주소를 사용하지 않는다고 하더라도 네트워크가 마음대로 지울 수가 없기 때문에 영구적으로 남게 된다. 과거의 tx를 찾을 필요없이 내가 받을 것만 잘 처리하면 된다는 가정 하에 비트코인인 utxo 셋만 잘 유지하고 나머지는 공격적으로 지워 버릴 수 있지만 이더리움은 그럴 수가 없다.(그것을 완화하려고 여러가지 시도를 하고 있지만 결국 그것도 다른 것을 희생해야만 얻을 수 있다.)


그러한 이유로 인해 그 누구에게도 의존하지 않고 tx와 내 계좌를 검증하기 위해 필요한 하드디스크 용량은 비트코인의 경우 12G 약간 넘는 정도인데 비해 이더리움의 경우 내가 알기로 100기가가 넘는다. 컨센서스 레이어에서 모든 것은 트레이드 오프이며 무엇을 얻으면 대충 다른 걸 희생했다는 뜻이다. 여러개를 동시에 잃을 순 있지만(멍청한 놈이 만들었을 경우) 아무리 똑똑한 놈이 만들어도 서로 상반되는 것을 동시에 얻을 순 없다. 


비트코인의 성공에 미처 올라타지 못해 배가 아팠던 사람들 세컨드 베스트를 찾으며 자신이 무지성 비트코인 찬티들과 다르게 진정한 가치를 찾았다며 자신의 기스난 통찰력의 자존심을 회복하려고 들지만 대체로 고전을 면치 못하는 이유다. 사실, 당신이 진짜 통찰력이 있었다면 이제 와서 세컨드 베스트를 찾는 게 아니라 이미 부자가 되어 있었어야 한다. 세상에 셀 수도 없이 많은 기회가 있었고 그 모든 것을 놓친 것은 당신 통찰력의 한계를 보여주며(아, 물론 나도 그런 통찰력은 없고 당연하게도 부자가 아니다.), 비트코인이 결국 그 목표를 달성하지 못하고 가치가 제로로 가더라도 아마 그 다음에 뜨는 무언가는 당신이 선택한 뭔가가 아니라 지금 그 누구도 주목하지 않고 있는 전혀 새로운 무언가일 것이다.


다음 글은 모네로의 컨센서스 레이어와 그것의 장단점에 대해서 다뤄보겠다. 세컨드 베스트를 찾는 사람들 중 대체로 투자자로 분류되는 자들은 이더리움을 지지하고, 프라이버시를 중시하는 너드들은 모네로를 지지하는 경향이 있다.