OKB.VN
Fundamentals · Bitcoin · Ethereum

Account Model vs UTXO

Hai mô hình lưu trữ trạng thái cốt lõi — Bitcoin chọn UTXO, Ethereum chọn Account
📖 Khoảng 12 phút đọc 🔄 Cập nhật 2026 🏷️ Fundamentals

Tóm tắt nhanh

UTXO (Unspent Transaction Output) — mô hình Bitcoin — lưu trạng thái như "tiền mặt vật lý": mỗi giao dịch tiêu UTXO cũ và tạo UTXO mới. Account Model — mô hình Ethereum — lưu trạng thái như "tài khoản ngân hàng": mỗi địa chỉ có balance cập nhật trực tiếp. UTXO tốt hơn cho privacy và parallel validation; Account tốt hơn cho smart contract và composability.

01 Vấn Đề Lưu Trữ Trạng Thái

Một câu hỏi căn bản của mọi blockchain: làm sao biết ai đang sở hữu bao nhiêu coin?

Trong hệ thống tài chính truyền thống, ngân hàng lưu số dư của bạn trong database trung tâm — đơn giản và trực tiếp. Blockchain phân tán không có database trung tâm, nên mỗi node phải tự tính toán và đồng bộ trạng thái từ lịch sử giao dịch.

Có hai cách tiếp cận chính đã được thiết kế để giải quyết bài toán này:

  • UTXO Model: Bitcoin (2009), Litecoin, Bitcoin Cash, Cardano, Zcash
  • Account Model: Ethereum (2015), Solana, BNB Chain, Avalanche, hầu hết EVM chains

Lựa chọn mô hình lưu trữ ảnh hưởng sâu sắc đến kiến trúc blockchain — từ cách xử lý transaction, privacy, khả năng lập trình, đến hiệu suất và bảo mật. Không có mô hình nào hoàn hảo tuyệt đối; mỗi cái có đánh đổi riêng.

02 Mô Hình UTXO Là Gì?

UTXO viết tắt của Unspent Transaction Output — đầu ra giao dịch chưa được tiêu. Đây là mô hình Satoshi Nakamoto thiết kế cho Bitcoin, lấy cảm hứng từ cách tiền mặt vật lý hoạt động.

Analogie: Tiền mặt vật lý

Hãy tưởng tượng bạn có 3 tờ tiền: 50k, 20k, và 10k. Tổng cộng 80k. Khi bạn mua hàng 30k:

  • Bạn đưa tờ 50k (tiêu UTXO cũ)
  • Nhận lại 20k tiền thừa (tạo UTXO mới cho bạn)
  • Người bán nhận 30k (tạo UTXO mới cho họ)

UTXO blockchain hoạt động hệt như vậy. Mỗi "tờ tiền" là một UTXO. Số dư của bạn = tổng giá trị các UTXO thuộc về địa chỉ của bạn.

Cơ chế hoạt động

Input: UTXO_A (0.5 BTC) + UTXO_B (0.3 BTC) Output: UTXO_C (0.7 BTC → người nhận) + UTXO_D (0.09 BTC → tiền thừa về mình) Phí miner = Input - Output = 0.01 BTC

Mỗi UTXO có hai thuộc tính: giá trị (số coin) và điều kiện tiêu (thường là chữ ký từ private key chủ sở hữu). Một UTXO chỉ có thể tiêu một lần — sau khi dùng làm input, nó biến mất vĩnh viễn.

UTXO Set: Tập hợp tất cả UTXO chưa được tiêu trên toàn mạng tại một thời điểm. Đây là "trạng thái hiện tại" của Bitcoin. Mỗi full node phải lưu toàn bộ UTXO Set (~5-6GB cho Bitcoin 2025) để validate transaction.

Quy trình validate transaction UTXO

  1. Kiểm tra input UTXO có tồn tại trong UTXO Set không
  2. Kiểm tra chữ ký hợp lệ (người gửi đúng là chủ sở hữu)
  3. Kiểm tra tổng input ≥ tổng output (không tạo coin từ không khí)
  4. Xóa UTXO đầu vào, thêm UTXO đầu ra vào UTXO Set

03 Mô Hình Account Là Gì?

Account Model lưu trữ trạng thái như một sổ cái tài khoản — mỗi địa chỉ có balance được cập nhật trực tiếp. Đây là cách ngân hàng hoạt động, và cách Ethereum triển khai từ 2015.

