Skip to main content

Ledger

Ethereum이나 다른 EVM 체인을 사용해 보셨다면, blockchain 아키텍처에서 가장 근본적인 차이점을 마주하게 됩니다. Account 모델과 UTXO 모델 사이의 선택은 단순한 구현 세부 사항이 아니라, token 추적 방식부터 구축 가능한 애플리케이션의 종류까지 모든 것에 영향을 미치는 근본적인 결정입니다.

Midnight은 UTXO 모델 기반의 데이터 보호 blockchain입니다. 이 선택 덕분에 Midnight 고유의 프라이버시, 병렬 처리, 효율성이 실현됩니다. Midnight를 특별하게 만드는 것은 UTXO 원칙 위에 구축하면서도 smart contract를 통해 account 스타일 token까지 지원한다는 점입니다. 이 독특한 접근 방식이 전례 없는 유연성을 제공하며, 이 모든 것은 두 가지 근본 모델을 이해하는 것에서 시작됩니다.

The fundamental difference

Blockchain에서는 누가 무엇을 소유하는지 추적합니다. 두 가지 주요 접근 방식이 있으며, 디지털 소유권에 대한 근본적으로 다른 철학을 대변합니다.

모델핵심 개념상태 관리예시
Account 모델잔액이 있는 영구 account전역 상태를 직접 업데이트Ethereum, Polygon, BSC
UTXO 모델소비되는 개별 코인(출력)소비/생성을 통한 상태 전환Bitcoin, Cardano, Midnight

Account 모델은 Ethereum에서 익숙한 방식입니다. 각 행이 주소이고 잔액 열이 매 transaction마다 갱신되는 거대한 스프레드시트라고 보면 됩니다. 각 주소가 잔액이 포함된 영구 account를 가지고 있어, token을 전송하면 한쪽에서 빼고 다른 쪽에 더합니다. 은행 계좌와 동일한 원리로, 직관적이고 익숙합니다.

UTXO 모델은 Bitcoin이 개척하고 Midnight가 기반으로 사용하는 방식입니다. 스프레드시트에서 잔액을 추적하는 대신, 개별 "코인" 또는 "지폐"를 추적합니다. 각 UTXO는 특정 값과 소유자가 있는 지갑 속 개별 지폐와 같습니다. Token을 소비할 때는 UTXO 전체를 소비하고 새로운 것을 생성합니다 - 물리적 현금을 사용할 때 지폐를 건네고 거스름돈을 받는 것과 같습니다. 어디에도 "잔액"이 저장되어 있지 않으며, 잔액은 단순히 보유한 모든 UTXO의 합계입니다.

Why This Matters for Token Development

Midnight가 진정으로 혁신적인 부분입니다. 다른 blockchain이 하나의 모델만 강제하는 반면, Midnight은 애플리케이션마다 다른 요구가 있음을 인식합니다. 플랫폼은 token에 두 가지 접근 방식을 모두 지원하여, 전례 없는 아키텍처 유연성을 제공합니다.

Ledger token (UTXO 기반) - Midnight의 blockchain ledger 자체에 네이티브로 존재합니다. 대표적인 예가 Midnight의 네이티브 유틸리티 token인 NIGHT입니다. NIGHT token은 ledger에 직접 개별 UTXO로 존재하며, Midnight의 모든 transaction을 구동하는 재생 가능 자원인 DUST를 생성하는 특별한 역할을 합니다. 각 NIGHT token UTXO에는 특정 값과 소유자가 있으며, 소비 시 입력을 소비하고 출력을 생성하는 UTXO 패턴을 따릅니다. 이 UTXO 구조가 Midnight의 프라이버시 기능을 뒷받침합니다 - 개별 UTXO를 필요에 따라 차폐하거나 비차폐할 수 있기 때문입니다.

Contract token (Account 기반) - Compact(Midnight의 smart contract 언어)로 작성된 smart contract 내에 존재하며, Ethereum의 ERC-20 token과 같은 방식으로 작동합니다. Contract가 주소와 잔액의 매핑을 유지하며, 전송은 이 잔액 숫자를 업데이트합니다. Compact에 맞게 조정된 OpenZeppelin 스타일 표준을 따르므로, Solidity token 개발에 익숙하다면 곧바로 친숙하게 느낄 것입니다. Contract token도 차폐 및 비차폐 작업을 모두 지원하여, account 모델 내에서도 프라이버시 옵션을 제공합니다.

