블록체인

블록체인 용어 정리 - 3 (사이드체인, 스테이트 채널, 롤업, 플라즈마, 발리디움)

skyjumbo 2023. 10. 10. 16:51

Layer 2

L2에 대표적으로 사이드체인(Sidechain)과 L2 솔루션(스테이트 채널, 롤업, 플라즈마, 발리디움)이 있습니다.

사이드체인

사이드체인 구조 (출처: https://medium.com/free-code-camp/future-of-bitcoin-cc6936ba0b99)

사이드체인은 메인 체인과 양방향 브릿지로 연결된 블록체인을 의미합니다. 사이드체인은 메인 체인 기준으로 외부에 연결된 블록체인으로 오프체인 구조입니다. L1에 연결된 L2 블록체인은 사이드체인에 해당하며, 위의 인터체인 예시에서 코스모스의 Hub & Zone 구조의 블록체인에서 Zone은 Hub의 사이드체인이 됩니다. 따라서 L1인 이더리움을 기준으로 봤을 때, 사이드체인은 이더리움을 확장하거나 개선하기 위한 L2 솔루션이 아닌, L2 프레임워크가 됩니다. 사이드체인은 L1의 메인체인과 다른 블록 생성 주기나 크기를 가질 수 있습니다. 대표적인 사이드체인으로 이더리움 기반의 폴리곤, 룸네트워크, 로닌 네트워크가 있습니다.

스테이트 채널

스테이트 채널 구조 (출처: https://medium.com/hackernoon/difference-between-sidechains-and-state-channels-2f5dfbd10707)

스테이트 채널은 사용자들이 2번의 온체인 트랜젝션으로 n번의 거래를 처리할 수 있게 해주는 L2 솔루션입니다. 스테이트 채널 안에서는 무한정 거래할 수 있고, L1 외부에서 발생되는 오프체인 솔루션으로 TPS가 높고, 퍼블릭 블록체인을 벗어난 보안성 향상과 거래 수수료를 절감할 수 있습니다. 다음과 같은 과정으로 스테이트 채널이 개설됩니다.

  1. 스테이트 채널에 참여할 사용자들(두 명 이상)은 L1 토큰을 각자 스마트 컨트랙트를 통해 동결해서 채널을 개설합니다. 이때 최초의 L1 온체인 트랜잭션이 발생합니다.
  2. 스테이트 채널 내에서 발생하는 트랜잭션은 다음과 같은 상태를 기록하며 스테이트 채널에 참여한 모든 사용자에게 공유됩니다:
    a) nonce값(각 거래의 고유 ID로, 거래 트랜잭션을 중복 실행시키는 Replay Attack을 방지)
    b) 스테이트 채널의 이전 상태
    c) 스테이트 채널의 새로운 상태
    d) 실질적인 거래 기록 (ex. 사용자 A에서 사용자 B로 5 ETH 거래)
    스테이트 채널 종료 합의 이전까지 초기에 동결한 자본으로 무한정 거래가 가능합니다.
  3. 참여한 사용자들의 합의로 채널을 닫기 위해 최종적인 결과에 따라 동결한 L1 토큰을 재분배하고, 결과를 L1 온체인 트랜잭션을 발생해서 기록합니다. (사용자 A와 B가 초기에 10 ETH 씩 동결, n 번의 거래 이후 A: 5ETH, B: 15ETH의 최종 상태가 기록되면, 채널 종료 시 최종 상태와 동일하게 A: 5ETH, B: 15ETH의 자금이 반환됩니다)

대표적인 스테이트 채널 기술로 이더리움의 Raiden, 비트코인의 Lightning Network가 있습니다.

롤업, 발리디움, 플라즈마

나머지 L2 솔루션은 암호화 증명(cryptographic proof) 방식 데이터 가용성 (data availability), 오프체인 / 오프체인 여부에 따라 종류가 구분됩니다.

