TRENDSHIFT 딥다이브 · 2026-06-24

rusty-cryptix 딥다이브
— Rust로 다시 건조한 BlockDAG 암호화폐 풀노드

암호화폐 Cryptix를 굴리는 풀노드(full node)를 통째로 Rust로 다시 쓴 코드베이스다. 합의·검증·P2P 통신·지갑·채굴·RPC가 한 저장소 안에 다 들어 있고, 토대는 Kaspa의 rusty-kaspa(BlockDAG 구조)에서 갈라져 나와 모든 모듈을 cryptix-*로 재브랜딩한 뒤, 자체 매트릭스 PoW·온체인 토큰/DEX(Atomic)·서명 밴리스트(AntiFraud)·고속 릴레이(HFA)를 덧붙였다. 62개 크레이트, 935개 Rust 파일짜리 대형 모노레포라 "블록체인 노드가 실제로 어떻게 짜여 있나"를 통째로 들여다보기 좋다. (저장소: cryptix-network/rusty-cryptix · Rust 98% · ★3 · TrendShift 라이브 멘션 · ISC 라이선스 · v0.17.1)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"코인 하나를 굴리는 '온전한 한 척의 배'를,
Go에서 Rust로 갈아끼운 코드베이스."

블록체인 네트워크에 완전한 자격으로 참여하려면, 거래를 검증하고·다른 노드와 대화하고·블록을 저장하고·필요하면 채굴까지 하는 프로그램이 하나 필요하다. 그게 풀노드다. rusty-cryptix는 Cryptix의 풀노드를 Rust로 다시 건조한 것이다.

"암호화폐 하나"는 사실 소프트웨어 한 덩어리다. 수천 대의 컴퓨터가 똑같은 프로그램을 돌리면서 "누가 얼마를 가졌나"라는 장부 하나에 합의하는 것 — 그 프로그램이 풀노드이고, rusty-cryptix는 Cryptix 네트워크용 풀노드의 레퍼런스 구현(reference implementation, 기준이 되는 공식 구현)이다. 기존 Cryptix는 Go로 짠 레거시 노드(cryptixd, Golang)를 썼는데, 이 저장소는 그것을 메모리 안전성과 성능이 강한 Rust로 통째로 대체하는 것을 목표로 한다.

토대가 중요하다. rusty-cryptix는 rusty-kaspa(Kaspa 코인의 Rust 노드)에서 포크(fork, 코드를 복제해 갈라져 나옴)되어, Kaspa의 핵심 자료구조인 BlockDAGGhostDAG 합의를 그대로 물려받았다. 그 위에 Cryptix만의 독자 기능 네 가지 — 매트릭스 기반 PoW 해시, 합의층에 박은 온체인 토큰/DEX(코드명 Atomic), 서명된 사기방지 밴리스트(AntiFraud), 고속 마이크로블록 릴레이(HFA) — 를 얹었다.

용어
풀노드 (full node, 완전 노드)
블록체인의 모든 규칙을 스스로 검증하며 네트워크에 참여하는 프로그램. "남을 믿지 않고 내가 직접 장부 전체를 검사한다"는 게 핵심. 거래 검증·블록 저장·P2P 중계·(선택) 채굴을 다 한다. 가벼운 '지갑 앱'이 식당의 손님이라면, 풀노드는 주방·창고·회계를 다 갖춘 본점이다.
용어
BlockDAG (Block Directed Acyclic Graph, 블록 방향성 비순환 그래프)
비트코인은 블록이 한 줄로 이어진 '체인'이라 한 번에 블록 하나만 인정한다. BlockDAG는 같은 시간에 여러 블록이 동시에 생겨도 모두 그래프에 품는다 — 한 줄 기차가 아니라, 여러 갈래로 뻗다가 다시 합류하는 강줄기에 가깝다. 그래서 초당 여러 블록(높은 처리량)이 가능하다. 단, "그럼 순서는 누가 정하나?"라는 새 숙제가 생기는데 그걸 GhostDAG가 푼다.

2왜 주목받는가

트렌딩 이유 · 경쟁 대비 장점.

이 저장소가 TrendShift 라이브 멘션에 뜬 직접적 계기는 v0.17.1 "Atomic Hardfork" 릴리스다. 합의층에 토큰과 탈중앙 거래소(DEX)를 직접 박아 넣는 큰 변경이 X(트위터)에서 회자되며 노출됐다. 정직하게 짚자면 이 레포는 GitHub 별은 아직 적은(★3) 작은 프로젝트이고, 아키텍처의 큰 뼈대는 Kaspa(rusty-kaspa)에서 물려받았다. 그럼에도 학습 대상으로는 가치가 크다 — 실제로 돌아가는 BlockDAG 노드의 전체 구조를 Rust로 한 채 통째로 읽을 수 있기 때문이다.

기술적으로 눈여겨볼 차별점은 네 가지다. ① Rust 전면 재작성(Go 레거시 → 메모리 안전 + 동시성), ② BlockDAG + GhostDAG(단일 체인의 처리량 한계 돌파), ③ 자체 매트릭스 heavy-hash PoW(전용 채굴기 ASIC에 저항), ④ 합의층 내장 토큰/AMM DEX(별도 스마트컨트랙트 없이 노드가 직접 토큰·유동성풀을 처리).

항목흔한 블록체인rusty-cryptix의 접근
장부 자료구조단일 체인(블록 1개씩 직렬)BlockDAG(동시 다발 블록을 GhostDAG로 정렬)
구현 언어레거시 Go 데몬Rust 풀노드(62 크레이트 워크스페이스)
토큰 / DEX별도 스마트컨트랙트·L2 레이어합의층 내장 'Atomic' 인덱스(정수 AMM)
PoW 해시표준 해시 1종매트릭스 + 동적 SHA3 다단계(ASIC 저항)
RPC 통신JSON-RPC 단일gRPC + wRPC(WebSocket, Borsh·JSON 둘 다)
기존 방식의 한계
단일 체인은 '한 줄 기차'라 막힌다

블록을 한 번에 하나만 인정하면, 같은 순간에 두 채굴자가 블록을 만들면 하나는 버려진다(고아 블록). 안전하게 굴리려면 블록 간격을 길게(예: 10분) 둬야 하고, 그만큼 거래 확정이 느려진다. 처리량을 올리려고 간격을 줄이면 고아가 폭증해 보안이 흔들린다 — 속도와 안전이 정면충돌한다.

이 레포의 해결
BlockDAG는 동시 블록을 '버리지 않고 품는다'

여러 블록이 동시에 나와도 전부 그래프에 넣고, GhostDAG가 그 그래프를 보고 정직한 블록들의 묶음(파란 집합)을 골라 전체 순서를 매긴다. 덕분에 초당 여러 블록(높은 BPS)을 내면서도 일관된 순서·보안을 지킨다. rusty-cryptix는 이 Kaspa 계열 합의를 Rust로 구현해, 파이프라인 단계마다 병렬로 검증한다.

3기술 스택 전체 지도

언어·합의·저장·통신·암호 한눈에.

순수 시스템 소프트웨어라 '프론트엔드/백엔드'보다 레이어별 역할로 보는 게 맞다. 전부 Rust 한 언어로 짜여 있고(98%), 외부 의존성은 블록체인 노드의 정석 조합이다.

레이어기술 / 버전역할
언어·빌드Rust 1.81+ · Cargo 워크스페이스(62 크레이트, resolver 2)전체 구현 언어 + 모듈 분할 빌드.
비동기 런타임tokio 1.33수많은 P2P 연결·작업을 동시에 굴리는 엔진.
합의cryptix-consensus(GhostDAG · reachability · pruning)BlockDAG 정렬·검증·가지치기.
작업증명(PoW)cryptix-pow · Keccak/cSHAKE256 · BLAKE3 · XoShiRo256++매트릭스 heavy-hash 채굴 해시.
저장소RocksDB 0.22(cryptix-database) + UTXO 인덱스블록·UTXO·인덱스를 디스크에 보관.
암호secp256k1 0.29(Schnorr BIP340) · BLAKE3 · SHA3 · muhash · ml-kem서명·해시·UTXO 집합 해시 + 포스트양자 KEM 실험.
P2Pcryptix-p2p-lib + flows · gRPC(tonic 0.10/prost) · UPnP(igd)노드 간 블록·거래 교환 프로토콜.
RPCgRPC(tonic) + wRPC(WebSocket · Borsh+JSON · workflow-rs 0.18)지갑·CLI·채굴기가 노드에 명령.
지갑bip32 · keys · pskt · core · WASM SDK(wasm-bindgen)키 관리·서명·브라우저/Node 클라이언트.
동시성·도구rayon · parking_lot · dashmap · simpa · rothschild병렬 검증 + 네트워크 시뮬·거래 생성기.
용어
UTXO (Unspent Transaction Output, 미사용 거래 출력)
계좌 잔액(은행식)이 아니라 '아직 안 쓴 동전 뭉치'들의 집합으로 돈을 표현하는 방식. 비트코인·Kaspa·Cryptix가 이 모델이다. 5천원짜리 동전으로 3천원을 내면, 3천원 출력 + 2천원 거스름 출력이 새로 생기고 원래 5천원은 '사용됨'으로 사라진다. 노드는 이 동전 뭉치 장부(UTXO 집합)를 RocksDB에 관리한다.
용어
Borsh (Binary Object Representation Serializer for Hashing)
데이터를 바이트로 직렬화하는 규격. JSON이 사람이 읽는 텍스트라면 Borsh는 기계용 압축 바이너리 — 같은 코드베이스끼리 빠르고 결정적으로 주고받을 때 쓴다. wRPC가 Borsh와 JSON 두 인코딩을 모두 지원한다.

