이더리움 네트워크는 확장성과 탈중앙성을 개선하기위해 로드맵에 따라 지속적으로 개발이 이루어지고 있다.
Single Slot Finaltiy (SSF)란 단일 slot에서 블록의 제안(propose)과 완결(finalized)가 동시에 일어날 수 있는 업그레이드로, The Merge의 장기 계획에 속해있는 업그레이드이다.
Source: Vitalik Buterin
이더리움 네트워크는 진화하고 있다. 위의 로드맵은 비탈릭 부테린이 2021년 말에 공개한 이더리움 네트워크의 로드맵이다. 로드맵은 The Merge, Surge, Verge, Purge 그리고 Splurge, 총 5개로 이루어져 있으며 이들은 순차적으로 진행되는 것은 아니고, 각 분야에서 병렬적으로 업그레이드가 진행되고 있다. 본 글에서 살펴볼 업그레이드는 The Merge의 장기 계획에 포함되어있는 Single Slot Finality (그림에선 Single-slot confirmations)이지만, 이를 알아보기 전에 간단히 다른 업그레이드들이 무엇을 목표하고 있는지 살펴보겠다:
The Merge - 과거에 PoW 방식을 사용하던 이더리움 네트워크가 PoS 방식으로 전환된 업그레이드를 의미하며, 2022년 9월 15일 The Merge가 성공적으로 진행되었다. 합병이 일어나는 과정은 아래와 같으며, PoW 이더리움의 Execution Layer에 해당하는 부분이 일부 수정사항을 거쳐 비콘 체인의 일부로 병합되는 방식이다. PoS 전환 과정의 마지막 꽃은 비콘체인에 스테이킹되었던 ETH의 출금이 가능해지는 샤펠라(Shapella) 업그레이드이며, 이는 2023년 4월 12일에 성공적으로 완수됐다. 장기적으로는 본 글에서 살펴볼 Single Slot Finality와 더불어 암호기법을 통해 block proposer의 정보를 숨기는 Secret leader election과 이더리움 네트워크의 서명을 조금 더 효율적으로 취합하는 Better signature aggregation이 계획되어있다.
Source: Danny Ryan
The Surge - 롤업 네트워크들이 매우 많은 용량의 트랜잭션 데이터를 이더리움 네트워크에 효율적으로 저장할 수 있도록 하는 댕크샤딩(Danksharding)과 관련된 업그레이드이다. 댕크샤딩에서는 새로운 데이터 구조인 블롭(Blob)이 추가되며, 블롭의 크기는 기존 calldata에 비해 매우 크므로 네트워크 중앙화의 문제를 막기 위해선 The Splurge에 포함되어있는 PBS(Proposer-Builder Separation)가 선행되어야 한다. PBS 및 댕크샤딩이 도입되기 까지는 매우 오랜 시간이 걸릴 것으로 예상되며, 따라서 댕크샤딩의 스펙 중 굉장히 쉽게 도입할 수 있는 부분들을 미리 도입하자는 EIP-4844 (Proto-Danksharding)이 현재 활발히 논의되고 있다. 댕크샤딩 이전에 EIP-4844 정도만 미리 도입되어도, 다양한 롤업 네트워크들의 확장성이 비약적으로 개선될 것으로 기대된다.
Source: Vitalik Buterin
The Verge - Weak statelessness라는 개념과 관련 있는 업그레이드이다. 현재 이더리움 네트워크에서는 노드들이 블록의 타당성을 검증할 때 이더리움 네트워크 전체 state에 대한 정보를 저장하고 있어야 한다. 하지만, 시간이 지나면서 이더리움 네트워크의 사용자가 증가하고 다양한 디앱들이 올라오면서 전체 state의 크기는 계속 커지고 있고, 이는 추후에 네트워크 중앙화의 문제를 야기할 수 있다. 따라서 The Verge에선 이를 해결하기 위해 현재 사용되고 있는 머클 패트리샤 트리(Merkle Patricia Tree)를 버클 트리(Verkle Tree)로 대체하려고 한다. 버클 트리를 사용하면 특정 state가 블록에 포함되어있음을 증명하는 witness의 크기를 대폭 감소시킬 수 있기 때문에, 노드들은 전체 state가 아닌, 블록에 영향을 받은 state와 witness 정보만 가지고 있어도 블록을 증명할 수 있게 된다. 이는 하드웨어 사양이 낮은 노드들도 이더리움 블록의 검증에 참여할 수 있게 함으로써 네트워크의 탈중앙성을 높일 것으로 기대된다.
Source: Vitalik Buterin
The Purge - 이더리움 네트워크의 과거 데이터에 대한 부담을 경감시켜주는데 초점을 둔 업그레이드이다. 시간이 지나면 지날수록 이더리움 네트워크에 쌓이는 과거의 데이터 용량은 계속 커진다. 따라서 미래에 들어오는 노드들은 이러한 방대한 크기의 이더리움 분산원장을 저장하는게 부담될 수 있을 것이며, 이는 네트워크가 중앙화될 수 있는 지점이다. 따라서 이를 해결하기 위해 The Purge에서는 EIP-4444와 같은 History Expiration을 도입하여 1년보다 오래된 데이터를 잘라내어 버릴 수 있도록 한다. The Purge에는 History Expiration에 더 나아가서 오래된 state에 대한 데이터도 잘라버릴 수 있는 State Expiry 업그레이드도 포함되어있다. 이는 특정 시간 동안 접근이 되지 않은 state를 트리 구조에서 잘라내는 것이다.
The Splurge - 위 4개의 업그레이드에 딱히 포함되지 않는 업그레이드들을 모아둔 것이며, 최근 많은 화제가 됐던 계정추상화(Account Abstraction; AA)도 있지만, 가장 눈여겨 봐야할 것은 MEV의 탈중앙화와 관련된 PBS가 주요 업그레이드이다. PBS는 MEV 수익을 탈중앙화시키기 위해 현재의 블록 생성자를 블록 제안자(Proposer)와 블록 빌더(Builder)로 나누는 업그레이드로, MEV-Boost 방식을 이더리움 프로토콜에 내장시키는 것이다. 현재도 MEV-Boost를 통해 MEV 수익이 꽤 탈중앙적으로 잘 분배되고 있는 편이지만, PBS가 도입된다면 검열 문제가 해결될 것으로 기대되며, 이에 더나아가서 댕크샤딩이 도입될 수 있는 환경이 구축할 것이다.
Single Slot Finaltiy (SSF)란 단일 slot에서 블록의 제안(propose)과 완결(finalized)가 동시에 일어날 수 있는 업그레이드로, The Merge의 장기 계획에 속해있는 업그레이드이다. 참고로 slot이란 하나의 블록이 제안될 수 있는 시간 프레임으로 12초에 해당하고, 1 epoch는 32개의 slot으로 구성되어있어 총 6.4분에 해당한다.
오늘날 이더리움 블록이 완결(finalize)되는데 걸리는 시간은 약 15분(64-95 slots)이다. 블록이 완결된다는 의미는 네트워크 단에서 공격으로 엄청난 규모의 토큰 슬래싱을 감수하지 않는 이상 절대로 변경되거나 삭제될 수 없다는 것이다. 즉, ‘이 블록은 완결 되었으니 우리 모두 안전하게 믿을 수 있습니다.’라는 훈장을 블록에 부여하는 것이다.
하지만 현재 이더리움 블록이 완결되는 시간은 너무 느리다. 블록은 완결되기 전까지 바뀔 확률이 존재하는데, 따라서 그 동안 거래를 100% 확정 짓기에는 리스크가 있다. 따라서 브릿지나 중앙화 거래소와 같이 작동하는데 있어서 블록의 완결성이 중요한 서비스에선 이는 굉장히 큰 불편함을 야기한다. 심지어 몇몇 중앙화 거래소는 블록이 완결성을 부여받기까지 15분을 기다리는 것이 매우 느리기 때문에 PoW 이더리움일 때와 마찬가지로 12-20개 정도의 confirmation(약 2~4분) 정도를 완결성으로 취급하여 입출금 처리를 하기도 한다.
사실 알고보면 15분이라는 시간은 개인 밸리데이터들도 합의에 참여할 수 있는 충분한 시간이면서 서비스단에서도 엄청나게 큰 불편함을 야기하지 않는 선에서 절충된 시간이다. 그럼에도 불구하고 이더리움 블록의 완결성은 왜 이렇게 늦게 부여되는 것일까? 이는 이더리움의 합의 알고리즘이 LMD-GHOST와 Capser FFG 방식을 사용하며 체인 기반(Chain-based)의 합의와 전통적인 BFT(Traditional BFT) 합의 방식의 절충안적인 성격을 띄기 때문이다. 어려운 용어들이 많이 나왔는데 하나씩 살펴보도록 하자.
비동기 네트워크 내에선 Safety와 Liveness를 모두 완벽히 만족할 수 없다는 FLP Impossibility 증명에 따라, 현존하는 블록체인의 합의 알고리즘은 크게 다음과 같은 두 가지 방식으로 나뉜다:
체인 기반 합의 (Chain-based consensus) - Safety보다 Liveness를 중요시한 경우이다. 합의하는데 있어 노드끼리 교환하는 메세지의 수가 적기 때문에 네트워크에 참여하기 위한 하드웨어 최소 사양이 낮다. 따라서 합의 과정에 참여할 수 있는 노드의 수가 매우 높다는 장점이 있지만, 블록의 완결성이라는 개념이 존재하지 않기 때문에 포크가 종종 발생한다는 단점이 있다. 비트코인 네트워크가 대표적인 예시이며, 통상적으로 비트코인 네트워크의 블록은 6 confirmations 이후에 완결되었다고 확률론적으로 가정한다.
전통 BFT 합의 (Traditional BFT consensus) - Liveness보다 Safety를 중요시한 경우이다. 합의하는데 있어 노드끼리 교환하는 메세지의 수가 많기 때문에 네트워크에 참여하기 위한 하드웨어 최소 사양이 높다. 따라서 합의 과정에 참여할 수 있는 노드의 수가 매우 제한되어있다는 단점이 있지만, 교환하는 메세지를 통해 블록의 완결성을 결정하며, 다음 블록이 생성되기 전에 블록에 완결성을 부여할 수 있다는 장점이 있다. 텐더민트 BFT 합의 알고리즘이 대표적인 예시이며, 텐더민트 코어 기반의 앱체인들의 블록은 생성되자마자 짧은 시간 내에 완결성이 부여된다.
The Merge 이후 PoS 방식으로 전환된 이더리움 네트워크는 합의 알고리즘으로 LMD-GHOST와 Casper FFG를 사용하며 위의 두 종류 사이의 중간지점의 성격을 띤다. 이더리움 네트워크는 기본적으로 비트코인 네트워크와 마찬가지로 LMD-GHOST를 기반으로한 체인 기반 합의를 가지고 있지만, 한 slot 당 노드들끼리 수 천개의 메세지(정확히는 attestation)를 공유하여 블록에 완결성을 부여한다는 점에 있어서 전통 BFT 합의와 비슷한 면모를 가지고있다. 즉, 두 합의 방식을 절충하면서 두 마리의 토끼를 잡은 것이라고 볼 수 있다.
그렇다면 attestation은 도대체 무엇일까? LMD-GHOST는 네트워크에 포크(fork)가 발생했을 때 어떤 것이 canonical chain인지 정하는 합의 알고리즘이며, Casper FFG는 일정 주기마다 블록에 완결성을 부여하는 합의 알고리즘인데, 이 두 알고리즘에서 attestation은 매우 중요하게 작용한다. Attestation은 밸리데이터들이 한 블록에 대해서 타당하다고 생각할 때 투표하는 과정이다.
Source: eth2book
매 epoch마다 모든 밸리데이터들은 32개의 slot 중 하나의 slot에 배정되며, 하나의 slot에는 64개의 committees가 존재하고, 각 committee는 256명의 밸리데이터로 구성된다. 즉, 당신이 이더리움 밸리데이터라고 가정했을 때 매 epoch마다 한 번의 attestation의 기회가 주어지는 것이다. 당신은 배정받은 slot에서 제안된 블록에 대해 이를 검증하고 타당하다고 생각될 시 attestation 서명을 할 수 있다 하나의 committee에서 밸리데이터들은 블록에 대해 attestation 서명을 진행하고, 이 서명들은 랜덤으로 선정된 몇 명의 aggregator가 모아서 블록 제안자에게 전달해준다.
만약 이더리움 블록체인에 포크가 발생한다면 LMD-GHOST에 의해 attestation이 과반(51%) 이상 부여된 블록으로 canonical chain이 결정되며, 완결성을 부여하는 Casper FFG 알고리즘 또한 2/3 이상의 밸리데이터가 attestation을 해준 블록에 완결성을 부여해주기 때문에 이더리움 네트워크에서 밸리데이터들이 타당한 블록에 투표하는 attestation 과정은 매우 중요하다고 할 수 있다.
현재 이더리움 네트워크에서 15분이라는 시간은 두 가지 합의 방식의 절충안으로 나온 시간으로, 개인 밸리데이터를 포함하여 스테이킹된 ETH 중 2/3에 해당하는 밸리데이터들이 특정 블록에 attest를 하는데 충분한 시간이다. 15분이 아니라 15초처럼 완결성을 더 빨리 부여할 순 없을까? 밸리데이터들의 하드웨어 최소 요구사양이 커진다면 더 많은 메세지를 빠르게 처리할 수 있기 때문에 가능하겠지만 이는 탈중앙성을 저해하는 결과를 낳는다.
Source: Vitalik Buterin
즉, 네트워크의 탈중앙성(Decentralization), 블록이 완결되는데 걸리는 시간(Time), 네트워크에 걸리는 부하(Overhead)에는 트레이드오프 관계가 존재한다. 탈중앙성을 높이기 위해 밸리데이터의 수를 늘릴수록, 블록의 완결성을 빠르게 처리할수록 네트워크에서 처리해야하는 메세지가 많아지기 때문에 요구되는 하드웨어의 사양은 올라갈 수 밖에 없고 이는 네트워크의 탈중앙성을 저해한다. 위의 그림에서 볼 수 있듯이 체인 기반의 합의는 네트워크의 부하를 최대한 낮추어 수 많은 밸리데이터들이 참여할 수 있게 함으로써 탈중앙성을 매우 강조한 대신 블록에 완결성을 부여하지 않는 경우이며, 전통 BFT 합의는 완결성을 매우 빠르게 부여하는 대신 네트워크의 부하가 커져 탈중앙성도 낮아진 경우이다.
이상적인 시스템은 Decentralization, Time, Overhead 사이의 균형을 잘 맞추어야 하며, 오늘날 이더리움은 최소 스테이킹 수를 32 ETH로 지정하여 밸리데이터의 수가 무한정 많아지는 것을 방지하고, Finality time을 15분으로 설정하여 개인 밸리데이터들도 충분히 합의 과정에 참여할 수 있도록 하면서 절충안을 찾은 경우이다.
하지만 위의 차트를 봤을 때 비탈릭이 표시한 오늘날 이더리움은 45도 각도의 사선상에 놓여있지 않고, 네트워크의 부하가 늘긴 늘었는데 오히려 탈중앙성을 더 높게 평가받고 있는 것을 볼 수 있다. 분명 트레이드오프 관계가 있다고 했는데, 어떻게 이것이 가능한 것일까? 이는 바로 BLS signature aggregation 때문이다. 이는 수 많은 밸리데이터들의 서명들을 단 하나의 서명으로 효율적으로 모을 수 있는 방식이다. 즉, 효율적인 서명방식을 도입했기 때문에 오늘날의 이더리움 네트워크처럼 완결성을 부여하면서도 50만명 이상의 밸리데이터가 참여할 수 있는 환경이 구축된 것이다.
블록이 완결성을 받는데 있어서 15분은 여전히 느린 시간이다. 현재 이더리움 블록은 최소 2 epochs(=64 slots)가 지나야 완결성이 부여되는데, 그냥 단일 slot에서 블록이 제안되자마자 바로 완결성을 부여할 수는 없는 것일까? 이것이 바로 이더리움 로드맵에 예정되어있는 SSF 업그레이드가 하려고 하는 것이다.
한 슬롯 내에서 블록의 제안 및 완결까지 끝나려면, 그 슬롯에 대해서 엄청난 수의 밸리데이터 중 2/3 이상의 attestation을 해주어야 가능한 것이다. 현재는 이더리움 네트워크의 밸리데이터가 한 epoch 내에서 특정 slot에만 배정받고 한 번의 attestation을 진행할 수 있기 때문에 이는 불가능한 상황이다. 그런데 앞서 살펴보았듯이 한 슬롯(12s)이라는 짧은 시간 내에 수 많은 밸리데이터들의 attestation 메세지를 감당하는 것이 가능할까?
이는 다행히도 가능하다. 과거 3년 동안 BLS signature aggregation의 효율이 매우 증가했고, 네트워크 단에서도 수 많은 메세지와 데이터를 처리하고 모으는 방법에 대한 지식도 많이 쌓였기 때문이다. 만약 1,000,000명의 밸리데이터가 존재한다고 해보자. 한 서명을 검증하는데는 500 ns의 시간이 소요되는데, 즉 1,000,000개의 서명을 검증하는데는 500 ms의 시간 밖에 걸리지 않는 것이다. 따라서 서명의 검증 측면에선 문제가 크게 없으나, 진짜 문제는 바로 서명의 aggregation이다.
Source: Vitalik Buterin
오늘날 이더리움에선 256명의 밸리데이터로 이루어진 committees가 slot마다 64개씩 존재하는데, 한 committee내에서 서명이 합쳐져 제출되기 때문에 서명 aggregation에서 큰 문제가 없다. 다만 SSF가 적용된다면 한 slot내에 수 많은 밸리데이터들의 서명을 다 모아야하며, 이를 위해선 committees의 개수를 64개보다 훨씬 더 크게 증가시키거나, 한 committee 내의 밸리데이터의 수를 256명보다 훨씬 더 크게 증가시키거나, 아니면 서명을 취합하는 추가 레이어를 도입하는 등의 방식이 있다. 하지만 이러한 방법들은 P2P 네트워크에 더 큰 부하를 주고, 지연율(latency)를 증가시킬 수 있다는 단점을 가지고 있어 현재 연구되고 있는 분야이다.
이를 해결하기 위해 제시되고 있는 방법 중 대표적인 것이 바로 ‘Super-committees’이다. 예를 들어 현재 이더리움 네트워크에 밸리데이터가 500,000이 있다고 가정하면 이 모두가 한 slot에서 attestation을 진행하는 것이 아니라, 이 중 일부만 참여하는 것이다. 네트워크에 걸리는 부하가 감소된다는 장점이 있지만, 일부만 참여하기 때문에 그만큼 경제적 보안이 줄어든다는 단점이 있다. 비탈릭 부테린은 이더리움 내부 리서처들끼리 투표를 부쳤을 때 평균적으로 약 125,000명의 밸리데이터만 있어도 네트워크의 보안이 충분할 것이라는 의견을 들었다고 한다. 이더리움 네트워크가 PoS 방식을 사용하는만큼 ETH의 가격에 따라 수치는 달라지겠지만, 이것도 충분히 큰 규모의 보안수준인만큼 SSF를 달성할 수 있다면 타협할 수 있는 여지가 있을 것이다.
마지막으로 SSF에 대해서 살펴볼 것은 LMD-GHOST의 역할이다. 다시 한 번 복습하면 이더리움 네트워크에서 포크가 일어났을 시 canonical chain을 결정하는 합의 알고리즘이 LMD-GHOST이고, 이더리움 블록의 완결성을 결정하는 합의 알고리즘이 Casper FFG이다. 그런데 만약 SSF가 적용된다면 매 블록이 생길때마다 완결될 것이기 때문에 포크가 일어나지 않을텐데 그렇다면 LMD-GHOST는 더 이상 필요하지 않은 것일까?
SSF가 도입된 이더리움 네트워크에서 만약 slot 마다 정상적으로 2/3 이상의 attestation이 이루어진다면 LMD-GHOST가 필요 없는 것이 맞지만, 만약 특정 버그나 공격으로 인해 2/3 이상의 attestation이 이루어지지 않는다면 블록이 완결되지 않으니 포크가 일어날 수 있고 이 때 LMD-GHOST 합의 알고리즘이 필요하게된다. 즉, 현재 이더리움 네트워크는 LMD-GHOST와 Casper FFG가 공존하고 있는 상황이라면 미래에 SSF가 도입된 이더리움 네트워크는 LMD-GHOST와 Casper FFG 두 합의 알고리즘 모두 사용되긴 할테지만, 동시에 사용되고 있는 것이 아니라 상황에 따라 하나만 사용될 것이다.
정리하면 SSF는 블록에 완결성을 부여하는 시간을 기존 2 epochs 이상에서 단일 슬롯으로 줄이자는 업그레이드이며, 이는 서비스단에서 엄청난 UX 개선을 이끌어낼 것이다. 블록이 완결되는 시간이 짧아지기 때문에 거래소 및 브릿지 입출금에 걸리는 시간이 비약적으로 감소할 것이고, 이는 사용자들에게 엄청난 편리함을 제공할 것이다.
이더리움 네트워크는 계속 진화하고 있다. 전력 소모가 굉장히 컸었던 PoW 방식의 이더리움부터 시작하여, 친환경적인 PoS 방식으로 성공적으로 전환했으며, 이제는 롤업 중심의 미래를 그리기 위해 롤업 네트워크의 확장성을 증가시킬 수 있는 EIP-4844 및 댕크샤딩에 집중을 하고 있다. 그 뒤로도 버클트리 등 다양한 업그레이드가 기다리고 있는데, 본 글에서 살펴본 SSF는 앞서 언급한 업그레이드들이 다 도입되고 나서야 도입될 수 있는 굉장히 먼 미래의 이야기이다. 그럼에도 불구하고 SSF가 제시한 수 많은 밸리데이터가 있음에도 완결성을 빠르게 처리하는 방향은 궁극적으로 모든 블록체인들이 나아가야할 방향이라고 생각되며, 앞으로 이더리움의 여정을 지켜보자.
이 글의 비주얼을 제공해주신 Kate에게 감사의 말씀을 전합니다.