머리말
Sequencer는 Ethereum 확장 솔루션 Rollup의 핵심 구성 요소 중 하나입니다. 트랜잭션 순서를 지정하고 블록 생성, 트랜잭션 수락, 트랜잭션 정렬, 트랜잭션 실행 및 트랜잭션 데이터 제출과 같은 관련 작업을 수행합니다. 이더리움 네트워크에서 레이어 2 솔루션이 지속적으로 증가하고 생태계가 활발히 발전함에 따라 레이어 2의 수익 모델과 중앙 집중화 문제가 점점 더 주목을 받고 있습니다. 특히 Rollup에서는 분류기의 탈중앙화를 어떻게 실현할 것인가와 분류기의 수익 배분 메커니즘이 모두의 관심사가 되었습니다.
분류기란 무엇입니까?
시퀀서는 이름에서 알 수 있듯이 트랜잭션 정렬을 담당하는 역할입니다. 비트코인 네트워크에서 거래 주문에 대한 책임은 채굴자에게 있으며, 이더리움 네트워크에서는 이 책임이 노드 모음에 있습니다. 이러한 역할은 고정되어 있지 않지만 합의 메커니즘을 사용하여 트랜잭션의 순차적 실행에 참여할 권리가 있는 사람을 결정합니다.
현재 대부분의 주류 롤업 솔루션은 중앙 집중식 단일 분류기를 실행합니다. 레이어 2(L2)의 사용자 트랜잭션은 먼저 메모리 풀에 들어갑니다(현재 트랜잭션은 순서가 잘못되었습니다). 시퀀서는 이러한 트랜잭션을 정렬된 배치 세트로 정렬하고 압축한 다음 이더리움의 데이터 가용성(DA) 레이어로 전송합니다.

중앙화 VS 탈중앙화



 분산형 분류기 트랙 개요
분산형 분류기는 두 가지 방법으로 구현할 수 있습니다. 하나는 Rollup 프로젝트 자체에서 개발하는 것이고, 다른 하나는 타사 서비스의 도움을 받는 것입니다. 제3자를 사용하여 분산형 시퀀서를 구현하는 것을 종종 Sequencing-as-a-Service라고 합니다.
현재 Espresso, Astria, SUAVE, Radius 등 분산형 분류기 솔루션에 초점을 맞춘 여러 프로젝트가 있습니다. 구현 경로는 다르지만 목표는 분류기의 분산화 및 신뢰성을 향상시키는 것입니다.
에스프레소
Espresso 분류기의 분류 메커니즘에 따라 L2 트랜잭션은 대략 다음과 같은 수명 주기를 거칩니다.
- 트랜잭션 전송: 2계층 네트워크의 사용자 트랜잭션은 API를 통해 롤업 서버로 전송됩니다. 
- 트랜잭션 정렬: 트랜잭션이 메모리 풀에 들어간 후 정렬기는 HotShot 합의 선택을 통해 트랜잭션을 정렬하고 이를 블록에 포함시킵니다. 
- 트랜잭션 브로드캐스트 및 확인: 정렬기는 정렬된 트랜잭션을 브로드캐스트하고 다른 노드는 HotShot 합의를 통해 합의에 도달한 후 블록을 생성하고 트랜잭션이 실행됩니다. 동시에 소프트 커밋 메커니즘은 빠른 거래 확인을 제공합니다. 
- 블록 커밋: 시퀀서는 트랜잭션과 해당 합의 인증서(QC: Quorum Certificate)가 포함된 블록 커밋을 L1 시퀀서 계약에 전송하고 저장하여 블록이 합의를 통해 소프트 최종성에 도달했음을 증명합니다. 
- 상태 업데이트: 블록을 실행한 Rollup 노드는 새로운 Rollup 상태를 L1으로 보냅니다. zkRU(영지식 롤업)의 경우 유효성 인증서가 필요하며, ORU(최적화된 롤업)의 경우 챌린지 기간이 들어갑니다. 
- 상태 검증: L1 롤업 계약은 시퀀서 계약에서 보낸 QC를 확인하여 상태 업데이트의 유효성을 확인합니다. 

 이 프로세스는 다음과 같이 단순화되고 이해될 수 있습니다.