4아키텍처 심화 분석

블록 하나가 들어오면 어디서 어디로 흐르는가.

먼저 독수리 시점으로 전체 그림을 보자. 중심에는 노드 데몬 cryptixd가 있고, 그 주위를 네 덩어리가 둘러싼다 — P2P(바깥 노드와 대화), 합의 파이프라인(블록을 단계별로 검증), 저장소(RocksDB), RPC(지갑·채굴기 같은 클라이언트 창구). 인덱스(UTXO·Atomic)와 멤풀·채굴이 그 사이에 끼어 돈다.

┌─────────────────────────────────────────────┐ 바깥 노드들 ◀───P2P──▶ │ cryptixd (노드 데몬) │ (peers) │ │ │ ┌──────────────┐ ┌────────────────┐ │ │ │ protocol/ │ 블록 │ consensus │ │ │ │ p2p + flows │ ───▶ │ 파이프라인 │ │ │ └──────────────┘ 거래 │ header▶body▶ │ │ │ ▲ │ virtual▶pruning│ │ │ │ └───────┬────────┘ │ │ ┌──────┴───────┐ │ 검증 결과 │ │ │ mempool + │ ▼ │ │ │ mining │ ┌────────────────┐ │ │ └──────────────┘ │ database │ │ │ │ (RocksDB stores)│ │ │ ┌──────────────┐ └───────┬────────┘ │ 지갑/CLI/채굴기 ◀─RPC─▶ │ │ rpc/grpc + │ │ 갱신 알림 │ (clients) │ │ rpc/wrpc │ ◀──notify──── ▼ │ │ └──────────────┘ ┌────────────────┐ │ │ │ indexes: │ │ │ │ utxoindex / │ │ │ │ atomicindex │ │ │ └────────────────┘ │ └─────────────────────────────────────────────┘

이제 대표 흐름 한 줄기를 입구부터 출구까지 따라가 보자 — 코드의 5%가 일의 95%를 한다. 가장 흔한 사건은 "새 블록이 도착했다"이다.

① 수신 protocol/flows ─ 다른 노드가 보낸 블록을 P2P 플로우가 받는다 ② 헤더 header_processor ─ GhostDAG 위치·난이도(DAA)·PoW(작업증명)를 검증 ★ ③ 본문 body_processor ─ 블록 안 거래들과 UTXO(동전 뭉치)를 검증 ④ 가상 virtual_processor─ '가상 블록'을 갱신해 선택부모체인(정사 순서)을 다시 계산 ★ ⑤ 인덱스 utxoindex/atomic ─ UTXO 집합과 토큰/유동성 상태를 갱신 ⑥ 알림 rpc notify ─ 지갑·구독자에게 "새 블록 들어왔다"고 통지

핵심은 ②와 ④다. ②에서 이 블록이 규칙대로 만들어졌나(작업증명을 진짜 했나, 난이도가 맞나, 그래프상 위치가 정당한가)를 따지고, ④에서 방금 추가된 블록까지 포함해 전체 순서를 다시 정한다. 엣지 케이스(가지치기 증명·재동기화·고아 처리)는 여기선 생략 — 그 5%는 pruning_proof·sync 쪽에 따로 있다.

