Tiêu đề gốc: "Lịch sử phát triển Bitcoin chưa đầy đủ"
Tác giả gốc: 0xB10C
Bản tổng hợp gốc: Gaurav Agrawal, người đam mê Ethereum

Bài viết này sẽ thảo luận về đề xuất nâng cấp Bitcoin Taproot, sẽ giới thiệu nhiều tính năng mới. Bài viết này sẽ phân tích Taproot từ nhiều cấp độ kỹ thuật khác nhau, giới thiệu các công nghệ liên quan đến quá trình nâng cấp này và những lợi ích mà những công nghệ này sẽ mang lại cho người dùng Bitcoin.
Taproot được đề xuất lần đầu tiên vào năm 2018 bởi người đóng góp cho Bitcoin Core, Gregory Maxwell. Việc triển khai này hiện đang được phát triển. Nếu không có Taproot, các giao dịch phức tạp này (khóa thời gian, nhiều chữ ký) yêu cầu nhiều giao dịch để hoàn thành và do đó có thể dễ dàng thất bại.
Taproot có thể nâng cao tính riêng tư của Bitcoin bằng cách cho phép các giao dịch phức tạp (đa chữ ký, khóa thời gian) được thực hiện giống như một giao dịch Bitcoin đơn lẻ.
Bản nâng cấp Taproot bao gồm ba thay đổi (khái niệm) kỹ thuật quan trọng để nâng cao khả năng mở rộng, quyền riêng tư và tính linh hoạt của Bitcoin.
- P2SH (Lưu ý của người dịch: P2SH không phải là một phần trong bản nâng cấp của Taproot, nhưng nó có thể giúp bạn hiểu mục đích nâng cấp của Taproot)
- MAST
- Chữ ký Schnorr
Chúng ta sẽ thảo luận về ba khái niệm này từ cấp độ kỹ thuật để hiểu bản nâng cấp Taproot sẽ mang lại điều gì cho người dùng Bitcoin Những lợi ích là gì.
Địa chỉ Bitcoin là một chuỗi các chữ cái và số. Người dùng có thể chia sẻ nó với người khác để nhận BTC từ người khác. Có hai tiêu chuẩn chính cho giao dịch Bitcoin: Pay-to-PubKeyHash (P2PKH) và Pay-to-ScriptHash (P2SH).
Trước khi thảo luận về 2 khái niệm P2SH (Pay To Script Hash) và P2PKH (Pay-To-PubKey Hash), trước hết chúng ta làm quen với kiến thức nền tảng về Bitcoin:
p>
- Trong mạng Bitcoin, Bitcoin có dạng UTXO. UTXO là tên viết tắt của Đầu ra Giao dịch chưa chi tiêu (TX), nghĩa là một đơn vị có mệnh giá thay đổi được hình thành sau khi thực hiện giao dịch Bitcoin. Ví dụ: bạn có 10 BTC trong ví Bitcoin của mình và bạn muốn chuyển 5 BTC cho bạn bè. Chuỗi khối Bitcoin được xử lý khác nhau. Nó sẽ tiêu hết 10 BTC (toàn bộ số dư), chuyển 5 BTC sang ví của bạn bè và để lại 5 BTC còn lại (10 BTC - 5 BTC = 5 BTC) vào ví của chính bạn. Bây giờ, bạn và bạn của bạn mỗi người nắm giữ 5 BTC chưa chi tiêu.
- Bitcoin sử dụng các tập lệnh (một vài dòng mã) để đưa ra các điều kiện chi tiêu BTC/UTXO. Các tập lệnh được sử dụng như một cơ chế khóa.
- BTC bị khóa trong tập lệnh. Khi tập lệnh trả về thành công (tức là đáp ứng điều kiện), BTC sẽ được mở khóa.
- Bất kỳ ai cũng có thể gửi BTC đến bất kỳ địa chỉ Bitcoin nào. BTC bị khóa chỉ có thể được sử dụng khi đáp ứng một số điều kiện nhất định được xác định trong tập lệnh. Tập lệnh xác định cách người nhận có thể chi tiêu số BTC nhận được. Khi bắt đầu một giao dịch, người gửi sẽ đưa một tập lệnh có tên "PubKey Script (còn gọi là tập lệnh khóa)" vào giao dịch. Người nhận (khi chi tiêu trong tương lai) cần tạo một "tập lệnh chữ ký (còn gọi là tập lệnh mở khóa)", là tập hợp các tham số dữ liệu thỏa mãn tập lệnh PubKey. Tập lệnh đã ký còn được gọi là "scriptSig" trong mã.
- Trong ví dụ trên, khi bạn gửi 5 BTC cho bạn bè, tập lệnh khóa cũng sẽ được đưa vào giao dịch. Nếu bạn của bạn muốn chi tiêu số BTC này, tập lệnh mở khóa phải được tạo đáp ứng các điều kiện được chỉ định trong tập lệnh khóa.
Trả tiền cho PubKeyHash là một phương thức truyền thống Định dạng địa chỉ bitcoin. Địa chỉ của nó bắt đầu bằng số 1.
Chỉ chủ sở hữu địa chỉ P2PKH mới có thể mở khóa tập lệnh PubKey và sử dụng BTC nhận được bằng cách cung cấp hàm băm khóa chung và chữ ký khóa riêng. Khóa riêng được sử dụng để chứng minh quyền sở hữu giá trị băm của khóa chung.
Như chúng ta đã thảo luận ở trên, tập lệnh xác định các điều kiện theo đó BTC trên một địa chỉ cụ thể có thể được chi tiêu. Khi các điều kiện cụ thể được đáp ứng và xác minh bởi mạng, BTC trên địa chỉ đó sẽ được mở khóa để chi tiêu.
Quy trình này diễn ra như thế nào? - Trước tiên, người nhận tạo tập lệnh PubKey và chia sẻ nó với người gửi. Người gửi thêm tập lệnh PubKey này vào giao dịch khi gửi BTC. Khi nhận BTC, nếu người nhận muốn mở khóa các UTXO BTC này, họ phải cung cấp hàm băm khóa chung và chữ ký khóa riêng và đáp ứng các điều kiện được đề cập trong tập lệnh PubKey.

Ví dụ: những điều kiện này có thể là:
- Cần ít nhất hai chữ ký để mở khóa BTC.
- Cung cấp mật khẩu để mở khóa.
- BTC sẽ mất một thời gian để được mở khóa.
Các tình huống trên có thể được dùng làm điều kiện để mở khóa BTC.
Khi gửi Bitcoin, người gửi cần đưa tập lệnh PubKey vào giao dịch. Do đó, điều này làm tăng quy mô giao dịch, dẫn đến phí giao dịch cao hơn khoảng 5 lần so với giao dịch thông thường.
Ở đây, người gửi phải chịu thêm chi phí. Pay-to-ScriptHash giúp người gửi tránh được chi phí bổ sung này.
Pay-to-Script Hash (P2SH) Có Giúp người gửi tránh được chi phí bổ sung và chuyển trách nhiệm này (chi phí bổ sung) sang người nhận, người thực sự cần sử dụng các điều kiện được chỉ định trong tập lệnh khóa. Địa chỉ Bitcoin Pay-to-ScriptHash bắt đầu bằng số 3.
Theo tiêu chuẩn giao dịch này, người gửi không cần đưa các tập lệnh PubKey dài vào giao dịch của họ. Ở đây, tập lệnh khóa được thay thế bằng hàm băm của tập lệnh đổi thưởng. Giá trị băm của tập lệnh đổi thưởng được tính từ tập lệnh đổi thưởng. Tập lệnh quy đổi tương tự như tập lệnh PubKey và chứa các điều kiện mà người nhận phải đáp ứng trước khi có thể chi tiêu đầu ra chưa chi tiêu. Người gửi chỉ cần cho biết hàm băm của tập lệnh quy đổi trong giao dịch. Băm tập lệnh quy đổi có thể được dịch sang địa chỉ Bitcoin tiêu chuẩn và người gửi có thể gửi BTC đến các địa chỉ này mà không cần thực hiện bất kỳ điều gì đặc biệt hoặc phải trả thêm phí.
Khi người nhận muốn mở khóa BTC trên địa chỉ P2SH này, họ cần tạo tập lệnh quy đổi có cùng giá trị băm và đưa nó vào giao dịch. Do đó, quy mô giao dịch được người nhận sử dụng để mở khóa UTXO tăng lên, cũng như chi phí thực hiện giao dịch cũng tăng theo.
Ví dụ: Alice muốn gửi 10 BTC cho Bob. Alice phải đưa mã băm của tập lệnh quy đổi vào giao dịch. Đầu tiên, Bob tạo tập lệnh quy đổi và sau đó gửi giá trị băm của tập lệnh quy đổi cho Alice để Alice có thể thêm hàm băm vào giao dịch và bắt đầu giao dịch. Nếu Bob muốn sử dụng UTXO này, anh ấy phải tạo tập lệnh mở khóa có cùng giá trị băm và đáp ứng các điều kiện được đề cập trong tập lệnh.
Đừng quên, Alice chỉ cần thêm hàm băm của tập lệnh đổi quà vào giao dịch chứ không phải toàn bộ tập lệnh. Vì vậy, Alice không phải chịu thêm chi phí.
Sử dụng giá trị băm thay vì các tập lệnh dài .
Người gửi có thể đưa bất kỳ số lượng băm tập lệnh quy đổi nào vào giao dịch mà không cần biết các điều kiện chi tiêu được chỉ định trong tập lệnh.
Giảm gánh nặng phí giao dịch cho người gửi.
(...)
MAST là tên viết tắt của Cây cú pháp trừu tượng Merklized.
Nếu bạn muốn chi tiêu BTC từ địa chỉ P2SH, bạn phải tạo tập lệnh đổi thưởng có cùng hàm băm và đưa nó vào giao dịch. Nếu có quá nhiều điều kiện chi tiêu được chỉ định trong tập lệnh, khối lượng giao dịch sẽ trở nên cực kỳ lớn. MAST có thể giải quyết vấn đề này rất tốt.
Cây cú pháp trừu tượng Merkle là sự kết hợp giữa cây Merkle và cây cú pháp trừu tượng.
Giống như Pay To Script Hash (P2SH) là khoản thanh toán cho tập lệnh có giá trị băm tương đương, MAST là khoản thanh toán mặc định cho một tập lệnh có giá trị băm tương tự như vậy. MAST tập hợp từng điều kiện trong một tập hợp điều kiện lớn thành cây băm (còn gọi là cây Merkle) và giá trị gốc của cây Merkle là giá trị băm, được băm theo tất cả các điều kiện.
Đầu tiên thực hiện tính toán hàm băm trên tất cả các tập lệnh (điều kiện); sau đó so sánh các giá trị băm được tính toán với hàm băm liền kề các giá trị được kết hợp để tính toán hàm băm nhằm tạo ra một tập hợp giá trị băm mới. Quá trình tính toán băm theo cặp này được lặp lại cho đến khi tính được giá trị băm cuối cùng. Giá trị băm này là gốc Merkle.
Giả sử có bốn bộ điều kiện. Đầu tiên, tính toán các giá trị băm của bốn bộ điều kiện này tương ứng, sau đó ghép bốn giá trị băm này thành từng cặp để tính ra hai giá trị băm, cuối cùng, kết hợp hai giá trị băm này để tính toán băm. Tạo giá trị băm cuối cùng . Giá trị băm cuối cùng là gốc Merkle.

