--- title: 모듈러 블록체인 개요 tags: modular blockchain, scalability image: https://i.imgur.com/fuT2o0f.png --- <style> html, body, .ui-content { background-color: #333; color: #ddd; } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { color: #ddd; } .markdown-body h1, .markdown-body h2 { border-bottom-color: #ffffff69; } .markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #fff; } .markdown-body img { background-color: transparent; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: white; border-left: 2px solid white; } .expand-toggle:hover, .expand-toggle:focus, .back-to-top:hover, .back-to-top:focus, .go-to-bottom:hover, .go-to-bottom:focus { color: white; } .ui-toc-dropdown { background-color: #333; } .ui-toc-label.btn { background-color: #191919; color: white; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { color: white; border-left: 1px solid white; } .markdown-body blockquote { color: #bcbcbc; } .markdown-body table tr { background-color: #5f5f5f; } .markdown-body table tr:nth-child(2n) { background-color: #4f4f4f; } .markdown-body code, .markdown-body tt { color: #eee; background-color: rgba(230, 230, 230, 0.36); } a, .open-files-container li.selected a { color: #5EB7E0; } img[src$="centerme"] { display:block; margin: 0 auto; } </style> # 모듈러 블록체인 개요 [블록 모듈](https://dribbble.com/shots/13178540-Building-blocks) ![](https://i.imgur.com/fuT2o0f.png) 모듈러 블록체인이란? --- - 모듈러 블록체인 (modular blockchain) 이라는 말은 지금까지 등장한 다양한 확장성 솔루션들을 하나로 취합하는 용어로 사용되고 있다. 마치 *Arbitrum*, *Optimism*, *Plasma*, *Polygon* 그리고 *이더리움 2.0 (현재는 2.0 이라고 부르지 않지만)* 모두 결국에는 모듈러 블록체인의 철학 아래서 생겨났던 확장성 솔루션으로 여겨지고 있다. - 모듈러 블록체인의 철학은 간단하다. 기존의 단일 (monolithic) 구조의 레이어1 네트워크의 기능들을 여러 레이어들로 해체함으로써, 현재보다 100배 이상으로 트랜잭션 처리 속도를 높이는 것이다. 이와 더불어 확장성, 유연성 그리고 탈중앙성을 높이자는 취지이다. 모듈러 블록체인에 대해서 알아보기 앞서 기존 블록체인의 구조를 알아보고 그 한계를 먼저 살펴봐야한다. #### 기존 블록체인의 한계 - 기존 블록체인의 단일 구조는 블록체인의 트릴레마(Trilemma)에서 벗어날 수 없었다. 즉, 블록체인은 **탈중앙성, 확장성, 보안** 이렇게 3가지의 특성을 가져야 하는데, 일반적으로는 2가지를 충족시키고 다른 하나에 대해서는 충족시키지 못했다는 것이다. 예를 들어, 비트코인과 이더리움의 경우 탈중앙성과 보안성을 갖췄지만 확장성은 떨어진다. 반면, 솔라나의 경우 중앙화된 블록체인으로 보안과 확장성은 갖췄지만, 탈중앙성은 부족하다고 여겨진다. - 블록체인에서의 **탈중앙성**은 누구나 네트워크에 참여할 수 있음을 의미한다. 검증에 참여하고 싶은 노드가 네트워크에 참여하기 위해서 권한을 얻어야 한다던지, 그렇지 않더라도 일반 사용자는 참여할 수 없는 높은 수준의 하드웨어 스펙을 요구되는 경우에는 탈중앙화가 되어있지 않다고 판단할 수 있다. 탈중앙성에 대해서 하나 흥미로운 점은, 비탈릭 부테린은 블록체인의 중앙성과 탈중앙성의 타협점은 블록 생성자의 중앙화와 블록 검증자의 탈중앙화로 달성할 수 있다고 한다. 즉, 블록 생성자는 높은 하드웨어 스펙에 빨리 블록을 생성할 수 있는 중앙화된 주체여도 괜찮지만, 블록 검증자는 누구나 참여할 수 있도록 탈중앙화 되어야 한다는 것이 비탈릭의 주장이다. - 블록체인에서의 **보안**이란, 악의적인 사용자가 있어도 블록체인 네트워크 상에서 다른 노드들이 영향을 받지 않고, 블록 생성과 검증을 진행할 수 있어야 한다는 것이다. 예를 들어, 어떤 악의적인 블록 생성자가 잘못된 트랜잭션을 생성했다고 해서 그 트랜잭션을 그대로 수용한다던지 또는 일부 데이터를 누락시켰다고 해서 다른 노드들이 블록체인을 사용하지 못하게 된다면 블록체인의 보안은 심각하게 위협받게 된다. - 마지막으로, 가장 많은 솔루션들이 해결하려고 했던 블록체인에서의 **확장성**이란 `throughput / verification time` 이다. 즉, 블록체인의 트랜잭션 처리량인 throughput 이 높아질수록, 트랜잭션의 유효성 검증에 필요한 verification time이 줄어들수록 확장성은 높아진다. 블록체인의 throughput을 늘리는 방법은 2가지가 있다. 1. 첫번째로, 블록의 크기를 늘리는 방법이다. 블록의 크기를 늘리면 더 많은 트랜잭션을 담을 수 있다. 2. 두번째 방법은 off-chain으로 트랜잭션의 수행을 넘기고, on-chain 에서 검증을 수행하도록 하는 방법이 있다. - 첫번째 방법은 이더리움 베를린 업데이트 (EIP-2526) 에서 블록 크기를 20% 늘리는 방식으로 진행을 했다. 하지만, 근본적으로 최대 20% 만큼의 throughput 밖에 개선할 수 없는 문제점을 갖고 있다, 뿐만 아니라 블록의 크기를 키우는 방법은 결국 블록을 생성하고 검증하기 위해서 더 높은 스펙의 하드웨어를 요구하기 때문에 탈중앙성을 저해하는 원인이 된다. - 두번째 방법에서 이야기하는 off-chain들은 이더리움의 확장성 솔루션으로 제안된 플라즈마 체인이나 롤업 체인 등을 가리킨다. 플라즈마 체인이나 롤업 체인들은 이더리움에서 수행되는 트랜잭션을 off-chain에서 수행하고, 트랜잭션들에 대한 요약된 정보만 이더리움 체인에 올라가도록 하는 방법이다. 블록체인의 레이어 --- - 모듈러 블록체인은 블록체인을 여러 개의 레이어로 구분하여 각각의 블록체인들이 각각의 기능을 하는 것을 목표로 한다. - 하지만, 블록체인은 애초에 모듈화를 염두해두고 개발된 것이 아니어서 어떤 레이어로 구분해야 한다는 기준은 없다. 블록체인의 시초인 비트코인은 디지털 화폐와 분산 장부를 염두해둔 것이었고, 이더리움은 블록체인의 기능을 화폐에만 국한시키지 않고 좀 더 일반적으로 사용될 수 있도록 개발된 블록체인이다. 마치 컴퓨터 통신이 네트워크 7계층을 염두해두고 개발된 것이 아닌 것처럼 초기 블록체인 또한 이러한 모듈화나 계층을 염두해두고 개발된 것이 아니다. 한창 블록체인이 발전하고 있는 지금 시점에서 앞으로 어떻게 변화할지 모르는 블록체인의 레이어를 여기서 단정짓기는 어렵지만, 점차 블록체인의 기능이 확대됨에 따라 새로 정의되고 있는 레이어라는 측면에서 블록체인의 레이어를 이해하면 될 것 같다. - 우리가 일반적으로 이해하고 있는 블록체인은 2가지 기능이 있다. 하나는 **트랜잭션을 수행**하는 기능이고, 다른 하나는 **트랜잭션에 대해서 검증**하는 기능이다. 예를 들어, A 가 B에게 50 ETH 를 송금했을 때, 블록체인은 A의 잔고에서 50 ETH 를 빼서 B의 잔고에 추가해주게 되는데, 이 거래 내역에 대해서 다수의 검증 노드들이 유효한 트랜잭션인지 검증을 해주는 절차를 거친다. 다수의 동의 받은 이 트랜잭션은 블록체인에 확정적으로 기록된다. 여기서 트랜잭션을 실행시켜주는 기능을 **'실행 레이어 (Execution Layer)'** 라고 하고, 트랜잭션에 대해 다수의 동의를 받는 기능을 **'합의 레이어 (Consensus Layer)'** 라고 부른다. 따라서 우리가 피부로 느끼는 레이어는 아마 실행 레이어와 합의 레이어일 뿐이다. 하지만, 좀 더 세분화한다면 2가지 추가 레이어가 생길 수 있는데 이들을 포함하여 총 4개의 레이어가 다음과 같이 존재한다. 1. **실행 레이어 (Execution Layer)**: 사용자가 트랜잭션에 서명을 하거나 스마트 컨트랙트를 배포하거나 자산을 보내는 등 블록체인과 상호작용하고, 그 상호작용이 수행되는 레이어. 2. **정착 레이어 (Settlement Layer)**: 트랜잭션 수행에 대한 검증 레이어. (자세한 것은 아래 설명) 3. **합의 레이어 (Consensus Layer)**: 트랜잭션의 순서를 정하는 레이어. 4. **데이터 가용성 레이어 (Data Availability Layer)**: Data Availability Problem 을 극복해낼 수 있도록 데이터의 가용성을 보장하는 레이어. - 위에서 정착 레이어와 합의 레이어가 구분된 것이 좀 아리송할 수 있다. 원래 우리가 알고 있는 합의 레이어를 '검증'과 '정렬', 두가지의 기능으로 구분했다고 보면 된다. 정착 레이어가 블록과 트랜잭션에 대한 유효성 검증을 하는 레이어라고 하면, 합의 레이어는 검증 완료된 트랜잭션을 받아 순서를 정해서 블록을 생성하는 과정이라고 보면 된다. [Celestia 글](https://forum.celestia.org/t/an-open-modular-stack-for-evm-based-applications-using-celestia-evmos-and-cosmos/89 )에서도 언급된 것처럼 정착 레이어는 단일 구조에서는 존재하지 않던 레이어이고, 모듈러 구조에서는 선택적으로 합의 레이어와 같이 있거나 분리될 수 있기 때문에 여기서는 개념적인 구분이라고 보면 된다. - 정착 레이어는 롤업 체인을 사용할 때 그 역할이 좀 더 선명해지는데, 롤업 체인에서 메인 체인으로 롤업 블록을 전달할 때, 전달된 롤업 블록에 대한 검증을 하는 레이어가 정착 레이어라고 볼 수 있다. (롤업에 대한 내용은 아직 다루지 않았기 때문에 지금은 메인 체인으로 트랜잭션을 취합하여 보내는 자식 체인으로 생각하면 됨) 그리고 그 구현은 일반적으로 스마트 컨트랙트로 되어있다. - 다시 말해, 롤업 체인에서 취합한 트랜잭션 정보를 메인 체인으로 보낼 때 이를 검증하기 위해서 스마트 컨트랙트를 거쳐야 하는데, 이 스마트 컨트랙트가 있는 레이어가 정착 레이어가 되는 것이고, 여기서 검증이 완료된 트랜잭션들을 블록에 포함시켜서 메인 체인에 등록하는 레이어를 합의 레이어라고 생각하면 된다. > - 이더리움 확장성 솔루션으로 나온 롤업 체인들은 정착 레이어로 이더리움 네트워크를 사용한다. 이더리움은 스마트 컨트랙트를 실행할 수 있는 능력이 있기 때문에 정착 레이어의 역할을 하지만 롤업을 위한 이상적인 정착 레이어는 아니라고 한다. 왜냐하면 이더리움 체인 위에서 발생하는 실제 트랜잭션인 non-rollup transaction 들도 이더리움 위에서 수행되기 때문에 완전한 정착 레이어라고 생각하긴 어렵다. > - 진정한 의미의 정착 레이어는 1) 롤업 스마트 컨트랙트만 허용하고 2) 롤업 간 transfer만 허용해야하며 non-rollup application 의 트랜잭션은 허용하면 안된다. 하지만 이 의견은 Geth 개발자의 의견인 이더리움 체인은 rollup 과 non-rollup 모두 지원해야한다는 의견과 상충하기도 한다. - 데이터 가용성 레이어 도 기존 블록체인에서 쉽게 체감하기 어려운 레이어이다. [이전 글](/B1mdW9hYq)에서 Data Availability (DA) Problem에 대한 글을 다뤘는데, 여기서 발생하는 DA Problem을 해결할 수 있는 레이어라고 볼 수 있다. 데이터 가용성 레이어의 역할에 대해서 요약하면, 풀노드가 아닌 노드들도 신뢰할 수 있는 데이터로 검증을 수행할 수 있도록 만드는 역할이라고 볼 수 있다. DA Problem 과 해결법에 대해서는 [이전 글](/B1mdW9hYq)을 참고하면 된다. [블록체인 레이어와 모듈러 블록체인](https://volt.capital/blog/modular-blockchains) ![](https://i.imgur.com/zgpFo0m.png?centerme) - 따라서, 모듈러 블록체인은 위에 구분한 4가지의 레이어로 블록체인의 기능을 구분하고, 각각의 레이어에 맞는 블록체인을 개발하여 서로 유기적으로 상호작용하는 것을 목표로 한다. 기존의 단일 블록체인의 구조를 유기적인 모듈러 블록체인 구조로 변환한다면 블록체인의 탈중앙성, 보안 그리고 확장성 3가지를 모두 충족시킬 수 있을 것으로 기대하고 있다. - 뿐만 아니라, 새로운 블록체인을 개발할 때, 처음부터 개발할 필요없이 다른 솔루션의 모듈을 기반으로 개발할 수 있다는 장점도 있고, 모듈을 기반으로 개발된 블록체인은 독립적인 자주권을 갖는 별도의 블록체인이 될 수 있다는 특징도 장점으로 여겨진다. 즉, 모듈을 가져다 쓰지만, 신규 블록체인의 기능에 영향을 주지 않기 때문에 블록체인 자체적인 자주권은 보장된다. 그리고 모듈을 공유하는 블록체인 간 통신이 가능해지므로 모듈(또는 레이어)이 인터체인의 기능을 할 수 있다는 점도 모듈러 블록체인의 장점으로 꼽힌다. 이를 통해 블록체인의 가장 큰 이슈인 상호운용성과 확장성을 개선시킬 수 있을 것으로 기대된다. - 다음 장에서는 플라즈마부터 시작하여 옵티미스틱 롤업, zk 롤업 그리고 Celestia 까지 각각의 솔루션들이 모듈러 블록체인 내에서 어떤 레이어(포지션)에 있고, 어떤 기능과 특징을 갖고 있는지 알아볼 예정이다. 각 솔루션들은 처음부터 모듈러 블록체인의 철학과 큰 그림 아래서 만들어졌다기 보다는 그 당시 이더리움의 확장성 문제를 해결하고자 했고, 이들이 모듈러 블록체인이라는 큰 숲이라는게 존재하기 전까지 어떤 방향으로 발전해왔는지 보는 재미도 있을 것 같다. 참고 자료 --- 1. https://volt.capital/blog/modular-blockchains 2. https://forum.celestia.org/t/an-open-modular-stack-for-evm-based-applications-using-celestia-evmos-and-cosmos/89 3. https://medium.com/a41-ventures/polygon-%EC%8B%9C%EB%A6%AC%EC%A6%88-1-polygon-pos-mass-adoption%EC%9D%84-%ED%96%A5%ED%95%9C-%EC%97%AC%EC%A0%95%EC%9D%98-%EC%8B%9C%EC%9E%91-b907d20fd84f 4. https://medium.com/a41-ventures/polygon-%EC%8B%9C%EB%A6%AC%EC%A6%88-2-polygon-avail-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%9A%A9%EC%84%B1%EA%B3%BC-%EB%AA%A8%EB%93%88%EB%9F%AC-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-c4f26b0bf16c 5. https://www.alchemy.com/overviews/optimistic-rollups 6. https://medium.com/@cpbuckland88/fraud-proofs-and-virtual-machines-2826a3412099 7. https://blog.infura.io/post/validating-bridges-scaling-blockchains 8. https://hackmd.io/@nusret1996/rknkX_mWF