Fundamentals ·

Định Dạng Địa Chỉ Tiền Mã Hóa: Bech32, Base58 Và 0x


Nếu bạn từng sao chép địa chỉ tiền mã hóa và nhận thấy địa chỉ Bitcoin bắt đầu bằng bc1, địa chỉ Ethereum bắt đầu bằng 0x, và địa chỉ Solana dường như là một ngôn ngữ hoàn toàn khác, bạn không đơn độc. Những khác biệt này không phải mang tính thẩm mỹ. Mỗi định dạng địa chỉ mã hóa thông tin cụ thể về blockchain, loại giao dịch nó hỗ trợ, và cơ chế phát hiện lỗi bảo vệ tiền của bạn.

Hiểu định dạng địa chỉ là kiến thức thực tế. Một ký tự sai duy nhất trong địa chỉ tiền mã hóa có thể gửi tiền vào hư không vĩnh viễn. Hướng dẫn này phân tích các sơ đồ mã hóa chính, giải thích tại sao mỗi blockchain chọn định dạng của mình, và cho bạn thấy cách checksum ngăn chặn sai lầm tốn kém.

Tại Sao Địa Chỉ Trông Khác Nhau

Địa chỉ tiền mã hóa là biểu diễn có thể đọc được của public key hoặc hash được tạo từ nó. Đầu ra mật mã thô là dữ liệu nhị phân, không thực tế để con người đọc, sao chép hoặc xác minh. Các blockchain khác nhau chọn các sơ đồ mã hóa khác nhau để chuyển đổi dữ liệu nhị phân đó thành chuỗi văn bản.

Những lựa chọn mã hóa này phản ánh sự đánh đổi giữa:

  • An toàn bộ ký tự -- tránh các ký tự trông giống nhau (0/O, l/1/I)
  • Phát hiện lỗi -- checksum tích hợp phát hiện lỗi đánh máy trước khi tiền bị mất
  • Hiệu quả không gian -- địa chỉ ngắn hơn dễ xử lý hơn
  • Phân biệt chữ hoa chữ thường -- định dạng chỉ chữ thường tránh nhầm lẫn clipboard

Ba họ mã hóa chính trong tiền mã hóa là Base58Check, Bech32 và thập lục phân với tiền tố 0x. Mỗi họ xuất hiện từ các mục tiêu thiết kế cụ thể tại những thời điểm cụ thể trong lịch sử blockchain.

Base58Check: Bitcoin Legacy

Base58Check là một trong những sơ đồ mã hóa địa chỉ đầu tiên, được Satoshi Nakamoto giới thiệu cùng Bitcoin. Nó sử dụng 58 ký tự chữ và số, cố ý loại trừ các ký tự gây nhầm lẫn trực quan:

  • Không có số không (0) -- quá giống chữ O
  • Không có chữ O hoa (O) -- quá giống số không
  • Không có chữ L thường (l) -- quá giống chữ I hoa và số 1
  • Không có chữ I hoa (I) -- quá giống chữ l thường và số 1

Địa chỉ Bitcoin Base58Check trông như sau: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Định dạng bao gồm byte phiên bản ở đầu và checksum 4 byte ở cuối. Byte phiên bản cho bạn biết loại địa chỉ: 1 cho địa chỉ Pay-to-Public-Key-Hash (P2PKH) tiêu chuẩn, 3 cho địa chỉ Pay-to-Script-Hash (P2SH). Checksum được tính bằng cách chạy SHA-256 hai lần trên payload và thêm 4 byte đầu tiên của kết quả.

Checksum này có nghĩa là nếu bạn vô tình gõ sai một ký tự, địa chỉ gần như chắc chắn sẽ thất bại xác thực thay vì gửi tiền đến địa chỉ sai nhưng hợp lệ. Xác suất một lỗi đánh máy ngẫu nhiên tạo ra checksum hợp lệ xấp xỉ 1 trong 4,3 tỷ.

Nhiều blockchain khác đã áp dụng Base58Check vì nó đã được chứng minh và quen thuộc:

  • Địa chỉ legacy Litecoin bắt đầu bằng L hoặc M
  • Địa chỉ Dogecoin bắt đầu bằng D

Bạn có thể sử dụng Bitcoin Address Validator của SafeSeed để kiểm tra xem địa chỉ Base58Check có checksum hợp lệ trước khi gửi bất kỳ giao dịch nào.

Bech32: Địa Chỉ SegWit bc1

Năm 2017, Bitcoin giới thiệu Segregated Witness (SegWit), cần định dạng địa chỉ mới. Thay vì mở rộng Base58Check, các nhà phát triển tạo Bech32, được định nghĩa trong BIP173. Địa chỉ Bech32 dễ nhận biết ngay vì chúng bắt đầu bằng bc1 cho Bitcoin mainnet.

Địa chỉ Bech32 trông như: bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

Bech32 đã thực hiện nhiều cải tiến có chủ đích so với Base58Check:

Chỉ chữ thường

Bech32 chỉ sử dụng chữ thường và số. Điều này loại bỏ vấn đề phân biệt chữ hoa khi địa chỉ được truyền bằng lời nói, in bằng font hỗn hợp, hoặc mã hóa trong mã QR (nhỏ gọn hơn với dữ liệu một kiểu chữ).