이 유연한 접근 방식은 양쪽의 장점을 모두 제공합니다. 적합하지 않은 모델에 애플리케이션을 억지로 끼워 맞출 필요 없이, 각 요구에 맞는 올바른 도구를 선택할 수 있습니다.

Concrete Comparison

간단한 token 전송이 두 모델에서 어떻게 다른지 살펴봅시다.

Account Model (Ethereum Style)

Alice에서 Bob으로 40 ETH를 전송할 때:

// 개념적으로, ledger가 하는 것:
// 이전: Alice = 100 ETH, Bob = 50 ETH
accounts[Alice].balance -= 40;
accounts[Bob].balance += 40;
// 이후: Alice = 60 ETH, Bob = 90 ETH

// 상태가 제자리에서 수정됨
// 두 account 모두 전역 상태에 존재해야 함

Ledger는 모든 account 잔액의 전역 데이터베이스를 유지하며 직접 업데이트합니다. Token을 받은 적이 있는 모든 account는 영원히 추적되어야 합니다.

UTXO Model (Midnight Style)

Alice가 Bob에게 40 NIGHT token을 전송할 때:

// Alice가 100 NIGHT UTXO를 보유
// 트랜잭션이 이를 전부 소비하고 새로 생성:
transaction = {
inputs: [
{ value: 100, owner: Alice, id: "utxo_123" } // 전체 소비
],
outputs: [
{ value: 40, owner: Bob }, // Bob에게 지불 (새 UTXO)
{ value: 60, owner: Alice } // Alice에게 거스름돈 반환 (새 UTXO)
]
}

// 이전 UTXO는 사용됨으로 표시되고, 새 UTXO가 생성됨
// 잔액이 업데이트되지 않음 - 코인 소유권만 변경됨

잔액이 업데이트되지 않습니다. 대신, Alice의 100 NIGHT UTXO가 사용됨으로 표시(파기)되고 두 개의 새 UTXO가 생성됩니다. $100 지폐로 $40 물건을 결제하는 것과 같습니다 - $60의 거스름돈을 받게 됩니다.

The Architectural Impact

가치 추적 방식의 이 근본적인 차이는 확장성, 프라이버시, 애플리케이션 설계에 깊은 영향을 미칩니다. 이러한 영향을 이해하면 Midnight 애플리케이션의 아키텍처를 더 효과적으로 결정할 수 있습니다.

Parallelism and Performance

UTXO 모델의 구조는 병렬 transaction 처리를 자연스럽게 지원합니다. 각 UTXO가 독립적이므로, 서로 다른 UTXO를 사용하는 transaction은 동시에 처리할 수 있습니다. 예를 들어, Alice가 10개의 서로 다른 UTXO를 가지고 있다면 병렬 transaction으로 10명에게 동시에 전송할 수 있습니다. 계산원 한 명이 아닌 여러 명이 동시에 일하는 것과 같아, 처리량이 크게 향상됩니다.

반면, account 기반 시스템은 동일한 account에 영향을 미치는 transaction을 순차적으로 처리해야 합니다. 모든 transaction이 동일한 잔액을 수정하므로 자연스러운 병목이 생깁니다. Midnight의 UTXO 기반 설계는 피크 사용 시 account 기반 체인에서 흔히 발생하는 혼잡 문제 없이 훨씬 높은 transaction 볼륨을 처리할 수 있습니다.

Privacy Through Architecture

Midnight의 프라이버시 접근 방식은 체계적이고 규정 준수에 친화적입니다. 익명성을 강제하는 프라이버시 코인과 달리, Midnight은 "합리적 프라이버시"를 제공합니다 - 사용자는 shielded token을 필요에 따라 사용하면서도, 열람 키(차폐된 transaction에 대한 읽기 전용 접근을 허용하는 사용자 생성 특수 키)를 통해 규정 준수 능력을 유지할 수 있습니다.

