Trả tiền cho khóa công khai (P2PK) là phương thức nhận bitcoin ban đầu và không liên quan đến địa chỉ. Thay vào đó, như tên cho thấy, bitcoin được thanh toán trực tiếp cho khóa công khai bị lộ. Giao dịch bitcoin đầu tiên từ người này sang người khác đã sử dụng P2PK, khi Satoshi Nakamoto gửi tiền cho Hal Finney ở Khối 170.
P2PK không còn được sử dụng vì đây là cách nhận bitcoin đắt hơn, ít riêng tư hơn và kém an toàn hơn so với các phương thức tiếp theo.
Pay-to-Public-Key-Hash (P2PKH) đã có sẵn để sử dụng khi bitcoin bắt đầu và nó xuất hiện trên blockchain lần đầu tiên chưa đầy hai tuần sau khối khởi nguồn. P2PKH thực hiện một số cải tiến so với P2PK, chẳng hạn như sử dụng địa chỉ. Như đã thảo luận trong bài viết trước của chúng tôi, các địa chỉ chứa tổng kiểm tra giúp ngăn ngừa lỗi chính tả và mất bitcoin.
Địa chỉ P2PKH thường có độ dài 34 hoặc 33 ký tự (nhưng về mặt lý thuyết có thể ngắn tới 26 ký tự) và chúng được mã hóa ở định dạng Base58. Chúng bắt đầu bằng tiền tố 1 và hiện chịu trách nhiệm nhận và đảm bảo 43% nguồn cung bitcoin được khai thác, nhiều hơn bất kỳ loại địa chỉ nào khác.
Tạo địa chỉ P2PKH liên quan đến việc đặt một khóa chung thông qua các hàm băm SHA-256 và RIPEMD-160. Điều này rút ngắn lượng dữ liệu, từ đó giúp tiết kiệm không gian khối và phí giao dịch cho người dùng. Nó cũng đưa ra thêm khả năng chống lại kỹ thuật đảo ngược khóa riêng ngoài đường cong elip secp256k1 vốn được cho là không thể phá vỡ.
Pay-to-Multisig (P2MS) là một loại giao dịch tầm thường chỉ có liên quan trong thời gian ngắn và chưa bao giờ chịu trách nhiệm nắm giữ hơn 100 bitcoin cùng một lúc trên tất cả những người tham gia mạng. Tuy nhiên, P2MS là một phần lịch sử của bitcoin.
P2MS được giới thiệu dưới dạng tập lệnh tiêu chuẩn vào đầu năm 2012, theo quy định của BIP 11. Tuy nhiên, loại giao dịch này gặp phải các vấn đề tương tự như P2PK vì nó bao gồm các khóa công khai bị lộ và không sử dụng bất kỳ định dạng địa chỉ nào. Nó cũng giới hạn số lượng khóa công khai trong số đại biểu nhiều chữ ký ở mức ba. Trong vòng vài tháng, P2MS sẽ được thay thế bằng một phương pháp thay thế để nhận bitcoin theo thỏa thuận nhiều chữ ký có tên là P2SH, mà chúng tôi sẽ đề cập tiếp theo.
Pay-to-Script-Hash (P2SH) đã được giới thiệu với bitcoin dưới dạng soft fork theo BIP 16 vào ngày 1 tháng 4 năm 2012. Giống như hầu hết các fork, câu chuyện đằng sau nó rất hấp dẫn. P2SH có nhiều điểm chung với P2PKH. Sự khác biệt chính là địa chỉ được tạo bằng cách băm tập lệnh đổi quà thay vì băm một khóa chung.
Tập lệnh đổi quà có thể được coi là hướng dẫn được mã hóa chỉ định cách bitcoin nhận được đến địa chỉ P2SH có thể được chi tiêu trong tương lai. Có thể có rất nhiều khả năng, bao gồm nhiều khóa công khai khác nhau. Người nhận, không phải người gửi, xác định chi tiết tập lệnh và hướng dẫn chi tiêu không được hiển thị công khai cho đến khi bitcoin được chi tiêu ra khỏi địa chỉ.
Mặc dù người dùng nâng cao có thể xây dựng các tập lệnh phức tạp, nhưng cách sử dụng phổ biến nhất cho P2SH là tạo địa chỉ Nested SegWit (được đề cập bên dưới) và ví multisig. Ví dụ: một tập lệnh có thể bao gồm ba khóa chung và chỉ định rằng chữ ký từ bất kỳ hai khóa riêng tương ứng nào có thể sử dụng bitcoin. Điều này sẽ tạo ra một địa chỉ multisig 2 trong 3.
Địa chỉ P2SH có độ dài chính xác là 34 ký tự và chúng bắt đầu bằng tiền tố 3, như được chỉ định bởi BIP 13. Trước soft fork vào ngày 1 tháng 4, một số giao dịch đã thử nghiệm tiền tố thay thế này, tiền tố đầu tiên được tìm thấy trong Khối 170.052.
Pay-to-Witness-Public-Key-Hash (P2WPKH) là loại địa chỉ đầu tiên trong số hai loại địa chỉ được giới thiệu với bitcoin khi phân nhánh mềm SegWit vào tháng 8 năm 2017. Câu chuyện đằng sau cái soft fork cực kỳ quan trọng và đặc biệt gây tranh cãi này được ghi lại trong cuốn sách có tên The Blocksize War, do Jonathan Bier viết.
P2WPKH là biến thể SegWit của P2PKH, ở cấp độ cơ bản, có nghĩa là việc chọn loại địa chỉ này thay vì địa chỉ P2PKH cũ hơn sẽ giúp bạn tiết kiệm tiền phí giao dịch khi di chuyển bitcoin của mình.
Địa chỉ SegWit trông khá khác so với các loại địa chỉ cũ vì theo BIP 173, chúng sử dụng mã hóa Bech32 thay vì Base58. Đáng chú ý nhất là không có chữ in hoa trong Bech32. Địa chỉ P2WPKH có thể được xác định bằng tiền tố bc1q và độ dài ký tự chính xác là 42.
Pay-to-Witness-Script-Hash (P2WSH) là biến thể SegWit của P2SH. Ưu điểm chính của việc sử dụng P2WSH so với P2SH là nó có thể giúp giảm phí giao dịch và lý do chính để sử dụng hàm băm tập lệnh thay vì hàm băm khóa công khai là để phù hợp với các thỏa thuận nhiều chữ ký.
Giống như P2WPKH, địa chỉ P2WSH bắt đầu bằng tiền tố bc1q. Tuy nhiên, nó có độ dài ký tự dài hơn chính xác là 62. Không giống như các loại địa chỉ được đề cập cho đến nay, địa chỉ P2WSH được tạo chỉ bằng hàm băm SHA-256 mà không bao gồm RIPEMD-160, dẫn đến độ dài ký tự tăng lên. Điều này đã được thực hiện một cách thận trọng, bổ sung thêm khả năng bảo vệ khỏi một vectơ tấn công đa chữ ký khá phức tạp và cực kỳ khó xảy ra.
SegWit lồng nhau (còn được gọi là SegWit được bao bọc) về mặt kỹ thuật không phải là một loại địa chỉ khác với loại địa chỉ chúng tôi đã đề cập ở trên. Tuy nhiên, đây là một cách độc đáo để sử dụng các loại địa chỉ đã thảo luận trước đó theo cách tạm thời hữu ích cho cộng đồng bitcoin.
Khi phân nhánh mềm SegWit xảy ra, không phải tất cả các nút bitcoin, phần mềm và dịch vụ đều được nâng cấp ngay lập tức để hỗ trợ các loại địa chỉ SegWit gốc mới, P2WPKH và P2WSH. Chỉ những thực thể đã nâng cấp mới có thể gửi đến những địa chỉ mới này. Điều này có nghĩa là những người muốn có khả năng nhận bitcoin từ bất kỳ ai (kể cả những người chưa nâng cấp) chưa thể sử dụng ví SegWit gốc. Tuy nhiên, vì SegWit cung cấp phí giao dịch rẻ hơn nên hầu hết mọi người đều muốn bắt đầu sử dụng nó.
Giải pháp xảo quyệt cho vấn đề nan giải này là sử dụng loại giao dịch P2SH. Các thực thể chưa triển khai SegWit vẫn có thể gửi bitcoin đến các địa chỉ P2SH— như đã thảo luận ở trên, được xây dựng với tập lệnh đổi quà chỉ định hướng dẫn về cách chi tiêu bitcoin sau này. Hóa ra, những hướng dẫn này có thể kết hợp với mô hình chi tiêu SegWit mới, cung cấp cho người dùng một cầu nối để giảm phí. Do đó, các địa chỉ P2SH sử dụng thủ thuật này được gọi là Nested SegWit và chúng đóng một vai trò quan trọng trong quá trình áp dụng SegWit.
Nhìn bề ngoài, các địa chỉ Nested SegWit không thể phân biệt được với các địa chỉ P2SH khác, vì vậy nguồn cung bitcoin được giữ theo cách sắp xếp này là không thể biết được. Ngoài ra, vì tất cả các công cụ bitcoin hiện đại hiện có thể gửi trực tiếp đến các địa chỉ SegWit gốc nên không còn lý do chính đáng nào để sử dụng Nested SegWit nữa.
Pay-to-Taproot (P2TR) là loại địa chỉ mới nhất, được cung cấp bởi soft-fork Taproot vào tháng 11 năm 2021. Việc áp dụng P2TR vẫn còn khá thấp tại thời điểm viết bài và nhiều phần mềm và dịch vụ bitcoin vẫn đang tích hợp.
Trong khi P2WPKH và P2WSH được gọi là SegWit V0 thì P2TR được coi là SegWit V1. Đáng chú ý, P2TR sử dụng thuật toán chữ ký số có tên Schnorr, khác với định dạng ECDSA được sử dụng trong các loại giao dịch bitcoin trước đó. Chữ ký Schnorr có một số lợi thế, bao gồm giảm phí giao dịch bổ sung và tăng cường quyền riêng tư.
Về quyền riêng tư, việc tổng hợp khóa và chữ ký do Schnorr thực hiện cho phép các địa chỉ nhiều chữ ký không thể phân biệt được với các địa chỉ đơn chữ ký và các điều kiện chi tiêu cho địa chỉ P2TR không bao giờ được tiết lộ công khai. Người tạo địa chỉ thậm chí có thể bao gồm nhiều tập lệnh đổi quà tùy chỉnh để lựa chọn nhằm chi tiêu bitcoin sau này.
Địa chỉ P2TR dài 62 ký tự và sử dụng mã hóa Bech32m, một phiên bản được sửa đổi một chút của Bech32, như được mô tả trong BIP 350. Địa chỉ P2TR có thể được xác định bằng tiền tố bc1p duy nhất của chúng.
Bây giờ chúng tôi đã đề cập đến tất cả các phương pháp được tiêu chuẩn hóa để nhận bitcoin trực tuyến, một số thông tin nhanh và tính năng địa chỉ có thể được kết hợp thành một biểu đồ thuận tiện để tham khảo.
Trả tiền cho khóa công khai (P2PK) là phương thức nhận bitcoin ban đầu và không liên quan đến địa chỉ. Thay vào đó, như tên cho thấy, bitcoin được thanh toán trực tiếp cho khóa công khai bị lộ. Giao dịch bitcoin đầu tiên từ người này sang người khác đã sử dụng P2PK, khi Satoshi Nakamoto gửi tiền cho Hal Finney ở Khối 170.
P2PK không còn được sử dụng vì đây là cách nhận bitcoin đắt hơn, ít riêng tư hơn và kém an toàn hơn so với các phương thức tiếp theo.
Pay-to-Public-Key-Hash (P2PKH) đã có sẵn để sử dụng khi bitcoin bắt đầu và nó xuất hiện trên blockchain lần đầu tiên chưa đầy hai tuần sau khối khởi nguồn. P2PKH thực hiện một số cải tiến so với P2PK, chẳng hạn như sử dụng địa chỉ. Như đã thảo luận trong bài viết trước của chúng tôi, các địa chỉ chứa tổng kiểm tra giúp ngăn ngừa lỗi chính tả và mất bitcoin.
Địa chỉ P2PKH thường có độ dài 34 hoặc 33 ký tự (nhưng về mặt lý thuyết có thể ngắn tới 26 ký tự) và chúng được mã hóa ở định dạng Base58. Chúng bắt đầu bằng tiền tố 1 và hiện chịu trách nhiệm nhận và đảm bảo 43% nguồn cung bitcoin được khai thác, nhiều hơn bất kỳ loại địa chỉ nào khác.
Tạo địa chỉ P2PKH liên quan đến việc đặt một khóa chung thông qua các hàm băm SHA-256 và RIPEMD-160. Điều này rút ngắn lượng dữ liệu, từ đó giúp tiết kiệm không gian khối và phí giao dịch cho người dùng. Nó cũng đưa ra thêm khả năng chống lại kỹ thuật đảo ngược khóa riêng ngoài đường cong elip secp256k1 vốn được cho là không thể phá vỡ.
Pay-to-Multisig (P2MS) là một loại giao dịch tầm thường chỉ có liên quan trong thời gian ngắn và chưa bao giờ chịu trách nhiệm nắm giữ hơn 100 bitcoin cùng một lúc trên tất cả những người tham gia mạng. Tuy nhiên, P2MS là một phần lịch sử của bitcoin.
P2MS được giới thiệu dưới dạng tập lệnh tiêu chuẩn vào đầu năm 2012, theo quy định của BIP 11. Tuy nhiên, loại giao dịch này gặp phải các vấn đề tương tự như P2PK vì nó bao gồm các khóa công khai bị lộ và không sử dụng bất kỳ định dạng địa chỉ nào. Nó cũng giới hạn số lượng khóa công khai trong số đại biểu nhiều chữ ký ở mức ba. Trong vòng vài tháng, P2MS sẽ được thay thế bằng một phương pháp thay thế để nhận bitcoin theo thỏa thuận nhiều chữ ký có tên là P2SH, mà chúng tôi sẽ đề cập tiếp theo.
Pay-to-Script-Hash (P2SH) đã được giới thiệu với bitcoin dưới dạng soft fork theo BIP 16 vào ngày 1 tháng 4 năm 2012. Giống như hầu hết các fork, câu chuyện đằng sau nó rất hấp dẫn. P2SH có nhiều điểm chung với P2PKH. Sự khác biệt chính là địa chỉ được tạo bằng cách băm tập lệnh đổi quà thay vì băm một khóa chung.
Tập lệnh đổi quà có thể được coi là hướng dẫn được mã hóa chỉ định cách bitcoin nhận được đến địa chỉ P2SH có thể được chi tiêu trong tương lai. Có thể có rất nhiều khả năng, bao gồm nhiều khóa công khai khác nhau. Người nhận, không phải người gửi, xác định chi tiết tập lệnh và hướng dẫn chi tiêu không được hiển thị công khai cho đến khi bitcoin được chi tiêu ra khỏi địa chỉ.
Mặc dù người dùng nâng cao có thể xây dựng các tập lệnh phức tạp, nhưng cách sử dụng phổ biến nhất cho P2SH là tạo địa chỉ Nested SegWit (được đề cập bên dưới) và ví multisig. Ví dụ: một tập lệnh có thể bao gồm ba khóa chung và chỉ định rằng chữ ký từ bất kỳ hai khóa riêng tương ứng nào có thể sử dụng bitcoin. Điều này sẽ tạo ra một địa chỉ multisig 2 trong 3.
Địa chỉ P2SH có độ dài chính xác là 34 ký tự và chúng bắt đầu bằng tiền tố 3, như được chỉ định bởi BIP 13. Trước soft fork vào ngày 1 tháng 4, một số giao dịch đã thử nghiệm tiền tố thay thế này, tiền tố đầu tiên được tìm thấy trong Khối 170.052.
Pay-to-Witness-Public-Key-Hash (P2WPKH) là loại địa chỉ đầu tiên trong số hai loại địa chỉ được giới thiệu với bitcoin khi phân nhánh mềm SegWit vào tháng 8 năm 2017. Câu chuyện đằng sau cái soft fork cực kỳ quan trọng và đặc biệt gây tranh cãi này được ghi lại trong cuốn sách có tên The Blocksize War, do Jonathan Bier viết.
P2WPKH là biến thể SegWit của P2PKH, ở cấp độ cơ bản, có nghĩa là việc chọn loại địa chỉ này thay vì địa chỉ P2PKH cũ hơn sẽ giúp bạn tiết kiệm tiền phí giao dịch khi di chuyển bitcoin của mình.
Địa chỉ SegWit trông khá khác so với các loại địa chỉ cũ vì theo BIP 173, chúng sử dụng mã hóa Bech32 thay vì Base58. Đáng chú ý nhất là không có chữ in hoa trong Bech32. Địa chỉ P2WPKH có thể được xác định bằng tiền tố bc1q và độ dài ký tự chính xác là 42.
Pay-to-Witness-Script-Hash (P2WSH) là biến thể SegWit của P2SH. Ưu điểm chính của việc sử dụng P2WSH so với P2SH là nó có thể giúp giảm phí giao dịch và lý do chính để sử dụng hàm băm tập lệnh thay vì hàm băm khóa công khai là để phù hợp với các thỏa thuận nhiều chữ ký.
Giống như P2WPKH, địa chỉ P2WSH bắt đầu bằng tiền tố bc1q. Tuy nhiên, nó có độ dài ký tự dài hơn chính xác là 62. Không giống như các loại địa chỉ được đề cập cho đến nay, địa chỉ P2WSH được tạo chỉ bằng hàm băm SHA-256 mà không bao gồm RIPEMD-160, dẫn đến độ dài ký tự tăng lên. Điều này đã được thực hiện một cách thận trọng, bổ sung thêm khả năng bảo vệ khỏi một vectơ tấn công đa chữ ký khá phức tạp và cực kỳ khó xảy ra.
SegWit lồng nhau (còn được gọi là SegWit được bao bọc) về mặt kỹ thuật không phải là một loại địa chỉ khác với loại địa chỉ chúng tôi đã đề cập ở trên. Tuy nhiên, đây là một cách độc đáo để sử dụng các loại địa chỉ đã thảo luận trước đó theo cách tạm thời hữu ích cho cộng đồng bitcoin.
Khi phân nhánh mềm SegWit xảy ra, không phải tất cả các nút bitcoin, phần mềm và dịch vụ đều được nâng cấp ngay lập tức để hỗ trợ các loại địa chỉ SegWit gốc mới, P2WPKH và P2WSH. Chỉ những thực thể đã nâng cấp mới có thể gửi đến những địa chỉ mới này. Điều này có nghĩa là những người muốn có khả năng nhận bitcoin từ bất kỳ ai (kể cả những người chưa nâng cấp) chưa thể sử dụng ví SegWit gốc. Tuy nhiên, vì SegWit cung cấp phí giao dịch rẻ hơn nên hầu hết mọi người đều muốn bắt đầu sử dụng nó.
Giải pháp xảo quyệt cho vấn đề nan giải này là sử dụng loại giao dịch P2SH. Các thực thể chưa triển khai SegWit vẫn có thể gửi bitcoin đến các địa chỉ P2SH— như đã thảo luận ở trên, được xây dựng với tập lệnh đổi quà chỉ định hướng dẫn về cách chi tiêu bitcoin sau này. Hóa ra, những hướng dẫn này có thể kết hợp với mô hình chi tiêu SegWit mới, cung cấp cho người dùng một cầu nối để giảm phí. Do đó, các địa chỉ P2SH sử dụng thủ thuật này được gọi là Nested SegWit và chúng đóng một vai trò quan trọng trong quá trình áp dụng SegWit.
Nhìn bề ngoài, các địa chỉ Nested SegWit không thể phân biệt được với các địa chỉ P2SH khác, vì vậy nguồn cung bitcoin được giữ theo cách sắp xếp này là không thể biết được. Ngoài ra, vì tất cả các công cụ bitcoin hiện đại hiện có thể gửi trực tiếp đến các địa chỉ SegWit gốc nên không còn lý do chính đáng nào để sử dụng Nested SegWit nữa.
Pay-to-Taproot (P2TR) là loại địa chỉ mới nhất, được cung cấp bởi soft-fork Taproot vào tháng 11 năm 2021. Việc áp dụng P2TR vẫn còn khá thấp tại thời điểm viết bài và nhiều phần mềm và dịch vụ bitcoin vẫn đang tích hợp.
Trong khi P2WPKH và P2WSH được gọi là SegWit V0 thì P2TR được coi là SegWit V1. Đáng chú ý, P2TR sử dụng thuật toán chữ ký số có tên Schnorr, khác với định dạng ECDSA được sử dụng trong các loại giao dịch bitcoin trước đó. Chữ ký Schnorr có một số lợi thế, bao gồm giảm phí giao dịch bổ sung và tăng cường quyền riêng tư.
Về quyền riêng tư, việc tổng hợp khóa và chữ ký do Schnorr thực hiện cho phép các địa chỉ nhiều chữ ký không thể phân biệt được với các địa chỉ đơn chữ ký và các điều kiện chi tiêu cho địa chỉ P2TR không bao giờ được tiết lộ công khai. Người tạo địa chỉ thậm chí có thể bao gồm nhiều tập lệnh đổi quà tùy chỉnh để lựa chọn nhằm chi tiêu bitcoin sau này.
Địa chỉ P2TR dài 62 ký tự và sử dụng mã hóa Bech32m, một phiên bản được sửa đổi một chút của Bech32, như được mô tả trong BIP 350. Địa chỉ P2TR có thể được xác định bằng tiền tố bc1p duy nhất của chúng.
Bây giờ chúng tôi đã đề cập đến tất cả các phương pháp được tiêu chuẩn hóa để nhận bitcoin trực tuyến, một số thông tin nhanh và tính năng địa chỉ có thể được kết hợp thành một biểu đồ thuận tiện để tham khảo.