Phát hiện lỗi vượt trội

Base58Check phát hiện lỗi nhưng không thể cho bạn biết lỗi ở đâu. Bech32 sử dụng mã BCH (Bose-Chaudhuri-Hocquenghem) có thể phát hiện mọi lỗi đơn ký tự và hầu hết lỗi thay thế nhiều ký tự. Nó có thể xác định vị trí lên đến hai lỗi, cho phép sửa chữa tiềm năng trong một số giao diện ví.

Mã QR nhỏ hơn

Vì Bech32 sử dụng bộ ký tự hạn chế (32 ký tự), mã QR đại diện cho các địa chỉ này nhỏ hơn đáng kể và dễ quét hơn.

Bech32m

Phiên bản cập nhật gọi là Bech32m (BIP350) sửa một điểm yếu nhỏ trong định dạng Bech32 gốc liên quan đến ký tự cuối cùng. Địa chỉ SegWit v1 hiện đại (Taproot, bắt đầu bằng bc1p) sử dụng Bech32m. Nếu bạn tạo địa chỉ Bitcoin với Bitcoin Address Generator của SafeSeed, đầu ra mặc định sử dụng định dạng Bech32/Bech32m hiện đại.

Litecoin cũng áp dụng Bech32 cho địa chỉ SegWit, sử dụng tiền tố ltc1.

0x: Địa Chỉ Chain EVM

Ethereum có cách tiếp cận hoàn toàn khác. Địa chỉ Ethereum là giá trị 20 byte hiển thị dưới dạng 40 ký tự thập lục phân với tiền tố 0x:

0x742d35Cc6634C0532925a3b844Bc9e7595f2bD08

Định dạng hex rất đơn giản: mỗi byte ánh xạ sang hai ký tự hex (0-9, a-f). Điều này làm cho địa chỉ là biểu diễn trực tiếp của dữ liệu cơ bản mà không cần mã hóa đặc biệt.

Checksum hỗn hợp chữ hoa chữ thường EIP-55

Định dạng địa chỉ Ethereum gốc không có checksum tích hợp. Nếu bạn gõ sai ký tự, địa chỉ vẫn hợp lệ về mặt kỹ thuật, và tiền sẽ bị mất. EIP-55 giải quyết bằng cách sử dụng cách viết hoa chữ hex làm checksum. Địa chỉ được hash bằng Keccak-256, và mỗi chữ cái được viết hoa nếu nibble tương ứng trong hash vượt quá 8.

Đây là lý do bạn thấy địa chỉ Ethereum với cách viết hoa dường như ngẫu nhiên. Sự pha trộn chữ hoa và chữ thường không phải tùy ý; nó là checksum. Nếu bạn thay đổi một ký tự, mẫu viết hoa sẽ không khớp, và ví triển khai đúng sẽ từ chối.

Chia sẻ trên các chain EVM

Một trong những khía cạnh quan trọng nhất của định dạng 0x là nó giống hệt nhau trên tất cả chain tương thích EVM:

Cùng private key tạo ra cùng địa chỉ trên tất cả các chain này. Đây vừa là sự tiện lợi vừa là nguồn gây nhầm lẫn: gửi token đến đúng địa chỉ trên sai chain là lỗi phổ biến. Để tìm hiểu sâu hơn về bảo mật địa chỉ EVM, xem hướng dẫn Bảo Mật Địa Chỉ EVM.

Bạn có thể xác thực bất kỳ địa chỉ EVM nào, bao gồm checksum EIP-55, với Ethereum Address Validator của SafeSeed.

Base58 Trong Solana, XRP Và TRON

Nhiều blockchain hiện đại sử dụng mã hóa Base58 nhưng không có hậu tố Check, nghĩa là chúng triển khai cơ chế checksum hoặc xác thực riêng.

Solana

Địa chỉ Solana là public key Ed25519 được mã hóa Base58, thường dài 32 đến 44 ký tự:

7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV

Solana sử dụng cùng bảng chữ cái Base58 như Bitcoin (loại trừ các ký tự gây nhầm lẫn trực quan) nhưng không thêm byte phiên bản hoặc checksum SHA-256. Thay vào đó, địa chỉ đơn giản là public key thô trong mã hóa Base58. Xác thực phụ thuộc vào khóa là điểm hợp lệ trên đường cong Ed25519. Solana Address Validator của SafeSeed xử lý xác minh này.

XRP

XRP sử dụng mã hóa Base58Check với tiền tố phiên bản riêng, tạo ra địa chỉ bắt đầu bằng r:

rN7n3473SaZBCG4dFL83w7p1W9cgZw6p1N

TRON

Địa chỉ TRON sử dụng Base58Check với byte phiên bản 0x41, tạo ra địa chỉ bắt đầu bằng T:

TJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW

Thú vị là, TRON sử dụng cùng đường cong elliptic secp256k1 như Ethereum và Bitcoin. Địa chỉ TRON được tạo từ cùng khóa như địa chỉ Ethereum nhưng được mã hóa khác.

