Last updated on 3월 17th, 2021 at 06:07 오후
블록체인은 비트코인을 구현 및 운용하기 위한 기술적인 기반임에도 불구하고, 아직까지 둘을 동일시한다거나 유행어처럼 블록체인이라는 개념이 모든 산업 전반에 퍼져 있습니다. 블록체인이 모든 산업의 막힌 부분을 뚫어주지 않음에도 만병통치약인 것처럼 퍼지는 세태를 꼬집으며, 비트코인 코어 개발자이자 기업가인 Jimmy song이 촌철살인으로 ‘왜 블록체인이 어려운가’를 지적하는 아래 글을 한번 읽어보시기 권해드립니다.
[번역] 왜 블록체인이 어려운가?(Why Blockchain is Hard)
(원문 링크 : https://medium.com/@jimmysong/why-blockchain-is-hard-60416ea4c5c)
최근 블록체인을 둘러싼 소위 ‘과장 광고’들이 엄청나게 쏟아지고 있습니다. 마치 그 광고들을 보면 블록체인은 아래의 것들을 모두 가능케하는 존재입니다.
- 소득의 불평등 해소
- 모든 데이터를 영구적으로 보호
- 모든 것을 훨씬 더 효율적이면서도 신뢰할 수 없게 만드는 것
- 죽어가는 아기를 구하기
도대체 블록체인이란게 무엇인가요? 위에 언급한 모든 것을 가능하게 해주나요? 블록체인이 정말 의료, 금융, 공급망 관리, 음악 권리와 같은 다양한 산업에 놀라운 것을 가져다 줄 수 있을까요?
그리고 블록체인이 ‘비트코인’을 위한 것이 아니라는 것은 당신이 ‘친 블록체인’이라는 것을 의미합니까? 어떻게 비트코인을 다루면서 그 뒤에있는 기술에 대해 나쁜 말을 할 수 있습니까? 이 글에서 저는 블록체인이 무엇이고, 무엇이 중요한지 살펴봄으로써 이러한 질문에 대답해보고자 합니다.
블록체인이란 무엇인가?
위와 같은 주장들 중 일부를 검토하기 위해서 먼저 우리는 블록체인이 무엇인지 정의해야 하며, 여기에는 많은 혼란스러운 상황이 존재합니다. 많은 기업들이 ‘블록체인’이라는 단어를 자신들의 모든 데이터가 잘못되지 않도록 하는 일종의 마법 장치로서 사용합니다. 물론, 이런 장치는 적어도 현실 세계와 관련되어 있을 때에는 존재하지 않는 개념입니다.
그렇다면 블록체인이란 무엇일까요? 엄밀히 말하면, 블록의 링크된 목록이고 블록은 주문된 트랜젝션의 그룹입니다. 마지막 문장을 이해하지 못한 경우, 블록체인을 데이터베이스의 하위 집합으로 생각하고 속성을 몇개 더 추가할 수 있습니다.
블록체인과 일반 데이터베이스를 구분하는 주요 요소는 데이터를 데이터베이스에 저장하는 방법에 대한 구체적인 규칙의 차이입니다. 즉, 데이터베이스에 이미 있는 일부 다른 데이터와 충돌할 수 없으며(일관성), 추가 전용이며(불변성), 데이터 자체가 소유자가 소유할 수 있습니다(소유 가능한). 마지막으로, 모든 사람들은 중앙 집중화되지 않은(분권화) 데이터베이스의 상태가 무엇인지(표준화)에 동의합니다.
바로 이 마지막 포인트가 블록체인의 신성한 마지막 지점입니다. 분산화는 단일 실패 지점이 없음을 의미하기 때문에 더욱 매력적입니다. 즉, 어떤 기관도 필요에 의해 자산을 가져가거나 ‘기록’을 변경할 수 없습니다. 이 불변의 감사 과정은 누구도 신뢰하지 않아도 되므로, 이 기술을 사용하는 모든 사람이 추구하는 혜택입니다. 하지만, 이 혜택을 얻기 위해서는 엄청난 비용이 듭니다.
블록체인의 비용
단일 세력에 의해 통제되지 않는 불변의 감사 추적은 확실히 유용하지만 그러한 시스템을 만드는 데는 많은 비용이 들게 마련입니다. 몇 가지 문제를 검토해 봅시다.
개발은 더 엄격하고 느리다
모두가 만족하는 일관성있는 시스템을 구축하는 것은 쉬운 일이 아닙니다. 작은 버그가 전체 데이터베이스를 손상시키거나 일부 데이터베이스를 다른 데이터베이스와 다르게 변형시킬 수 있습니다. 물론 손상되거나 분할된 데이터베이스는 더 이상 일관성을 보장하지 않을 뿐더러, 이러한 모든 시스템은 처음부터 일관성을 유지하도록 설계되어야 합니다. 블록체인에는 ‘빨리 움직이고 깨부수는’ 것이 없습니다. 만약 여러분이 물건을 꺠부순다면, 일관성을 잃게 되고 블록체인은 부패하고 쓸모없게 됩니다.
‘왜 데이터베이스를 수정하거나 처음부터 다시 시작하고 진행할 수 없을까?’ 라고 생각할 수도 있습니다. 중앙 집중식 시스템에서는 그렇게 하기 쉽지만, 분산형 시스템에서는 매우 어렵습니다. 데이터베이스를 변경하려면 시스템에 있는 모든 플레이어의 동의가 필요합니다. 블록체인은 하나의 개체의 통제 하에 있지 않은 공용 리소스(분산형)여야 하며, 그렇지 않으면 중앙 집중화된 데이터베이스를 만드는데 많은 비용을 지출하게 됩니다.
인센티브 구조는 설계하기 어렵다
적절한 인센티브 구조를 추가하고 시스템의 모든 플레이어가 데이터베이스를 악용하거나 훼손하지 않도록 하는 것 역시 중요하게 고려해야 할 사항입니다. 블록체인은 일관성이 있을 수 있지만, 데이터를 저장하는 데 드는 비용이 매우 낮기 때문에 쓸모없는 데이터가 많을 수록 유용하지 않습니다. 데이터를 넣는 비용이 매우 높기 때문에 데이터가 거의 없다면, 일관된 블록체인도 유용하지 않게 되는 것이지요.
데이터의 최종 목표는 무엇입니까? 네트워크 목표에 적합한 보상을 어떻게 보장할 수 있습니까? 노드가 데이터를 유지 혹은 업데이트하는 이유와 더불어, 데이터가 충돌하는 경우 노드가 다른 데이터 대신 특정한 하나의 데이터를 선택하는 이유는 무엇입니까? 이러한 질문들은 모두 고민할 가치가 있는 인센티브에 대한 질문이며, 기술과 기업이 변화함에 따라, 시작 지점 및 미래의 모든 지점에서 고려되어야 합니다. 그렇지 않으면 블록체인이 유용하지 않습니다.
여러분은 왜 여러분이 몇몇의 깨진 인센티브를 ‘고칠 수’ 없는지 궁금해할지도 모릅니다. 다시한번 이야기하지만, 중앙 집중식 시스템에서는 이것이 쉬운 일이지만 분산형 시스템에서는 합의 없이는 아무것도 변경할 수 없습니다. 모두의 동의가 없으면 어떠한 수정도 불가능합니다.
유지보수 비용이 많이 든다
기존의 중앙 집중식 데이터베이스는 데이터를 한 번만 작성하면 되지만, 블록체인에서는 수천 번 작성해야 합니다. 또한, 중앙 집중식 데이터베이스는 데이터를 한번만 확인하면 되지만 블록체인에서는 확인도 수천번을 해야 합니다. 마찬가지로, 중앙 집중식 데이터베이스에서 저장용 데이터를 한번만 전송하는 것도 블록체인에서는 수천번 전송해야 합니다.
블록체인을 유지 관리하는 데 드는 비용은 훨씬 더 높으며, 비용은 효옹성에 의해 정당화되어야 합니다. 일관성 및 안정성과 같이 앞서 언급했던 일부 속성을 필요로 하는 대부분의 애플리케이션은 무결성 검사, 확인 과정 및 백업을 활용하여 훨씬 저렴하게 이러한 속성을 구현할 수 있습니다.
사용자=주권자
기업은 사용자 데이터를 보유하는 데에서 오는 책임을 좋아하지 않기 때문에, 이는 실제로 꽤 유용할 수 있습니다. 그러나 사용자 자체가 ‘불량’할 경우에는 잘못될 수 있습니다. 블록체인을 악용해 스팸메일을 보내거나, 다른 사용자들에게 불편을 주는 어떤 방식으로 부당이득을 취하는 사용자를 쫓아낼 방법이 없습니다. 이는 특히 시스템을 악용하는 사용자가 이를 포기할 가능성이 낮다는 점에서 인센티브 구조가 매우 잘 설계되어야 한다는 위의 내용과 관련이 있습니다.
여러분은 악의적인 사용자에 대한 시스템 이용을 거부할 수 있다고 생각할 수 있습니다. 이것은 중앙 집중식 시스템에서는 매우 쉽습니다. 하지만, 블록체인 상에서 서비스를 거부하는 것은 어렵습니다. 왜냐하면 그 누구도 다른 누군가를 퇴출시킬 권한이 없기 떄문입니다. 블록체인은 공정해야 하며, 소프트웨어가 정의한 규칙을 적용해야 합니다. 만약 규칙이 나쁜 행동을 막기에 충분하지 않다면, 굉장히 운이 없는 경우입니다. 여기에는 법의 ‘정신’이 없습니다. 여러분은 악의적이거나 잘못된 행동을 하는 사용자들을 다뤄야만 합니다.
모든 업그레이드는 자발성에 근거한다
강제 업그레이드는 옵션이 아닙니다. 네트워크상 다른 플레이어는 소프트웨어를 변경할 의무가 없습니다. 만약 그렇게 한다면, 그러한 시스템은 중앙 집중식 시스템으로 구축하는 것이 훨씬 더 쉽고, 빠르고, 저렴할 것입니다. 블록체인의 핵심은 단일 사용자의 제어 하에 있지 않으며 강제 업그레이드가 필수요소가 아니라는 것입니다.
대신 모든 업그레이드는 이전 버전과 완벽히 호환되어야 합니다. 이것은 굉장히 어려운 일이며, 특히 시험적인 관점에서 새로운 기능을 추가하고 싶다면 더욱 어렵습니다. 각 소프트웨어 버전은 테스트 매트릭스에 많은 것을 추가하며 출시 시간을 늦추게 됩니다.
다시 말하지만, 이것이 중앙 집중식 시스템이라면 구형 시스템에 서비스 지원을 중단하는 것으로 해결할 수 있는 쉬운 문제입니다. 그러나 분권화된 시스템에서는 아무에게도 강제로 작업을 수행하도록 요구할 수 없습니다.
확장이 매우 어렵다
마지막으로, 블록체인에서의 확장은 기존의 중앙 집중식 시스템에서보다 최소 몇 배 이상 어려우며, 그 이유는 명백합니다. 동일한 데이터가 한 곳에 위치하는 것이 아니라 수백 또는 수천 곳에 있어야 하기 때문입니다. 전송, 검증 및 스토리지의 오버헤드가 큰 것도 기존 중앙 집중식 데이터베이스에서는 한번만 지불해야 할 것을 블록체인에서는 모든 단일 복사본으로 비용을 전부 지불해야 하는 것과 관련되어 있습니다.
물론, 노드 수를 줄임으로써 그 부담을 줄일수도 있습니다. 그렇다면 왜 분산 시스템이 필요한 것일까요? 확장 비용이 가장 중요한 문제라면 중앙 데이터베이스를 구축하는 것이 왜 좋을까요?
사실은, 중앙 집중화가 훨씬 쉽습니다
주제에 관심을 기울여 보면, 분산형 시스템은 작업하기 매우 어렵고 유지관리 비용이 많이 들며, 업그레이드가 어렵고 확장 또한 어렵습니다. 중앙 집중식 데이터베이스는 블록체인보다 훨씬 빠르고, 저렴하고, 유지보수가 쉽고, 업그레이드도 쉽습니다. 그렇다면 사람들은 왜 모든 문제에 대한 만병통치약인 것처럼 블록체인 단어를 계속 사용하는 것일까요?
첫째, 블록체인에서 다뤄지는 많은 산업은 실제로 IT 인프라 업그레이드 시기가 매우 늦어지고 있습니다. 의료 서비스에는 악명 높은 끔찍한 소프트웨어가 존재하며, 금융 결제는 70년대 소프트웨어에 머물러 있습니다. 공급망 관리 소프트웨어는 사용하기도 어렵고 설치하기도 어렵습니다. 이러한 산업계의 대부분의 회사들은 개선에 대한 위험성 때문에 업그레이드를 거부합니다. 수많은 인프라 업그레이드로 인해 수억달러의 비용이 들고 결국 롤백되는 경우도 많습니다. 블록체인은 이러한 IT 인프라 업그레이드를 판매하여 좀 더 매력적으로 만드는 방법입니다.
둘째, 블록체인은 최첨단 기술인 것처럼 보이게 하는 방법입니다. 좋든 싫든 간에 ‘블록체인’이라는 단어는 그 자체로 독자적인 길을 걷고 있습니다. 그것이 무엇인지 실제로 이해하는 사람은 거의 없지만, 유행을 따르고 싶다면 이 단어들을 좀 더 똑똑하게 보일 수 있도록 잘 사용하세요. 다른 누군가의 컴퓨터를 뜻하는 ‘클라우드’, 조정 알고리즘을 의미하는 ‘AI’와도 같은 맥락에서, 블록체인은 느리고 값 비싼 데이터베이스를 의미합니다.
셋째, 사람들은 실제로 특정 산업에 대한 정부 통제를 좋아하지 않으며, 종종 느리고 비용이 많이 드는 법적인 체제와 다른 조정 메커니즘을 원합니다. 그들에게 ‘블록체인’은 정부 규제의 무거운 장치를 제거하는 진정한 방법입니다. 이것은 블록체인의 기능을 과대 평가한 것입니다. 블록체인은 마술처럼 인간들 사이의 갈등을 없애지 않습니다.
결과적으로 많은 사람들이 능력이나 비용에 대해 실제로 이해하지 못한 채 과장된 약속을 이야기합니다. 더 나쁜 것은, 실제 기술적 세부 사항과 비용이 많은 VC및 회사의 경영진들 사이에서 추상화되어, 블록체인의 진정한 기능을 가린다는 점입니다. 그들 모두는 마치 벌거벗은 임금님을 대상으로 사실 그대로를 말하기 두려워하는 것과 같은 상황에 처해 있습니다.
그렇다면 블록체인의 장점은 무엇인가요?
우리는 위에서 블록 체인의 비용이 중앙 집중식 데이터베이스를 구축하는 비용에 비해 매우 비싸다는 것을 알았습니다. 따라서, 블록체인을 사용해야 하는 유일한 이유는 ‘탈중앙화, 분권화’입니다. 즉, 단일 실패 지점 및 제어 지점을 제거하는 것입니다.
이는 자연스럽게 소프트웨어나 데이터베이스가 주어진 상황을 자주 변경하지 않아야 한다는 것을 의미합니다. 업그레이드에는 약간의 긍정적인 부분이 있어야 하고, 규칙을 망치거나 바꾸는 데에는 많은 단점이 있어야 합니다.
대부분의 산업은 이에 해당되지 않으며, 새로운 기능이나 업그레이드와 필요에 따라 자유롭게 변화하고 확장가능한 기능을 필요로 하기 마련입니다. 블록체인은 업그레이드가 어렵고, 시스템 변경이 어렵고, 확장하기 쉽지 않다는 점을 감안하면 대부분의 산업은 블록체인을 사용하지 않을 것입니다.
우리가 여기에서 주목해야 할 유일한 예외는 ‘돈’입니다. 대부분의 산업에서 실제 사례와 달리, 돈의 가치는 변하지 않는 다면 더 좋습니다. 불변성과 규칙 변경의 어려움은 돈과 비용에 관련된 문제에서 긍정적으로 작용합니다. 이것이 바로 블록체인이 비트코인에 적합한 도구인 이유입니다.
분명한 것은, 블록체인을 사용하고자 하는 많은 기업들은 블록체인 그 자체를 원하는 것이 아니라 IT를 특정 산업으로 업그레이드하려고 한다는 것입니다. 좋은게 좋은것이라지만, ‘블록체인’이라는 단어를 사용하면 정직하지 않은, 그 능력을 뒤집을 수 있습니다.
결론
블록체인은 요즘 가장 핫한 용어이며, 불행히도 ‘블록체인은 비트코인이 아니다’라는 유행화는 사라지지 않습니다. 중앙 집중식 서비스를 사용하는 경우 블록체인을 도입하면, 중앙 집중식 데이터베이스로는 느리게 할 수 없는 일들이 발생하지 않습니다. 분산된 서비스라면 시스템에 존재하는 단일 실패 지점을 고려하지 않을 수 있습니다. 진정으로 분산화 된 서비스에서는 ‘여러분’이 존재하지 않을 것입니다.
2000년대 초반, 기술업계의 많은 임원들은 직원들에게 Java와 XML을 사용하도록 강요했습니다. 이 두가지는 툴이었고 실제 제품이 아니었음에도 불구하고, 엔지니어들이 성취하고자 하는 바와 관계없이 사용할 수 밖에 없었습니다. 블록체인은 그것과 매우 비슷합니다. 해결하고 있는 문제에 집중하면 도구가 쉽게 드러납니다.
어떤 의미에서, 블록체인의 현재 개념들은 불가능한 일을 해결하기 위해 노력하고 있습니다. 그들은 중앙 집중화된 시스템을 통제할 수 있는 분산된 시스템의 보안을 원합니다. 욕망은 양쪽 세계에서 최고이지만, 결국 얻게 되는 것은 양쪽 세계 모두 최악의 결과입니다. 분산형 시스템의 비용과 어려움은 중앙 집중식 시스템의 장애 모드를 사용하여 얻을 수 있습니다.
요즘 블록체인은 ‘약을 팔기 위해’ 너무 많이 이용되는 경향이 있습니다. 이러한 과대 광고의 세계에서 옥석을 잘 가려내는 것이, 장기적으로 도움이 되는 것은 명확해 보입니다.
블록체인에 관한 글 더보기 : 그래서, 블록체인이 뭔데? (WTF is blockchain?)