Gốc Merkle này có thể được dịch sang một bit hợp lệ có khả năng nhận thanh toán Coin địa chỉ, tức là Địa chỉ Bitcoin được Merklized (địa chỉ Bitcoin được Merklized). Địa chỉ Merkle Bitcoin có nhiều ưu điểm, ưu điểm chính là bạn có thể xác minh rằng tập lệnh có trong cây Merkle mà không cần biết tất cả các đơn vị tập lệnh. Công nghệ này được gọi là Bằng chứng Merkle và có thể được sử dụng để dễ dàng xác minh xem UTXO Bitcoin có chứa các điều kiện mở khóa nhất định hay không.
Trong MAST, BTC được liên kết với cây Merkle. Cây Merkle này chỉ định tất cả các điều kiện phức tạp mà theo đó BTC chưa tiêu có thể được mở khóa. Mỗi nút lá đại diện cho một điều kiện. Để mở khóa BTC, bạn phải tạo tập lệnh thỏa mãn điều kiện được biểu thị bằng một nhánh trên cây Merkle. Chỉ sử dụng gốc Merkle mới có thể xác minh xem điều kiện này có thuộc tập hợp điều kiện ban đầu hay không (nghĩa là xác minh xem nút lá có nằm trên cây Merkle này hay không).
Khi mạng chuỗi khối Bitcoin phát hiện ra rằng tập lệnh (và các điều kiện mà nó đại diện) thuộc về gốc Merkle này, mạng sẽ biết rằng tập lệnh đó là Điều kiện khóa cho những Bitcoin này và bắt đầu xác minh tập lệnh mở khóa. Do đó, chúng tôi không cần tạo một tập lệnh hoàn chỉnh và đưa nó vào giao dịch để chi tiêu số BTC bị khóa trong MAST. Điều này giúp giảm quy mô giao dịch BTC.
Trong mật mã học, chữ ký Schnorr là chữ ký số được tạo ra bởi thuật toán chữ ký Schnorr do Claus Schnorr đề xuất. Thuật toán chữ ký Schnorr là một sơ đồ chữ ký số được biết đến vì tính đơn giản giúp tối ưu hóa quá trình xác minh và xác thực bằng cách tổng hợp nhiều chữ ký thành một chữ ký duy nhất. Giải pháp này phù hợp cho các giao dịch đa chữ ký.
Để thực hiện giao dịch, bạn cần ký giao dịch bằng khóa riêng của mình để chứng minh rằng bạn là chủ sở hữu BTC đằng sau một khóa chung nhất định. Tuy nhiên, nếu bạn muốn thực hiện giao dịch nhiều chữ ký, bạn phải cung cấp nhiều chữ ký. Những chữ ký này chiếm thêm không gian.
Lấy giao dịch đa chữ ký ngày 20/12 làm ví dụ. Ngày 20/12 có nghĩa là cần có ít nhất 12 chữ ký trong số 20 chữ ký để thực hiện giao dịch. Khi một giao dịch được ký, chữ ký cũng được lưu trữ trong khối. Giả sử kích thước của 1 chữ ký là 5 byte, 12 chữ ký cần chiếm 60 byte bộ nhớ trong khối (5 * 12 = 60) và 100 chữ ký cần chiếm 500 byte bộ nhớ. Điều này làm tăng mức sử dụng bộ nhớ. Chữ ký Schnorr giải quyết chính xác vấn đề này.
-(...)
- Một trường hợp khác là giao dịch đa chữ ký. Giả sử bạn cần 100 chữ ký và kích thước của mỗi chữ ký là 5 byte thì sơ đồ chữ ký Schnorr có thể kết hợp 100 chữ ký này thành chữ ký Schnorr có kích thước 64 byte. Điều này giúp tiết kiệm 436 byte (5*100-64=436) bộ nhớ có thể được sử dụng để lưu trữ nhiều giao dịch hơn. (Lưu ý: Chữ ký đường cong elip hiện tại có thể lớn hơn 5 byte)
Nâng cấp Bitcoin - Taproot có kế hoạch kết hợp các khái niệm trên Giới thiệu chuỗi khối Bitcoin để nâng cao khả năng mở rộng, quyền riêng tư và tính linh hoạt của nó.
Bài viết này chủ yếu giới thiệu Taproot xoay quanh các điểm sau: p>
- Taproot là một đề xuất nâng cấp Bitcoin được đề xuất bởi người đóng góp Bitcoin Core, Gregory Maxwell vào năm 2018.
- Taproot làm cho các giao dịch phức tạp như giao dịch nhiều chữ ký và giao dịch khóa thời gian trông giống như giao dịch Bitcoin thông thường, nâng cao tính riêng tư của Bitcoin.
- Nâng cấp Taproot chủ yếu chứa 3 khái niệm kỹ thuật - chữ ký P2SH, MAST và Schnorr.
- Tập lệnh sử dụng Bitcoin ghi chú các điều kiện để chi tiêu BTC/UTXO (đầu ra giao dịch chưa chi tiêu).
- Pay To Script Hash (P2SH) có thể giúp người gửi tránh được phí giao dịch bổ sung và chuyển trách nhiệm này (phí giao dịch bổ sung) sang tiền thật. Cần thiết phải sử dụng các điều kiện được chỉ định trong tập lệnh khóa trên máy thu.
- Sử dụng MAST, Bitcoin có thể bị khóa bằng cây cú pháp trừu tượng Merkle. Cây Merkle (tương ứng với gốc Merkle) xác định tất cả các điều kiện phức tạp mà theo đó BTC chưa tiêu có thể được mở khóa. Cây cú pháp trừu tượng Merklized (MAST) được đề xuất đưa vào chuỗi khối Bitcoin để giảm kích thước giao dịch BTC để người nhận không cần đính kèm các tập lệnh dài vào giao dịch. Chỉ cần sử dụng gốc Merkle để xác minh rằng tập lệnh do người nhận tạo có thuộc nhóm điều kiện ban đầu hay không.
- Chữ ký Schnorr có thể kết hợp nhiều chữ ký thành một chữ ký duy nhất.
Bản gốc văn bản Liên kết
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia