tác giả: SJORS PROVOOST

Nguồn: https://sprovoost.nl/2022/11/10/what-is-a-bitcoin-address/

Địa chỉ Bitcoin không phải là một phần của chuỗi khối Bitcoin, mà là mã thông báo mà phần mềm Bitcoin (ví) sử dụng để liên lạc nơi gửi Bitcoin: tới một khóa chung nhất định (P2PK) hoặc Hàm băm của khóa chung (P2PKH) , hàm băm của tập lệnh (P2SH), hàm băm của khóa công khai SegWit (P2WPKH) hoặc hàm băm của tập lệnh SegWit (P2WSH). Địa chỉ cũng chứa một số siêu dữ liệu về loại của nó.

(Lưu ý của người dịch: Các loại địa chỉ của Bitcoin sẽ tiếp tục tăng cùng với việc nâng cấp mạng Bitcoin và tiêu chuẩn hóa các phương pháp viết mã. Trên thực tế, các loại địa chỉ được đề cập ở trên, ngoại trừ P2PK và P2PKH, đã xuất hiện cùng với lần phát hành đầu tiên của Bitcoin. , phần còn lại đến sau. Hiện tại, do nâng cấp Taproot được kích hoạt vào năm 2021 nên Bitcoin có loại địa chỉ khác là "P2TR").

Địa chỉ bitcoin sử dụng hệ thống đánh số duy nhất để thể hiện các phương thức thanh toán trên. Bài viết này sẽ giới thiệu từng hệ thống đánh số khác nhau và đưa ra những phân tích chuyên sâu về ưu điểm của địa chỉ Bitcoin nói chung và địa chỉ bech32. Ngoài ra, chúng tôi sẽ giải thích lỗ hổng (mối đe dọa thấp hơn) có trong phiên bản đầu tiên của địa chỉ bech32 đến từ đâu và cách giải quyết. Cuối cùng, chúng tôi đề cập đến tác động của điện toán lượng tử.

- Bài viết này được trích từ cuốn sách mới của tôi "Bitcoin: Nghiên cứu chưa hoàn thành" -

Bối cảnh lịch sử

Khi bạn gửi Bitcoin cho ai đó, về cơ bản bạn đang tạo một giao dịch có nhiều đầu vào và ít nhất một đầu ra. Đầu ra xác định ai có thể chi tiêu chúng thông qua các ràng buộc có sẵn (về mặt pháp lý được gọi là các trở ngại, giới hạn việc chuyển quyền sở hữu một tài sản).

Gánh nặng tầm thường nhất là cho phép mọi người tiêu bitcoin. Đây không phải là một ý tưởng hay vì Bitcoin sẽ bị đánh cắp nhanh chóng. Do đó, trong những ngày đầu phát triển của Bitcoin, phần lớn Bitcoin trên blockchain chỉ có thể sử dụng hai ràng buộc: Trả tiền cho khóa công khai (P2PK) hoặc Trả tiền cho khóa công khai-Hash (P2PKH). Điều trước có thể được hiểu là “Chỉ những người nắm giữ khóa riêng tương ứng với khóa chung mới có thể tiêu Bitcoin”.

Vào thời điểm đó, chúng tôi cũng có thể gửi Bitcoin đến địa chỉ IP của người nhận, nhưng tính năng này đã ngừng hoạt động vào năm 2012. Để sử dụng nó, bạn cần kết nối với địa chỉ IP của người nhận thanh toán, yêu cầu khóa chung từ người nhận thanh toán và người nhận thanh toán sẽ cung cấp cho bạn khóa chung1. Sau đó, ví của bạn sẽ tạo Bitcoin bằng tập lệnh P2PK.

Quy trình công việc này ngày nay có vẻ lạ2, nhưng nó phù hợp với mô hình chung của các ứng dụng ngang hàng như Napster và Kazaa vào thời điểm đó, đó là kết nối trực tiếp với người khác và tải xuống mọi thứ từ họ. Ngày nay, rất có thể bạn không biết địa chỉ IP của bạn mình và nếu họ đang sử dụng thiết bị di động, địa chỉ IP của họ thậm chí có thể thay đổi liên tục. Mặc dù bạn có thể hướng dẫn nút Bitcoin của mình kết nối cụ thể với nút của bạn bè, nhưng nhìn chung nó sẽ chỉ kết nối với các nút ngẫu nhiên, xem Chương 2.

Phương thức giao dịch phổ biến hơn tương tự như chuyển khoản ngân hàng. Người nhận cung cấp cho bạn một địa chỉ và bạn gửi bitcoin đến địa chỉ này, giống như bạn gửi tiền vào tài khoản ngân hàng. Ban đầu, tất cả chúng tôi đều sử dụng P2PKH làm địa chỉ (ý nghĩa của P2PKH được giải thích bên dưới).

Bằng cách này, giao dịch không được gửi trực tiếp đến người nhận thanh toán mà được truyền qua tất cả các nút trong mạng và cuối cùng được nút khai thác phát hiện và đóng gói thành một khối. Có thể nút đối tác của bạn đã nhìn thấy giao dịch từ nút ngang hàng hoặc đã nhận được khối trong đó giao dịch xảy ra.

Phương thức giao dịch thứ ba là khai thác, gửi phần thưởng khối thu được từ việc khai thác cho chính bạn. Ban đầu, phần mềm Bitcoin có phần mềm khai thác được tích hợp sẵn. Vì vậy, ngay khi bạn tải xuống phần mềm Bitcoin, phần mềm Bitcoin của bạn sẽ bắt đầu khai thác và sau đó gửi Bitcoin đến ví của bạn, trong trường hợp này không cần phải trao đổi địa chỉ. Tất cả các Bitcoin này đều sử dụng P2PK làm ràng buộc 3.

Địa chỉ là gì?

Địa chỉ là một cách thuận tiện để chỉ ra tập lệnh nào cần đưa vào blockchain. Như chúng tôi đã nêu ở trên, mục đích của tập lệnh là áp đặt các hạn chế đối với Bitcoin và chỉ cho phép người nhận chi tiêu chúng4. Bản thân địa chỉ đó không tồn tại trên blockchain và địa chỉ đó thậm chí không chứa một tập lệnh hoàn chỉnh.

Trong số hai loại tập lệnh được sử dụng nhiều nhất trước đây, địa chỉ chỉ được sử dụng cho Pay-to-Public-Key-Hash (P2PKH). Khi một ví nhìn thấy một địa chỉ như vậy, nó sẽ tạo ra một tập lệnh yêu cầu người tiêu bitcoin trong đó phải giữ khóa chung tương ứng cho hàm băm đó (tập lệnh thực tế được cung cấp trong Chương 10). Chỉ hàm băm được công khai và khóa chung vẫn được giữ bí mật cho đến khi người nhận chi tiêu bitcoin.

Địa chỉ P2PKH bắt đầu bằng số 1, theo sau là hàm băm của khóa chung. Địa chỉ được mã hóa base58, như trong ví dụ sau:

1HLoFgMiDL3hvACAfbkDUjcP9r9veUcqAF

Hệ thống cơ sở là gì?

Để hiểu base58, trước tiên chúng ta cần hiểu các nguyên tắc cơ bản của hệ thống cơ sở.

Lấy base10 làm ví dụ, hãy coi nó như 10 ngón tay của bạn. Vì vậy, nếu bạn muốn thể hiện số 115 (1, 1, 5), bạn sẽ thực hiện ba cử chỉ bằng cả hai tay tương ứng với 1, 1, 5. Kể từ khi con người phát minh ra giấy và bảng đất sét, bạn cũng có thể viết những con số này bằng bút, tiện lợi hơn nhiều so với việc sử dụng ngón tay. Do đó, cơ số 10 là hệ thập phân sử dụng 10 ký hiệu khác nhau, sử dụng nhiều cách kết hợp khác nhau của 10 ký hiệu này để biểu thị bất kỳ số nào (số nguyên).

Ngoài ra, còn có nhiều hệ thống cơ sở khác nhau. Ví dụ, người Babylon cổ đại đã sử dụng base60. Để đọc mã máy, chúng ta thường sử dụng hệ thập lục phân hay còn gọi là base16 – sử dụng 16 ký tự chữ số từ 0 đến 9 và các chữ cái từ A đến F. Trong khi đó, bên trong máy tính, base2 (hệ số nhị phân) lại được ưa chuộng hơn vì bóng bán dẫn chỉ có hai trạng thái là bật và tắt. Điều này có nghĩa là mọi thứ được thực hiện chỉ với hai số 0 và 1 và bạn có thể sử dụng chúng để biểu thị bất kỳ số nào.

Satoshi Nakamoto đã giới thiệu hệ thống base58, sử dụng 58 ký hiệu khác nhau: các số từ 0 đến 9 và hầu hết các chữ cái viết thường và viết hoa trong bảng chữ cái. Tuy nhiên, một số chữ cái và số dễ bị người dùng nhầm lẫn và xác định sai - ví dụ: số 0 và chữ O viết hoa, chữ I viết hoa và chữ l thường.

Bạn đã bao giờ xem mã nguồn của tệp đính kèm email chưa? Một dãy số lạ. Đây là base64, còn base58 ra đời trên nền tảng base64. Tuy nhiên, base64 chứa các ký tự như dấu gạch dưới, dấu cộng, dấu bằng và dấu gạch chéo. base58 loại bỏ các ký tự này, giúp việc kiểm tra trực quan dễ dàng hơn và có thể áp dụng hiệu quả cho các URL.

Base58 và Pay-to-Public-Key-Hash

Điều này có liên quan gì đến P2PKH? Địa chỉ P2PKH bắt đầu bằng 1, theo sau là hàm băm khóa công khai được mã hóa base58.

Đây là thông tin bạn cần gửi cho người khác khi muốn nhận Bitcoin từ họ. Bạn cũng có thể chỉ cần gửi cho họ 0x005 và khóa chung. Có thể họ có thể dịch thành công 0x00, nhưng rất có thể là không.

Về lý thuyết, bạn có thể gửi cho người khác một tập lệnh Bitcoin được biểu thị bằng hệ thập lục phân (định dạng được sử dụng trên chuỗi khối) vì tập lệnh Bitcoin là các thông điệp nhị phân. Trên blockchain, một tập lệnh Bitcoin như thế này có nghĩa là: “Nếu người này có hàm băm khóa công khai chính xác và khóa chung tương ứng với nó, bạn có thể chi tiêu số Bitcoin này nếu bạn muốn tìm hiểu sâu hơn về cách thức hoạt động của Bitcoin Script.” trong Chương 10.

Mặc dù có rất nhiều cách thể hiện để lựa chọn nhưng mọi người thường chọn các định dạng địa chỉ được tiêu chuẩn hóa. Điều này giải thích tại sao tất cả các địa chỉ Bitcoin truyền thống đều bắt đầu bằng 1 và có cùng độ dài.

Ngoài việc được sử dụng để gửi địa chỉ Bitcoin, base58 còn có thể được sử dụng để chuyển khóa riêng. Trong trường hợp này, ký hiệu đứng đầu là 5 (biểu thị 128 là byte phiên bản), theo sau là khóa riêng.

Trước đây, người dùng sử dụng ví giấy có thể in ra. Nếu chúng được tạo ra một cách an toàn mà không có cửa sau thì tờ giấy có một chuỗi bắt đầu bằng "1" ở một bên và một chuỗi bắt đầu bằng "5" ở phía bên kia, với lưu ý rằng chỉ có thể trình bày các địa chỉ Bitcoin, khóa riêng tư phải không được chia sẻ.

Ngoài ra còn có các địa chỉ bắt đầu bằng "3", có nghĩa là Bitcoin bị khóa trong hàm băm tập lệnh chứ không phải hàm băm khóa chung. Chúng tôi sẽ giới thiệu Pay to Script Hash (P2SH) trong Chương 10. Những địa chỉ như vậy thường là địa chỉ nhiều chữ ký, nhưng cũng có thể là địa chỉ SegWit6.

Mặc dù địa chỉ base58 hoạt động tốt nhưng vẫn còn chỗ để cải thiện. Vì vậy, chúng ta có bech32.

bech32 xuất hiện

Vào tháng 3 năm 2017, Pieter Wuille đã nói về định dạng địa chỉ mới, bech32. Bech32 đã được sử dụng kể từ khi kích hoạt thành công SegWit. Đúng như tên gọi, bech32 là một hệ thống base32. Nghĩa là, bạn có thể sử dụng hầu hết tất cả các chữ cái và tất cả các số, ngoại trừ một số ít có thể gây nhầm lẫn.

Video giải thích: https://youtu.be/NqiN9VFE4CU

Điểm khác biệt lớn nhất giữa bech32 và base58 là chữ hoa và chữ thường không bị trộn lẫn. Mỗi chữ cái sẽ chỉ xuất hiện một lần (tất cả đều là chữ hoa hoặc toàn chữ thường), vì vậy sẽ dễ đọc hơn nhiều. Ánh xạ chính xác giữa mỗi chữ cái hoặc số và giá trị tương ứng của nó là cố định, nhưng khá tùy ý: Q chỉ có nghĩa là 0, P chỉ có nghĩa là 1, không có ý nghĩa sâu sắc nào đằng sau nó.

- bảng ánh xạ bech32. Ví dụ: q có nghĩa là 0 và 3 có nghĩa là 17 (1+16) -

Địa chỉ bech327 bao gồm hai phần được phân tách bằng "1", ví dụ: bc1q9kdcd08adkhg35r4g6nwu8ae4nkmsgp9vy00gf.

Nửa đầu có thể đọc được một cách có chủ ý, ví dụ: "bc" (đối với Bitcoin) hoặc "Inbc" (Lightning Network trên Bitcoin). Các giá trị được biểu thị bằng các chữ cái như “b” và “c” không có ý nghĩa. Chúng tồn tại chỉ để mọi người nhận ra: "Hiểu rồi, nếu địa chỉ bắt đầu bằng 'bc', nó sẽ đề cập đến Bitcoin là tiền điện tử." Tuy nhiên, ví sẽ kiểm tra xem những giá trị này có tồn tại dưới dạng kiểm tra độ tin cậy hay không và những giá trị này ​​cũng được bao gồm trong tổng kiểm tra.

"1" chỉ là ký tự phân cách và không đại diện cho bất kỳ giá trị nào. Nếu bạn nhìn vào bảng ánh xạ của bech32, bạn sẽ thấy "1" không được bao gồm, nghĩa là "bỏ qua".

Nửa sau bắt đầu với số phiên bản SegWit. Phiên bản 0 được biểu thị bằng Q(bc1q…) (xem Chương 3). Phiên bản 1 được chúng tôi gọi là Taproot (xem Phần 4 của cuốn sách này), được ký hiệu là "P" (bc1p...). Trong trường hợp SegWit phiên bản 0, số phiên bản sẽ theo sau là 20 hoặc 32 byte, tương ứng thể hiện hàm băm khóa công khai hoặc hàm băm tập lệnh. Sự khác biệt về độ dài là do SegWit sử dụng hàm băm SHA256 của tập lệnh (32 byte) thay vì hàm băm RIPEMD160 của tập lệnh (20 byte).

Trong base58, hàm băm tập lệnh có cùng độ dài với hàm băm khóa chung. Nhưng trong SegWit, độ dài của cả hai là khác nhau. Vì vậy, chỉ cần nhìn vào độ dài của địa chỉ, bạn có thể biết ngay liệu bạn đang trả tiền theo tập lệnh hay hàm băm khóa công khai. Ngẫu nhiên, Taproot loại bỏ sự khác biệt về độ dài này, cải thiện hơn nữa quyền riêng tư.