Hai loại account trong Ethereum

  • EOA (Externally Owned Account): Tài khoản người dùng, kiểm soát bằng private key. Có balance ETH, có nonce. Không có code.
  • Contract Account: Smart contract, không có private key. Có balance, có nonce, có codestorage. Chỉ được kích hoạt khi nhận transaction/call.

Cơ chế hoạt động

Khi bạn gửi 1 ETH từ địa chỉ A đến B:

Trước: A.balance = 5 ETH | B.balance = 2 ETH Sau: A.balance = 4 ETH | B.balance = 3 ETH (+ 0.001 ETH phí cho validator)

Không có "tiền thừa" — balance thay đổi trực tiếp. Đơn giản, trực quan.

World State trong Ethereum

Ethereum lưu toàn bộ trạng thái trong World State — một cấu trúc dữ liệu Merkle Patricia Trie chứa tất cả account và contract storage. Mỗi block thay đổi World State, và State Root (hash của toàn bộ state) được ghi vào block header.

Điều này cho phép bất kỳ ai chứng minh trạng thái của một account tại một block cụ thể mà không cần tải toàn bộ blockchain — thông qua Merkle Proof.

04 So Sánh Trực Tiếp UTXO vs Account

Tiêu chíUTXO (Bitcoin)Account (Ethereum)
Đơn vị lưu trữUTXO (coin chưa tiêu)Balance (số dư tài khoản)
Trạng tháiUTXO Set (stateless per account)World State (stateful)
Parallel validation✅ Tốt — UTXO độc lập nhau⚠️ Khó hơn — state conflicts
Smart contract❌ Phức tạp, hạn chế✅ Tự nhiên, mạnh mẽ
Privacy✅ Tốt hơn — UTXO tách biệt⚠️ Kém hơn — balance lộ rõ
Composability❌ Khó compose transaction✅ Contract gọi contract dễ dàng
Overhead⚠️ Tiền thừa phức tạp✅ Đơn giản, ít byte hơn
Double-spend preventionTự nhiên (UTXO dùng xong biến mất)Nonce (counter tăng dần)
Light client✅ SPV đơn giản⚠️ Phức tạp hơn
Ví dụ blockchainBitcoin, Litecoin, Cardano, ZcashEthereum, Solana, BNB, Avalanche
Không có winner tuyệt đối. UTXO tốt hơn cho peer-to-peer payment và privacy. Account Model tốt hơn cho programmable blockchain và DeFi. Cardano đang thử nghiệm eUTXO — mở rộng UTXO để hỗ trợ smart contract tốt hơn.

05 UTXO và Privacy

UTXO có lợi thế privacy tự nhiên so với Account Model, dù không phải hoàn toàn ẩn danh.

Tại sao UTXO tốt hơn cho privacy?

Trong Bitcoin, không có khái niệm "số dư tài khoản" theo nghĩa truyền thống. Để biết bạn có bao nhiêu BTC, cần tìm tất cả UTXO liên kết với địa chỉ của bạn và cộng lại. Vì bạn có thể dùng nhiều địa chỉ khác nhau cho mỗi giao dịch, việc theo dõi trở nên khó hơn.

Hơn nữa, coin control — khả năng chọn UTXO nào để tiêu — cho phép người dùng tránh liên kết các coin từ nguồn khác nhau. Các wallet Bitcoin tốt hỗ trợ coin control và tự động tạo địa chỉ thừa mới cho mỗi transaction.

Hạn chế: Chain analysis vẫn hoạt động

Dù UTXO tốt hơn, blockchain vẫn hoàn toàn public. Các công ty như Chainalysis, Elliptic sử dụng heuristics để cluster UTXO:

  • Common input ownership: Nếu transaction A dùng UTXO_1 và UTXO_2 làm input, cả hai nhiều khả năng thuộc cùng ví.
  • Change address: Output có số lẻ thường là tiền thừa về lại ví gửi.
  • Exchange identification: Địa chỉ exchange nổi tiếng dễ identify.

Để có privacy thực sự với UTXO, cần các kỹ thuật nâng cao như CoinJoin (trộn UTXO của nhiều người), Confidential Transactions, hoặc blockchain riêng như Zcash (dùng ZK Proof để ẩn amount).

