Cardano Batcher 이해

https://cexplorer.io/article/understanding-cardano-batchers
image
배처(Batcher)는 Cardano의 일부 분산형 거래소(DEX)에서 주문을 수집하고 스왑을 실행하기 위해 사용하는 개념입니다. 와서 그들에 대해 자세히 알아보세요. 또한 Cardano에는 Batcher가 필요하고 Ethereum에는 필요하지 않은 이유도 설명하겠습니다.

Batcher의 역할
배처(Batcher)는 일부 분산형 거래소(DEX)에서 사용자 주문을 수집하고 스왑을 실행하기 위해 사용하는 개념입니다. 배처(Batcher)는 Cardano 네트워크에서 노드를 실행하고 DEX의 온체인 코드(검증기 스크립트)를 호출하는 트랜잭션을 생성하고 제출할 수 있는 개체입니다.

배처의 목표는 블록체인에서 처리해야 하는 트랜잭션 수를 줄여 DEX의 효율성과 확장성을 향상시키는 것입니다. Batcher는 여러 사용자 트랜잭션을 동시에 실행하는 단일 일괄 트랜잭션으로 집계합니다. 이는 각 사용자가 자신의 거래를 DEX에 제출하는 것보다 더 효율적인 접근 방식입니다.

Batcher는 사용자 주문을 수집하고 자금 잠금과 관련된 거래를 생성합니다. 이는 스마트 계약의 오프체인 논리에서 수행됩니다. 그들은 모든 사용자 주문을 일치시키고 스마트 계약의 오프체인 부분에서 다시 발생하는 지출 거래 생성을 통해 스왑을 수행합니다.

Batcher는 우선순위와 가격에 따라 사용자 트랜잭션을 정렬하므로 충돌이나 실패를 방지하는 데 도움이 됩니다.

사용자는 일반적인 네트워크 비용을 지불해야 하며 스왑에 대한 배처 비용도 지불해야 합니다. Batcher는 자신이 생성한 각 거래에서 보상으로 소액의 수수료를 공제합니다.

아래 그림에서는 주문을 처리하고 일치시키며 스왑을 실행하는 DEX의 단순화된 다이어그램을 볼 수 있습니다. 이를 위해 배처는 스마트 계약의 온체인 부분에서 검증된 트랜잭션을 생성해야 합니다.


예를 들어 보여드리겠습니다. 몇 가지 중요한 세부 사항을 강조하겠습니다.

Alice는 HOSKY를 판매하고 더 많은 ADA를 갖고 싶어합니다. Bob은 HOSKY를 매수하고 ADA를 매도하려고 합니다. 배처 노드는 이러한 주문을 결합하고 스왑을 수행할 수 있습니다.

우선, Alice와 Bob은 그들이 신뢰하고 스왑을 수행할 수 있는 배처를 찾아야 합니다. 이는 DEX에 의해 자동으로 수행되거나 DEX의 설계 및 구현에 따라 원하는 배처를 선택할 수 있습니다. 일부 DEX를 사용하면 사용자가 스왑 수행 작업을 수행할 특정 노드를 선택할 수 있는 반면, 다른 DEX는 추첨을 사용하여 무작위 선택을 보장합니다.

Batcher가 선택되면 Alice와 Bob은 ADA와 HOSKY를 잠가야 합니다. 스왑은 배처가 자금 지출을 통제할 수 있는 경우에만 실행될 수 있습니다.

Alice는 Batcher가 제어하는 스크립트 주소로 HOSKY 토큰을 보냅니다. 스크립트에는 HOSKY 지출 조건(예: Alice가 요청하는 ADA 금액)이 정의되어 있습니다. 유효한 지출 거래를 생성할 수 있는 사람(스크립트 조건 충족)은 누구나 자금을 잠금 해제할 수 있습니다. 이는 일반적으로 자금을 잠근 배처입니다(반드시 그런 것은 아님).

Batcher는 잠금 스크립트를 포함하는 트랜잭션을 구축하는 역할을 담당합니다. 사용자는 개인 키를 사용하여 거래에 서명해야 합니다. 이렇게 하면 사용자의 개인 키에 접근할 수 없기 때문에 배처가 자금을 훔칠 수 없습니다. 배처는 자금을 잠그고 잠금 해제하는 스크립트만 제어하지만 스왑 조건을 충족하지 않으면 자금을 사용할 수 없습니다.

사용자는 개인 키로 서명하기 전에 Batcher에서 제공하는 트랜잭션을 확인해야 합니다. 그들은 거래가 토큰 금액, 환율, 만료 시간과 같은 스왑 조건 및 매개변수와 일치하는지 확인할 수 있습니다.

Bob은 Alice와 유사한 작업을 수행해야 하지만 ADA 코인을 사용해야 합니다. 따라서 ADA 코인은 Batcher가 제어하는 스크립트 주소에 잠깁니다.

HOSKY와 ADA는 잠겨 있으며 배처는 두 주문을 모두 일치시킬 수 있습니다. 자금을 잠그는 두 스크립트의 지출 조건을 모두 충족할 수 있는지 확인합니다. 그렇다면 배치 처리기는 스크립트 주소에서 HOSKY 및 ADA를 잠금 해제하는 두 개의 지출 거래를 생성하고 요구 사항에 따라 정확하게 수신자의 주소(예: Alice 및 Bob)로 보냅니다.

배처는 두 지출 거래를 단일 원자 거래로 Cardano 네트워크에 제출합니다. 이는 두 트랜잭션이 모두 성공적으로 실행되거나 둘 중 어느 것도 전혀 실행되지 않음을 의미합니다. 이를 통해 Alice와 Bob은 자금을 잃거나 배처나 서로에게 속일 위험 없이 토큰과 코인을 받을 수 있습니다.

우리는 당사자 간의 더 많은 조정과 의사소통이 필요한 소위 직접 교환의 예를 보여주었습니다. Alice는 Bob의 주소와 교환하려는 토큰 수를 알고 있다면 상대방은 Bob이어야 한다고 DEX에 명시적으로 말할 수 있습니다. Alice와 Bob은 스왑 조건과 매개변수에 대해 사전에 동의한 후 배치 처리기를 사용하여 스왑 트랜잭션을 실행해야 합니다. 직접 스왑은 풀 기반 스왑보다 더 안전하고 효율적입니다. 여기서 Alice와 Bob은 서로 알지 못하고 유동성 풀에 의존하여 스왑에 적합한 매치를 찾습니다.

Cardano에 Batcher가 필요한 이유는 무엇입니까?
Batcher는 Cardano에서 스마트 계약과 스왑을 활성화하는 데 중요한 역할을 합니다. 그러나 몇 가지 과제와 절충안도 제시됩니다. 먼저 몇 가지 장점을 살펴보겠습니다.

  • 노드에서 검증하고 블록체인에 저장해야 하는 트랜잭션이 줄어들기 때문에 블록체인의 부하를 줄이고 DEX의 처리량을 높입니다. 10개의 트랜잭션이 포함된 일괄 트랜잭션은 10개의 개별 트랜잭션보다 크기가 더 작습니다. 이는 일괄 트랜잭션이 여러 입력과 출력을 단일 트랜잭션으로 결합하여 별도의 트랜잭션을 생성하는 데 따른 오버헤드와 중복성을 줄일 수 있기 때문입니다.
  • 사용자가 일괄 거래 비용을 공유할 수 있으므로 사용자의 수수료가 낮아집니다. Cardano의 수수료는 거래 규모에 따라 결정되며 그 규모는 증인(서명) 수에 따라 달라집니다.
  • 더 빠르고 안정적인 거래 실행을 제공할 수 있으므로 사용자 경험이 향상됩니다.

