Layer 2 scaling(1)

Layer 2 scaling(1)

2021, Jun 04    

이더리움을 이야기할 때 자주 듣게 되는 단어 중 하나는 “가스비(gas price)”입니다. 이더리움은 불특정 다수의 채굴자들이 트랜잭션을 처리하기 때문에 가스비라는 수수료를 반드시 지불해야 합니다. 하지만 이더리움이 처리할 수 있는 트랜잭션 용량은 한정되어 있어서(약 10-15 tps) 수수료를 많이 주는 트랜잭션이 먼저 처리되므로 경쟁이 발생할 수 밖에 없습니다.

결국 이렇게 높은 수수료는 이더리움의 성능 개선의 요구로 이어지게 됩니다. 하지만 이더리움은 탈중앙화를 최고의 가치로 생각하기 때문에, 소위 말하는 “트릴레마”의 문제가 항상 존재합니다. 네트워크에 참여하는 모든 노드들이 각자 블록을 검증하기 때문에 트랜잭션 처리 성능이 떨어질 수 밖에 없다는 것입니다.

이더리움을 PoS로 전환하면서 장기적인 로드맵으로 밝힌 “샤딩(sharding)”은 블록체인의 난제 중의 난제인 성능 개선(scaling)을 위한 최종 목표입니다. 비탈릭 부테린은 An Incomplete Guide to Rollups 에서 블록체인의 성능 개선 방안을 크게 두 가지로 구분하고 있습니다. 하나는 이더리움 자체의 프로토콜 레벨에서 성능을 높이는 것이고 다른 하나는 복잡한 트랜잭션과 연산을 이더리움 밖에서 처리하게 하는 방법입니다.

후자의 방안이 흔히 말하는 “Layer 2 scaling” 입니다. 여기서 “Layer 2”는 이더리움의 외부(off-chain)라는 의미를 가지고 있습니다. 당연히 “Layer 1”은 이더리움을 말합니다(앞으로는 Layer 1을 “L1”, Layer 2를 “L2”라고 하겠습니다).

비탈릭 부테린은 Layer 2에서 성능 문제를 해결하려는 “Layer 2 solution”을 대략 상태 채널(state channel), 플라즈마, 롤업 이렇게 3가지 카테고리로 나누고 있습니다.

The three major types of layer-2 scaling are state channels, Plasma and rollups. They are three different paradigms, with different strengths and weaknesses, and at this point we are fairly confident that all layer-2 scaling falls into roughly these three categories

상태 채널

상태 채널은 거래 당사자들만 참여하는 외부 “채널”을 통해 트랜잭션을 주고 받고 최종 내역만을 블록체인에 전송하는 형태의 L2 솔루션입니다. 상호 트랜잭션이 L1 밖에서 이루어지기 때문에 비용과 속도를 높일 수 있는 것입니다.

상태 채널은 다음과 같은 세 가지 단계로 이루어집니다.

  1. Part of the blockchain state is locked via multisignature or some sort of smart contract, so that a specific set of participants must completely agree with each other to update it.
  2. Participants update the state amongst themselves by constructing and signing transactions that could be submitted to the blockchain, but instead are merely held onto for now. Each new update “trumps” previous updates.
  3. Finally, participants submit the state back to the blockchain, which closes the state channel and unlocks the state again (usually in a different configuration than it started with).

L1에 존재하는 스마트 컨트랙트에 자산을 “동결(lockup)”한 후 채널을 열게 되고 채널을 통해 주고 받는 트랜잭션은 거래 당사자들의 전자서명으로 확인합니다. 또 언제든지 채널의 “상태”를 L1에 전송할 수 있습니다. 거래가 마무리되면 L1으로 최종적인 상태를 전송하면서 채널이 닫히고 스마트 컨트랙트에 묶인 자산을 각자 인출합니다.

결과적으로 L1에서 발생하는 트랜잭션은 채널을 열 때와 닫을 때 뿐이고 나머지 (다수의) 트랜잭션들은 “채널”을 통해 주고받는 셈이므로 모든 거래를 L1에서 하는 것보다는 훨씬 낮은 비용으로 수행할 수 있습니다. 이러한 구조는 사이드 체인, 플라즈마, 롤업에서도 유사합니다. 즉 자산을 L1의 스마트 컨트랙트에 락업한 후 L2에서 그에 상응하는 자산을 생성하고, 트랜잭션(또는 어떤 연산)을 수행하면서 L1의 검증을 받는 것입니다. 문제는 어떻게 그것을 검증하는가에 있습니다.

그런데 여기서 다소 논란이 되는 “사이드 체인(side chain)”과 비교되는 지점이 있습니다. L2 솔루션은 그 검증을 L1에 의존하고 있는지를 중요한 조건으로 판단하는데, 왜냐하면 L2는 탈중앙화를 희생하여 성능을 높이는 것이므로 L1을 더 신뢰할 수 있기 때문입니다(스마트 컨트랙트를 신뢰). 반면 사이드 체인은 L1과 독립적인 합의 방식(보안 메커니즘)으로 운영될 수 있으므로 L2 솔루션에 속하지 않는다는 주장을 할 수 있습니다. 물론 L2에서 사이드 체인을 구성하고 L1에 검증할 수 있는 데이터를 전송할 수도 있기 때문에 개념상 혼란스러울 수는 있겠습니다. 통상적으로 사이드 체인은 L1에 연계되어 있지만 그 자체로 독립적인 체인이라고 보는 사람들이 많습니다.