- 트랜잭션 정렬 및 블록 생성: 시퀀서 세트 중에서 롤업 트랜잭션을 정렬하고 이러한 트랜잭션을 블록에 포함시키는 역할을 하는 HotShot 합의 메커니즘을 통해 시퀀서를 선택합니다. 
- 합의 및 블록 확약: 블록은 다른 롤업 노드에 의해 서명되어야 하며 "최종"이 되려면 합의에 도달해야 합니다(HotShot 노드의 최소 2/3가 동의함). 그런 다음 관련 블록 커밋과 새로운 롤업 상태 루트가 확인을 위해 L1 기본 계층에 제출됩니다. 
- 빠른 확인 및 최종성: 따옴표로 묶인 "최종성"은 롤업 트랜잭션을 더 빠르게 확인하고 지연을 줄이며 사용자 경험을 개선할 수 있도록 하는 것입니다. 그러나 롤업 트랜잭션은 궁극적으로 L1 기본 계층에 의해 검증되어야 합니다(zkRU는 유효성 인증서를 검증해야 하며 ORU는 챌린지 기간이 끝날 때까지 기다려야 함). L1이 트랜잭션을 확인하는 데 문제가 없으면 롤업 트랜잭션이 실제로 최종 트랜잭션이 됩니다. 
- 잠재적 롤백: L1 검증에서 트랜잭션이 유효하지 않은 것으로 확인되면 생성된 관련 L2 블록이 롤백됩니다. 따라서 "최종성"은 거래가 신속하게 확인될 수 있도록 하는 것이며 최종성은 이더리움의 보안을 상속받는 것입니다. 
아스트리아
Astria는 다양한 롤업에 대해 즉시 사용 가능한 공유 분류기 서비스를 제공하는 보편적이고 허가가 필요 없는 분산형 분류기를 제공할 수 있는 위치에 있습니다.
작동 메커니즘
Astria의 분산형 시퀀서는 트랜잭션 시퀀싱 권한을 분산시켜 시퀀서의 권한을 줄이는 목적으로 Espresso Sequencer와 유사하게 작동합니다. 특히 Astria는 분류기에 대해 두 가지 회전 메커니즘을 제안합니다.
- 리더 회전: 미리 결정된 규칙이나 시간 간격을 통해 시퀀서 간에 리더를 회전시켜 정렬 능력을 분산시키는 간단한 회전 메커니즘입니다. 
- BFT(비잔틴 결함 허용) 합의 알고리즘: 이는 악의적인 노드가 있는 경우 합의에 도달할 수 있는 보다 복잡하고 안전한 메커니즘입니다. 이 알고리즘을 통해 여러 시퀀서가 의사 결정에 공동으로 참여하여 특정 횟수의 노드 장애나 공격을 겪을 때 시스템이 계속 정상적으로 작동할 수 있도록 보장합니다. 
리더 회전
선출된 분류기는 세트를 형성하고, 세트의 분류기는 롤업 트랜잭션을 차례로 정렬합니다. 이 방법은 단일 분류기가 오랫동안 거래 분류 권한을 독점하는 문제를 피하고, 사용자에 대한 지속적인 검열이라는 숨겨진 우려를 어느 정도 해결합니다.