Batcher의 몇 가지 단점은 다음과 같습니다.

  • 이는 사용자 거래에 실패 지점을 도입하므로 DEX의 분산화 및 보안을 감소시킵니다. Batcher가 악의적이거나 손상된 경우 사용자 트랜잭션을 조작, 검열 또는 사전 실행할 수 있습니다.
  • 사용자는 Batcher를 신뢰하고 상호 작용해야 하므로 사용자의 복잡성과 위험이 증가합니다. 사용자는 자신의 자금과 데이터를 배처에 보내야 하며, 배처는 사용자를 대신하여 일괄 거래를 생성하고 제출합니다.
  • 사용자는 주문을 실행하기 위해 배처 노드의 가용성과 성능에 의존해야 합니다. Batcher 노드가 오프라인 상태가 되거나 과부하가 발생하면 트랜잭션이 지연되거나 실패할 수 있습니다.
  • 배처는 대부분 지분이 높은 SPO(스테이킹 풀 운영자)인 것이 일반적입니다. 이는 이해관계자의 진입장벽을 초래합니다. 이 메커니즘은 풀의 작동과 배처 노드의 작동을 결합하므로 정직한 동작을 보장하기 위한 것입니다. 배처가 정직하게 행동하지 않으면 위임자가 운영자 풀에 ADA를 스테이킹하는 것을 방해할 수 있습니다. 부정직한 배처는 일괄 거래 수수료 외에도 스테이킹 보상을 잃을 위험이 있습니다.

이제 우리는 핵심 질문에 도달했습니다. Cardano에는 Batcher가 필요하고 Ethereum에는 왜 필요하지 않습니까?

일괄 처리는 여러 트랜잭션을 블록체인에서 단일 원자 트랜잭션으로 실행할 수 있도록 하는 기술입니다. 이는 모든 트랜잭션이 성공적으로 실행되거나 그 중 아무 것도 실행되지 않음을 의미합니다. 보안과 정확성의 관점에서 보면 원자성은 절대적으로 중요합니다. 배치의 일부가 유효하지 않거나 충돌하는 경우 전체 배치가 실패합니다. 이는 자금 손실, 이중 지출 또는 사기로 이어질 수 있는 부분적이거나 일관되지 않은 거래 실행을 방지합니다.

Cardano는 다른 회계 모델을 사용하기 때문에 Ethereum이나 다른 블록체인과 같은 방식으로 스마트 계약을 지원하지 않기 때문에 Batcher가 필요합니다.

UTXO 모델에서는 각 UTXO를 한 번만 사용할 수 있습니다. 각 트랜잭션은 일부 UTXO를 입력으로 사용하고 새로운 UTXO를 출력으로 생성합니다. 사용자의 잔액은 해당 주소와 관련된 모든 UTXO의 합계로 계산됩니다.

출력은 소비 조건을 지정하는 스크립트에 의해 잠길 수 있습니다. 스크립트에 정의된 자금 지출 논리에는 일부 컨텍스트나 상태를 알 수 있는 능력이 필요할 수 있습니다. 상태는 시스템이나 프로그램의 현재 상태를 나타내는 데이터 집합입니다. 상태 정보는 블록체인에서 상호 작용, 계산 또는 검증이 필요한 많은 애플리케이션에 필수적입니다.

스마트 계약이 상태 변수를 저장하고 조작할 수 있는 Ethereum과 달리 Cardano 스크립트는 현재 트랜잭션의 입력 및 출력에만 액세스할 수 있습니다(로컬 컨텍스트 또는 상태만 사용 가능). 이는 Cardano 스크립트가 복잡한 논리를 수행하거나 DEX 스마트 계약의 온체인 부분 내에서 다른 스크립트와 상호 작용할 수 없음을 의미합니다.

UTXO 모델의 한계는 복잡한 논리나 상태 정보를 지원하지 않는다는 것입니다.

이러한 한계를 극복하기 위해 배처는 스크립트를 사용하여 자금을 잠그고 잠금 해제하는 거래를 수집, 주문 및 실행하는 중개자 역할을 합니다. 즉, DEX의 비즈니스 로직은 애플리케이션의 상태에 맞춰 작업이 가능하기 때문에 오프체인으로 실행됩니다.

UTXO 모델에는 트랜잭션을 통해 업데이트하거나 액세스할 수 있는 전역 상태가 없습니다. 대신, 각 트랜잭션은 현재 트랜잭션의 입력 및 출력에만 액세스할 수 있습니다. 스크립트 실행 중에 UTxO의 Datum, 지출 트랜잭션의 Redeemer 및 트랜잭션(로컬) 컨텍스트를 사용할 수 있습니다.

이는 트랜잭션이 산술 연산, 조건문, 루프 또는 함수 호출과 같은 외부 변수나 조건에 의존하는 작업을 수행할 수 없음을 의미합니다. 더욱이 트랜잭션은 블록체인의 다른 트랜잭션이나 스크립트와 상호 작용할 수 없으므로 애플리케이션의 기능과 상호 운용성이 제한됩니다.

Batcher는 여러 거래(주문)를 동시에 처리하고 애플리케이션 상태를 유지할 수 있는 알고리즘을 구현하기 때문에 Cardano에서 스왑을 가능하게 합니다.

이더리움은 계정 기반 모델이라는 다른 회계 모델을 사용하기 때문에 배처가 필요하지 않습니다. 계정 기반 모델은 각 계정의 잔액을 전역 상태로 추적합니다. 각 트랜잭션은 트랜잭션에 포함된 논리와 데이터에 따라 시스템 상태를 업데이트합니다. 계정 기반 모델은 트랜잭션이 시스템의 전역 상태에 액세스하고 수정할 수 있도록 허용하므로 복잡한 논리 및 상태 정보를 지원합니다. 간단히 말해서, 이더리움은 스마트 계약을 통해 DEX 로직을 구현할 수 있습니다.

Cardano와 Ethereum의 짧은 비교
UTXO와 계정 기반 모델의 차이점은 이더리움의 글로벌 상태와 관련이 있습니다. Ethereum에는 트랜잭션을 통해 업데이트하거나 액세스할 수 있는 전역 상태가 있습니다.

Cardano에는 전역 상태가 없습니다. 트랜잭션 실행은 로컬 컨텍스트에만 의존하므로 서로 독립적입니다. 이로 인해 Ethereum은 Cardano보다 스마트 계약 및 스왑에 더 적합하지만 몇 가지 과제와 상충 관계도 발생합니다.

  • Ethereum의 글로벌 상태는 Cardano의 UTXO 모델보다 더 복잡하여 확인 및 유지 관리가 더 어렵습니다. 복잡성이 높을수록 취약성과 공격 벡터가 발생하는 경우가 많습니다.
  • Ethereum의 전역 상태에는 Cardano의 UTXO 모델보다 더 많은 저장 공간과 계산이 필요하므로 확장성과 성능이 제한됩니다. EVM은 트랜잭션을 순차적으로 실행하고 그에 따라 상태를 업데이트합니다. 블록 검증 중에는 순서를 따라야 합니다.
  • Ethereum의 글로벌 상태는 Cardano의 UTXO 모델보다 더 많은 정보를 노출하므로 개인 정보 보호와 익명성이 감소합니다.

IOG 팀은 UTxO 모델을 선택했으며 의도적으로 전역 상태와 같은 것을 원하지 않았습니다. 그들은 한계를 극복하면서 UTxO 모델의 이점을 활용하기를 원했습니다. 그들은 트랜잭션이 일부 상태 정보를 전달하고 스마트 계약을 사용하여 사용자 정의 논리를 실행할 수 있도록 하는 eUTXO라는 UxO 모델의 확장 버전을 도입하여 이를 수행했습니다.

eUTXO 모델은 UTxO 모델의 단순성, 개인 정보 보호 및 확장성(비트코인에서 알 수 있듯이)을 유지하면서 애플리케이션의 더 많은 기능과 상호 운용성을 활성화합니다.

eUTxO 모델, 즉 전역 상태가 없다는 점은 Cardano에 특정한 이점을 제공합니다.

  • 유효성 검사기 스크립트(온체인 로직)는 매우 작고 유효성 검사가 간단합니다. 이는 분산 네트워크의 컴퓨팅 리소스를 절약합니다. 팀은 쉽게 업그레이드할 수 있는 오프체인 부분에서 대부분의 애플리케이션 로직을 구현해야 합니다. 온체인 검증 중에 Datum 및 Redeemer를 통해 로컬 상태(비트코인의 UTxO 모델과 달리)로 작업하는 것이 가능합니다.
  • eUTxO 모델을 사용하면 사용자는 여러 주소를 생성하고 각 거래에 대해 서로 다른 UTxO를 사용할 수 있으므로 거래를 단일 ID에 연결하거나 자금 내역을 추적하기가 더 어려워집니다.
  • eUTxO 모델은 각 UTxO를 서로 다른 노드에서 독립적으로 동시에 확인할 수 있으므로 트랜잭션의 병렬 처리를 가능하게 합니다. 이렇게 하면 네트워크의 병목 현상과 대기 시간이 줄어듭니다. 블록 검증 중에는 트랜잭션이 서로 독립적이므로 순서를 따를 필요가 없습니다.
  • 계정 기반 모델 대신 eUTXO 모델을 선택하는 주요 이유 중 하나는 더 나은 확장성과 병렬성입니다. eUTXO 모델을 사용하면 트랜잭션이 서로 충돌하지 않는 한 여러 노드에서 병렬로 처리할 수 있습니다. 이는 더 많은 노드와 리소스를 추가하여 네트워크의 처리량과 성능을 높일 수 있음을 의미합니다.

반면에 계정 기반 모델은 각 트랜잭션이 시스템의 전역 상태에 따라 달라지므로 트랜잭션의 순차적 처리가 필요합니다. 이는 네트워크의 처리량과 성능이 단일 노드의 속도와 용량에 의해 제한된다는 의미입니다.

이 주제는 더 복잡하며 Cardano와 Ethereum의 비교는 별도의 기사가 필요합니다. 우리는 Ethereum과 달리 Batcher가 작동하는 방식과 Cardano가 이를 필요로 하는 이유를 설명하고 싶었습니다. 우리가 성공하길 바랍니다.

결론
이더리움의 좋은 점은 오프체인 로직이 없어도 스마트 계약에서 DEX 로직을 구현할 수 있다는 것입니다. 반면에 비효율적입니다. 더 많은 사용자가 DEX를 사용하려는 경우 Ethereum은 확장성에 문제가 있을 수 있습니다. 오늘날 이더리움 생태계에는 주문 일치 및 스왑 실행을 위한 오프체인 Cardano와 유사한 논리를 갖춘 DEX가 이미 있습니다. 이더리움 생태계에서 가장 많이 사용되는 DEX는 Uniswap이며 온체인 DEX입니다.

Cardano 생태계의 대부분의 DEX는 배처(Batcher)를 사용합니다. Batcher는 단일 실패 지점으로 볼 수 있습니다. 배처가 자금을 잠근 후 오프라인 상태가 되면 지출 거래를 생성하는 것이 불가능할 수 있습니다(다른 배처가 하나의 DEX 내에서 이를 생성할 수도 있음). 반면 경제적 유인은 잘 설정되어 있다고 할 수 있다. 배처(Batcher)는 비즈니스 손실 및 잠재적으로 ADA 코인을 위임할 위험이 있으므로 정직하게 배칭을 수행하려는 동기를 갖습니다.