상태 채널에서는 거래 당사자들이 항상 “온라인”으로 연결되어 있는 것을 전제로 합니다. 왜냐하면 서로 자신에게 유리한 상태를 최종 상태로 L1에 전송할 수 있기 때문입니다. 실제 채널에서 발생한 트랜잭션들은 순서대로 최종 상태에 이르게 되어 있으므로 이전 상태는 이후 상태로 항상 업데이트될 수 있습니다(“Each new update “trumps” previous updates”). 즉 그것이 올바른 상태라면 언제든지 거래 내역을 바로잡을 수 있도록 당사자들이 채널과 블록체인에 연결되어 있어야 한다는 것입니다.

상태 채널은 상태의 무결성을 보장하는 여러 메커니즘을 도입할 수 있지만 이러한 작업들의 수행은 항상 비용을 수반하기 때문에 실제로는 그렇게 효용성을 가지지 못한다는 단점이 있습니다. 처리 성능을 높이기 위한 비용은 어디까지나 L1에서 발생하는 비용 대비 훨씬 낮아야 하는데 그렇게 큰 차이가 나지 않는다면 복잡한 상태 채널을 쓸 이유가 없기 때문입니다.

플라즈마

플라즈마는 2017년 8월 비탈릭 부테린과 조셉 푼이 함께 쓴 “Plasma: Scalable Autonomous Smart Contracts”을 통해, 이더리움의 획기적인 성능개선에 대한 큰 기대를 받으며 등장했지만 지금은 거의 비활성 상태인 것으로 보입니다. 하지만 그동안의 경험을 바탕으로, 플라즈마 연구 그룹인 “플라즈마 그룹”은 “옵티미즘”으로 개명하여 “옵티미스틱 롤업(Optimistic Rollup)”으로 그 명맥을 이어가고 있습니다.

플라즈마는 L2에서 “플라즈마 체인”이라는 사이드 체인을 구성하여 트랜잭션의 처리 성능을 높이는 것입니다. 상태 채널이 이해 당사자들이 직접 채널을 만들고 참여자들 사이에서만 거래가 이루어지는 방식이었다면 플라즈마는 플라즈마 체인이 상시 존재하므로 누구든 이용할 수 있다는 장점이 있습니다. L1의 스마트 컨트랙에 자산을 동결하고 플라즈마 체인에서 사용할 자산을 생성하는 것은 마찬가지 입니다.

일반적인(독립적인 합의 메커니즘을 가지고 유지되는) 사이드 체인과 비교하면, 만약 사이드 체인이 동작을 하지 않는다면 L1에 동결된 자산을 찾을 수 있는 방법이 없지만 플라즈마는 “탈출(exit)” 방안을 마련하여 플라즈마 체인에 심각한 문제가 발생했을 경우를 대비한다는 점에서 차이가 있습니다. L2로 이동한 자산의 제어권을 사용자 스스로 행사할 것인지(플라즈마) 아니면 사이드 체인 운영자에게 전적으로 의존하는지 여부가 구분점이 된다고 할 수 있습니다.

비탈릭 부테린이 제시한 Minimum Viable Plasma(MVP)는 플라즈마 체인에서 발생하는 트랜잭션들의 “머클 루트”만을 L1에 주기적으로 전송하도록 하여 하는데, 이러한 작업을 수행하는 오퍼레이터가 존재해야 합니다. 그러나 오퍼레이터를 무조건 신뢰하는 것이 아니라 L1에 전송되는 데이터를 검증하여 위변조를 감시하는 방안, 즉 오퍼레이터가 잘못한 것을 찾아내는(fraud-proof) 방식으로 L2의 트랜잭션의 유효성을 담보합니다.

플라즈마에서는 트랜잭션 데이터가 L2에 존재하기 때문에 데이터가 소실되거나 또는 오퍼레이터가 트랜잭션 데이터의 공개를 거부하는 경우 소위 말하는 “Data availability”를 확보하지 못하는 문제가 발생할 수 있습니다. “Data availability”는 탈중앙화된 블록체인에서 “모두가 가지고 있는 하나의 원장”이라는 필요 조건이며 검증을 위한 데이터가 되므로 중요한 문제입니다.

오퍼레이터를 감시하기 위해서는 항상 L2의 트랜잭션을 모니터링해야 하는 번거로움이 있습니다. 그리고 “탈출” 방안을 마련하기는 했지만 마치 “뱅크런”처럼 대량의 인출 사태가 발생한 경우 인출 트랜잭션의 증가로 인해 L1의 네트워크의 부하를 야기할 것이라는 우려가 있습니다.

그래서 플라즈마의 3가지 문제를 다음과 같이 요약할 수 있겠습니다:

  1. Data unavailability
  2. Mass exit
  3. Monitoring tx

현재 L2에 대한 연구, 그리고 중앙화된 주체가 운영하는 사이드 체인을 중심으로 다양한 L2 솔루션들이 존재합니다. 이더리움 기업인 컨센시스에서는 L2 솔루션을 고려할 때 체크해야 할 문제들이 있다고 조언합니다.

  1. Who operates it?
  2. How’s the data?
  3. What’s the stack like?
  4. How does it prepare for the worst?

다음 글에서는 L2의 최종 목표로 많은 관심을 받고 있는 “롤업(Rollup)”에 대해 정리하겠습니다.