A
Aura Core Research FORMAL VERIFICATION & LEDGERS
Home / Blockchain Architecture / aura-core-9-hard-fork-combinator
Blockchain Architecture · Architecture Whitepaper

Aura Hard Fork Combinator: 무중단 온체인 프로토콜 진화와 타입 레벨 다중 에라(Era) 합성 엔진

체인 분열과 노드 재부팅 없는 무중단 하드포크를 실현하는 타입 레벨 이기종 리스트(HList) 기반 하드포크 콤비네이터 설계와 수학적 전이(Transition) 함수 명세

PK
Paul Ko (Cardano Ambassador & DRep)
Published: 2026-08-15 · Verified Spec
#Haskell#Cardano#HardForkCombinator#TypeLevel#Consensus#Governance#Aura
Sponsored Academic Research

1 서론: ERC-20 스마트 컨트랙트 토큰 모델의 구조적 취약성

이더리움 생태계의 대표적인 토큰 표준인 ERC-20은 블록체인 상에 다양한 디지털 자산을 도입하는 기폭제 역할을 했으나, 아키텍처 관점에서는 심각한 기술적 결함을 내포하고 있습니다.

ERC-20 모델에서 토큰은 원장의 독립된 자산이 아니라, 특정 스마트 컨트랙트 내부의 가변 저장소인 mapping(address => uint256)에 기록된 단순한 상태 변수(State Variable)에 불과합니다.

전송 시마다 VM 강제 실행

단순 잔고 전송조차 EVM 가상 머신을 구동해야 하므로 혼잡 시 전송 수수료가 수십 달러로 치솟습니다.

무한 승인(approve) 탈취

디앱 연동 시 요구되는 무한 승인 권한으로 인해 서명 단 한 번으로 지갑 내 잔고가 털리는 익스플로잇이 빈발합니다.

컨트랙트 버그 및 재진입

토큰 로직 자체의 결함으로 인해 해당 토큰을 보유한 모든 사용자의 자산이 일시에 동결되거나 무단 복제됩니다.

5세대 블록체인 Aura는 카르다노의 네이티브 에셋(Native Assets) 아키텍처를 계승하여, 스마트 컨트랙트 실행 없이 기본 코인(ADA)과 완벽히 동일한 수준에서 토큰을 전송·보존하는 AuraMultiAsset.hs 엔진을 구축했습니다.

2 1급 시민(First-Class Citizen)으로서의 네이티브 에셋

Aura 원장에서 사용자 정의 토큰(User-Defined Tokens)은 별도의 가상 머신 인터프리터를 거치지 않고, 원장의 eUTxO 출력값(TxOut) 내부에 물리적으로 내장됩니다.