Checksum: Lưới An Toàn Của Bạn

Checksum là một phần dữ liệu nhỏ được tạo từ payload địa chỉ cho phép phần mềm phát hiện lỗi. Hãy nghĩ nó như dấu vân tay toán học: nếu dù chỉ một ký tự thay đổi, dấu vân tay sẽ không khớp.

So sánh cơ chế checksum trên các định dạng chính:

Định dạng Phương pháp Checksum Khả năng phát hiện
Base58Check Double SHA-256 (4 byte) Phát hiện hầu như mọi lỗi
Bech32 Mã BCH (6 ký tự) Phát hiện mọi lỗi đơn ký tự; định vị đến 2 lỗi
EIP-55 (0x) Viết hoa Keccak-256 ~99,98% phát hiện lỗi cho thay đổi đơn ký tự
Solana Base58 Xác thực đường cong Ed25519 Từ chối điểm đường cong không hợp lệ

Checksum không bảo vệ khỏi mọi loại sai lầm. Nếu phần mềm độc hại thay thế toàn bộ clipboard của bạn bằng địa chỉ hợp lệ khác (tấn công chiếm clipboard), checksum vẫn sẽ thông qua vì địa chỉ kẻ tấn công bản thân nó hợp lệ. Checksum bảo vệ khỏi lỗi đánh máy ngẫu nhiên và lỗi truyền dẫn, không phải gian lận có chủ đích.

Để có cái nhìn rộng hơn về các mối đe dọa ngoài lỗi đánh máy, xem Các Chiêu Trò Lừa Đảo Tiền Mã Hóa Liên Quan Đến Seed Phrase.

Xác Thực Địa Chỉ Trước Khi Gửi

Mọi giao dịch tiền mã hóa nên bắt đầu bằng xác thực địa chỉ. Điều này có nghĩa là nhiều hơn việc liếc qua vài ký tự đầu. Xác thực đúng bao gồm:

1. Xác minh định dạng

Xác nhận địa chỉ khớp với định dạng mong đợi cho blockchain bạn đang sử dụng. Địa chỉ bc1 chỉ nên được sử dụng trên Bitcoin. Địa chỉ 0x có thể hợp lệ trên nhiều chain EVM, nên kiểm tra kỹ mạng bạn dự định sử dụng.

2. Xác minh checksum

Chạy địa chỉ qua công cụ xác thực kiểm tra checksum tích hợp. SafeSeed cung cấp công cụ xác thực miễn phí cho các chain phổ biến nhất:

Tất cả xác thực chạy hoàn toàn trong trình duyệt sử dụng mã client-side. Không dữ liệu địa chỉ nào được truyền đến bất kỳ máy chủ nào.

3. Xác nhận trực quan

Ngay cả sau xác thực tự động, hãy xác nhận trực quan vài ký tự đầu và cuối của địa chỉ. Phần mềm độc hại chiếm clipboard đôi khi thay thế địa chỉ bằng địa chỉ do kẻ tấn công kiểm soát có cùng vài ký tự đầu.

4. Giao dịch thử nhỏ

Với chuyển khoản lớn, gửi một lượng nhỏ trước và xác nhận nhận được trước khi gửi toàn bộ số dư. Phí giao dịch nhỏ là cái giá nhỏ cho sự chắc chắn.

5. Sử dụng tính năng sổ địa chỉ

Hầu hết ví cho phép bạn lưu địa chỉ đã xác thực. Khi bạn đã xác nhận địa chỉ, hãy lưu nó để tránh nhập lại (và tạo cơ hội mới cho lỗi).

Để có hướng dẫn chi tiết về quy trình xác thực, xem Cách Xác Thực Địa Chỉ Tiền Mã Hóa.

Chọn Định Dạng Phù Hợp

Nếu bạn đang tạo địa chỉ mới, định dạng hiện đại hầu như luôn được ưa chuộng:

  • Bitcoin: Sử dụng địa chỉ Bech32 (bc1) cho phí thấp hơn và phát hiện lỗi tốt hơn. Địa chỉ Base58Check legacy vẫn hoạt động nhưng tốn phí giao dịch hơn do kích thước giao dịch lớn hơn.
  • Ethereum và chain EVM: Luôn sử dụng địa chỉ có checksum EIP-55. Hầu hết công cụ hiện đại tạo ra chúng theo mặc định.
  • Solana: Base58 là lựa chọn duy nhất, và nó hoạt động tốt.

Khi tạo địa chỉ với SafeSeed, các công cụ mặc định sử dụng định dạng hiện tại và an toàn nhất cho mỗi blockchain. Dù bạn sử dụng Bitcoin Seed Phrase Generator hay Ethereum Address Generator, các địa chỉ được tạo sẽ sử dụng mã hóa khuyến nghị cho chain đó.

Hiểu các định dạng này loại bỏ sự bí ẩn khỏi địa chỉ tiền mã hóa. Chúng không phải chuỗi ngẫu nhiên -- chúng là biểu diễn được thiết kế cẩn thận của khóa mật mã, với cơ chế an toàn tích hợp được thiết kế để bảo vệ tiền của bạn khỏi sai lầm đơn giản của con người.