UTXO 모델이 이를 가능하게 하는 이유는 각 코인이 독립적이기 때문입니다. 다른 코인에 영향을 주지 않고 차폐 UTXO를 사용할 수 있으며, 규정 준수를 위해 특정 transaction만 공개하고 나머지는 비공개로 유지할 수 있습니다. 이러한 세밀한 제어는 모든 활동이 하나의 영구 주소에 연결되는 account 모델에서는 구현하기 어렵습니다.

이 프라이버시 기능은 ledger token(UTXO 기반)과 contract token(account 기반) [곧 출시] 모두에 적용되지만, 구현 방식이 다릅니다. Ledger token은 UTXO 수준에서 개별적으로 차폐할 수 있고, contract token은 Midnight의 비공개 smart contract 상태를 활용하는 독자적인 방식으로 프라이버시를 달성합니다 - 이 부분은 이후 문서에서 자세히 다룹니다.

State Management and Efficiency

Account 시스템은 끊임없이 커지는 전역 상태를 유지해야 합니다. 잔액이 0이더라도 한 번이라도 존재한 account는 영원히 추적되어야 합니다. 이러한 상태 비대화는 시간이 지남에 따라 노드 운영 비용을 계속 증가시키는 문제로, Ethereum과 유사한 체인이 지속적으로 겪고 있습니다.

The Mental Model Shift

Ethereum에서 전환하는 개발자에게 가장 큰 변화는 가치에 대한 사고방식을 바꾸는 것입니다. 이 전환은 Midnight에서 효율적인 애플리케이션을 설계하는 데 매우 중요합니다.

기존 사고방식UTXO 사고방식중요한 이유
"내 account 잔액 확인""미사용 코인 합산"프라이버시를 위한 단일 장애 지점 없음
"발신자와 수신자 잔액 업데이트""입력 소비, 출력 생성"원자적 연산 가능
"잔액 부족으로 transaction 실패""금액을 충당할 UTXO 부족"더 나은 오류 처리 및 수수료 관리
"가스 수수료가 account에서 차감됨""transaction 수수료를 위해 DUST(NIGHT에서 생성) 필요"더 명시적인 자원 관리
"하나의 주소 = 하나의 신원""여러 UTXO = 유연한 신원"향상된 프라이버시 옵션

이 전환은 Midnight의 smart contract가 proof 생성과 함께 오프체인에서 실행된다는 점을 이해하면 더욱 흥미로워집니다. 모든 노드가 contract 코드를 재실행하는 대신, Midnight은 zero-knowledge circuit으로 올바른 실행을 증명합니다. 즉, 증명 가능한 연산의 관점에서 애플리케이션 로직을 설계해야 합니다. 이에 대해서는 이후 문서에서 자세히 다룹니다.

Choosing the Right Token Type

이러한 모델에 대한 이해는 학문적 호기심이 아니라 Midnight에서 실제로 개발하기 위한 실용적 준비입니다. Ledger token과 contract token 사이의 선택은 가장 중요한 첫 번째 결정 중 하나가 될 것입니다.

사용 사례최선의 선택이 모델이 적합한 이유예시 애플리케이션
대량 결제Ledger token (UTXO)Transaction의 병렬 처리결제 처리, 송금 시스템
비공개 transactionLedger token (UTXO)개별 UTXO 차폐 가능기밀 전송, 비공개 경매
크로스체인 브릿지Ledger token (UTXO)원자적 연산, 명확한 소유권브릿지 프로토콜, 래핑된 자산
복잡한 DeFi 로직Contract token (Account)풍부한 상태 관리 기능AMM, 대출 프로토콜, 수익 농사
게임 메커니즘Contract token (Account)복잡한 규칙과 상호작용게임 내 화폐, 아이템 제작
거버넌스 시스템Contract token (Account)투표 가중치와 위임DAO, 프로토콜 거버넌스
규정 준수 자산양쪽 모두 (하이브리드 접근)비공개 옵션이 있는 투명한 기반증권, 규제된 스테이블코인

하나의 모델을 영원히 선택할 필요는 없습니다. 성능과 프라이버시가 필요할 때는 UTXO 기반 ledger token을, 익숙한 프로그래밍 패턴이 필요할 때는 account 기반 contract token을 사용하면 됩니다. 같은 애플리케이션에서 둘 다 사용할 수도 있습니다!