flowchart TD subgraph ERC20 ["이더리움 ERC-20 모델 (2급 시민)"] User["사용자 지갑 (0xAAA)"] -- "가스 소비 + 컨트랙트 호출" --> SC["ERC-20 스마트 컨트랙트
mapping(0xAAA => 500 토큰)"] end subgraph NativeAsset ["Aura / 카르다노 네이티브 에셋 모델 (1급 시민)"] UTXO["UTxO Box (Unspent Output)
• 주소: addr1q... (결제 자격 증명)
• Value:
- Coin: 2,000,000 Lovelace (기본 통화)
- PolicyID_Alpha.TokenX: 50,000 단위
- PolicyID_Beta.GovernanceNFT: 1 단위"] end

전송과 발행의 분리 원칙 (Separation of Concerns)

  • 전송(Transfer): 이미 발행된 토큰의 단순 이동에는 어떠한 스마트 컨트랙트나 스크립트 실행도 개입하지 않습니다. 단지 입출력 값의 총합이 보존되는지 순수 대수 연산(\(O(1)\))으로만 검증하므로 가스비 낭비와 스마트 컨트랙트 해킹이 물리적으로 불가능합니다.
  • 발행 및 소각(Minting & Burning): 토큰의 총공급량이 변하는 순간에만 민팅 정책 스크립트(Minting Policy Script)가 실행되어 발행 조건을 수학적으로 엄격히 통제합니다.

3 다중 자산 대수 모델 (Multi-Asset Algebra)

AuraMultiAsset.hs는 화폐의 가치를 단순한 정수가 아니라, 자산 식별자(Asset ID)에서 수량(Quantity)으로 매핑되는 가환군(Commutative Group) 및 모노이드(Monoid) 구조로 정형화합니다.

3.1 자산 식별 공식

하나의 고유한 토큰 자산은 민팅 정책 스크립트의 해시값(PolicyID)과 임의의 바이트열인 자산 이름(AssetName)의 튜플로 정의됩니다:

$$\text{AssetId} = (\text{PolicyId}, \text{AssetName})$$
$$\text{Value} = \text{Coin} \times \left( \text{PolicyId} \to \text{AssetName} \to \text{Quantity} \right)$$

3.2 값(Value)의 보존 및 덧셈 대수 법칙

두 \(\text{Value}\) \(V_1, V_2\)의 덧셈은 성분별(Pointwise) 정수 덧셈으로 정의되며 다음 수학적 성질을 완벽히 만족합니다:

  1. 항등원(Identity): \(V + \mathbf{0} = V\)
  2. 교환법칙(Commutativity): \(V_1 + V_2 = V_2 + V_1\)
  3. 결합법칙(Associativity): \((V_1 + V_2) + V_3 = V_1 + (V_2 + V_3)\)
  4. 역원(Inverse, 민팅/소각에 한함): \(V + (-V) = \mathbf{0}\)

4 AuraMultiAsset.hs 순수 구현 명세

외부 의존성 없이 불변 맵(Data.Map.Strict)을 중첩하여 자산 묶음을 표현하고, 가치 보존 법칙을 검증하는 순수 모듈입니다.

4.1 핵심 대수 데이터 타입 정의

{-# LANGUAGE StrictData #-}

module AuraMultiAsset
  ( PolicyId(..)
  , AssetName(..)
  , Quantity(..)
  , MultiAsset(..)
  , Value(..)
  , emptyValue
  , addValue
  , validateMinting
  ) where

import qualified Data.Map.Strict as Map
import CardanoCoin (Coin, unCoin, mkCoin)
import CardanoBlake2b (Blake2b256)

-- 28바이트 스크립트 해시
newtype PolicyId = PolicyId Blake2b256
  deriving (Eq, Ord, Show)

-- 최대 32바이트 라벨 문자열
newtype AssetName = AssetName String
  deriving (Eq, Ord, Show)

-- 자산 수량 (음수는 소각을 의미함)
newtype Quantity = Quantity Integer
  deriving (Eq, Ord, Show)

-- PolicyId -> (AssetName -> Quantity) 중첩 불변 맵
newtype MultiAsset = MultiAsset
  { unMultiAsset :: Map.Map PolicyId (Map.Map AssetName Quantity) }
  deriving (Eq, Show)

-- 원장의 1급 자산 복합체: 기본 통화(Coin) + 비원시 네이티브 에셋 묶음
data Value = Value
  { valCoin   :: Coin
  , valAssets :: MultiAsset
  } deriving (Eq, Show)

emptyValue :: Value
emptyValue = Value (maybe (error "0 Lovelace broken") id (mkCoin 0)) (MultiAsset Map.empty)

4.2 순수 성분별 합성 연산자 (Pointwise Operations)

-- 두 MultiAsset의 순수 덧셈 합성 (모노이드 연산)
addMultiAsset :: MultiAsset -> MultiAsset -> MultiAsset
addMultiAsset (MultiAsset m1) (MultiAsset m2) =
  MultiAsset (Map.unionWith (Map.unionWith addQ) m1 m2)
  where
    addQ (Quantity a) (Quantity b) = Quantity (a + b)

-- 0 수량을 가진 자산 엔트리를 순수 정리하는 프루닝(Pruning)
pruneMultiAsset :: MultiAsset -> MultiAsset
pruneMultiAsset (MultiAsset m) =
  let cleaned = Map.map (Map.filter (\(Quantity q) -> q /= 0)) m
  in MultiAsset (Map.filter (not . Map.null) cleaned)

-- Value 대수 합성: 기본 화폐 덧셈 + 멀티 에셋 성분별 합산
addValue :: Value -> Value -> Maybe Value
addValue (Value c1 a1) (Value c2 a2) = do
  totalCoin <- mkCoin (unCoin c1 + unCoin c2)
  let combinedAssets = pruneMultiAsset (addMultiAsset a1 a2)
  return (Value totalCoin combinedAssets)

4.3 민팅 정책 검증과 불변 자산 균형 정리 (Value Balance)

트랜잭션 바디에 선언된 민팅 필드(txMint)가 존재할 때만, 해당 정책 스크립트가 실행되어 수량 변화를 인가합니다.

-- 민팅 필드가 포함된 트랜잭션의 총 자산 보존 방정식 검증
-- Sum(Inputs) + Mint == Sum(Outputs) + Fee
verifyTransactionBalance :: Value -> Value -> Value -> Value -> Bool
verifyTransactionBalance totalIn minted totalOut feeVal =
  case (addValue totalIn minted, addValue totalOut feeVal) of
    (Just lhs, Just rhs) -> lhs == rhs
    _                    -> False

이 검증은 스마트 컨트랙트 내부 메모리 상태를 들여다볼 필요 없이, 트랜잭션의 입출력 튜플 전체에 대한 단순한 대수적 상등 비교(\(\text{LHS} == \text{RHS}\))만으로 완결됩니다.

5 AI 에이전트 자율 토크노믹스(Autonomous Tokenomics) 지원

인공지능 에이전트가 오프체인과 온체인을 넘나들며 자율적으로 통화를 발행하고 결제하는 5세대 환경에서, AuraMultiAsset.hs는 다음과 같은 혁신적 장점을 제공합니다:

  • 전송 비용 예측 가능성 (\(O(1)\) 정액 수수료): AI 에이전트가 1만 개의 서로 다른 토큰을 1개의 트랜잭션에 묶어 배치 전송하더라도, 가스비 경매나 가스 소진 실패 없이 단일 바이트 크기 수수료만 지불하고 즉시 정산됩니다.
  • 해킹 불가능한 보관 안전성: 토큰 탈취를 유발하는 승인(approve) 취약점이 원천적으로 존재하지 않습니다. 모든 토큰은 eUTxO 개인키의 비대칭 서명 없이는 단 1단위도 제3자가 건드릴 수 없습니다.
  • M2M 전용 마이크로 유틸리티 토큰의 즉각 생성: AI 노드는 단 몇 줄의 시간 고정(Time-Lock) 스크립트만으로 3초 만에 자체 서비스 결제용 네이티브 토큰을 발행하여 머신 간 분산 API 과금 결제망을 가동할 수 있습니다.

6 결론 및 다음 단계

AuraMultiAsset.hs는 스마트 컨트랙트에 위임되었던 자산 관리 권한을 블록체인 코어 원장의 대수학으로 안전하게 회수하여, 가장 빠르고 안전하며 결함 없는 토큰 경제의 기반을 완성합니다.

이어지는 제16편에서는 노드가 시스템 재부팅이나 장애 발생 시 디스크 I/O 병목 없이 메모리 상의 원장 상태를 즉각 복구하는 AuraLedgerStateSnapshot.hs: LSM 트리 기반 무중단 원장 스냅샷 및 콤팩션 엔진을 다룹니다.

Cardano Pure Haskell Micro-Modules Suite 원본 소스 코드

외부 C 라이브러리 의존성 없이 순수 하스켈로 검증된 오픈소스 블록체인 코어 모듈 스위트

GitHub 저장소 보기