L2 솔루션 분류 (출처: https://xangle.io/insight/research/61b1cd9b0cb08e8063cd6896)

롤업

롤업은 이더리움의 확장성 문제를 해결하기 위해 이더리움 체인 외부에서 트랜잭션을 실행하고 그 결과값만을 배치(batch)로 롤업(묶은 뒤) 이더리움에 기록하는 솔루션입니다. 기존의 방식보다 많은 트랜잭션을 처리할 수 있어 TPS을 크게 개선할 수 있습니다.

이 데이터를 모두 이더리움 네트워크에 올릴 수 없으니 사용자들의 잔고를 이용해 만든 머클 트리의 상태 루트값을 롤업 컨트랙트에 기록하여 관리합니다.

롤업 작동 방식(State root 업데이트 전) (출처: https://vitalik.ca/general/2021/01/05/rollup.html)

위 그림과 같이 롤업 위에 있는 각각의 계정의 잔고를 이용해 머클 트리를 만들고, 이것의 State root값을 롤업 컨트랙트에 게시하게 됩니다.

롤업 작동 방식(State root 업데이트 후) (출처: https://vitalik.ca/general/2021/01/05/rollup.html)

롤업 위에서 트랜잭션이 일어나게 되면 이를 통해 계정 잔고가 바뀌게 되고, 머클 트리의 상태 루트 값 또한 바뀌게 됩니다. 롤업은 트랜잭션을 모두 처리한 후 각 계정의 잔고 상태를 바꾸고, 그 결과로 바뀌게 된 상태 루트의 최종 값을 롤업 컨트랙트에 올립니다.

다시 이더리움 네트워크로 암호화폐를 보내고 싶다면, 롤업 외부로 암호화폐를 출금하는 컨트랙트 함수를 실행시키면 됩니다. 이 과정에서 트랜잭션 처리가 제대로 되었는지에 대한 문제를 데이터 가용성 문제(Data Availability Problem)라고 합니다. 데이터 가용성 문제를 해결하는 방식에 따라 롤업을 옵티미스틱 롤업(Optimistic Rollup), ZK롤업(ZK Rollup)으로 분류할 수 있습니다.

옵티미스틱 롤업

옵티미스틱 롤업은 데이터 가용성 문제, 즉, 진위 확인을 위한 모든 트랜잭션을 이더리움에 전송합니다. 다음과 같은 과정으로 진위 확인이 이루어집니다:

  1. 모든 트랜잭션이 사실이라고 가정하여 처리하게 됩니다. 이더리움에 전송할 트랜잭션은 전부 마이크로블록이라는 롤업 위의 블록에 올라갑니다
  2. 마이크로블록의 진위 확인을 위해 사기 증명(Fraud Proof)의 과정을 거칩니다:
    a) 의심가는 거래가 없으면 마이크로블록의 트랜잭션 처리 결과는 그대로 이더리움으로 전송됩니다.
    b) 의심가는 거래가 있으면 롤업에 있는 검증자가 마이크로블록의 트랜잭션 전체 실행을 요청합니다. 이 과정에서 트랜잭션 사기가 발생하면, 사기를 밝힌 검증자에 보상을 지급하고, 기존에 문제가 없다고 처리한 검증가는 처벌을 받게 됩니다.
  3. 사기 증명이 완료되면 마이크로블록 상의 트랜잭션 결과들은 배치로 롤업이 되어 이더리움에 기록됩니다.

옵티미스틱 롤업에는 대표적인 블록체인으로 옵티미즘과, 아비트럼이 있습니다:
옵티미즘: 기존의 옵티미스틱 롤업 개념을 그대로 적용한 블록체인으로, 사기 증명 의의 제기 기간을 1주일 지정합니다.
아비트럼: 사기 증명과정에서 트랜잭션을 오프체인에서 실행한 이후, 의심이 가는 부분만 이더리움에 실행시킵니다.

ZK 롤업

ZK 롤업은 데이터 가용성 문제를 옵티미스틱 롤업과 비슷하게 모든 트랜잭션을 이더리움에 전송하지만, 진위 확인을 위해 트래잭션을 하나씩 처리합니다:

  1. 트랜잭터(Transactor), 릴레이어(Relayers)의 두 종류의 참여자 있습니다.
  2. 트랜잭터는 진위 확인을 위한 트랜잭션의 Nonce, 네트워크 수수료, 금액, 거래 데이터를 머클트리 형태로 정리합니다.
  3. 릴레이어는 트랜잭터가 생성한 데이터를 모아 하나의 트랜잭션으로 다시 합치고, 해당 트랜잭션에 ZKP을 적용합니다.
    (트랜잭션을 다시 합치는 과정을 통해 크기가 32byte → 4byte으로 감소합니다)
  4. ZKP로 검증된 트랜잭션은 이더리움으로 전송이 되고, 스마트 컨트랙트에서을 통해 다시 검증이 되면 최종적으로 유효성이 검증됩니다.

ZK 롤업에는 대표적인 블록체인으로 zkSync와 Hermez이 있으며, 구현이 어려운 문제로 현재 개발중에 있습니다.

플라즈마

플라즈마는 부모-자식 체인 구조로 트랜잭션을 분산 처리하여 이더리움 블록체인 성능 개선을 위한 오프체인 솔루션입니다. 기존에 이더리움의 확장성을 개선하기 위해 트랜잭션을 분할하는 처리하는 샤딩을(Sharding) 다시 개선하기 위해 플라즈마가 제안되었습니다. 샤딩은 서로 다른 노드가 분할해서 처리하는 문제 때문에 상호간 신뢰할 수 없는 낮은 보안성 문제와, 동일한 트랜잭션이 발생했을때 충돌하는 병렬성 문제가 있습니다. 플라즈마는 하나의 노드가 트랜잭션을 오프체인에서 머클 트리구조를 활용해서, 자식체인의 트랜잭션 결과를 취합해서 부모 체인으로 전송하여, 최종적으로 최상위의 부모체인은 이더리움 온체인에 결과를 등록하게 됩니다.

샤딩 구조 (출처: https://upbitcare.com/academy/education/blockchain/143)

플라즈마 구조 (출처: https://upbitcare.com/academy/education/blockchain/143)

플라즈마는 오프체인에서 수 많은 거래를 자식 체인을 통해 한번에 처리하고 최상위 부모 체인으로 한번에 결과를 취합하기 때문에 성능이 크게 개선됩니다. 플라즈마는 다음 방식으로 작동합니다:

  1. 사용자는 플라즈마 체인에 입장하기 위해 ETH 또는 ERC-20토큰을 플라즈마 컨트랙트에 동결합니다. 위에서 설명한 스테이트 채널처럼, 오프체인 거래를 위해 초기 자금을 동결해야합니다.
  2. 플라즈마 운영자는 부모 체인 밑에 자식 체인으로 등록하고, 초기에 등록한 자금과 동일한 자산을 해당 자식 체인에 생성합니다.
    (사용자는 거래를 이더리움 온체인에 비해 훨씬 적고 빠른 속도로 진행할 수 있으며, 최상위 부모 체인은 주기적으로 머클 트리의 상태를 온체인으로 보고해서 데이터 가용성 문제를 해결합니다.)
  3. 사용자가 거래를 마쳐 플라즈마 체인에 나가기 위해 사기 증명의 과정에 포함됩니다.(1주일의 의의 제기 기간)
    a) 사용자가 발생한 트랜잭션에 문제가 없으면, 의의 제기 기간 이후 플라즈마 체인을 벗어나게 됩니다
    b) 사용자가 발생한 트랜잭션에 문제가 있으면, 사용자의 자금은 회수되고 일부는 검증자에 보상으로 제공되며 플라즈마 체인을 벗어날 수 없게 됩니다(해당 자식 체인은 이후 추가적인 검증 과정을 거쳐 전체 머클 트리 구조에서 제외됩니다)
  4. 사기 증명 과정 이후, 최종적인 사용자의 거래 상태에 따라 초기에 동결한 ETH 또는 ERC-20 토큰을 돌려 받습니다.

플라즈마의 부모-자식 구조는 사이드체인 구조와 동일하지만, 플라즈마는 전부 동일한 이더리움 블록체인 기반의 노드로 사이드체인으로 불리지 않습니다. 반면 사이드체인에서 메인체인-사이드체인 구조는 부모-자식 구조로 불릴 수 있습니다.
(사이드체인 ⊂ 부모-자식 체인)

발리디움

발리디움은 ZK롤업과 거의 동일하나 오프체인 저장 방식이라는 차이가 있습니다. 오프체인 저장 방식을 적용했기 때문에 ZK롤업이 최대 3000 TPS이면, 발리디움은 최대 9000 TPS의 성능을 가지게 됩니다. 구조적 차이에서 발생하는 보안성 문제를 해결하기 위해 ZK롤업과 다음과 같은 차이점이 있습니다:

  1. 오프체인의 데이터 가용성 문제를 해결하기 위해 DAC(Data Availability Committee)를 운영합니다. 해당 DAC에 속한 운영자들의 신용을 바탕으로 오프체인의 거래 내역을 보증하는 구조가 됩니다
  2. 발리디움에 참여하는 모든 사용자는 초기에 토큰 동결해 담보를 제공해서, 트랜잭션 발생 시 데이터 가용성을 증명하지 못하면 초기 동결한 담보를 몰수하는 방식으로 악행을 방지합니다.