Crypto Newbie

Crypto Cho Người Mới / Mô phỏng / Merkle Airdrop

Simulator Merkle Airdrop — Phân Phối Token Tiết Kiệm Gas

Mọi airdrop crypto lớn — Uniswap (UNI), Optimism (OP), Arbitrum (ARB), Ethereum Name Service (ENS) — đều dùng Merkle tree. Project commit cho list cặp (address, amount) bằng cách publish 32-byte Merkle root on-chain. Mỗi user prove inclusion với proof nhỏ (log₂(N) hash), và contract verify. Simulator này build Merkle tree thật từ list claim, generate proof, và hiện gas savings vs cách naive.

Danh sách claim airdrop

Merkle root (on-chain)

2f47b4a6

Hash đơn này commit toàn list. Contract chỉ lưu cái này — không full list. Mỗi user reveal claim với proof khi claim.

Layer tree (bottom-up)

Layer 3 (root)

2f47b4a6

Layer 2

ad1d219fd0b64645

Layer 1

ea190bd2ced26fd4e4b0f3023d8322e3

Layer 0 (Leaf (hash mỗi claim))

bb6f74849337c96d95d8a814a741c7200ed198ba212415b89ebd97d165ff97e7

Proof mỗi user

Mỗi user nhận set nhỏ sibling hash — log₂(N) hash mỗi proof. Contract dùng chúng walk từ leaf user lên root đã lưu.

Proof chosibling hash
0xAlice...
9337c96dced26fd4d0b64645
0xBob...
bb6f7484ced26fd4d0b64645
0xCarol...
a741c720ea190bd2d0b64645
0xDave...
95d8a814ea190bd2d0b64645
0xEve...
212415b83d8322e3ad1d219f
0xFrank...
0ed198ba3d8322e3ad1d219f
0xGrace...
65ff97e7e4b0f302ad1d219f
0xHenry...
9ebd97d1e4b0f302ad1d219f

Verify 1 claim (cái contract làm)

✓ Proof verify khớp root — claim approved, token sent.

Tamper test — đổi 1 claim amount

So sánh chi phí

Hash operation mỗi claim

3

Gas cost ước tính mỗi claim

$3.25

Cost ước tính nếu lưu mọi claim on-chain

$8.00

Tiết kiệm: $-18.0000

Sao không chỉ lưu list claim on-chain?

Airdrop 10,000 address, lưu naive, yêu cầu 10,000 SSTOREs (~20k gas mỗi) = 200M gas. Ở rate Ethereum điển hình là $10,000+ chỉ lưu list. Cộng code contract để lookup entry. Với Merkle tree, project lưu 1 hash 32-byte (~$5 deploy) và 1 hàm verification nhỏ. User trả gas claim riêng (~$3 mỗi), nhưng đa số không bao giờ claim — cost project giữ thấp cả ở quy mô.

Merkle proof hoạt động thế nào

Merkle tree build bằng cách hash cặp leaf để tạo parent, rồi cặp parent để tạo grandparent, đến tận root đơn. Để prove leaf bạn ở trong tree, bạn cung cấp hash SIBLING ở mỗi level — log₂(N) hash tổng. Contract walk lên tree từ leaf bạn, combine với mỗi sibling, và check hash cuối bằng root đã lưu. Simulator trên hiện visually: mỗi user có proof chỉ 3 hash cho 8-claim drop.

Tamper resistance — thuộc tính bảo mật

Nếu đổi cả 1 bit của 1 claim, hash leaf claim đó đổi, đổi parent, đổi grandparent, đến tận root. Để 'tamper undetectably', bạn cần find hash collision — không khả thi computationally với SHA-256 (hoặc FNV-1a trong version toy của ta, ít bảo mật hơn nhưng nguyên lý giống). Test tamper simulator demonstrate: đổi 1 claim, proof cho claim đó ngay fail so root không đổi.

Sao frontend airdrop quan trọng

Merkle root chỉ biết hash. Để CLAIM, user cần proof — thường là JSON array sibling hash cho address. Frontend project host lookup này: nhập wallet address, nhận lại (amount, proof) cho claim. Nếu frontend down, kỹ thuật vẫn claim được — nhưng bạn cần rebuild proof từ list claim gốc. Đây là sao vài skeptic giữ copy local mọi data claim của drop: phòng frontend chính thức biến mất nhiều năm sau.

Câu hỏi thường gặp

+Gì ngăn ai đó forge claim?

Hai thứ: (1) merkle proof phải verify khớp root đã lưu, và forge proof valid cho address không trong list gốc yêu cầu find hash collision — không khả thi computationally. (2) Đa số airdrop cũng verify msg.sender == claimedAddress, nên kể cả với proof valid, bạn chỉ claim CHO address đã list gốc. Vài project cho phép delegation (claim hộ) qua signed message.

+Nếu user mất proof thì sao?

Họ có thể regenerate từ list claim gốc miễn list đó được preserve (thường trên IPFS, GitHub, hoặc website project). Chain chỉ lưu root, không list. Miễn 1 copy list tồn tại đâu đó, ai cũng có thể recompute proof user nào. Đa số project pin list claim vào nhiều IPFS gateway cho durability dài hạn.

+Project có thể đổi airdrop sau launch không?

Chỉ nếu contract cho phép update merkle root. Đa số airdrop production làm root immutable tại deployment — đã set thì không đổi được. Nghĩa là project phải finalise list claim TRƯỚC deployment; address bị miss không thể thêm sau không có airdrop top-up riêng với root riêng.

+Sao gas cost simulator nhỏ hơn nhiều Ethereum thật?

Số toy. Gas cost Ethereum thật cho keccak256 là ~30-50 gas mỗi byte hash, cộng storage và control flow. Giao dịch claim thật chạy $2-15 gas tuỳ congestion mạng. $0.005/claim của simulator là illustrative — HÌNH DẠNG của savings (linear trong claim cho lưu naive, logarithmic cho Merkle) là điều matter.

+Merkle airdrop vs airdrop ERC-20 transfer thường khác gì?

Airdrop transfer thường: project gửi token cho mọi address trong list, trả gas mỗi transfer (vậy cho 10k address, project trả 10k × gas transfer). Merkle airdrop: project deploy contract với root, USER trả gas claim riêng. Đánh đổi: airdrop transfer là 'push' (recipient không phải làm gì) nhưng đắt cho project. Merkle airdrop là 'pull' (recipient phải claim) nhưng rẻ cho project. Airdrop hiện đại gần như đều merkle-based.