Do đó, bench32 có đặc điểm là chỉ sử dụng 32 ký tự cho nửa sau của địa chỉ và không khác nhiều so với base58. Xem tính năng này và bạn sẽ biết: "Aha, đây là địa chỉ P2PKH." Trong trường hợp này, Pay-to-Witness-Public-Key-Hash (P2WPKH), trong đó "Witness" đề cập đến SegWit, nhưng ý tưởng cốt lõi vẫn giữ nguyên: Con người và máy tính có thể xác định loại địa chỉ dựa trên tiền tố ngắn, theo sau là hàm băm của khóa chung hoặc tập lệnh.

trò chơi phi tiêu 32 chiều

Tuy nhiên, sự đơn giản không phải là lợi thế duy nhất. Một ưu điểm khác là sửa lỗi, ít nhất là phát hiện lỗi.

Nếu bạn nhập sai địa chỉ, điều tồi tệ nhất có thể xảy ra là bạn gửi Bitcoin đến sai mã băm khóa công khai. Khi người nhận cố gắng chi tiêu Bitcoin, họ sẽ thấy rằng hàm băm của khóa công khai của mình không khớp với các yêu cầu của blockchain vì trước đó người gửi đã nhập sai địa chỉ. Bitcoin này sẽ không bao giờ được phục hồi.

May mắn là địa chỉ base58 có tổng kiểm tra ở cuối. Bằng cách này, nếu bạn nhập sai địa chỉ, việc xác minh tổng kiểm tra ở cuối địa chỉ sẽ không thành công. Ví của bạn sẽ cảnh báo bạn và từ chối gửi giao dịch (blockchain sẽ không bảo vệ bạn, nhưng ví của bạn thì có). Tuy nhiên, nếu bạn thực sự không may mắn, bạn vẫn có thể lấy được tổng kiểm tra chính xác ngay cả khi mắc lỗi.

Bech32 được thiết kế để tránh những sự trùng hợp cực độ như vậy. Ngoài ra, Bech32 không chỉ cho bạn biết liệu bạn có mắc sai lầm hay không mà còn cho bạn biết bạn đã mắc lỗi ở đâu. Phương pháp cụ thể là lấy tất cả byte của địa chỉ và băm chúng bằng một số công thức toán học phức tạp. Ngay cả khi bạn mắc 4 lỗi, Bech32 vẫn sẽ biết bạn mắc lỗi ở đâu và giá trị thực tế là bao nhiêu. Nếu bạn mắc nhiều hơn 4 lỗi thì Bech32 không thể làm gì được.

Hãy minh họa bằng một phép loại suy: Bạn vẽ một loạt các vòng tròn không chồng lên nhau trên tường. Mắt bò của mỗi vòng tròn biểu thị một giá trị đúng, trong khi các điểm khác trong vòng tròn biểu thị lỗi đầu vào. Nếu bạn là một người chơi phi tiêu điêu luyện, hầu hết các trường hợp bạn sẽ bắn trúng hồng tâm, điều đó có nghĩa là bạn đang đánh mất giá trị đúng đắn. Nếu bạn hơi hụt mắt bò nhưng vẫn nằm trong vòng tròn, điều đó có nghĩa là giá trị bạn nhập hơi sai lệch. Kiểm tra lỗi là biết rằng bạn đã bỏ lỡ điểm mấu chốt. Việc sửa lỗi liên quan đến việc di chuyển phi tiêu đến mắt bò gần nhất.

Ý tưởng ở đây là bạn muốn làm cho vòng tròn càng rộng càng tốt để chứa những người chơi phi tiêu bất cẩn nhất, nhưng bạn không muốn lãng phí quá nhiều không gian. Tương tự như vậy, chúng tôi không muốn tạo một địa chỉ Bitcoin dài hàng trăm ký tự. Đây là vấn đề tối ưu hóa yêu thích của các nhà toán học.

Không giống như bức tường 2D, bech32 giống như bức tường 32D với siêu cầu 32D. Khi bạn nhập địa chỉ của mình, sẽ có một chút sai lệch ở đâu đó trong không gian 32 chiều này, nhưng dù trông như thế nào, bạn vẫn ở bên trong siêu cầu này. Trong trường hợp này, ví của bạn biết điều gì sai và có thể ngăn chặn hiệu quả việc mất Bitcoin do gửi sai địa chỉ8.