Account Model và privacy

Ethereum address và balance hoàn toàn public. Mọi người đều có thể tra cứu số dư của bất kỳ địa chỉ nào trên Etherscan. Privacy trên Ethereum đòi hỏi giải pháp riêng như Tornado Cash hoặc ZK-based privacy protocols.

06 Account Model và Smart Contract

Lý do Ethereum chọn Account Model thay vì UTXO chủ yếu là vì smart contract.

Tại sao UTXO khó hỗ trợ smart contract?

Smart contract cần lưu trữ trạng thái — ví dụ, contract DEX cần biết reserve của token A và B để tính price. Trong mô hình UTXO, không có "contract storage" — mỗi UTXO chỉ là coin với điều kiện tiêu.

Bitcoin Script — ngôn ngữ lập trình của Bitcoin — cố tình không Turing-complete để tránh phức tạp và đảm bảo predictable execution. Điều này giới hạn Bitcoin vào payment và một số use case đơn giản.

Account Model giải quyết như thế nào?

Ethereum Contract Account có storage — một key-value store riêng của mỗi contract. Contract có thể đọc/ghi storage này khi thực thi. Ví dụ:

ERC-20 Token Contract Storage: balances[0xAlice] = 1000 balances[0xBob] = 500 totalSupply = 1500

Đây là lý do smart contract phức tạp như AMM, lending protocol, governance — đều chạy tốt trên Ethereum nhưng rất khó implement trên Bitcoin.

Composability

Account Model cho phép contract gọi contract — gọi là composability. Trong một transaction, bạn có thể: swap ETH → USDC (trên Uniswap) → deposit vào Aave → nhận aUSDC — tất cả trong một atomic transaction. UTXO không có cơ chế tương đương vì mỗi UTXO là độc lập, không có shared state để compose.

Cardano đang phát triển eUTXO (Extended UTXO) để thêm smart contract capability vào UTXO model — nhưng composability vẫn phức tạp hơn Account Model đáng kể.

07 Double-Spend và Nonce

Ngăn chặn double-spend — gửi cùng một coin hai lần — là thách thức cốt lõi của mọi hệ thống thanh toán số. Hai mô hình giải quyết bài toán này theo cách khác nhau.

UTXO: Tự nhiên chống double-spend

Trong UTXO, mỗi coin chỉ tồn tại một lần trong UTXO Set. Khi bạn tiêu một UTXO, nó bị xóa khỏi set ngay lập tức (sau khi transaction được confirm). Nếu bạn cố broadcast hai transaction cùng tiêu một UTXO, chỉ transaction nào được mine trước được accept — transaction kia tự động invalid vì UTXO đã biến mất.

Đây là lý do Bitcoin không cần thêm cơ chế phức tạp để ngăn double-spend — UTXO model tự nhiên đảm bảo điều này.

Account Model: Nonce làm khóa

Account Model phải dùng nonce (number used once) — một counter tăng dần theo mỗi transaction gửi đi từ một address. Mỗi transaction phải chứa nonce đúng thứ tự.

Alice gửi tx với nonce=5 Nếu ai đó cố broadcast lại tx nonce=5 → BỊ REJECT (nonce đã dùng) Alice muốn gửi tx tiếp theo phải dùng nonce=6

Nonce cũng đảm bảo thứ tự transaction — bạn không thể có nonce=7 được mine trước nonce=6. Nếu nonce=6 bị stuck (gas quá thấp), tất cả transaction sau (nonce 7, 8, 9...) đều bị chặn.

Nonce gap: Nếu transaction nonce=5 fail và bạn gửi nonce=7, transaction nonce=7 sẽ mãi pending cho đến khi nonce=5 và nonce=6 được điền vào. Đây là điểm đau phổ biến của người dùng Ethereum.

08 Các Biến Thể và Xu Hướng Mới

eUTXO — Extended UTXO (Cardano)

Cardano mở rộng UTXO bằng cách thêm datum (dữ liệu đính kèm UTXO) và validator script (logic phức tạp hơn Bitcoin Script). eUTXO cho phép smart contract trên nền UTXO — nhưng mỗi contract execution vẫn bị giới hạn trong một transaction, khó compose hơn Ethereum.

Bitcoin UTXO và Layer 2

Bitcoin đang phát triển các Layer 2 như Lightning Network (state channel) và các giải pháp khác để thêm programmability. Tuy nhiên, hạn chế của Bitcoin Script vẫn là rào cản lớn cho DeFi phức tạp.

Account Abstraction — Tương lai của Account Model

Ethereum đang phát triển Account Abstraction (ERC-4337) để xóa ranh giới giữa EOA và Contract Account. Trong tương lai, mọi account có thể có logic tùy chỉnh — multi-sig, social recovery, gas sponsorship — mà không cần private key truyền thống.

Parallel EVM và UTXO-inspired design

Solana và một số blockchain mới dùng access list trong transaction — khai báo trước account nào sẽ bị đọc/ghi. Kỹ thuật này lấy cảm hứng từ UTXO, giúp validator thực thi transaction song song (parallel) mà không cần lo state conflict.

Ethereum cũng đang nghiên cứu EIP-648 và các phương án để hỗ trợ parallel execution — thách thức lớn nhất là Account Model có shared state khiến dependency giữa transaction khó predict.

09 FAQ — Câu Hỏi Thường Gặp

UTXO (Unspent Transaction Output) là đầu ra chưa được tiêu của giao dịch trước. Bitcoin dùng UTXO vì Satoshi thiết kế như "tiền mặt kỹ thuật số" — mỗi coin là một đơn vị độc lập, chống double-spend tự nhiên, và không cần shared global state. Phù hợp với peer-to-peer cash system thuần túy.

Vitalik Buterin thiết kế Ethereum để là "programmable blockchain". Account Model đơn giản hơn cho smart contract vì contract có storage riêng và có thể gọi lẫn nhau. UTXO model khiến việc lập trình logic phức tạp (như AMM, lending, governance) rất khó và không tự nhiên.

Cả hai đều an toàn nếu implement đúng. UTXO tự nhiên chống double-spend; Account Model dùng nonce. Điểm khác biệt: UTXO tốt hơn cho privacy vì không lộ balance trực tiếp. Account Model dễ bị frontrunning hơn vì transaction đang pending lộ ý định của người gửi.

eUTXO cải thiện đáng kể — thêm datum và validator script cho phép smart contract trên UTXO. Nhưng composability vẫn kém hơn Ethereum: mỗi contract execution bị giới hạn trong một transaction, khó atomic compose nhiều protocol trong một call. DeFi trên Cardano vì vậy vẫn còn hạn chế hơn Ethereum ecosystem.

📚 Khám phá thêm theo chủ đề
113 bài phân tích kỹ thuật — Blockchain Infrastructure từ nền tảng đến nâng cao
Scaling & Rollup — Mở rộng13 bài
ScalingLayer 2 BlockchainRollup, State Channel, Plasma, Validium — cơ chế và bảo mật của từng giải pháp L2. ScalingRollup là gì?Batch transaction off-chain, đăng data lên L1, Optimistic vs ZK và tradeoff kỹ thuật. ScalingOptimistic vs ZK RollupFraud proof vs Validity proof — finality, chi phí, EVM compatibility và use case. ScalingFraud Proof là gì?Challenge period và cơ chế bảo mật của Optimistic Rollup không verify mọi tx. ScalingSequencer là gì?Sắp xếp transaction trong Rollup, rủi ro tập trung và decentralized sequencer. ScalingSharding là gì?Database sharding, Ethereum sharding, Danksharding và vai trò trong mở rộng blockchain. ScalingState Channel là gì?Kênh thanh toán off-chain, Lightning Network và giới hạn của State Channel. ScalingZK Rollup là gì?Validity Proof, zkEVM và so sánh chi tiết với Optimistic Rollup. ScalingBased Rollup là gì?L1-sequenced rollup dùng Ethereum validator làm sequencer — liveness và phi tập trung. ScalingPreconfirmation là gì?Xác nhận giao dịch tức thì trước finality — validator preconf và based preconfirmation. ScalingPlasma là gì?Child chain, Data Availability Problem và lý do Plasma thất bại nhường chỗ Rollup. ScalingValidium là gì?ZK Proof + Off-chain Data, dYdX và rủi ro data availability trong Validium. EthereumAccount AbstractionERC-4337 loại bỏ giới hạn EOA, UserOperation, bundler, paymaster và UX tương lai.
📋 Xem tất cả bài viết →