수아브
SUAVE는 Flashbots가 개발한 분산형 플러그 앤 플레이 공유 시퀀서 솔루션입니다. 범용 플랫폼인 SUAVE는 다양한 L1/L2 네트워크에 메모리 풀 관리 및 분산형 블록 구축 기능을 제공할 수 있습니다. 전통적인 공유 시퀀서 설계와 달리 SUAVE Chain은 블록 "입찰" 메커니즘을 통해 트랜잭션 시퀀싱을 구현하는 EVM 호환 체인입니다.
SUAVE 아키텍처
SUAVE의 아키텍처는 보편적 선호 환경, 최상의 실행 시장 및 분산형 블록 구축이라는 세 가지 핵심 구성 요소로 구성됩니다.
- 선호하는 환경 
- SUAVE가 선호하는 환경은 간단한 거래부터 복잡한 이벤트까지 다양한 요구를 폭넓게 포괄합니다. 사용자의 트랜잭션 선호도는 트랜잭션 형태로 메모리 풀에 반영되며, 선호 환경은 이러한 선호도를 집계하는 공용 메모리 풀 역할을 합니다. SUAVE가 제공하는 보편적인 선호 환경은 멀티체인 사용자의 선호도를 개방적이고 투명하게 만들 뿐만 아니라 정보 비대칭성을 효과적으로 줄이고 크로스체인 MEV 문제를 어느 정도 완화합니다. 
- 실행 시장 
- 실행 시장은 SUAVE의 메모리 풀을 듣고 서로 경쟁하는 역할을 담당하는 실행자 그룹으로 구성됩니다. 경쟁은 이러한 행위자들이 사용자 선호도에 가장 적합한 실행을 제공하도록 유도합니다. 이러한 실행자는 "입찰" 방식을 통해 사용자의 요구를 실현하는 참여자라고 볼 수 있습니다. 이들은 생성된 MEV를 최대한 사용자에게 반환하려고 노력합니다. 
- 분산형 블록 구축 
- 마지막으로, 수집된 선호도 데이터와 최상의 실행 경로를 기반으로 탈중앙화 블록 구축 네트워크는 이러한 거래 정보를 블록으로 패키징하여 거래 발견부터 정렬, 블록 생성까지 전체 프로세스를 완료합니다. 

 반지름
Radius는 무신뢰 공유 주문 레이어로 배치됩니다. 이전 솔루션의 구현 메커니즘과 달리 Radius는 암호화된 멤풀을 도입하여 롤업 트랜잭션의 정렬 프로세스에 신뢰가 필요하지 않도록 보장합니다. 이 방법은 MEV 및 사용자 거래 검토 문제를 효과적으로 제거하여 거래의 공정성과 투명성을 보장합니다.
Espresso 및 Astria와 같은 합의 메커니즘을 기반으로 하는 분산형 주문자는 MEV 및 검열 위험을 어느 정도 줄이지만 네트워크 확장성과 시간 효율성을 희생하는 경우가 많아 거래 확인 지연이 발생합니다(거래 주문이 합의에 도달해야 하기 때문에). . 또한 이러한 분류기는 분산된 환경에서 작동하지만 메모리 풀의 트랜잭션 정보는 공개적이고 투명하기 때문에 분류기는 여전히 MEV를 악의적으로 탈취할 위험이 있습니다. Radius는 Sorter가 관련 트랜잭션 정보를 볼 수 없도록 암호화된 멤풀을 도입하여, Sorter가 악의적으로 MEV를 잡아서 트랜잭션을 검열하는 문제를 근본적으로 해결하는 것을 목표로 합니다.
기술 아키텍처
Radius의 기술 아키텍처는 정렬 계층(Radius), 실행 계층(Rollup), 결제 계층 및 데이터 가용성 계층의 네 가지 주요 기능 계층으로 나뉩니다.
- 정렬 레이어 
- 사용자는 암호화폐 거래와 그 증거를 시퀀서에 제출합니다. 
- 시퀀서는 이러한 증명과 거래의 유효성을 확인합니다. 
- 시퀀서는 트랜잭션을 해독하기 전에 정렬합니다. 
- 분류기는 블록을 만듭니다. 
- 시퀀서는 구성된 블록을 롤업 실행 계층에 제출합니다. 
- 실행 계층 
- 롤업은 시퀀서가 제출한 블록을 수신하고 지정된 순서에 따라 트랜잭션을 실행합니다. 
- Rollup은 거래 상태 및 상태 인증서를 결제 레이어에 제출합니다. 
- 정착지층 
- 결제 계층은 트랜잭션의 최종성을 확인하기 위해 Rollup으로부터 상태 및 상태 증명을 수신하고 검증하는 역할을 담당합니다. 
- 결제 계층은 트랜잭션 실행이 주문 계층에서 지정한 순서를 따르도록 보장합니다. 
- 데이터 가용성 계층 
- 데이터 가용성 계층은 데이터를 저장하고 이 데이터의 가용성을 보장하는 역할을 합니다. 

