Bỏ qua navigation
Ethereum Accounts · EOA · Account Abstraction · ERC-4337
Ethereum có hai loại account, và hầu hết người dùng chỉ biết một. EOA là loại quen thuộc — MetaMask, private key, ký transaction bằng ECDSA. Smart Contract Wallet là tương lai — code chạy on-chain, multisig, social recovery, gas sponsorship, và mọi logic tùy chỉnh bạn có thể viết.

EOA vs Smart Contract Wallet
Hai Loại Account Trên Ethereum

Phân tích kỹ thuật từ cấu trúc account, transaction flow, tính năng AA, EIP-7702 đến hướng tương lai — hiểu rõ để chọn đúng loại wallet cho từng use case.

~12 phút đọc
8 sections
Cập nhật 2026
⚡ Tóm tắt — Đọc trong 60 giây

EOA và Smart Contract Wallet: Hai paradigm khác nhau hoàn toàn

EOA (Externally Owned Account) được kiểm soát bởi private key — ai có key là có tất cả. Transaction được ký bằng ECDSA, validate bởi protocol level. Đơn giản, phổ biến (MetaMask), nhưng limited: không thể tùy chỉnh validation logic, không có tính năng recovery, mất key = mất hết.

Smart Contract Wallet là smart contract deploy on-chain với bất kỳ logic nào bạn muốn: multisig, social recovery, session keys, spending limits, gas sponsorship. Tính năng phong phú hơn nhiều, nhưng tốn gas deployment, cần trust contract code, và phức tạp hơn.

EOA

Private key
Đơn giản, phổ biến, limited

SC Wallet

Smart contract
Phong phú, phức tạp, gas cao

ERC-4337

Account Abstraction
SC Wallet dùng UserOp

EIP-7702

EOA + contract
Pectra: EOA có thêm code

I

Ethereum Account Model — State, Nonce, Balance, Code

Mọi account trên Ethereum (và EVM-compatible chains) có 4 fields trong state: nonce (số transaction đã thực hiện hoặc contract đã deploy), balance (ETH balance tính bằng wei), codeHash (hash của bytecode), và storageRoot (root của storage trie).

Sự khác biệt duy nhất giữa EOA và Contract Account: EOA có codeHash = keccak256("") (empty code), trong khi Contract Account có bytecode thực sự tại địa chỉ đó. Không có trường nào khác phân biệt hai loại — chỉ là có code hay không.

II

EOA — Externally Owned Account

EOA là account được kiểm soát bởi private key nằm ngoài blockchain (vì vậy "externally owned"). Địa chỉ Ethereum được derive từ public key: address = last20bytes(keccak256(publicKey)). Mối quan hệ: 1 private key ↔ 1 public key ↔ 1 địa chỉ duy nhất, và không thể thay đổi.

Cách EOA Gửi Transaction

  1. Build transaction object: {to, value, data, gasLimit, maxFeePerGas, nonce, chainId}
  2. Sign bằng private key: ECDSA signature (v, r, s)
  3. Broadcast transaction lên mempool
  4. Validator verify signature, execute, update state

Giới hạn của EOA: Validation logic được hardcode trong protocol — luôn là ECDSA với key tương ứng. Không thể thêm multisig natively, không thể recovery, không thể thay đổi key mà giữ nguyên address.

III

Smart Contract Wallet — Logic Tùy Chỉnh On-Chain

Smart Contract Wallet là một smart contract (code chạy on-chain) đóng vai trò là "ví". Nó có địa chỉ Ethereum, có thể nhận và gửi ETH/tokens, nhưng thay vì bị kiểm soát bởi private key, nó được kiểm soát bởi code logic do bạn định nghĩa.

Tính Năng Có Thể Implement

  • Multisig: Yêu cầu M/N approvals — Gnosis Safe
  • Social Recovery: Recover qua guardians thay vì seed phrase
  • Session Keys: Delegate limited signing permissions cho dApp
  • Gas Abstraction: Trả gas bằng ERC-20, hoặc sponsor cho user
  • Spending Limits: Không thể transfer quá X ETH/ngày
  • Batched Transactions: Nhiều actions trong 1 transaction
  • Custom Signature Schemes: Passkey, WebAuthn, zkProof
💡
Khác biệt quan trọng
Smart Contract Wallet vẫn cần 1 EOA để trigger transaction đầu tiên — vì chỉ EOA mới có thể là "sender" của transaction theo protocol. Đây là lý do tại sao ERC-4337 tạo ra EntryPoint contract: nó là EOA-level sender thay mặt cho SC Wallet.
IV

So Sánh Toàn Diện — EOA vs Smart Contract Wallet

Tiêu chíEOASmart Contract Wallet
Kiểm soátPrivate key (ECDSA)Contract code (tùy chỉnh)
Deployment gasKhông — freeCần — deploy contract (~100k gas)
Transaction gas21,000 gas baseline21,000 + contract overhead
MultisigKhông
Social RecoveryKhông
Gas SponsorshipKhôngQua Paymaster
Batch TransactionsKhông
Thay đổi ownerKhông thểCó thể
Address thay đổi?Không — address từ keyKhông — cố định khi deploy
Smart contract bug riskKhông cóCó — cần audit
Ví phổ biếnMetaMask, Rainbow, TrustArgent, Safe, Coinbase SW
V