lỗ hổng bech32

Vào năm 2019, mọi người phát hiện ra rằng nếu ký tự cuối cùng của địa chỉ bech32 là P và bạn vô tình nhập một hoặc nhiều Q sau đó thì quá trình xác minh tổng kiểm tra sẽ vẫn vượt qua và bạn sẽ không nhận được lời nhắc lỗi đầu vào. Phần mềm ví của bạn sẽ cho rằng địa chỉ đã được nhập chính xác, cho phép bạn gửi Bitcoin đến sai địa chỉ, dẫn đến việc Bitcoin không thể sử dụng được, như chúng tôi đã giải thích ở trên.

Tin vui là bech32 chỉ hoạt động với SegWit và địa chỉ SegWit có giới hạn độ dài - chúng chỉ có thể là 20 byte hoặc 32 byte. May mắn thay, nếu bạn nhập thêm Q sau một địa chỉ dài 20 hoặc 32 byte thì địa chỉ bạn nhập sẽ không hợp lệ vì vượt quá giới hạn độ dài. Ví của bạn sẽ nhận thấy vấn đề này và từ chối gửi bitcoin. Ban đầu người ta cân nhắc đưa ra giới hạn độ dài địa chỉ tương tự cho Taproot, nhưng giải pháp được đề cập bên dưới đã loại bỏ nhu cầu này. Độ dài địa chỉ linh hoạt sẽ giúp chúng tôi cải thiện Taproot trong tương lai.

bech32m ra đời

Để khắc phục các lỗ hổng của bech32, một tiêu chuẩn mới có tên bech32m đã được đề xuất9. bech32m thực sự là một thay đổi rất đơn giản: một số bổ sung được thêm vào công thức tổng kiểm tra bech32 để đảm bảo rằng bất kỳ ký tự bổ sung nào sẽ tạo ra tổng kiểm tra không hợp lệ.

Tiêu chuẩn mới này chỉ áp dụng cho các địa chỉ Taproot và các địa chỉ trong tương lai. Không có gì thay đổi đối với địa chỉ SegWit vì chúng đã được bảo vệ bởi giới hạn độ dài 20 hoặc 32 byte. Tại thời điểm viết bài, hầu hết phần mềm ví đều hỗ trợ tiêu chuẩn bech32m mới.

Điều gì đã khiến tôi rũ bỏ nỗi lo lắng và yêu thích điện toán lượng tử?

Ngẫu nhiên, Pay-to-Public-Key-Hash (P2PKH) được coi là có khả năng chống lại các cuộc tấn công lượng tử tốt hơn vì bạn không cần tiết lộ khóa chung của mình. Nhược điểm là hàm băm chiếm nhiều không gian hơn – nhưng đây không phải là vấn đề vào thời điểm đó vì các khối chưa gần đầy.

Nhiều người lo lắng rằng máy tính lượng tử cuối cùng sẽ làm suy yếu tính bảo mật của mật mã Bitcoin, tạo cơ hội cho tin tặc lượng tử đánh cắp Bitcoin. Nếu họ đánh cắp hàng triệu Bitcoin, điều đó thậm chí có thể gây ra sự sụp đổ thị trường.

Vấn đề là mặc dù P2PKH được áp dụng rộng rãi nhưng các khóa công khai của 5 triệu đến 10 triệu Bitcoin đó đã được công khai. Trớ trêu thay, với rất nhiều Bitcoin dễ bị tin tặc lượng tử tấn công, việc cố gắng bảo vệ số Bitcoin còn lại theo cách này chẳng có ý nghĩa gì. Ngay cả khi Bitcoin của bạn được bảo vệ khỏi bị đánh cắp vì bạn sử dụng P2PKH, chúng chắc chắn sẽ trở nên vô giá trị do giá sụt giảm.