mempool의 암호화 메커니즘 - PVDE
Radius는 영지식 증명 기반의 암호화 방식인 PVDE(Practical Verifying Delayed Encryption)를 사용하여 암호화된 메모리 풀(mempool)을 구현합니다. 이 메커니즘은 정렬 프로세스 중에 트랜잭션이 암호화된 상태로 유지되도록 보장하여 트랜잭션 처리의 보안을 강화합니다.
구체적인 과정은 다음과 같습니다.
- 사용자가 거래를 제출함 
- 사용자는 타임록 퍼즐과 대칭 키를 생성합니다. 
- 사용자는 대칭 키를 사용하여 트랜잭션을 암호화하고, 암호화된 트랜잭션은 메모리 풀(mempool)에 들어갑니다. 
- 시퀀서가 트랜잭션을 처리합니다. 
- 시퀀서는 암호화된 거래를 정렬하지만, 시간 잠금 퍼즐이 풀릴 때까지 암호 해독 키를 얻을 수 없습니다. 
- 시퀀서는 주문 약정을 계산하고 시간 잠금 퍼즐을 잠금 해제하기 전에 결제 계층에 약정을 제출합니다. 이 Promise는 시퀀서가 트랜잭션을 롤업 실행 계층에 순서대로 제출하는지 확인하는 데 사용됩니다. 
혼혈아
Metis는 분산형 PoS 시퀀서를 구현하는 최초의 레이어 2 네트워크 중 하나이며 향후 개발을 위한 중요한 모델을 제공합니다. 이 템플릿은 분류기의 분산화를 구현할 뿐만 아니라 PoS(Proof of Stake) 기반의 분산형 Optimistic Rollup 솔루션을 제공합니다. 이 템플릿에서 Metis의 분산형 PoS 시퀀서는 관리자, 시퀀서 및 PoS 합의 계층의 세 가지 주요 역할을 포함합니다.