Account Abstraction (ERC-4337) — SC Wallet Không Cần EOA Sponsor

Vấn đề cốt lõi: Smart Contract Wallet không thể tự gửi transaction vì chỉ EOA mới là "sender". ERC-4337 giải quyết bằng cách tạo một execution layer riêng: UserOperation thay cho Transaction, Bundler thay cho Validator (ở tầng application), và EntryPoint contract thay cho protocol-level sender check.

ERC-4337 UserOperation Flow
SC Wallet user ──▶ UserOperation ──▶ Alt Mempool

Bundler ──────────────────────────────┘
│ picks UserOps, bundles into 1 Transaction

EntryPoint.handleOps() ──▶ calls Paymaster (optional)
──▶ calls SC Wallet.validateUserOp()
──▶ executes calldata

Xem chi tiết tại ERC-4337 Là Gì, Paymaster Là Gì, và Bundler Là Gì.

VI

EIP-7702 (Pectra) — EOA Có Thể Dùng Contract Code

EIP-7702, được include trong Ethereum Pectra upgrade (2025), là bước tiến lớn nhất: cho phép EOA tạm thời set code cho chính nó. Một EOA có thể delegate sang contract code trong một transaction — cho phép dùng tính năng Smart Contract Wallet mà không cần migrate funds.

Tại Sao Quan Trọng

  • User dùng MetaMask có thể batch transaction, sponsor gas, dùng passkey — không cần move sang Argent hay Safe
  • Không cần deploy separate contract — EOA "borrow" code từ implementation contract
  • Backward compatible: EOA vẫn là EOA, chỉ có thêm khả năng
  • Đây là bước đi về phía "EOA và SC Wallet hội tụ"
VII

Khi Nào Dùng Loại Nào — Decision Framework

Nên dùng EOA khi:

  • Cá nhân, tự custody, chỉ cần 1 key
  • Dùng hardware wallet (Ledger, Trezor) — bảo mật tốt hơn SC Wallet với setup đơn giản
  • Gas optimization là ưu tiên (EOA rẻ hơn ~40k gas/tx)
  • Cross-chain cần address nhất quán (dùng cùng private key)
  • Beginners — ít attack surface hơn

Nên dùng Smart Contract Wallet khi:

  • Tổ chức, DAO, treasury cần multiple approvers
  • Muốn social recovery thay vì seed phrase
  • dApp cần gas sponsorship cho user (onboarding)
  • High-value holdings cần spending limits và time-lock
  • DeFi automation cần session keys
VIII

Wallet Landscape 2026 — Hướng Tương Lai

Năm 2026, ranh giới EOA/SC Wallet đang mờ dần. EIP-7702 cho phép EOA dùng tính năng SC Wallet. MetaMask đang tích hợp ERC-4337 natively. Coinbase Smart Wallet, Argent X (StarkNet), và zkSync native AA đang push adoption.

Xu hướng rõ ràng: Onboarding users mới sẽ ngày càng dùng SC Wallet với passkey thay vì seed phrase — UX đơn giản hơn nhiều. Power users vẫn dùng hardware wallet + EOA cho cold storage. Institutional thì Safe + MPC là tiêu chuẩn.

🔮
EIP-3074 vs EIP-7702
EIP-3074 (đã bị drop khỏi Pectra) cho phép EOA delegate toàn bộ quyền cho contract — nguy hiểm hơn. EIP-7702 an toàn hơn: chỉ set code tạm thời trong scope transaction đó. Community chọn 7702 sau debate dài về security implications.
?

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

MetaMask là EOA hay Smart Contract Wallet?+
MetaMask là EOA wallet — quản lý private key và ký transaction bằng ECDSA. Smart Contract Wallet là loại khác như Argent, Safe, Coinbase Smart Wallet — nơi account là smart contract với logic tùy chỉnh. MetaMask có thể interact với Safe nhưng bản thân account vẫn là EOA.
Smart Contract Wallet có an toàn hơn EOA không?+
Phụ thuộc threat model. SC Wallet có lợi thế: multisig, social recovery, session keys, spending limits. Nhưng có rủi ro mới: smart contract bug, upgrade mechanism có thể bị exploit, gas cao hơn. EOA đơn giản hơn, ít attack surface, nhưng mất key là mất tất cả — không có recovery.
ERC-4337 thay thế EOA không?+
Không — ERC-4337 không thay thế EOA, nó thêm alternative execution path. EOA vẫn hoạt động bình thường. ERC-4337 tạo UserOperation mempool song song. EIP-7702 (Pectra) và EIP-3074 hướng tới cho EOA có AA capabilities mà không cần migrate.
Chuyển từ EOA sang Smart Contract Wallet như thế nào?+
Không có cách "convert" — chúng là hai loại account hoàn toàn khác. Để dùng SC Wallet: 1) Deploy contract mới (hoặc counterfactual via CREATE2), 2) Chuyển assets từ EOA sang contract address, 3) Dùng SC Wallet từ đó. EOA cũ có thể là signer/owner. EIP-7702 (Pectra) sẽ cho phép EOA tạm thời dùng contract code — quan trọng nhưng không phải convert.
TWT.VN — Wallet Infrastructure Research

Toàn Bộ Cluster Wallet Infrastructure

15 bài phân tích kỹ thuật — từ key management đến Account Abstraction