Nhà vật lý Stepan Snigirev và nhà toán học Andrew Poelstra giải thích khả năng các cuộc tấn công lượng tử gây ra hậu quả tàn khốc trong ngắn hạn và các biện pháp đối phó có thể có trong hai tập của podcast có tựa đề Bitcoin đã làm gì.

Không gian khối hiện đang trở nên rất khan hiếm, do đó, việc không phải lưu trữ các hàm băm khóa công khai trong không gian khối có giá trị sẽ giúp người dùng tiết kiệm tiền. Đây là lý do tại sao trong soft fork Taproot mới (xem Phần 4 của cuốn sách này), địa chỉ Bitcoin lại trở thành P2PK10. Xin lưu ý rằng việc sử dụng địa chỉ Taproot là không bắt buộc nên nếu không đồng ý với lý do trên, bạn có thể chọn không sử dụng Taproot.

chú thích cuối trang

1. Để thỏa mãn sự tò mò của những người đam mê mã “khảo cổ học”: nút người gửi sẽ có hộp thoại UI nhắc số tiền chuyển và địa chỉ IP. Hàm StartTransfer() tạo một giao dịch séc trống trong đó thứ tự kiểm tra trên nút người nhận sẽ chèn tập lệnh P2PK (dưới dạng scriptPubKey). OnReply2() sau đó chèn số tiền, ký giao dịch, trả lại giao dịch cho người nhận và phát nó. mã nguồn. ↩

2. Và nó không an toàn, Satoshi Nakamoto cũng thừa nhận điều này. ↩

3. Tại sao phiên bản do Satoshi Nakamoto phát hành ban đầu lại hỗ trợ cả P2PK và P2PKH? Chúng tôi không chắc chắn chính xác lý do tại sao. Phương thức thanh toán P2PK thực sự chỉ được sử dụng để thanh toán địa chỉ IP và trả phần thưởng khối cho người khai thác. Không yêu cầu sự tương tác của con người. Trong các tình huống liên quan đến tương tác giữa con người với nhau, người dùng sử dụng P2PKH. Địa chỉ được sử dụng đề cập đến P2PKH chứ không phải P2PK. Các hệ thống tự động không cần đến khái niệm địa chỉ vì chúng cũng có thể xử lý các tập lệnh nên không cần đến các khái niệm như địa chỉ P2PK. ↩

4. Cho đến nay, kịch bản đã tương tự như tài khoản ngân hàng. Như chúng ta sẽ tìm hiểu ở Chương 10, các tập lệnh còn làm được nhiều việc hơn là chỉ giữ tiền cho chủ sở hữu. ↩

5. Một cặp số thập lục phân có tiền tố 0x thường được sử dụng để biểu thị một byte, có thể biểu thị 16 × 16 = 256 giá trị khác nhau. Do đó, 0x00 đại diện cho một byte và giá trị của nó là 0. ↩

6. Như đã giải thích trong Chương 3, SegWit thường sử dụng địa chỉ bech32. Tuy nhiên, phải mất một thời gian dài cho đến khi tất cả các ví và sàn giao dịch đều hỗ trợ thanh toán đến địa chỉ bech32. Để tiếp tục tận dụng một số lợi ích của SegWit, chúng tôi đang giới thiệu một loại địa chỉ trông giống như P2SH thông thường từ góc nhìn của người gửi, nhưng có sự kỳ diệu của SegWit đằng sau nó. Loại địa chỉ này được gọi là địa chỉ P2SH-P2WPKH. ↩

7.bech32 do BIP173 đề xuất. ↩

8. Ví Ethereum ban đầu không sử dụng tính năng phát hiện lỗi vì tiêu chuẩn địa chỉ của chúng thiếu tổng kiểm tra. Mặc dù EIP55 đã giới thiệu tính năng tổng kiểm tra vào năm 2016 nhưng không phải tất cả các ví đều thực hiện phát hiện lỗi. Thậm chí đến tận cuối năm 2017, mọi người vẫn bị mất ETH do nhập sai địa chỉ. ↩

9.bech32m do BIP 350 đề xuất. ↩

10. Xem ghi chú của BIP 341 để biết lý do cụ thể. ↩