기존 롤업 모델에서는 단일 시퀀서가 트랜잭션과 데이터를 효과적으로 처리할 수 있지만 전력을 집중시켜 여러 위험을 초래할 수도 있습니다.
- 운영 위험: Sequencer가 실패하거나 공격을 받으면 전체 시스템의 트랜잭션 처리가 차단됩니다. 
- 검열 위험: Sequencer에는 거래를 선택적으로 처리하거나 거부할 수 있는 기능이 있으며, 이로 인해 특정 탈중앙화 금융(DeFi) 프로토콜 또는 서비스에 대한 사용자의 액세스가 제한될 수 있습니다. 
- 조작 위험 : Sequencer는 트랜잭션 정렬에서 자체 트랜잭션을 우선시하고 트랜잭션 수수료, 즉 최대 추출 가능 가치(MEV)를 높여 부적절한 이익을 얻을 수 있습니다. 
이러한 문제를 해결하기 위해 Metis는 여러 Sequencer 노드가 트랜잭션의 집계, 정렬 및 실행을 공동으로 완료하는 분산형 Sequencer 풀을 설계했습니다. 이 디자인은 시스템의 공정성과 투명성을 보장합니다.
- 합의 메커니즘: 트랜잭션 일괄 처리가 이더리움 메인넷(L1)에 제출되기 전에 Sequencer 노드의 2/3 이상이 각 새 블록의 상태에 대한 합의에 도달해야 합니다. 
- MPC(다자간 계산) 서명: 트랜잭션 일괄 처리가 L1에 제출되기 전에 MPC 서명을 통해 일괄 처리의 진위 여부를 확인하여 데이터 정확성을 보장합니다. 
분산형 시퀀서의 장점:
- 보안 강화: 여러 노드의 공동 의사 결정을 통해 단일 지점 오류의 위험이 줄어들고 네트워크의 견고성과 보안이 향상됩니다. 
- 검열 및 조작 가능성 감소: 여러 개의 시퀀서가 존재하면 단일 노드가 트랜잭션을 조작하거나 검열하는 것이 어려워져 사용자의 트랜잭션 자유가 보호됩니다. 
- 안정성 및 중복성: Sequencer의 원활한 회전을 지원하여 오류나 중단의 영향을 최소화하고 전체 네트워크의 안정성을 향상시킵니다. 
Metis의 분산형 시퀀서 모델에서 각 노드는 몇 가지 주요 구성 요소로 구성됩니다.
- L2 Geth(OP-Node 포함): 트랜잭션 정렬 및 블록 조립을 담당합니다. 
- 어댑터 모듈: 다른 외부 모듈(주로 PoS 노드)과의 상호 작용을 위한 중개자 역할을 합니다. 
- 배치 제출자(제안자): 트랜잭션 배치를 구성하고 여러 Sequencer의 승인을 얻은 후 L1에 제출하는 역할을 담당합니다. 
- PoS 노드: Ethereum, 합의 및 Metis 레이어 간을 조정하여 자산을 안전하게 잠그고 검증자에게 보상을 제공합니다. 
- 합의 레이어: 이더리움 메인 네트워크와 병렬로 실행되는 Tendermint PoS 노드로 구성되어 메인 네트워크의 프로세스를 방해하지 않고 운영 효율성을 보장합니다. 

L2 Geth(OP 노드 포함)
주요 코드는 https://github.com/MetisProtocol/mvm입니다. 포크 낙관주의
주로 두 부분을 수정했습니다.
- 블록 어셈블리: mvm\l2 geth 서비스 코드는 현재 시퀀서가 현재 블록을 어셈블해야 하는지 여부를 결정하기 위해 applyTransactionToTip 처리 로직을 추가합니다. 
- 트랜잭션 정렬: 원본 op-node 코드를 수정하고 MPC 합의 계층의 어댑터 모듈을 사용하여 회전 목록 및 블록 높이에 해당하는 현재 시퀀서의 위치를 획득하여 현재 유효한 시퀀서인지 확인합니다. 
시퀀서 회전
- 회전 정보는 L2 MetisSequencerSet 계약에 저장되며 해당 정보는 합의 레이어(PoS 노드)에 의해 제어됩니다. 
- 매 에포크마다 합의 계층은 시퀀서 정보를 업데이트하고, MPC로 서명하고, 트랜잭션을 시작하고, 계약 시퀀서 목록을 업데이트합니다. 
- 각 에포크는 계약 시퀀서 목록 정보에 따라 차례로 서비스를 수행합니다. 
- 위반: 제때에 있지 않거나 잘못된 트랜잭션이 생성된 경우(2개의 동일한 L2 TxID) PoS 계층은 새 Sequencer를 선택하고 {ReselectSeqencer 트랜잭션 + MPC 서명 구성} 새 Sequencer는 현재 TxID를 사용하여 트랜잭션을 시작합니다. L2에서 동시에 새로운 Sequencer는 MetisSequencerSet 계약으로 업데이트됩니다(페널티 메커니즘 없음). 
- 트리거 업데이트: 일반 트랜잭션이 수신되고 순환 간격에 도달하면 현재 일반 트랜잭션이 일시 중지되고 MetisSequencerSet.sol 계약 업데이트 트랜잭션이 실행된 다음 PoS 계층에서 현재 트랜잭션을 실행할 새 시퀀서를 선택합니다. 정기 거래. 
- 가입: L1에 배포된 POS 계약으로, 메티스를 모기지하는 사람은 누구나 시퀀서가 되기 위해 신청할 수 있습니다. 상한선에 도달하면 대기 대기열에 입장 
- NFT 받기 
- 직접 전송은 금지되어 있으며 서명자를 변경하고 LockingPool 계약->updateSigner를 통해 NFT를 전송할 수 있습니다. 
- NFT의 tokenId는 시퀀스 ID에 해당합니다. 
- 교체: 시퀀서가 오랫동안 비정상 상태에 있을 경우 쫓겨나고 대체품으로 교체됩니다. 
- 그만두다: 
- NFT를 파괴하세요 
- 업데이트: 서명자를 변경하고 LockingPool 계약->updateSigner를 통해 NFT를 전송합니다. 
- 선택: 가중 무작위 선택 알고리즘 
MPC 모듈

 다중 서명 키의 전체 수명주기 관리를 담당합니다. 
- 다중 서명 생성 
- 키 재공유 
- 신청서 서명 
- 서명 삭제 
- 여러 다중 서명의 비동기 사용을 지원합니다. 
처리 흐름
1단계: 준비를 위해 MPC 노드에 알림
- 로컬에서 난수 sessionID를 생성합니다. 
- keyGenPrepare는 p2p 네트워크를 사용하여 모든 MPC 노드에 메시지를 브로드캐스트합니다. 
- 각 MPC 노드는 keyGenPrepare 메시지를 수신한 후 자체 처리 고루틴을 시작합니다. 
- 로컬 데이터 확인을 기반으로 하는 KeyId(데이터는 TSS 모듈이 해당 ID에 해당하는 mpc 정보를 저장하는지 여부를 나타냄) 
- 이미 READY 상태의 데이터가 있는 경우 keyGen을 계속 작동하지 않고 스토리지에서 직접 데이터가 반환됩니다. 
- PENDING 상태의 데이터가 이미 존재하는 경우, 서로 다른 키 생성 호출의 동시 실행으로 인해 일관되지 않은 키 생성을 방지하기 위해 오류를 반환합니다. 
- P2P 통신 채널을 구축합니다. 
- keyGenReady 메시지를 시작 노드에 반환합니다. 
2단계: keyGen 프로세스 시작
- 시작 노드는 모든 노드로부터 keyGenReady 메시지를 수신하기를 기다립니다. 
- 시작 노드가 모든 노드로부터 keyGenReady 메시지를 수신하면 p2p 네트워크를 사용하여 모든 MPC 노드에 keyGenStart 메시지를 브로드캐스트합니다. 
- keyGenStart 메시지를 수신한 후 각 MPC 노드는 다음을 수행합니다. 
- LocalParty 인스턴스를 로컬로 구성합니다. 
- 다른 노드로부터 정보 수신 시작 
시야
블록체인 시퀀서의 미래는 흥미로운 변화로 가득 차 있습니다. 블록체인 생태계가 계속 발전함에 따라 시퀀서는 중앙 집중화에서 보다 분산되고 효율적이며 적응 가능한 솔루션으로 중요한 전환을 겪게 될 것입니다. 이러한 변화는 Ethereum 생태계의 거래 효율성, 확장성 및 보안을 향상시키는 데 중요합니다.
탈중앙화는 암호화폐의 핵심 철학입니다. 공유된 분류 네트워크를 통해 경제 메커니즘은 가치 축적과 소득 분배 문제를 효과적으로 해결할 수 있습니다. 시퀀서 모듈 구성 및 개발 프레임워크가 점점 성숙해짐에 따라 이러한 기술은 미래 산업 발전을 위한 강력한 촉매제가 되어 블록체인 생태계를 보다 혁신적이고 효율적인 방향으로 이끌 것입니다.
참고자료
- https://docs.espressosys.com/sequencer 
- https://docs.theradius.xyz/ 
- https://docs.astria.org/developer/tutorials/run-local-rollup-against-remote-sequencer 
- https://docs.metis.io/dev/decentralized-sequencer/overview 


