devops
Cardano DEX에서 사용하는 Batcher 본문
Batcher는 기존 이더리움 L2에서 Tx의 묶음인 batch를 L1에 기록하는 인스턴스를 의미하지만, 카르다노에서는 다르게 사용된다. 최근 Cardano의 디파이 생태계가 꾸준히 성장하는 만큼, UTXO 모델에 의해 사용되는 Batcher라는 개념을 스터디겸 정리해보려 한다.
Batcher
배처는 카르다노의 몇몇 DEX에서 유저의 주문을 수집하고 스왑하기 위해서 사용하는 개념으로, Cardano 네트워크에서 노드를 실행하여 DEX의 스크립트를 호출하는 Tx를 생성하고 submit하는 개체라고 보면 된다.
간단히 말해서, 블록체인에서 처리해야하는 트랜잭션 수를 줄이게 되어 DEX의 확장성, 효율성을 높이는 역할을 한다.
이 역할을 위해서 다음과 같은 작업이 오프체인에서 진행되는데,
1) 유저의 주문을 수집
2) 자금의 락업과 관련된 거래 생성
여기서 모든 유저의 주문을 일치시키고, 오프체인에서 다시 발생하는 거래를 생성해 스왑을 수행하게 된다. 여기서 Batcher는 우선순위와 가격에 따라서 유저 Tx를 정렬하기 때문에 충돌과 실패를 방지한다. 이 대가로 유저는 Tx 네트워크 비용 + Batcher의 스왑 비용을 지불하여 Batcher는 생성한 거래에 보상을 받게된다.
위 그림에 대해서 간단히 설명하면,
1) Bob은 카르다노의 A라는 네이티브 토큰을 ADA로 스왑하려고 하고, Alice는 ADA로 A 토큰을 스왑하려고 한다.
2) Alice와 Bob은 그들이 신뢰하는 Batcher를 찾아 스왑을 진행하려고 한다. (이는 DEX에 의해서 자동으로 수행되거나 선택가능)
3) Batcher가 선택되면 Alice와 Bob이 거래에 사용할 자산이 락업된다. (스왑은 Batcher가 해당 자산을 컨트롤할 수 있는 경우에만 가능)
4) Bob은 Batcher가 제어하는 스크립트 주소로 A 토큰을 전송한다.
5) Batchcer는 락업 스크립트를 포함, Tx 생성 역할을 담당하며, 유저는 개인키로 거래에 서명한다. (Batcher는 유저의 개인키 접근이 안되며, 스왑 조건 불충분시 해당 자산 활용 불가능)
6) 유저는 개인키 서명 전에 Batcher에서 제공하는 Tx를 확인한다.
7) Alice도 Bob과 동일하게 ADA를 Batcher가 제어하는 스크립트 주소에 락업된다.
8) Batcher는 두 거래를 단일 atomic 거래로 Cardano 네트워크에 제출한다.
이 과정들을 통해서 Batcher를 활용하게 되면, 아래와 같은 이점이 있다.
- 노드에서 검증하고 저장할 Tx가 줄어들며 DEX의 처리량을 높일 수 있다.
- 유저 입장에서는 일괄적으로 거래하기 때문에 수수료가 낮아지며, 더 빠르고 안정적이기 때문에 사용자 경험이 향상된다.
반대로, 단점도 존재한다.
- Batcher가 악의적인 의도가 있다면 Tx를 조작, 검열할 수 있어 DEX의 탈중앙화와 보안을 감소시킬 수 있다.
- 유저는 Batcher를 신뢰해야하므로, 리스크가 증가한다.
- 유저가 주문 실행을 위해 Batcher 노드의 가용성과 성능에 의존해야한다.
Batcher는 대체로 SPO가 담당하여, 신뢰성을 보장받는 상황이다. 만약 SPO가 악의적인 행위를 했을 경우에 스테이커에게 신뢰를 잃기 때문에 현재까진 SPO가 스테이킹 풀 운영의 신뢰도를 이용해서 이 역할을 대신하는 것으로 보인다.
EUTxO와 Batcher
이더리움에는 없는 Batcher라는 독특한 노드가 존재하는 것은 역시, UTXO 모델이기 때문이다. UTXO 기반이기 때문에 Tx의 실행이 독립적이라 로컬에서 실행이 가능하다. 이 점 덕분에 개별 Batcher가 DEX의 Tx를 처리할 수 있으며, 카르다노 네트워크에서 병렬처리가 가능한 이유다.
개별 네트워크(L2)로 분기되는 방식으로 확장성을 높이는 이더리움에 비해서, 자산의 파편화를 막고 보안도 높이며, L1의 병렬처리가 카르다노에선 가능하다. 특히, 카르다노 생태계에선 SPO와 같은 노드들의 역할이 생각보다 다양한 것 같다.
https://github.com/lenfiLabs/batcher_example
카르다노 생태계에서 주요 디파이 프로젝트 중 하나인 Lenfi에서도 Batcher를 활용하고 있다. 타입스크립트로 구현되었기 때문에 한번 살펴보면 좋을 듯..
'Cardano' 카테고리의 다른 글
Cardano EUTxO와 트랜잭션 구성 및 실행 프로세스 (0) | 2024.02.27 |
---|---|
Cardano Input Endorsers 개념 이해하기 (0) | 2024.02.07 |
Cardano Native Token(네이티브 토큰)과 ERC-20 비교 (0) | 2024.01.21 |
Cardano EUTXO 핸드북 한글판 (0) | 2024.01.10 |
Cardano의 회계 모델, Extended-UTXO(EUTXO) (0) | 2024.01.10 |