HD Wallet là gì? Chuẩn BIP-32 sinh hàng loạt địa chỉ Bitcoin

HD Wallet là gì? Chuẩn BIP-32 sinh hàng loạt địa chỉ Bitcoin

HD Wallet (Hierarchical Deterministic Wallet, ví xác định phân cấp) là chuẩn cho phép tạo ra hàng loạt địa chỉ Bitcoin từ một seed duy nhất. Hai mệnh đề chính định nghĩa toàn bộ ý nghĩa của nó: một khóa gốc (master key) sinh ra một cây khóa con có cấu trúc phân cấp, và mọi khóa con đều deterministic — chỉ cần lưu trữ seed, bạn có thể khôi phục toàn bộ ví.

Sơ đồ cây phân cấp khóa theo chuẩn BIP-32: Entropy 128 bit qua HMAC-SHA512 tạo master key, sau đó dẫn xuất chuỗi khóa m/0 với nhánh ngoài và nhánh trong dẫn tới các địa chỉ con

Vì sao ví cần tới HD Wallet?

Ví đơn giản nhất chỉ có một cặp khóa. Mỗi lần mua bán là phải tạo một ví mới, mỗi ví lại cần một địa chỉ riêng để nhận tiền. Cách này nhanh chóng trở nên phiền phức: hàng trăm giao dịch đồng nghĩa hàng trăm địa chỉ phải sao lưu, và người dùng dễ lộ khóa riêng tư khi tự tạo ví thủ công.

HD Wallet giải quyết cả hai vấn đề. Địa chỉ được sinh ra theo một công thức toán học tất định, nên có thể tạo vô hạn địa chỉ mà chỉ cần lưu một chuỗi seed duy nhất. Nhờ vậy, sao lưu ví trở thành thao tác đơn giản, còn mỗi giao dịch nhận tiền vẫn nằm ở một địa chỉ riêng biệt, khó truy vết.

Cơ chế hoạt động của BIP-32

Chuẩn BIP-32 định nghĩa thuật toán private parent key → public parent key → child key dựa trên phép cộng trong nhóm cong elíp. Mỗi khóa con được dẫn xuất bằng cách băm (hash) khóa cha kèm chỉ số đường dẫn, nên kết quả luôn giống nhau dù chạy trên máy nào, ví nào.

Đường dẫn khóa có dạng m/purpose'/coin_type'/account'/change/address_index, trong đó dấu nháy đơn biểu thị chỉ số hardened:

  • purpose' — mục đích sử dụng, ví dụ 44′ cho ví thông thường theo BIP-44, 49′ cho P2SH-P2WPKH, 84′ cho P2WPKH native SegWit, 86′ cho Taproot.
  • coin_type' — mã loại coin, ví dụ 0 cho Bitcoin, 60 cho Ethereum theo quy ước SLIP-44.
  • account' — nhóm tài khoản, cho phép một seed quản lý nhiều tài khoản độc lập.
  • change — 0 là địa chỉ nhận tiền từ bên ngoài, 1 là địa chỉ trả tiền lại (change address).
  • address_index — số thứ tự địa chỉ, tăng dần theo từng lần nhận tiền.

Chia làm hai nhánh change=0 và change=1 là chi tiết thiết kế quan trọng. Địa chỉ nhận tiền từ người khác nằm ở nhánh ngoài, có thể công khai thoải mái. Địa chỉ trả tiền dư về ví nằm ở nhánh trong, chỉ ví mới biết, giúp tách bạch dòng tiền và không rò rỉ thông tin liên kết giao dịch.

Ảnh thực tế hai ví cứng Trezor One đặt cạnh một đồng Bitcoin vật lý, thiết bị lưu trữ seed và khóa riêng tư ngoại tuyến

Từ seed đến địa chỉ nhận tiền

Toàn bộ chuỗi biến đổi diễn ra hoàn toàn cục bộ, không cần mạng:

  1. Bước 1 — Sinh seed. Ví tạo ngẫu nhiên một chuỗi entropy, thường 128 hoặc 256 bit, rồi mã hoá thành 12 hoặc 24 từ theo chuẩn BIP-39 kèm checksum.
  2. Bước 2 — Sinh master key. Seed được băm bằng HMAC-SHA512 với chuỗi khoá "Bitcoin seed", kết quả tách đôi: 32 byte khóa riêng tư chính và 32 byte mã xác thực.
  3. Bước 3 — Dẫn xuất theo đường dẫn. Áp dụng liên tiếp phép nhân điểm trên đường cong elíp cho từng cấp của đường dẫn để đi tới khóa cần dùng.
  4. Bước 4 — Kết quả. Khóa công khai được tạo bằng phép nhân với điểm sinh của đường cong, rồi băm bằng SHA-256 và RIPEMD-160 để thu địa chỉ.

Do mỗi bước là hàm bất biến theo đầu vào, cùng một seed luôn cho ra cùng một cây địa chỉ. Đây chính là ý nghĩa của từ deterministic.

So sánh ví thường và HD Wallet

Tiêu chí Ví đơn khóa HD Wallet (BIP-32)
Số địa chỉ Một địa chỉ duy nhất Hàng triệu địa chỉ, không giới hạn thực tế
Đơn vị sao lưu Cặp khóa cho từng địa chỉ Một chuỗi seed 12-24 từ
Quyền riêng tư Dễ liên kết các giao dịch Địa chỉ mới cho mỗi lần nhận tiền
Phục hồi khi mất thiết bị Cần toàn bộ file khóa Nhập lại seed là xong
Dễ sao chép ví Phải chép từng khóa Chép seed là chép trọn ví
Chuẩn hỗ trợ Không thống nhất BIP-32, BIP-39, BIP-44, SLIP-44

Ứng dụng thực tế

Hầu hết ví phần cứng và phần mềm ngày nay đều dựa trên BIP-32 kết hợp BIP-39. Khi người dùng khởi tạo ví lần đầu, thiết bị sinh seed ngay trên chính nó, mã hoá thành 12 từ hiển thị một lần duy nhất rồi xoá khỏi bộ nhớ. Các ứng dụng như Electrum, Bitcoin Core hay các ví đa nền tảng đều cho phép nhập lại cụm từ này để phục hồi toàn bộ số dư, kể cả các địa chỉ đã dùng hàng năm trước đó.

Những lỗi thường gặp

  • Lưu seed trên điện thoại hoặc máy tính có mạng. Malware đánh cắp seed tức thì chiếm được toàn bộ ví, kể cả ví cứng. Seed phải nằm trên giấy hoặc thiết bị tách mạng.
  • Nhập cụm từ lệch thứ tự. BIP-39 có mã kiểm tra, nên ví sẽ báo lỗi ngay, nhưng nhiều người không đọc thông báo và tưởng ví hỏng.
  • Ảnh chụp màn hình hiển thị seed. Ảnh trên đám mây lưu trữ là mồi lửa cho kẻ trộm.
  • Không kiểm tra địa chỉ nhận. Malware thay đổi địa chỉ trong clipboard là lỗi phổ biến nhất gây mất tiền.

Nguồn tham khảo chính thức: BIP-32 — Hierarchical Deterministic Wallets và BIP-39 — Mnemonic code for generating deterministic keys. Bạn cũng có thể đọc bài ví giấy Bitcoin là gì để so sánh với cách lưu khoá ngoại tuyến.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Danh tính tự chủ SSI và DID là gì? Cách hoạt động và triển khai

Danh tính tự chủ SSI và DID là gì? Khái niệm và triển khai thực tế Danh tính tự chủ (Self-Sovereign Identity – SSI) là mô hình quản trị danh…

Xem thêm

Stablecoin là gì? Tiền mã hoá giữ giá ổn định theo đô la Mỹ

Stablecoin là gì? Đó là loại tiền mã hoá được thiết kế để giữ giá ổn định so với một tài sản tham chiếu, phổ biến nhất là 1 đô…

Xem thêm

Cây băm Merkle là gì? Cách Bitcoin xác thực dữ liệu bằng hash

Cây băm Merkle là gì? Cách Bitcoin xác thực dữ liệu bằng hàm băm Cây băm Merkle (Merkle tree) là cấu trúc dữ liệu cho phép kiểm tra toàn vẹn…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất