Đường dẫn dẫn xuất BIP-44: Ví tạo địa chỉ như thế nào
Khi bạn thiết lập một ví tiền mã hóa và ví tạo seed phrase, seed duy nhất đó cần tạo ra hàng nghìn địa chỉ trên hàng chục blockchain khác nhau — mỗi địa chỉ có private key, public key và định dạng địa chỉ riêng. BIP-44 định nghĩa cấu trúc tổ chức giúp điều này khả thi: một cây khóa phân cấp được dẫn xuất từ một gốc duy nhất, với ký hiệu đường dẫn chuẩn hóa để đảm bảo các ví có thể tương thích lẫn nhau.
Hiểu đường dẫn dẫn xuất là điều thiết yếu với bất kỳ ai cần khôi phục tiền trong ví khác, quản lý danh mục đa coin, hoặc xử lý lỗi số dư "biến mất" sau khi khôi phục seed phrase.
Phân cấp dẫn xuất khóa
BIP-32: Nền tảng
BIP-44 xây dựng trên BIP-32 (Hierarchical Deterministic Wallets), định nghĩa phương pháp dẫn xuất một cây cặp khóa không giới hạn từ một master key duy nhất. BIP-32 giới thiệu hai khái niệm cốt lõi:
Dẫn xuất khóa con — Từ bất kỳ extended key nào (private key hoặc public key kết hợp chain code), bạn có thể dẫn xuất các khóa con tại nhiều chỉ số khác nhau. Mỗi khóa con tiếp tục dẫn xuất khóa con của riêng nó, tạo thành một cây.
Dẫn xuất hardened và normal — Dẫn xuất normal cho phép dẫn xuất public key con từ public key cha (hữu ích cho ví chỉ theo dõi). Dẫn xuất hardened yêu cầu private key cha và cung cấp mức cô lập bảo mật mạnh hơn giữa các nhánh. Chỉ số hardened theo quy ước được viết kèm dấu nháy đơn (ví dụ: 44').
BIP-43: Trường Purpose
BIP-43 thiết lập quy ước dùng cấp đầu tiên của cây dẫn xuất để chỉ ra "purpose" — về cơ bản là chuẩn BIP đang được dùng. BIP-44 dùng purpose 44', BIP-49 dùng 49' (cho địa chỉ P2SH tương thích SegWit), BIP-84 dùng 84' (cho SegWit gốc), và BIP-86 dùng 86' (cho Taproot).
BIP-44: Đường dẫn đầy đủ
BIP-44 định nghĩa đường dẫn dẫn xuất 5 cấp:
m / purpose' / coin_type' / account' / change / address_index
Mỗi cấp có ý nghĩa cụ thể:
| Cấp | Trường | Hardened | Mô tả |
|---|---|---|---|
| 1 | Purpose | Có (44') | Xác định chuẩn dẫn xuất |
| 2 | Coin Type | Có | Xác định loại tiền mã hóa |
| 3 | Account | Có | Tách tiền thành các tài khoản logic |
| 4 | Change | Không (0 hoặc 1) | Địa chỉ ngoài (0) hoặc địa chỉ thối lại nội bộ (1) |
| 5 | Address Index | Không (0, 1, 2...) | Số thứ tự địa chỉ |
Purpose (44')
Trường purpose luôn là 44' cho dẫn xuất chuẩn BIP-44. Một số giá trị phổ biến khác:
49'— BIP-49 (P2SH-wrapped SegWit)84'— BIP-84 (Native SegWit / Bech32)86'— BIP-86 (Taproot / P2TR)
Các giá trị này định nghĩa các loại địa chỉ khác nhau và được giải thích trong từng BIP tương ứng.
Coin Type
Coin type xác định khóa được dẫn xuất thuộc loại tiền mã hóa nào. Các coin type đã đăng ký gồm:
| Coin | Coin Type | Tiền tố đường dẫn |
|---|---|---|
| Bitcoin | 0' | m/44'/0' |
| Bitcoin Testnet | 1' | m/44'/1' |
| Litecoin | 2' | m/44'/2' |
| Dogecoin | 3' | m/44'/3' |
| Ethereum | 60' | m/44'/60' |
| Ethereum Classic | 61' | m/44'/61' |
| Cosmos | 118' | m/44'/118' |
| Solana | 501' | m/44'/501' |
| Cardano | 1815' | m/44'/1815' |
| Polkadot | 354' | m/44'/354' |
Danh sách coin type đầy đủ được duy trì trong SLIP-44 và có hơn 1.000 mục.
Account
Cấp account cho phép người dùng tạo các tài khoản logic tách biệt trong cùng một ví, tương tự có nhiều tài khoản ngân hàng. Account 0' là mặc định:
m/44'/0'/0'— Bitcoin Account 0m/44'/0'/1'— Bitcoin Account 1m/44'/60'/0'— Ethereum Account 0
Account dùng dẫn xuất hardened, nghĩa là biết extended public key của một account sẽ không làm lộ khóa của account khác. Điều này tạo sự cô lập quyền riêng tư giữa các account.
Change
Cấp change phân biệt giữa:
- 0 (External chain) — Địa chỉ đưa cho người khác để nhận thanh toán.
- 1 (Internal chain) — Địa chỉ ví dùng nội bộ để nhận tiền thối lại cho chính bạn.
Trong mô hình UTXO của Bitcoin, khi bạn chi một đầu ra giao dịch, toàn bộ đầu ra đó phải được tiêu thụ. Nếu bạn gửi 0.5 BTC từ một đầu ra 1 BTC, 0.5 BTC còn lại sẽ được gửi tới địa chỉ thối lại do ví của bạn kiểm soát. Chuỗi change giữ các địa chỉ này tách biệt khỏi địa chỉ nhận tiền vì mục đích tổ chức và riêng tư.
Ethereum và các blockchain dạng account khác không dùng chuỗi change theo cách này, vì chúng không có mô hình UTXO. Ví Ethereum thường chỉ dùng chuỗi external (change = 0).
Address Index
Address index là số thứ tự của địa chỉ trong một chain. Ví tăng bộ đếm này mỗi khi tạo địa chỉ mới:
m/44'/0'/0'/0/0— Địa chỉ nhận đầu tiênm/44'/0'/0'/0/1— Địa chỉ nhận thứ haim/44'/0'/0'/0/2— Địa chỉ nhận thứ bam/44'/0'/0'/1/0— Địa chỉ change đầu tiênm/44'/0'/0'/1/1— Địa chỉ change thứ hai
Đường dẫn dẫn xuất cho các tiền mã hóa lớn
Bitcoin
Bitcoin dùng nhiều đường dẫn dẫn xuất tương ứng với các loại địa chỉ khác nhau:
| Chuẩn | Đường dẫn | Loại địa chỉ | Tiền tố | Ví dụ |
|---|---|---|---|---|
| BIP-44 | m/44'/0'/0' | Legacy (P2PKH) | 1... | 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa |
| BIP-49 | m/49'/0'/0' | SegWit-compat (P2SH-P2WPKH) | 3... | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy |
| BIP-84 | m/84'/0'/0' | Native SegWit (P2WPKH) | bc1q... | bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 |
| BIP-86 | m/86'/0'/0' | Taproot (P2TR) | bc1p... | bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297 |
Quan trọng khi khôi phục: Nếu bạn khôi phục seed phrase trong ví mới mà không thấy số dư, có thể ví đang quét đường dẫn dẫn xuất khác với ví gốc của bạn. Hãy thử chuyển giữa các loại địa chỉ Legacy, SegWit và Taproot, hoặc chỉ định thủ công đường dẫn dẫn xuất.
Ethereum
Ethereum thường dùng một đường dẫn dẫn xuất duy nhất:
m/44'/60'/0'/0/0 — Tài khoản đầu tiên
m/44'/60'/0'/0/1 — Tài khoản thứ hai (một số ví)
Tuy nhiên, một số ví (như Ledger Live) dẫn xuất nhiều account ở cấp account:
m/44'/60'/0'/0/0 — Account 0
m/44'/60'/1'/0/0 — Account 1
m/44'/60'/2'/0/0 — Account 2
Trong khi các ví khác (như MetaMask) tăng address index:
m/44'/60'/0'/0/0 — Account 1
m/44'/60'/0'/0/1 — Account 2
m/44'/60'/0'/0/2 — Account 3
Sự không nhất quán này có thể gây nhầm lẫn khi khôi phục. Luôn ghi lại phần mềm ví nào đã tạo seed phrase của bạn.
Solana
Solana dùng Ed25519 (một đường cong elliptic khác với secp256k1) với đường dẫn:
m/44'/501'/0' — Phantom, Solflare
m/44'/501'/0'/0' — Một số triển khai
Cardano
Cardano dùng cơ chế dẫn xuất khóa khác (Ed25519-BIP32 / CIP-1852) với đường dẫn:
m/1852'/1815'/0'/0/0 — Địa chỉ thanh toán đầu tiên
m/1852'/1815'/0'/2/0 — Staking key đầu tiên
Lưu ý trường purpose là 1852' (CIP-1852, đặt theo năm sinh của Ada Lovelace) thay vì 44'.
Dẫn xuất Hardened và Normal
Hiểu khác biệt giữa dẫn xuất hardened và normal là rất quan trọng cho bảo mật.
Dẫn xuất Normal (Non-Hardened)
- Dùng chỉ số từ 0 đến 2^31 - 1.
- Có thể dẫn xuất public key con từ extended public key cha mà không cần private key cha.
- Ưu điểm: Cho phép ví chỉ theo dõi (ví dụ: máy chủ có thể tạo địa chỉ nhận mới chỉ với xpub, không cần giữ private key).
- Rủi ro: Nếu kẻ tấn công có cả private key con VÀ extended public key cha, họ có thể tính ra private key cha và tất cả private key cùng cấp.
Dẫn xuất Hardened
- Dùng chỉ số từ 2^31 đến 2^32 - 1 (viết là 0' đến 2^31 - 1').
- Yêu cầu extended private key cha để dẫn xuất khóa con.
- Ưu điểm: Lộ khóa con không làm lộ khóa cha hoặc các khóa cùng cấp.
- Rủi ro: Không thể dẫn xuất public key con chỉ từ extended public key cha (không có chức năng watch-only ở cấp này).
Vì sao BIP-44 dùng dẫn xuất Hardened cho 3 cấp đầu
Purpose, coin type và account đều là hardened (44'/0'/0') vì:
- Lộ private key địa chỉ (ở cấp không hardened thứ 5) không được làm lộ account.
- Các account phải được cô lập với nhau.
- Các coin khác nhau phải được cô lập với nhau.
Cấp change và address index là non-hardened (0/0) để ví watch-only có thể tạo địa chỉ nhận mà không cần master private key.
Gap Limit
Ví không quét vô hạn số lượng địa chỉ. Đặc tả BIP-44 đưa ra khái niệm "gap limit" — số địa chỉ chưa dùng liên tiếp mà ví sẽ quét trước khi dừng. Gap limit chuẩn là 20.
Nếu bạn đã tạo địa chỉ từ 0 đến 25, nhưng chỉ địa chỉ 0, 5, 10 và 25 từng nhận tiền, ví sẽ:
- Quét địa chỉ 0 — có giao dịch, tiếp tục.
- Quét địa chỉ 1–4 — chưa dùng, nhưng vẫn trong gap limit.
- Quét địa chỉ 5 — có giao dịch, đặt lại bộ đếm gap.
- Tiếp tục cho tới khi gặp 20 địa chỉ liên tiếp không có giao dịch.
Vấn đề: Nếu bạn đã tạo nhiều địa chỉ vượt quá gap limit (thường gặp với bộ xử lý thanh toán merchant), việc khôi phục ví có thể không tìm thấy toàn bộ tiền. Bạn có thể cần tăng gap limit trong cài đặt ví khi khôi phục.
Dùng SafeSeed Key Derivation Tool để khám phá đường dẫn dẫn xuất BIP-44 một cách tương tác. Nhập seed phrase (dùng cụm thử nghiệm, không dùng cụm thật) và xem các đường dẫn dẫn xuất khác nhau tạo ra địa chỉ khác nhau cho các coin khác nhau như thế nào. Mọi xử lý đều diễn ra trong trình duyệt của bạn.
Extended Keys: xpub, ypub, zpub
Extended key mã hóa dữ liệu khóa cùng metadata về đường dẫn dẫn xuất:
| Tiền tố | Chuẩn | Loại địa chỉ | Mạng |
|---|---|---|---|
| xpub / xprv | BIP-44 | Legacy (P2PKH) | Mainnet |
| ypub / yprv | BIP-49 | SegWit-compat (P2SH-P2WPKH) | Mainnet |
| zpub / zprv | BIP-84 | Native SegWit (P2WPKH) | Mainnet |
| tpub / tprv | BIP-44 | Legacy (P2PKH) | Testnet |
Tiền tố cho phần mềm ví biết loại địa chỉ nào cần dẫn xuất. Nếu bạn xuất xpub rồi nhập vào ví đang kỳ vọng zpub, bạn sẽ thấy địa chỉ khác (không đúng).
Cảnh báo quyền riêng tư với Extended Public Key
Chia sẻ xpub (hoặc ypub/zpub) cho phép người nhận:
- Dẫn xuất tất cả địa chỉ nhận trong quá khứ và tương lai.
- Theo dõi toàn bộ lịch sử giao dịch và số dư của bạn.
- Liên kết các địa chỉ của bạn với nhau, làm mất lợi ích riêng tư của việc dùng địa chỉ mới cho mỗi giao dịch.
Không bao giờ chia sẻ extended public key trừ khi với bên bạn hoàn toàn tin tưởng về quyền riêng tư tài chính (ví dụ: kế toán của bạn, ví watch-only trên máy chủ riêng của bạn).
Các vấn đề thường gặp với đường dẫn dẫn xuất
"Tôi đã khôi phục seed phrase nhưng số dư bằng 0"
Đây là lỗi đường dẫn dẫn xuất phổ biến nhất. Các nguyên nhân có thể gồm:
- Sai loại địa chỉ — Bạn dùng địa chỉ SegWit (BIP-84,
m/84'/0'/0') nhưng ví mới đang quét đường dẫn Legacy (BIP-44,m/44'/0'/0'). Hãy đổi loại địa chỉ. - Sai coin type — Một số ví trong triển khai cũ dùng coin type 0 cho mọi coin.
- Sai account — Bạn có thể đã dùng account 1 hoặc cao hơn.
- Gap limit — Các địa chỉ đã dùng của bạn vượt quá gap limit mặc định 20.
- Đường dẫn dẫn xuất tùy chỉnh — Một số ví dùng đường dẫn không chuẩn.
"Hai ví của tôi hiển thị địa chỉ khác nhau từ cùng một seed phrase"
Nếu hai ví tạo địa chỉ khác nhau từ cùng seed phrase, chúng đang dùng đường dẫn dẫn xuất hoặc loại địa chỉ khác nhau. Hãy kiểm tra cài đặt dẫn xuất ở cả hai ví.
Checklist khôi phục
Khi khôi phục ví từ seed phrase:
- Xác minh ví hỗ trợ BIP-39.
- Chọn đúng loại địa chỉ (Legacy, SegWit hoặc Taproot).
- Kiểm tra đường dẫn dẫn xuất khớp với ví gốc.
- Tăng gap limit nếu bạn đã dùng nhiều địa chỉ.
- Kiểm tra tất cả account (không chỉ account 0) nếu bạn đã tạo nhiều account.
Nâng cao: Đường dẫn dẫn xuất tùy chỉnh
Một số trường hợp nâng cao yêu cầu đường dẫn dẫn xuất tùy chỉnh:
- Thiết lập đa chữ ký — BIP-48 định nghĩa đường dẫn dẫn xuất cho ví multisig:
m/48'/0'/0'/2'(cho multisig native SegWit). - Lightning Network — Một số triển khai Lightning dùng đường dẫn dẫn xuất tùy chỉnh cho channel key.
- Ví tập trung quyền riêng tư — Wasabi và các ví tập trung quyền riêng tư khác có thể dùng các đường dẫn cụ thể.
Luôn ghi chép lại đường dẫn dẫn xuất bạn sử dụng. Nếu bạn không thể tái tạo chính xác đường dẫn, bạn không thể khôi phục tiền.
FAQ
Đường dẫn dẫn xuất trong tiền mã hóa là gì?
Đường dẫn dẫn xuất là ký hiệu có cấu trúc chỉ định cách dẫn xuất một khóa hoặc địa chỉ cụ thể từ master seed trong ví xác định phân cấp (HD). Nó theo định dạng m/purpose'/coin_type'/account'/change/address_index, trong đó mỗi cấp thu hẹp tới một khóa cụ thể trong cây dẫn xuất.
Vì sao các tiền mã hóa khác nhau dùng coin type khác nhau?
Coin type khác nhau đảm bảo cùng một seed phrase tạo ra các khóa tách biệt, không liên quan cho từng blockchain. Điều này ngăn can nhiễu xuyên chuỗi ngoài ý muốn và đảm bảo việc lộ khóa ở một chain không ảnh hưởng khóa ở chain khác.
Tôi có thể dùng cùng một seed phrase cho Bitcoin và Ethereum không?
Có. Cùng một seed phrase BIP-39 có thể dẫn xuất khóa cho cả Bitcoin và Ethereum (và nhiều tiền mã hóa khác). Chúng dùng đường dẫn dẫn xuất khác nhau — Bitcoin tại m/44'/0'/0' và Ethereum tại m/44'/60'/0' — nên các khóa và địa chỉ được dẫn xuất hoàn toàn độc lập.
Dấu nháy đơn (') trong đường dẫn dẫn xuất có nghĩa gì?
Dấu nháy đơn chỉ dẫn xuất hardened. Dẫn xuất hardened yêu cầu private key cha và tạo cô lập bảo mật mạnh hơn: lộ khóa con không làm lộ khóa cha hoặc các khóa cùng cấp. Các cấp non-hardened (không có dấu nháy đơn) cho phép dẫn xuất public key con từ public key cha.
Vì sao ví của tôi hiển thị số dư bằng 0 sau khi khôi phục seed phrase?
Nguyên nhân phổ biến nhất là không khớp đường dẫn dẫn xuất. Ví gốc của bạn có thể dùng loại địa chỉ khác (Legacy vs. SegWit vs. Taproot), và mỗi loại dùng một đường dẫn dẫn xuất khác nhau. Hãy thử đổi loại địa chỉ trong ví khôi phục, hoặc chỉ định thủ công đường dẫn dẫn xuất mà ví gốc đã dùng.
Gap limit là gì và vì sao quan trọng?
Gap limit là số lượng địa chỉ chưa dùng liên tiếp mà ví quét trước khi giả định không còn địa chỉ nào được dùng. Chuẩn BIP-44 đặt giá trị này là 20. Nếu bạn đã tạo nhiều địa chỉ (ví dụ merchant nhận thanh toán), một số địa chỉ có tiền có thể vượt quá gap limit và không hiển thị khi khôi phục. Tăng gap limit trong cài đặt ví để tìm chúng.
Có phải mọi ví đều dùng BIP-44?
Hầu hết ví hiện đại hỗ trợ BIP-44 hoặc các chuẩn kế nhiệm (BIP-49, BIP-84, BIP-86). Tuy nhiên, một số ví dùng đường dẫn dẫn xuất độc quyền. Ví dụ, Electrum dùng mnemonic và cơ chế dẫn xuất riêng. Luôn ghi lại ví nào đã tạo seed phrase của bạn và các đường dẫn dẫn xuất mà nó dùng.