이 프로젝트 특유의 관례 하나: 합의 모듈은 "매니저 + 스토어" 모양을 반복한다. 예를 들어 GhostDAG 로직은 데이터 저장을 직접 하지 않고, 제네릭(generic, 어떤 저장소든 끼울 수 있게 타입을 비워둔 설계) 인자로 받는다.

// consensus/src/processes/ghostdag/protocol.rs — 저장소를 타입 인자로 받는 매니저
GhostdagManager<T: GhostdagStoreReader,
                S: RelationsStoreReader,
                U: ReachabilityService,
                V: HeaderStoreReader> { genesis_hash, k, ... }
// k = '몇 단계 떨어진 블록까지 한 묶음으로 볼까'의 기준값 (레거시 기본 18, 지금은 BPS에 따라 동적)

덕분에 같은 합의 코드를 실제 RocksDB로도, 테스트용 메모리 저장소로도, 시뮬레이터(simpa)로도 똑같이 돌릴 수 있다. "로직과 저장을 분리한다"는 게 이 코드베이스를 읽는 첫 열쇠다.

설계 패턴
GhostDAG (Greedy Heaviest Observed Sub-Tree DAG)
BlockDAG에 '전체 순서'를 매기는 규칙. 각 블록에서 과거를 돌아봐, 서로 잘 연결된 정직한 블록 묶음을 파란 집합(blue set)으로, 동떨어진 의심 블록을 빨간 집합(red set)으로 나눈다. 그리고 가장 무거운(파란 게 많은) 경로의 끝을 선택부모(selected parent)로 골라 사슬처럼 이어, 결국 DAG 전체에 1·2·3… 순번을 부여한다. 'reachability(도달 가능성)'는 "A에서 B로 갈 수 있나?"를 빠르게 답하는 보조 색인이고, 'pruning(가지치기)'은 오래된 데이터를 잘라 디스크를 아끼는 장치다.
설계 패턴
파이프라인 처리 (header ▶ body ▶ virtual ▶ pruning processor)
블록 검증을 공장 컨베이어처럼 단계로 쪼갠 것. 각 프로세서가 한 가지 일만 책임지고 다음으로 넘긴다 — 공정을 나누면 단계별로 병렬화(rayon)하기도, 어디서 막혔는지 추적하기도 쉽다. consensus/src/pipeline/에 단계별 폴더가 그대로 있다.

5디렉토리 구조 해부

62개 크레이트, 어디부터 봐야 하나.

크레이트(crate, Rust의 패키지 단위)가 62개라 처음엔 압도적이지만, 역할별로 묶으면 10덩어리다. ★ 표시한 곳이 핵심이고, 나머지는 그 핵심을 받쳐주는 부품이라 보면 된다.

rusty-cryptix/ ├── cryptixd/ 노드 데몬 진입점 (전부를 조립해 실행) ★ ├── consensus/ 합의 — BlockDAG/GhostDAG/검증 파이프라인 ★★ │ ├── core/ 합의 핵심 자료형 (블록·헤더·UTXO·tx) │ ├── pow/ 작업증명 해시 (매트릭스 heavy-hash) ★ │ └── src/processes/ ghostdag · reachability · pruning · difficulty … ├── protocol/ P2P 네트워킹 ★ │ ├── p2p/ 저수준 p2p 라이브러리 (gRPC 전송) │ └── flows/ 블록·거래 교환 '흐름' + antifraud · hfa ├── crypto/ 암호 — hashes · addresses · merkle · muhash · txscript ├── indexes/ 색인 ★ │ ├── utxoindex/ UTXO 집합 색인 │ └── atomicindex/ 온체인 토큰 + AMM/DEX 엔진 (Cryptix 독자) ★ ├── mining/ 블록 템플릿 생성·채굴 연동 ├── database/ RocksDB 래퍼 (스토어 추상화) ├── rpc/ 클라이언트 창구 ★ │ ├── grpc/ gRPC 서버·클라이언트 │ └── wrpc/ WebSocket RPC (Borsh·JSON) ├── wallet/ 지갑 — bip32 · keys · pskt · core · wasm ├── wasm/ 브라우저/Node용 WASM SDK 바인딩 ├── components/ addressmanager · connectionmanager · consensusmanager ├── simpa/ 네트워크 시뮬레이터 (가상 시간 DAG 벤치마크) ├── rothschild/ 부하 테스트용 거래 생성기 ├── docs/ 하드포크 명세 (payload · antifraud · messenger) ★ └── Cargo.toml 62개 멤버를 묶는 워크스페이스 매니페스트
폴더역할
cryptixd/실행 진입점. 모든 크레이트를 조립해 "노드 한 대"로 띄운다. CLI 플래그(60여 개)도 여기서 파싱.
consensus/이 레포의 심장. BlockDAG 정렬(GhostDAG)·블록 검증 파이프라인·난이도(DAA)·가지치기. Kaspa에서 물려받은 핵심.
consensus/pow/Cryptix 독자 작업증명. 매트릭스 + 동적 SHA3로 ASIC 저항을 노린 해시. matrix.rs·xoshiro.rs가 알맹이.
protocol/flows/"블록 요청→응답" 같은 노드 간 대화 시나리오. AntiFraud 밴리스트·HFA 고속 릴레이도 여기 산다.
indexes/atomicindex/합의층 내장 토큰/DEX. 자산 생성·전송·민팅·유동성풀·정수 AMM 스왑 수학(liquidity_math.rs).
rpc/wrpc/WebSocket 기반 RPC. Borsh(기계용)·JSON(범용) 둘 다. 브라우저 지갑이 여기로 붙는다.
wallet/ · wasm/키 관리·서명(PSKT=부분서명 거래)부터, 그걸 WASM으로 빌드해 JS/TS에서 쓰는 SDK까지.
docs/코드가 아니라 '규칙'. 페이로드·AntiFraud·Messenger 하드포크의 바이너리 스키마·상태머신·테스트 벡터.

6학습 포인트 (기술별)

이 레포에서 배울 만한 것 + 어느 파일을 펴면 되는지.

포인트 1 · Rust

대형 Cargo 워크스페이스를 모듈로 쪼개는 법

62개 크레이트가 하나의 워크스페이스로 묶여, 버전·의존성을 Cargo.toml 한 곳([workspace.dependencies])에서 통제한다. "거대한 프로그램을 어떻게 책임 단위로 나누나"의 모범 사례 — consensus(로직)와 consensus/core(자료형)를 분리한 이유를 따라가 보면 의존성 방향 설계가 보인다.

포인트 2 · 분산 합의

BlockDAG / GhostDAG가 실제 코드로 어떻게 생겼나

논문으로만 보던 GhostDAG를 돌아가는 코드로 본다. consensus/src/processes/ghostdag/protocol.rs에서 파란/빨간 집합을 가르는 로직, reachability/에서 "도달 가능?"을 빠르게 답하는 트릭을 읽어보자. 곁들여 pruning/은 "오래된 과거를 어떻게 안전하게 버리나"를 보여준다.

포인트 3 · 암호공학

ASIC 저항용 커스텀 PoW 해시를 설계하는 발상

표준 해시 하나가 아니라, 여러 단계를 의도적으로 복잡하게 엮어 전용 채굴기를 만들기 어렵게 한다. consensus/pow/src/lib.rscalculate_pow는 ① cSHAKE256 프리해시 → ② 64×64 행렬 생성(XoShiRo256++ 난수) → ③ 해시 바이트가 반복 횟수를 정하는 동적 SHA3 → ④ 행렬 곱·S-box·BLAKE3 → ⑤ 최종 heavy-hash 순으로 흐른다. "왜 이렇게까지?"의 답이 주석에 친절히 적혀 있다.

포인트 4 · 네트워킹

P2P 플로우 + gRPC/wRPC 두 갈래 RPC

protocol/flows/는 "블록 요청을 받으면 무엇을 어떤 순서로 주고받나"를 시나리오(flow)로 코드화한다. 한편 rpc/grpc(서버-서버용 tonic)와 rpc/wrpc(브라우저용 WebSocket)를 비교하면, 같은 기능을 두 전송 방식으로 노출하는 어댑터 설계를 배운다.

포인트 5 · 온체인 금융

합의층에 박힌 토큰/AMM DEX 엔진

스마트컨트랙트 없이 노드가 직접 토큰과 유동성풀을 처리한다. indexes/atomicindex/liquidity_math.rs정수만 쓰는 상수곱(constant-product) 스왑을 보면, 부동소수점 없이 어떻게 정밀하고 결정적인 교환 가격을 계산하는지 배울 수 있다(블록체인은 모든 노드가 똑같은 값을 내야 해서 부동소수점이 금지된다).

포인트 6 · WASM

Rust 코드를 그대로 브라우저로 보내기

wasm/·wallet/wasm/은 같은 Rust 로직을 wasm-pack으로 빌드해 JS/TS에서 부른다. 노드용 핵심 코드와 브라우저 지갑이 하나의 소스를 공유하는 구조 — 중복 구현 없이 플랫폼을 넓히는 법.

예컨대 노드를 띄우고 합의 단계 로그만 자세히 보고 싶다면, 로그 레벨을 서브시스템별로 켤 수 있다:

# consensus 모듈만 trace로 — 블록 처리 파이프라인이 줄줄이 찍힌다
cargo run --bin cryptixd -- --loglevel info,consensus=trace,cryptix_core=trace

7시스템 요구사항

빌드하고 돌리려면 무엇이 필요한가.

순수 소프트웨어지만, RocksDB와 WASM용 secp256k1을 컴파일하느라 C/C++ 툴체인(clang/LLVM)이 필요한 게 함정이다. 빌드 전 아래를 갖춰야 한다.

항목요구사항
Rust1.81+ (rustup), edition 2021. wasm32-unknown-unknown 타깃 + wasm-pack(WASM SDK 빌드 시).
빌드 도구protobuf-compiler(gRPC용) · clang/LLVM 15+(RocksDB·secp256k1) · build-essential.
Node.jsv20+ (WASM SDK 문서/예제 빌드 시에만).
OSLinux · Windows · macOS 모두 지원(README에 OS별 빌드 가이드 제공).
디스크RocksDB가 블록·UTXO를 저장. --archival(전체 보관) 모드면 사용량 크게 증가. 일반 노드는 가지치기로 절약.
메모리--ram-scale로 내부 한도 조절. 저사양은 --no-utxoindex로 UTXO 색인을 꺼 메모리 절약 가능.
비유

풀노드를 돌린다는 건 '동네 공증 사무소'를 차리는 것과 비슷하다 — 모든 거래 장부를 직접 보관(디스크)하고, 끊임없이 들어오는 서류를 검증(CPU)하며, 다른 사무소와 계속 대조(네트워크)한다. 가벼운 모바일 지갑은 그 사무소에 "내 잔액만 알려줘"라고 묻는 손님이고.

8직접 해볼 수 있는 실습 과제

읽기만 하지 말고 손에 익히는 단계.

실습 1

테스트넷 노드 띄우기 난이도 ★☆☆ 입문

진짜 돈이 안 걸린 testnet에서 노드를 굴려본다. 빌드 도구를 갖춘 뒤 클론하고 실행하면 다른 노드와 동기화가 시작된다. 로그에 블록이 들어오는지 확인하는 게 목표.

git clone https://github.com/cryptix-network/rusty-cryptix && cd rusty-cryptix
cargo run --release --bin cryptixd -- --testnet --utxoindex
실습 2

CLI 지갑 실행해 보기 난이도 ★☆☆ 입문

터미널 지갑을 띄워 주소 생성·잔액 조회 흐름을 본다. 노드와 wRPC로 어떻게 붙는지 관찰하는 게 포인트.

cd cli
cargo run --release   # Rusty Cryptix Wallet 터미널 인터페이스
실습 3

simpa로 BlockDAG 시뮬레이션 돌리기 난이도 ★★☆ 중급

네트워크 없이 노드 안에서 가상 시간으로 DAG를 통째로 만들어 검증 속도를 잰다. 블록 생성률(BPS)·전파 지연을 바꿔가며 검증 시간이 어떻게 변하는지 실험해 보자 — BlockDAG의 트레이드오프를 몸으로 느끼는 단계.

# 1000블록, 전파지연 2초, 초당 8블록, 블록당 거래 최대 200개
cargo run --release --bin simpa -- -t=200 -d=2 -b=8 -n=1000
실습 4

합의 파이프라인 로그 추적 난이도 ★★☆ 중급

s4에서 따라간 "블록 도착 → header → body → virtual" 흐름을 실제 로그로 확인한다. consensus=trace를 켜고 블록이 단계별로 처리되는 줄을 눈으로 따라가 보자.

실습 5

매트릭스 PoW 해시 손으로 따라가기 난이도 ★★★ 고급

consensus/pow/src/{lib,matrix,xoshiro}.rs를 읽고, 입력 헤더 하나가 ① 프리해시 → ② 행렬 → ③ 동적 SHA3 → ④ 행렬곱·BLAKE3 → ⑤ heavy-hash로 어떻게 변하는지 단계마다 중간값을 출력하는 작은 테스트를 작성해 본다. "왜 이 단계가 ASIC을 방해하나"를 한 줄로 설명할 수 있으면 성공.

실습 6

정수 AMM 스왑 수학 재현 난이도 ★★★ 고급

indexes/atomicindex/liquidity_math.rs의 상수곱 스왑 공식을 읽고, 같은 입력으로 같은 출력이 나오게 별도 스크립트(파이썬·러스트 무엇이든)로 재현한다. 부동소수점 없이 정수만으로 가격을 정하는 이유와, 반올림을 어디서 어떻게 처리하는지가 핵심.

9관련 기술 심화 학습 로드맵

한 주씩 따라가는 6주 계획.

주차주제학습 자료
1주차블록체인 기초 — UTXO·PoW·노드 개념 잡고 빌드·실행README 빌드 가이드 + 실습 1·2
2주차BlockDAG·GhostDAG 이해(논문 + 코드 대조)PHANTOM/GHOSTDAG 논문 · consensus/src/processes/ghostdag/
3주차P2P 플로우 + gRPC/wRPC 통신 구조 + 시뮬레이션protocol/flows/ · rpc/ · 실습 3
4주차PoW 해시와 암호(secp256k1 Schnorr·BLAKE3) 심화consensus/pow/ · crypto/ · 실습 5
5주차Cryptix 독자 하드포크 — Atomic·AntiFraud·HFA·Messengerindexes/atomicindex/ · docs/*.md 명세
6주차WASM SDK로 브라우저 지갑/클라이언트 만들기wasm/ · wallet/wasm/ · workflow-rs 문서

10핵심 키워드 사전

본문에 나온 용어 빠른 참조.

용어의미
풀노드모든 규칙을 스스로 검증하며 네트워크에 참여하는 완전한 노드 프로그램.
BlockDAG블록을 한 줄 체인이 아니라 그래프로 품는 구조. 동시 다발 블록 허용 → 높은 처리량.
GhostDAGBlockDAG에 전체 순서를 매기는 합의 규칙. 파란/빨간 집합 + 선택부모로 정렬.
UTXO'안 쓴 동전 뭉치'로 잔액을 표현하는 모델. 노드가 그 집합을 RocksDB에 관리.
DAADifficulty Adjustment Algorithm. 채굴 난이도를 자동 조정해 블록 간격을 일정하게.
PoWProof of Work(작업증명). 해시를 무수히 시도해 조건을 맞춘 블록만 인정 = 채굴.
heavy-hash행렬 곱 등 무거운 연산을 끼워 ASIC 제작을 방해하는 PoW 해시 계열(Kaspa 유래).
pruning가지치기. 오래되어 더 필요 없는 과거 데이터를 안전하게 잘라 디스크 절약.
selected parent선택부모. 각 블록이 고르는 '가장 무거운' 부모 — 이걸 이어 정사 체인을 만든다.
mempool아직 블록에 안 담긴 대기 거래들의 임시 보관소(메모리 풀).
Schnorr(BIP340)secp256k1 곡선 위 서명 방식. 비트코인 Taproot도 채택. AntiFraud 밴리스트 서명에 사용.
Borsh / wRPCBorsh=결정적 바이너리 직렬화. wRPC=WebSocket 기반 RPC(Borsh·JSON 둘 다 지원).
AtomicCryptix 독자 — 합의층에 박힌 토큰 + AMM/DEX 엔진(atomicindex). 정수 상수곱 스왑.
AntiFraud서명된 P2P 밴리스트. BLAKE3 루트해시 + Schnorr 서명. '연결 차단'만 통제(블록 검열 아님).
HFA / microblockHF-A 고속 레일. 저지연 마이크로블록·빠른 거래 릴레이 오버레이(기본 50ms 간격).
simpa / rothschildsimpa=가상 시간 DAG 네트워크 시뮬레이터. rothschild=부하 테스트용 거래 생성기.
muhash / ml-kemmuhash=UTXO 집합 전체를 한 값으로 요약하는 누적 해시. ml-kem=포스트양자 키교환(실험적 의존성).

11참고 링크