Tiếp cận BTC: Kiến thức nền cần để hiểu BitVM

Người mới bắt đầu7/11/2024, 2:55:14 PM
Bài viết này sẽ đi sâu vào nguồn gốc và các khái niệm cốt lõi của Công nghệ Lớp 2 của Bitcoin, như BitVM, để giúp độc giả hiểu rõ về những công nghệ hiện đại này và ứng dụng của chúng, đặc biệt là đối với những người quan tâm đến hệ sinh thái Bitcoin.

Tóm tắt:

Delphi Digital vừa phát hành một báo cáo có tựa đề “Bình minh của tính có thể lập trình của Bitcoin: Mở đường cho Rollups,” trong đó nêu ra những khái niệm chính liên quan đến Bitcoin Rollups, bao gồm bộ công cụ BitVM, các hạn chế OP_CAT và Covenant, lớp DA của hệ sinh thái Bitcoin, cầu nối và bốn giải pháp Layer 2 chính sử dụng BitVM: Bitlayer, Citrea, Yona và Bob. Mặc dù báo cáo cung cấp một cái nhìn tổng quan về công nghệ Layer 2 của Bitcoin, nhưng nó vẫn khá tổng quát và thiếu mô tả chi tiết, khiến cho việc hiểu được hơi khó khăn. Geek Web3 mở rộng trên báo cáo của Delphi để giúp thêm người hiểu một cách hệ thống về các công nghệ như BitVM.

Chúng tôi sẽ hợp tác với đội ngũ nghiên cứu Bitlayer và cộng đồng tiếng Trung BitVM để ra mắt loạt chương trình mang tên “Tiếp cận BTC.” Loạt chương trình này sẽ tập trung vào các chủ đề chính như BitVM, OP_CAT, và cầu nối mạng lưới chéo Bitcoin, nhằm mục đích làm sáng tỏ các công nghệ Lớp 2 của Bitcoin cho đông đảo độc giả và mở đường cho thêm nhiều người yêu thích.

Vài tháng trước, Robin Linus, người đứng đầu của ZeroSync, đã xuất bản một bài viết mang tựa đề “BitVM: Compute Anything on Bitcoin,” chính thức giới thiệu khái niệm BitVM và đẩy mạnh công nghệ Bitcoin Layer 2. Đây được coi là một trong những đổi mới cách mạng nhất trong hệ sinh thái Bitcoin, gây ra sự quan tâm và hoạt động đáng kể trong không gian Bitcoin Layer 2. Nó đã thu hút các dự án đáng chú ý như Bitlayer, Citrea, và BOB, mang đến năng lượng mới cho thị trường. Kể từ đó, nhiều nhà nghiên cứu đã tham gia để cải thiện BitVM, dẫn đến một số phiên bản lặp đi lặp lại như BitVM1, BitVM2, BitVMX, và BitSNARK. Tổng quan chung như sau:

  1. Robin Linus ban đầu giới thiệu bản báo cáo cài đặt BitVM vào năm ngoái, dựa trên mạch cổng logic khái niệm và được biết đến với tên BitVM0.
  2. Trong các bài thuyết trình và phỏng vấn sau này, Robin Linus đã giới thiệu một khái niệm BitVM một cách không chính thức dựa trên một CPU lý thuyết, được gọi là BitVM1. Điều này tương tự như hệ thống chứng minh gian lận Cannon của Optimism, và nó có thể mô phỏng hiệu ứng của một CPU đa dụng ngoại chuỗi sử dụng các scripts Bitcoin.
  3. Robin Linus cũng đề xuất BitVM2, một giao thức chứng minh gian lận không tương tác một bước không cần phép.
  4. Các thành viên của Rootstock Labs và Fairgate Labs đã phát hành một bản báo cáo trắng về BitVMX. Tương tự như BitVM1, họ nhằm mô phỏng hiệu ứng của một CPU đa năng ngoại chuỗi bằng cách sử dụng các kịch bản Bitcoin.

Hiện tại, việc xây dựng hệ sinh thái nhà phát triển liên quan đến BitVM ngày càng trở nên rõ ràng và việc cải tiến lặp đi lặp lại các công cụ ngoại vi cũng có thể nhìn thấy bằng mắt thường. So với năm ngoái, hệ sinh thái BitVM ngày nay đã trở nên "mơ hồ" từ "lâu đài trên không" ban đầu, điều này cũng đã thu hút ngày càng nhiều người tham gia. Nhiều nhà phát triển và VC đang đổ xô vào hệ sinh thái Bitcoin.

Đối với hầu hết mọi người, việc hiểu BitVM và các thuật ngữ kỹ thuật liên quan đến Bitcoin Layer 2 không phải là dễ dàng. Điều này đòi hỏi một sự nắm vững hệ thống về kiến thức cơ bản, đặc biệt là kịch bản Bitcoin và Taproot. Các nguồn tài nguyên trực tuyến hiện có thường entweder quá dài và chứa quá nhiều chi tiết không liên quan hoặc quá ngắn để hiểu rõ. Chúng tôi nhằm giải quyết những vấn đề này bằng cách sử dụng ngôn ngữ rõ ràng và súc tích để giúp nhiều người hiểu hơn về các khái niệm cơ bản của Bitcoin Layer 2 và xây dựng một sự hiểu biết toàn diện về hệ thống BitVM.

MATT và Cam kết: Khái niệm cốt lõi của BitVM

Khái niệm cốt lõi của BitVM xoay quanh MATT, viết tắt của Merkleize Tất cả mọi thứ. Phương pháp này sử dụng Một cây Merkle, một cấu trúc lưu trữ dữ liệu phân cấp, để đại diện cho việc thực thi các chương trình phức tạp. Nó nhằm mục đích cho phép xác minh chứng cớ gian lận nguyên sinh trên mạng Bitcoin. MATT có thể ghi lại chi tiết của một chương trình phức tạp và các hoạt động xử lý dữ liệu của nó, nhưng nó không công bố những dữ liệu phong phú này trực tiếp trên chuỗi khối Bitcoin do kích thước lớn của chúng. Thay vào đó, phương pháp MATT lưu trữ dữ liệu này trong một cây Merkle ngoài chuỗi và chỉ công bố Merkle Root (tóm tắt cao nhất của cây Merkle) trên chuỗi khối. Cây Merkle chủ yếu chứa ba thành phần chính:

  • Mã kịch bản hợp đồng thông minh
  • Dữ liệu cần thiết cho hợp đồng
  • Các dấu vết thực thi của hợp đồng (hồ sơ các thay đổi trong bộ nhớ và thanh ghi CPU trong quá trình thực thi của hợp đồng thông minh trong các máy ảo như EVM)

(Một bản đồ sơ đồ đơn giản về Merkle Tree. Merkle Root của nó được tính từ 8 đoạn dữ liệu ở dưới cùng của hình ảnh thông qua việc băm nhiều lớp)

Theo kế hoạch MATT, chỉ có Merkle Root cực kỳ nhỏ được lưu trữ trên chuỗi, và bộ dữ liệu hoàn chỉnh chứa trong Merkle Tree được lưu trữ ngoài chuỗi. Điều này sử dụng một ý tưởng được gọi là “Cam kết”. Đây là một giải thích về ý nghĩa của “Cam kết”.

Một lời hứa giống như một tuyên bố ngắn gọn, chúng ta có thể hiểu nó như một “dấu vân tay” được thu được sau khi nén một lượng lớn dữ liệu. Nói chung, người phát hành một “cam kết” trên chuỗi sẽ tuyên bố rằng một số dữ liệu lưu trữ ngoại chuỗi là chính xác. Những dữ liệu ngoại chuỗi này nên tương ứng với một tuyên bố ngắn gọn, và tuyên bố này chính là “cam kết.”

Tại một số điểm, hash của dữ liệu có thể được sử dụng như một “cam kết” đối với dữ liệu chính nó. Các hệ thống cam kết khác bao gồm cam kết KZG hoặc Merkle Tree. Trong giao thức chứng minh gian lận thông thường của Layer2, nhà xuất bản dữ liệu sẽ công bố bộ dữ liệu hoàn chỉnh ngoại chuỗi và một cam kết để công bố bộ dữ liệu trên chuỗi. Nếu ai đó phát hiện ra dữ liệu không hợp lệ trong bộ dữ liệu ngoại chuỗi, cam kết dữ liệu trên chuỗi sẽ bị thách thức.

Thông qua Commitment, lớp thứ hai có thể nén một lượng lớn dữ liệu và chỉ xuất bản "cam kết" của nó trên chuỗi Bitcoin. Tất nhiên, cũng cần phải đảm bảo rằng bộ dữ liệu hoàn chỉnh được phát hành ngoài chuỗi có thể được quan sát bởi thế giới bên ngoài.

Hiện nay, các kế hoạch BitVM lớn như BitVM0, BitVM1, BitVM2 và BitVMX đều tuân theo cùng một cấu trúc trừu tượng tương tự:

  1. Phân rã chương trình và cam kết: Ban đầu, một chương trình phức tạp được phân rã thành nhiều mã opcode cơ bản (biên dịch). Những dấu vết thực thi của những mã opcode này (về cơ bản là các thay đổi trạng thái khi một chương trình chạy trên CPU và bộ nhớ, được biết đến là Trace) được ghi lại. Tất cả dữ liệu, bao gồm Trace và mã opcode, được tổ chức vào một bộ dữ liệu, và một cam kết được tạo ra cho bộ dữ liệu này. Có thể sử dụng các hệ thống cam kết khác nhau, chẳng hạn như cây Merkle, PIOPs (các thuật toán ZK khác nhau), và các hàm băm.
  2. Đầu tư Tài sản và Chữ ký trước: Người xuất bản dữ liệu và người xác minh phải khóa một số lượng tài sản nhất định trên blockchain thông qua việc ký trước, với các điều kiện hạn chế cụ thể. Những điều kiện này kích hoạt hành động cho các sự kiện tương lai tiềm năng. Nếu người xuất bản dữ liệu hành động một cách độc ác, người xác minh có thể nộp bằng chứng và lấy tài sản của người xuất bản dữ liệu.
  3. Dữ liệu và Xuất bản Cam kết: Nhà xuất bản dữ liệu đăng cam kết trên chuỗi và bộ dữ liệu hoàn chỉnh ngoại chuỗi. Người xác minh khôi phục và kiểm tra bộ dữ liệu để tìm lỗi. Mỗi phần của bộ dữ liệu ngoại chuỗi được liên kết với cam kết trên chuỗi.
  4. Thách thức và Phạt: Nếu người xác minh phát hiện lỗi trong dữ liệu do nhà xuất bản dữ liệu cung cấp, họ đưa phần này của dữ liệu lên chuỗi để xác minh trực tiếp (yêu cầu dữ liệu cụ thể). Quá trình này tuân theo logic của chứng minh gian lận. Nếu xác nhận dữ liệu là không hợp lệ, tài sản của nhà xuất bản dữ liệu sẽ bị người xác minh thách thức lấy đi. Tóm lại, nhà xuất bản dữ liệu, Alice, tiết lộ tất cả dấu vết được tạo ra trong quá trình thực hiện các giao dịch Layer 2 ngoại chuỗi và công bố cam kết tương ứng trên chuỗi. Để chứng minh một phần dữ liệu là không chính xác, bạn phải trước tiên cho thấy nút Bitcoin rằng dữ liệu này liên quan đến cam kết trên chuỗi, xác nhận rằng nó được tiết lộ bởi Alice, và sau đó nút Bitcoin xác minh tính chính xác của dữ liệu. Sau khi hiểu được ý tưởng tổng quan về BitVM, tất cả các biến thể BitVM tuân theo mô hình cơ bản này. Tiếp theo, chúng tôi sẽ đàm phán về một số công nghệ chính được sử dụng trong quá trình này, bắt đầu bằng các nguyên tắc cơ bản của tập lệnh Bitcoin, Taproot và tiền ký.

Bitcoin Script là gì?

Việc hiểu về Bitcoin có thể khó khăn hơn Ethereum, vì ngay cả những giao dịch đơn giản nhất cũng liên quan đến một số khái niệm chính. Điều này bao gồm UTXO (Unspent Transaction Output), các kịch bản khóa (còn được gọi là ScriptPubKey) và các kịch bản mở khóa (còn được gọi là ScriptSig). Hãy cùng tìm hiểu những khái niệm cơ bản này trước.

(Một ví dụ về mã lệnh Bitcoin bao gồm các mã lệnh cấp thấp so với các ngôn ngữ cấp cao) Phương pháp đại diện tài sản của Ethereum tương tự như các hệ thống như Alipay hoặc WeChat, nơi mỗi giao dịch chỉ đơn giản điều chỉnh số dư của các tài khoản khác nhau. Phương pháp dựa trên tài khoản này xử lý số dư tài sản như chỉ là các số được liên kết với các tài khoản. Ngược lại, phương pháp đại diện tài sản của Bitcoin giống như giao dịch với vàng, nơi mỗi mảnh vàng (UTXO) được gắn thẻ với một chủ sở hữu. Một giao dịch Bitcoin cơ bản bản chất là phá hủy UTXO cũ và tạo ra một UTXO mới, với quyền sở hữu thay đổi trong quá trình đó. Một UTXO Bitcoin bao gồm hai thành phần chính:

  • Số lượng: Đo lường bằng “satoshis” (một BTC bằng một trăm triệu satoshis);
  • Kịch bản khóa (ScriptPubKey): Điều này xác định các điều kiện cần thiết để mở khóa UTXO. Quyền sở hữu Bitcoin UTXO được xác định bởi tập lệnh khóa. Ví dụ: nếu bạn muốn chuyển UTXO của mình sang Sam, bạn sẽ bắt đầu một giao dịch phá hủy UTXO của bạn và tạo một giao dịch mới với điều kiện "chỉ Sam mới có thể mở khóa". Khi Sam muốn sử dụng những bitcoin này, anh ta phải gửi một kịch bản mở khóa (ScriptSig). Trong kịch bản này, Sam cung cấp chữ ký số của mình để chứng minh danh tính của mình. Nếu tập lệnh mở khóa khớp với tập lệnh khóa ban đầu, Sam sau đó có thể mở khóa bitcoin và chuyển chúng cho người khác.

(Kịch bản mở khóa phải khớp với kịch bản khóa) Trong các giao dịch Bitcoin, mỗi giao dịch bao gồm nhiều đầu vào và đầu ra. Mỗi đầu vào chỉ định một UTXO để mở khóa và cung cấp một kịch bản mở khóa để thực hiện việc đó, sau đó mở khóa và phá hủy UTXO đó. Các đầu ra của giao dịch hiển thị các UTXO mới được tạo ra và công khai hiển thị các kịch bản khóa tương ứng. Ví dụ, trong Đầu vào của một giao dịch, bạn chứng minh bạn là Sam bằng cách mở khóa nhiều UTXO mà người khác đã gửi cho bạn, phá hủy chúng trong quá trình đó. Sau đó, bạn tạo ra nhiều UTXO mới và chỉ định rằng xxx có thể mở khóa chúng trong tương lai.

Cụ thể, trong dữ liệu Đầu vào của một giao dịch, bạn cần khai báo UTXO nào bạn định mở khóa và chỉ định "vị trí lưu trữ" của các dữ liệu UTXO này. Điều quan trọng là phải hiểu rằng Bitcoin và Ethereum xử lý điều này khác nhau. Ethereum sử dụng tài khoản hợp đồng và tài khoản thuộc sở hữu bên ngoài (EOA) để lưu trữ dữ liệu, với số dư tài sản được ghi lại dưới dạng số trong các tài khoản này. Tất cả thông tin này được lưu trữ trong một cơ sở dữ liệu được gọi là "nhà nước thế giới". Khi một giao dịch xảy ra, "trạng thái thế giới" cập nhật trực tiếp số dư của các tài khoản cụ thể, giúp dễ dàng xác định vị trí dữ liệu. Ngược lại, Bitcoin không có "nhà nước thế giới". Thay vào đó, dữ liệu tài sản được phân phối trên các khối trước đó dưới dạng UTXO chưa sử dụng, được lưu trữ riêng lẻ trong Đầu ra của mỗi giao dịch.

Nếu bạn muốn mở khóa một UTXO cụ thể, bạn phải chỉ ra đầu ra giao dịch nào chứa thông tin UTXO trong quá khứ, và hiển thị ID của giao dịch (đó là hash của nó). Hãy để nút Bitcoin tìm kiếm nó trong lịch sử. Nếu bạn muốn truy vấn số dư Bitcoin của một địa chỉ cụ thể, bạn cần duyệt qua tất cả các khối từ đầu để tìm UTXO đã mở khóa liên kết với địa chỉ xx.

Khi bạn thường xuyên sử dụng ví Bitcoin, bạn có thể nhanh chóng kiểm tra số dư Bitcoin thuộc sở hữu của một địa chỉ cụ thể. Điều này thường xảy ra vì dịch vụ ví chính nó chỉ mục tất cả các địa chỉ bằng cách quét các khối, giúp chúng ta truy vấn nhanh chóng hơn.

(Khi bạn tạo giao dịch để chuyển UTXO của bạn cho người khác, bạn cần phải xác định vị trí của UTXO đó trong lịch sử giao dịch Bitcoin bằng cách tham chiếu đến mã băm/giao dịch mà nó thuộc về.) Thú vị là kết quả giao dịch Bitcoin được tính toán ngoài chuỗi. Khi người dùng tạo giao dịch trên thiết bị cục bộ của họ, họ phải tạo tất cả Inputs và Outputs trước, hiệu quả tính toán các đầu ra của giao dịch. Sau đó, giao dịch được phát sóng đến mạng Bitcoin, được xác minh bởi các nút, và được thêm vào chuỗi khối. Mô hình “tính toán ngoài chuỗi — xác minh trên chuỗi” này hoàn toàn khác biệt so với Ethereum. Trên Ethereum, bạn chỉ cần cung cấp thông số đầu vào của giao dịch, và kết quả giao dịch được tính toán và đầu ra bởi các nút Ethereum. Hơn nữa, kịch bản khóa của một UTXO có thể được tùy chỉnh. Bạn có thể thiết lập một UTXO để “mở khóa bởi chủ sở hữu của một địa chỉ Bitcoin cụ thể,” yêu cầu chủ sở hữu phải cung cấp chữ ký số và khóa công khai (P2PKH). Trong các giao dịch Pay-to-Script-Hash (P2SH), bạn có thể thêm Mã băm Kịch bản vào kịch bản khóa của UTXO. Bất kỳ ai có thể gửi kịch bản tương ứng với mã băm này và đáp ứng các điều kiện được chỉ định trong kịch bản có thể mở khóa UTXO. Kịch bản Taproot, mà BitVM dựa vào, sử dụng các tính năng tương tự như trong P2SH.

Cách kích hoạt script Bitcoin

Để hiểu cơ chế kích hoạt của các kịch bản Bitcoin, chúng tôi sẽ bắt đầu với ví dụ P2PKH, viết tắt của "Pay to Public Key Hash". Trong cài đặt này, kịch bản khóa của một UTXO chứa một băm khóa công khai, và để mở khóa nó, khóa công khai tương ứng phải được cung cấp. Cơ chế này tương ứng với quy trình tiêu chuẩn của giao dịch Bitcoin. Trong ngữ cảnh này, một nút Bitcoin phải xác minh rằng khóa công khai trong kịch bản mở khóa khớp với băm khóa công khai được chỉ định trong kịch bản khóa. Theo cách đơn giản, nó kiểm tra xem "khóa" do người dùng cung cấp có phù hợp với "khóa" được đặt bởi UTXO hay không. Ở mức độ chi tiết hơn, dưới sơ đồ P2PKH, khi một nút Bitcoin nhận được một giao dịch, nó kết hợp kịch bản mở khóa của người dùng (ScriptSig) với kịch bản khóa (ScriptPubKey) của UTXO để mở khóa và sau đó thực thi kịch bản kết hợp này trong môi trường thực thi kịch bản Bitcoin. Hình ảnh dưới đây minh họa kết quả được nối trước khi thực thi:

Người đọc có thể không quen thuộc với môi trường thực thi tập lệnh BTC, vì vậy hãy giới thiệu ngắn gọn về nó. Các tập lệnh Bitcoin bao gồm hai yếu tố: dữ liệu và opcode. Các phần tử này được đẩy lên một ngăn xếp tuần tự từ trái sang phải và được thực thi theo logic được chỉ định để tạo ra kết quả cuối cùng (để giải thích về ngăn xếp là gì, độc giả có thể tham khảo ChatGPT). Trong ví dụ trên, phía bên trái hiển thị tập lệnh mở khóa (ScriptSig) do ai đó cung cấp, bao gồm chữ ký số và khóa công khai của họ. Phía bên phải hiển thị tập lệnh khóa (ScriptPubKey), chứa một loạt các opcodes và dữ liệu được đặt bởi người tạo UTXO khi tạo UTXO đó (hiểu ý tưởng chung là đủ; chúng ta không cần phải đi sâu vào ý nghĩa của từng opcode). Các mã opcode trong tập lệnh khóa bên phải, chẳng hạn như DUP, HASH160 và EQUALVERIFY, băm khóa công khai từ tập lệnh mở khóa bên trái và so sánh nó với hàm băm khóa công khai đặt trước trong tập lệnh khóa. Nếu chúng khớp, nó xác nhận rằng khóa công khai trong tập lệnh mở khóa khớp với hàm băm khóa công khai trong tập lệnh khóa, vượt qua xác minh đầu tiên. Tuy nhiên, có một vấn đề: nội dung của tập lệnh khóa được hiển thị công khai trên blockchain, có nghĩa là bất kỳ ai cũng có thể thấy hàm băm khóa công khai. Do đó, bất kỳ ai cũng có thể gửi khóa công khai tương ứng và tuyên bố sai sự thật là người được ủy quyền. Để giải quyết vấn đề này, sau khi xác minh khóa công khai và hàm băm khóa công khai, hệ thống cũng phải xác minh xem người khởi tạo giao dịch có thực sự kiểm soát khóa công khai hay không, liên quan đến việc xác minh chữ ký số. Mã opcode CHECKSIG trong tập lệnh khóa xử lý xác minh này. Tóm lại, theo sơ đồ P2PKH, tập lệnh mở khóa của người khởi tạo giao dịch phải bao gồm khóa công khai và chữ ký số. Khóa công khai phải khớp với hàm băm khóa công khai được chỉ định trong tập lệnh khóa và chữ ký số phải chính xác. Các điều kiện này phải được đáp ứng để mở khóa thành công UTXO.

(Đây là một minh họa động: Một biểu đồ về các kịch bản mở khóa Bitcoin dưới lược đồ P2PKH
Nguồn:https://learnmeabitcoin.com/technical/script)

Điều quan trọng cần lưu ý là mạng Bitcoin hỗ trợ các loại giao dịch khác nhau ngoài Pay to Public Key/Public Key Hash, như P2SH (Pay to Script Hash). Loại giao dịch cụ thể phụ thuộc vào cách cấu hình kịch bản khóa khi UTXO được tạo ra.

Quan trọng phải hiểu rằng dưới lược đồ P2SH, kịch bản khóa có thể thiết lập một Script Hash, và kịch bản mở khóa phải cung cấp nội dung kịch bản đầy đủ tương ứng với Script Hash này. Nút Bitcoin sau đó có thể thực thi kịch bản này, và nếu nó bao gồm logic xác minh đa chữ ký, nó hiệu quả kích hoạt ví đa chữ ký trên blockchain Bitcoin. Trong lược đồ P2SH, người tạo UTXO cần thông báo cho người sẽ mở khoá UTXO trong tương lai về nội dung kịch bản tương ứng với Script Hash. Miễn là cả hai bên đều hiểu nội dung kịch bản, chúng ta có thể triển khai logic kinh doanh phức tạp hơn chỉ là đa chữ ký. Đáng chú ý là blockchain Bitcoin không ghi lại trực tiếp UTXOs nào được liên kết với địa chỉ nào. Thay vào đó, nó ghi lại UTXOs nào có thể được mở khoá bằng public key hash hoặc script hash nào. Tuy nhiên, chúng ta có thể nhanh chóng suy ra địa chỉ tương ứng (chuỗi ký tự giống như lờ mờ được hiển thị trong giao diện ví) từ public key hash hoặc script hash.

Lý do bạn có thể thấy số lượng Bitcoin liên kết với một địa chỉ cụ thể trên các trình duyệt khối và giao diện ví là vì các dịch vụ này phân tích và giải mã dữ liệu blockchain cho bạn. Chúng quét tất cả các khối và, dựa trên khóa công khai hoặc khóa script được khai báo trong các tập lệnh khóa, tính toán “địa chỉ” tương ứng. Điều này cho phép họ hiển thị mức độ Bitcoin liên kết với địa chỉ đó.

Segregated Witness và Witness

Hiểu về P2SH giúp chúng ta hiểu rõ hơn về Taproot, một thành phần quan trọng cho BitVM. Tuy nhiên, trước khi đào sâu vào Taproot, việc hiểu về khái niệm của Witness và Segregated Witness (SegWit) là rất quan trọng. Xem xét về mã mở khóa và mã khóa, cũng như quá trình mở khóa UTXO, nhấn mạnh một vấn đề: chữ ký số cho một giao dịch được bao gồm trong mã mở khóa. Khi tạo chữ ký này, chính mã mở khóa không thể là một phần của dữ liệu được ký (vì các thông số được sử dụng để tạo chữ ký không thể bao gồm chính chữ ký).

Do đó, chữ ký số chỉ có thể bao gồm một phần dữ liệu giao dịch bên ngoài kịch bản mở khóa, nghĩa là nó không thể bảo vệ hoàn toàn toàn bộ dữ liệu giao dịch. Điều này dẫn đến một lỗ hổng khi một bên trung gian có thể thay đổi một cách nhẹ nhàng kịch bản mở khóa mà không ảnh hưởng đến việc xác minh chữ ký. Ví dụ, các node Bitcoin hoặc các nhóm đào có thể chèn thêm dữ liệu vào kịch bản mở khóa. Mặc dù sự thay đổi này không ảnh hưởng đến việc xác minh và kết quả của giao dịch, nó nhẹ nhàng thay đổi dữ liệu giao dịch, từ đó thay đổi hash giao dịch/tên giao dịch được tính toán. Vấn đề này được biết đến là biến đổi giao dịch.

Vấn đề ở đây là nếu bạn dự định khởi đầu nhiều giao dịch tuần tự phụ thuộc vào nhau (ví dụ, giao dịch 3 tham chiếu đến đầu ra của giao dịch 2, và giao dịch 2 tham chiếu đến đầu ra của giao dịch 1), thì các giao dịch tiếp theo phải tham chiếu đến các hash của các giao dịch trước đó. Bất kỳ bên trung gian nào, như một nhóm đào hoặc nút Bitcoin, đều có thể thực hiện các thay đổi nhỏ vào tập lệnh mở khóa, làm cho hash giao dịch khác biệt so với mong đợi của bạn sau khi nó được trên blockchain.

Sự không nhất quán này có thể làm vô hiệu hóa chuỗi giao dịch phụ thuộc vào nhau theo kế hoạch của bạn. Vấn đề này đặc biệt quan trọng trong bối cảnh các cầu DLC và BitVM2, nơi mà các lô giao dịch liên quan theo thứ tự được xây dựng, khiến cho các tình huống như vậy khá phổ biến.


Đơn giản, vấn đề biến đổi giao dịch xảy ra vì việc tính toán ID/hash giao dịch bao gồm dữ liệu từ kịch bản mở khóa. Các bên trung gian, như các nút Bitcoin, có thể thực hiện sửa đổi nhỏ vào kịch bản mở khóa, dẫn đến ID giao dịch không khớp với kỳ vọng của người dùng. Vấn đề này bắt nguồn từ các hạn chế thiết kế ban đầu trong Bitcoin. Nâng cấp Segregated Witness (SegWit) giải quyết vấn đề này bằng cách tách rời ID giao dịch khỏi kịch bản mở khóa. Với SegWit, việc tính toán băm giao dịch loại bỏ dữ liệu kịch bản mở khóa. Kịch bản khóa UTXO dưới SegWit bắt đầu bằng một opcode “OP_0” như một điểm đánh dấu, và kịch bản mở khóa tương ứng được đổi tên từ SigScript thành Witness.

Bằng cách tuân thủ các quy tắc Segregated Witness (SegWit), vấn đề về tính linh hoạt của giao dịch được giải quyết hiệu quả, loại bỏ những lo ngại về dữ liệu giao dịch bị giả mạo bởi các nút Bitcoin. Chức năng của P2WSH (Pay to Witness Script Hash) về cơ bản giống như P2SH (Pay to Script Hash). Bạn có thể đặt trước hàm băm tập lệnh trong tập lệnh khóa UTXO và người gửi tập lệnh mở khóa sẽ cung cấp nội dung tập lệnh tương ứng cho chuỗi để thực thi. Tuy nhiên, nếu nội dung tập lệnh bạn cần rất lớn và chứa nhiều mã, các phương pháp thông thường có thể không cho phép bạn gửi toàn bộ tập lệnh lên blockchain Bitcoin (do giới hạn kích thước khối). Trong những trường hợp như vậy, Taproot phát huy tác dụng. Taproot cho phép nén nội dung tập lệnh trên chuỗi, giúp xử lý các tập lệnh lớn hơn. BitVM tận dụng Taproot để xây dựng các giải pháp phức tạp hơn. Trong bài viết tiếp theo của loạt bài "Tiếp cận BTC" của chúng tôi, chúng tôi sẽ cung cấp giải thích chi tiết về Taproot, chữ ký trước và các công nghệ tiên tiến khác liên quan đến BitVM. Giữ nguyên!

Miễn trừ trách nhiệm:

  1. Bài viết này được sao chép từ [ Geek Web3], với bản quyền thuộc về tác giả ban đầu [Nickqiao & Faust & Shew Wang]. Nếu có bất kỳ ý kiến phản đối nào về việc tái in, vui lòng liên hệ với Học cửađội, và đội sẽ xử lý ngay theo các quy trình liên quan.
  2. Xin lưu ý: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ là của tác giả và không hình thành bất kỳ lời khuyên đầu tư nào.
  3. Các phiên bản bằng ngôn ngữ khác của bài viết đã được dịch bởi đội ngũ Gate Learn. Mà không đề cậpGate.io, các bài báo dịch không được sao chép, phổ biến hoặc đạo văn.

Tiếp cận BTC: Kiến thức nền cần để hiểu BitVM

Người mới bắt đầu7/11/2024, 2:55:14 PM
Bài viết này sẽ đi sâu vào nguồn gốc và các khái niệm cốt lõi của Công nghệ Lớp 2 của Bitcoin, như BitVM, để giúp độc giả hiểu rõ về những công nghệ hiện đại này và ứng dụng của chúng, đặc biệt là đối với những người quan tâm đến hệ sinh thái Bitcoin.

Tóm tắt:

Delphi Digital vừa phát hành một báo cáo có tựa đề “Bình minh của tính có thể lập trình của Bitcoin: Mở đường cho Rollups,” trong đó nêu ra những khái niệm chính liên quan đến Bitcoin Rollups, bao gồm bộ công cụ BitVM, các hạn chế OP_CAT và Covenant, lớp DA của hệ sinh thái Bitcoin, cầu nối và bốn giải pháp Layer 2 chính sử dụng BitVM: Bitlayer, Citrea, Yona và Bob. Mặc dù báo cáo cung cấp một cái nhìn tổng quan về công nghệ Layer 2 của Bitcoin, nhưng nó vẫn khá tổng quát và thiếu mô tả chi tiết, khiến cho việc hiểu được hơi khó khăn. Geek Web3 mở rộng trên báo cáo của Delphi để giúp thêm người hiểu một cách hệ thống về các công nghệ như BitVM.

Chúng tôi sẽ hợp tác với đội ngũ nghiên cứu Bitlayer và cộng đồng tiếng Trung BitVM để ra mắt loạt chương trình mang tên “Tiếp cận BTC.” Loạt chương trình này sẽ tập trung vào các chủ đề chính như BitVM, OP_CAT, và cầu nối mạng lưới chéo Bitcoin, nhằm mục đích làm sáng tỏ các công nghệ Lớp 2 của Bitcoin cho đông đảo độc giả và mở đường cho thêm nhiều người yêu thích.

Vài tháng trước, Robin Linus, người đứng đầu của ZeroSync, đã xuất bản một bài viết mang tựa đề “BitVM: Compute Anything on Bitcoin,” chính thức giới thiệu khái niệm BitVM và đẩy mạnh công nghệ Bitcoin Layer 2. Đây được coi là một trong những đổi mới cách mạng nhất trong hệ sinh thái Bitcoin, gây ra sự quan tâm và hoạt động đáng kể trong không gian Bitcoin Layer 2. Nó đã thu hút các dự án đáng chú ý như Bitlayer, Citrea, và BOB, mang đến năng lượng mới cho thị trường. Kể từ đó, nhiều nhà nghiên cứu đã tham gia để cải thiện BitVM, dẫn đến một số phiên bản lặp đi lặp lại như BitVM1, BitVM2, BitVMX, và BitSNARK. Tổng quan chung như sau:

  1. Robin Linus ban đầu giới thiệu bản báo cáo cài đặt BitVM vào năm ngoái, dựa trên mạch cổng logic khái niệm và được biết đến với tên BitVM0.
  2. Trong các bài thuyết trình và phỏng vấn sau này, Robin Linus đã giới thiệu một khái niệm BitVM một cách không chính thức dựa trên một CPU lý thuyết, được gọi là BitVM1. Điều này tương tự như hệ thống chứng minh gian lận Cannon của Optimism, và nó có thể mô phỏng hiệu ứng của một CPU đa dụng ngoại chuỗi sử dụng các scripts Bitcoin.
  3. Robin Linus cũng đề xuất BitVM2, một giao thức chứng minh gian lận không tương tác một bước không cần phép.
  4. Các thành viên của Rootstock Labs và Fairgate Labs đã phát hành một bản báo cáo trắng về BitVMX. Tương tự như BitVM1, họ nhằm mô phỏng hiệu ứng của một CPU đa năng ngoại chuỗi bằng cách sử dụng các kịch bản Bitcoin.

Hiện tại, việc xây dựng hệ sinh thái nhà phát triển liên quan đến BitVM ngày càng trở nên rõ ràng và việc cải tiến lặp đi lặp lại các công cụ ngoại vi cũng có thể nhìn thấy bằng mắt thường. So với năm ngoái, hệ sinh thái BitVM ngày nay đã trở nên "mơ hồ" từ "lâu đài trên không" ban đầu, điều này cũng đã thu hút ngày càng nhiều người tham gia. Nhiều nhà phát triển và VC đang đổ xô vào hệ sinh thái Bitcoin.

Đối với hầu hết mọi người, việc hiểu BitVM và các thuật ngữ kỹ thuật liên quan đến Bitcoin Layer 2 không phải là dễ dàng. Điều này đòi hỏi một sự nắm vững hệ thống về kiến thức cơ bản, đặc biệt là kịch bản Bitcoin và Taproot. Các nguồn tài nguyên trực tuyến hiện có thường entweder quá dài và chứa quá nhiều chi tiết không liên quan hoặc quá ngắn để hiểu rõ. Chúng tôi nhằm giải quyết những vấn đề này bằng cách sử dụng ngôn ngữ rõ ràng và súc tích để giúp nhiều người hiểu hơn về các khái niệm cơ bản của Bitcoin Layer 2 và xây dựng một sự hiểu biết toàn diện về hệ thống BitVM.

MATT và Cam kết: Khái niệm cốt lõi của BitVM

Khái niệm cốt lõi của BitVM xoay quanh MATT, viết tắt của Merkleize Tất cả mọi thứ. Phương pháp này sử dụng Một cây Merkle, một cấu trúc lưu trữ dữ liệu phân cấp, để đại diện cho việc thực thi các chương trình phức tạp. Nó nhằm mục đích cho phép xác minh chứng cớ gian lận nguyên sinh trên mạng Bitcoin. MATT có thể ghi lại chi tiết của một chương trình phức tạp và các hoạt động xử lý dữ liệu của nó, nhưng nó không công bố những dữ liệu phong phú này trực tiếp trên chuỗi khối Bitcoin do kích thước lớn của chúng. Thay vào đó, phương pháp MATT lưu trữ dữ liệu này trong một cây Merkle ngoài chuỗi và chỉ công bố Merkle Root (tóm tắt cao nhất của cây Merkle) trên chuỗi khối. Cây Merkle chủ yếu chứa ba thành phần chính:

  • Mã kịch bản hợp đồng thông minh
  • Dữ liệu cần thiết cho hợp đồng
  • Các dấu vết thực thi của hợp đồng (hồ sơ các thay đổi trong bộ nhớ và thanh ghi CPU trong quá trình thực thi của hợp đồng thông minh trong các máy ảo như EVM)

(Một bản đồ sơ đồ đơn giản về Merkle Tree. Merkle Root của nó được tính từ 8 đoạn dữ liệu ở dưới cùng của hình ảnh thông qua việc băm nhiều lớp)

Theo kế hoạch MATT, chỉ có Merkle Root cực kỳ nhỏ được lưu trữ trên chuỗi, và bộ dữ liệu hoàn chỉnh chứa trong Merkle Tree được lưu trữ ngoài chuỗi. Điều này sử dụng một ý tưởng được gọi là “Cam kết”. Đây là một giải thích về ý nghĩa của “Cam kết”.

Một lời hứa giống như một tuyên bố ngắn gọn, chúng ta có thể hiểu nó như một “dấu vân tay” được thu được sau khi nén một lượng lớn dữ liệu. Nói chung, người phát hành một “cam kết” trên chuỗi sẽ tuyên bố rằng một số dữ liệu lưu trữ ngoại chuỗi là chính xác. Những dữ liệu ngoại chuỗi này nên tương ứng với một tuyên bố ngắn gọn, và tuyên bố này chính là “cam kết.”

Tại một số điểm, hash của dữ liệu có thể được sử dụng như một “cam kết” đối với dữ liệu chính nó. Các hệ thống cam kết khác bao gồm cam kết KZG hoặc Merkle Tree. Trong giao thức chứng minh gian lận thông thường của Layer2, nhà xuất bản dữ liệu sẽ công bố bộ dữ liệu hoàn chỉnh ngoại chuỗi và một cam kết để công bố bộ dữ liệu trên chuỗi. Nếu ai đó phát hiện ra dữ liệu không hợp lệ trong bộ dữ liệu ngoại chuỗi, cam kết dữ liệu trên chuỗi sẽ bị thách thức.

Thông qua Commitment, lớp thứ hai có thể nén một lượng lớn dữ liệu và chỉ xuất bản "cam kết" của nó trên chuỗi Bitcoin. Tất nhiên, cũng cần phải đảm bảo rằng bộ dữ liệu hoàn chỉnh được phát hành ngoài chuỗi có thể được quan sát bởi thế giới bên ngoài.

Hiện nay, các kế hoạch BitVM lớn như BitVM0, BitVM1, BitVM2 và BitVMX đều tuân theo cùng một cấu trúc trừu tượng tương tự:

  1. Phân rã chương trình và cam kết: Ban đầu, một chương trình phức tạp được phân rã thành nhiều mã opcode cơ bản (biên dịch). Những dấu vết thực thi của những mã opcode này (về cơ bản là các thay đổi trạng thái khi một chương trình chạy trên CPU và bộ nhớ, được biết đến là Trace) được ghi lại. Tất cả dữ liệu, bao gồm Trace và mã opcode, được tổ chức vào một bộ dữ liệu, và một cam kết được tạo ra cho bộ dữ liệu này. Có thể sử dụng các hệ thống cam kết khác nhau, chẳng hạn như cây Merkle, PIOPs (các thuật toán ZK khác nhau), và các hàm băm.
  2. Đầu tư Tài sản và Chữ ký trước: Người xuất bản dữ liệu và người xác minh phải khóa một số lượng tài sản nhất định trên blockchain thông qua việc ký trước, với các điều kiện hạn chế cụ thể. Những điều kiện này kích hoạt hành động cho các sự kiện tương lai tiềm năng. Nếu người xuất bản dữ liệu hành động một cách độc ác, người xác minh có thể nộp bằng chứng và lấy tài sản của người xuất bản dữ liệu.
  3. Dữ liệu và Xuất bản Cam kết: Nhà xuất bản dữ liệu đăng cam kết trên chuỗi và bộ dữ liệu hoàn chỉnh ngoại chuỗi. Người xác minh khôi phục và kiểm tra bộ dữ liệu để tìm lỗi. Mỗi phần của bộ dữ liệu ngoại chuỗi được liên kết với cam kết trên chuỗi.
  4. Thách thức và Phạt: Nếu người xác minh phát hiện lỗi trong dữ liệu do nhà xuất bản dữ liệu cung cấp, họ đưa phần này của dữ liệu lên chuỗi để xác minh trực tiếp (yêu cầu dữ liệu cụ thể). Quá trình này tuân theo logic của chứng minh gian lận. Nếu xác nhận dữ liệu là không hợp lệ, tài sản của nhà xuất bản dữ liệu sẽ bị người xác minh thách thức lấy đi. Tóm lại, nhà xuất bản dữ liệu, Alice, tiết lộ tất cả dấu vết được tạo ra trong quá trình thực hiện các giao dịch Layer 2 ngoại chuỗi và công bố cam kết tương ứng trên chuỗi. Để chứng minh một phần dữ liệu là không chính xác, bạn phải trước tiên cho thấy nút Bitcoin rằng dữ liệu này liên quan đến cam kết trên chuỗi, xác nhận rằng nó được tiết lộ bởi Alice, và sau đó nút Bitcoin xác minh tính chính xác của dữ liệu. Sau khi hiểu được ý tưởng tổng quan về BitVM, tất cả các biến thể BitVM tuân theo mô hình cơ bản này. Tiếp theo, chúng tôi sẽ đàm phán về một số công nghệ chính được sử dụng trong quá trình này, bắt đầu bằng các nguyên tắc cơ bản của tập lệnh Bitcoin, Taproot và tiền ký.

Bitcoin Script là gì?

Việc hiểu về Bitcoin có thể khó khăn hơn Ethereum, vì ngay cả những giao dịch đơn giản nhất cũng liên quan đến một số khái niệm chính. Điều này bao gồm UTXO (Unspent Transaction Output), các kịch bản khóa (còn được gọi là ScriptPubKey) và các kịch bản mở khóa (còn được gọi là ScriptSig). Hãy cùng tìm hiểu những khái niệm cơ bản này trước.

(Một ví dụ về mã lệnh Bitcoin bao gồm các mã lệnh cấp thấp so với các ngôn ngữ cấp cao) Phương pháp đại diện tài sản của Ethereum tương tự như các hệ thống như Alipay hoặc WeChat, nơi mỗi giao dịch chỉ đơn giản điều chỉnh số dư của các tài khoản khác nhau. Phương pháp dựa trên tài khoản này xử lý số dư tài sản như chỉ là các số được liên kết với các tài khoản. Ngược lại, phương pháp đại diện tài sản của Bitcoin giống như giao dịch với vàng, nơi mỗi mảnh vàng (UTXO) được gắn thẻ với một chủ sở hữu. Một giao dịch Bitcoin cơ bản bản chất là phá hủy UTXO cũ và tạo ra một UTXO mới, với quyền sở hữu thay đổi trong quá trình đó. Một UTXO Bitcoin bao gồm hai thành phần chính:

  • Số lượng: Đo lường bằng “satoshis” (một BTC bằng một trăm triệu satoshis);
  • Kịch bản khóa (ScriptPubKey): Điều này xác định các điều kiện cần thiết để mở khóa UTXO. Quyền sở hữu Bitcoin UTXO được xác định bởi tập lệnh khóa. Ví dụ: nếu bạn muốn chuyển UTXO của mình sang Sam, bạn sẽ bắt đầu một giao dịch phá hủy UTXO của bạn và tạo một giao dịch mới với điều kiện "chỉ Sam mới có thể mở khóa". Khi Sam muốn sử dụng những bitcoin này, anh ta phải gửi một kịch bản mở khóa (ScriptSig). Trong kịch bản này, Sam cung cấp chữ ký số của mình để chứng minh danh tính của mình. Nếu tập lệnh mở khóa khớp với tập lệnh khóa ban đầu, Sam sau đó có thể mở khóa bitcoin và chuyển chúng cho người khác.

(Kịch bản mở khóa phải khớp với kịch bản khóa) Trong các giao dịch Bitcoin, mỗi giao dịch bao gồm nhiều đầu vào và đầu ra. Mỗi đầu vào chỉ định một UTXO để mở khóa và cung cấp một kịch bản mở khóa để thực hiện việc đó, sau đó mở khóa và phá hủy UTXO đó. Các đầu ra của giao dịch hiển thị các UTXO mới được tạo ra và công khai hiển thị các kịch bản khóa tương ứng. Ví dụ, trong Đầu vào của một giao dịch, bạn chứng minh bạn là Sam bằng cách mở khóa nhiều UTXO mà người khác đã gửi cho bạn, phá hủy chúng trong quá trình đó. Sau đó, bạn tạo ra nhiều UTXO mới và chỉ định rằng xxx có thể mở khóa chúng trong tương lai.

Cụ thể, trong dữ liệu Đầu vào của một giao dịch, bạn cần khai báo UTXO nào bạn định mở khóa và chỉ định "vị trí lưu trữ" của các dữ liệu UTXO này. Điều quan trọng là phải hiểu rằng Bitcoin và Ethereum xử lý điều này khác nhau. Ethereum sử dụng tài khoản hợp đồng và tài khoản thuộc sở hữu bên ngoài (EOA) để lưu trữ dữ liệu, với số dư tài sản được ghi lại dưới dạng số trong các tài khoản này. Tất cả thông tin này được lưu trữ trong một cơ sở dữ liệu được gọi là "nhà nước thế giới". Khi một giao dịch xảy ra, "trạng thái thế giới" cập nhật trực tiếp số dư của các tài khoản cụ thể, giúp dễ dàng xác định vị trí dữ liệu. Ngược lại, Bitcoin không có "nhà nước thế giới". Thay vào đó, dữ liệu tài sản được phân phối trên các khối trước đó dưới dạng UTXO chưa sử dụng, được lưu trữ riêng lẻ trong Đầu ra của mỗi giao dịch.

Nếu bạn muốn mở khóa một UTXO cụ thể, bạn phải chỉ ra đầu ra giao dịch nào chứa thông tin UTXO trong quá khứ, và hiển thị ID của giao dịch (đó là hash của nó). Hãy để nút Bitcoin tìm kiếm nó trong lịch sử. Nếu bạn muốn truy vấn số dư Bitcoin của một địa chỉ cụ thể, bạn cần duyệt qua tất cả các khối từ đầu để tìm UTXO đã mở khóa liên kết với địa chỉ xx.

Khi bạn thường xuyên sử dụng ví Bitcoin, bạn có thể nhanh chóng kiểm tra số dư Bitcoin thuộc sở hữu của một địa chỉ cụ thể. Điều này thường xảy ra vì dịch vụ ví chính nó chỉ mục tất cả các địa chỉ bằng cách quét các khối, giúp chúng ta truy vấn nhanh chóng hơn.

(Khi bạn tạo giao dịch để chuyển UTXO của bạn cho người khác, bạn cần phải xác định vị trí của UTXO đó trong lịch sử giao dịch Bitcoin bằng cách tham chiếu đến mã băm/giao dịch mà nó thuộc về.) Thú vị là kết quả giao dịch Bitcoin được tính toán ngoài chuỗi. Khi người dùng tạo giao dịch trên thiết bị cục bộ của họ, họ phải tạo tất cả Inputs và Outputs trước, hiệu quả tính toán các đầu ra của giao dịch. Sau đó, giao dịch được phát sóng đến mạng Bitcoin, được xác minh bởi các nút, và được thêm vào chuỗi khối. Mô hình “tính toán ngoài chuỗi — xác minh trên chuỗi” này hoàn toàn khác biệt so với Ethereum. Trên Ethereum, bạn chỉ cần cung cấp thông số đầu vào của giao dịch, và kết quả giao dịch được tính toán và đầu ra bởi các nút Ethereum. Hơn nữa, kịch bản khóa của một UTXO có thể được tùy chỉnh. Bạn có thể thiết lập một UTXO để “mở khóa bởi chủ sở hữu của một địa chỉ Bitcoin cụ thể,” yêu cầu chủ sở hữu phải cung cấp chữ ký số và khóa công khai (P2PKH). Trong các giao dịch Pay-to-Script-Hash (P2SH), bạn có thể thêm Mã băm Kịch bản vào kịch bản khóa của UTXO. Bất kỳ ai có thể gửi kịch bản tương ứng với mã băm này và đáp ứng các điều kiện được chỉ định trong kịch bản có thể mở khóa UTXO. Kịch bản Taproot, mà BitVM dựa vào, sử dụng các tính năng tương tự như trong P2SH.

Cách kích hoạt script Bitcoin

Để hiểu cơ chế kích hoạt của các kịch bản Bitcoin, chúng tôi sẽ bắt đầu với ví dụ P2PKH, viết tắt của "Pay to Public Key Hash". Trong cài đặt này, kịch bản khóa của một UTXO chứa một băm khóa công khai, và để mở khóa nó, khóa công khai tương ứng phải được cung cấp. Cơ chế này tương ứng với quy trình tiêu chuẩn của giao dịch Bitcoin. Trong ngữ cảnh này, một nút Bitcoin phải xác minh rằng khóa công khai trong kịch bản mở khóa khớp với băm khóa công khai được chỉ định trong kịch bản khóa. Theo cách đơn giản, nó kiểm tra xem "khóa" do người dùng cung cấp có phù hợp với "khóa" được đặt bởi UTXO hay không. Ở mức độ chi tiết hơn, dưới sơ đồ P2PKH, khi một nút Bitcoin nhận được một giao dịch, nó kết hợp kịch bản mở khóa của người dùng (ScriptSig) với kịch bản khóa (ScriptPubKey) của UTXO để mở khóa và sau đó thực thi kịch bản kết hợp này trong môi trường thực thi kịch bản Bitcoin. Hình ảnh dưới đây minh họa kết quả được nối trước khi thực thi:

Người đọc có thể không quen thuộc với môi trường thực thi tập lệnh BTC, vì vậy hãy giới thiệu ngắn gọn về nó. Các tập lệnh Bitcoin bao gồm hai yếu tố: dữ liệu và opcode. Các phần tử này được đẩy lên một ngăn xếp tuần tự từ trái sang phải và được thực thi theo logic được chỉ định để tạo ra kết quả cuối cùng (để giải thích về ngăn xếp là gì, độc giả có thể tham khảo ChatGPT). Trong ví dụ trên, phía bên trái hiển thị tập lệnh mở khóa (ScriptSig) do ai đó cung cấp, bao gồm chữ ký số và khóa công khai của họ. Phía bên phải hiển thị tập lệnh khóa (ScriptPubKey), chứa một loạt các opcodes và dữ liệu được đặt bởi người tạo UTXO khi tạo UTXO đó (hiểu ý tưởng chung là đủ; chúng ta không cần phải đi sâu vào ý nghĩa của từng opcode). Các mã opcode trong tập lệnh khóa bên phải, chẳng hạn như DUP, HASH160 và EQUALVERIFY, băm khóa công khai từ tập lệnh mở khóa bên trái và so sánh nó với hàm băm khóa công khai đặt trước trong tập lệnh khóa. Nếu chúng khớp, nó xác nhận rằng khóa công khai trong tập lệnh mở khóa khớp với hàm băm khóa công khai trong tập lệnh khóa, vượt qua xác minh đầu tiên. Tuy nhiên, có một vấn đề: nội dung của tập lệnh khóa được hiển thị công khai trên blockchain, có nghĩa là bất kỳ ai cũng có thể thấy hàm băm khóa công khai. Do đó, bất kỳ ai cũng có thể gửi khóa công khai tương ứng và tuyên bố sai sự thật là người được ủy quyền. Để giải quyết vấn đề này, sau khi xác minh khóa công khai và hàm băm khóa công khai, hệ thống cũng phải xác minh xem người khởi tạo giao dịch có thực sự kiểm soát khóa công khai hay không, liên quan đến việc xác minh chữ ký số. Mã opcode CHECKSIG trong tập lệnh khóa xử lý xác minh này. Tóm lại, theo sơ đồ P2PKH, tập lệnh mở khóa của người khởi tạo giao dịch phải bao gồm khóa công khai và chữ ký số. Khóa công khai phải khớp với hàm băm khóa công khai được chỉ định trong tập lệnh khóa và chữ ký số phải chính xác. Các điều kiện này phải được đáp ứng để mở khóa thành công UTXO.

(Đây là một minh họa động: Một biểu đồ về các kịch bản mở khóa Bitcoin dưới lược đồ P2PKH
Nguồn:https://learnmeabitcoin.com/technical/script)

Điều quan trọng cần lưu ý là mạng Bitcoin hỗ trợ các loại giao dịch khác nhau ngoài Pay to Public Key/Public Key Hash, như P2SH (Pay to Script Hash). Loại giao dịch cụ thể phụ thuộc vào cách cấu hình kịch bản khóa khi UTXO được tạo ra.

Quan trọng phải hiểu rằng dưới lược đồ P2SH, kịch bản khóa có thể thiết lập một Script Hash, và kịch bản mở khóa phải cung cấp nội dung kịch bản đầy đủ tương ứng với Script Hash này. Nút Bitcoin sau đó có thể thực thi kịch bản này, và nếu nó bao gồm logic xác minh đa chữ ký, nó hiệu quả kích hoạt ví đa chữ ký trên blockchain Bitcoin. Trong lược đồ P2SH, người tạo UTXO cần thông báo cho người sẽ mở khoá UTXO trong tương lai về nội dung kịch bản tương ứng với Script Hash. Miễn là cả hai bên đều hiểu nội dung kịch bản, chúng ta có thể triển khai logic kinh doanh phức tạp hơn chỉ là đa chữ ký. Đáng chú ý là blockchain Bitcoin không ghi lại trực tiếp UTXOs nào được liên kết với địa chỉ nào. Thay vào đó, nó ghi lại UTXOs nào có thể được mở khoá bằng public key hash hoặc script hash nào. Tuy nhiên, chúng ta có thể nhanh chóng suy ra địa chỉ tương ứng (chuỗi ký tự giống như lờ mờ được hiển thị trong giao diện ví) từ public key hash hoặc script hash.

Lý do bạn có thể thấy số lượng Bitcoin liên kết với một địa chỉ cụ thể trên các trình duyệt khối và giao diện ví là vì các dịch vụ này phân tích và giải mã dữ liệu blockchain cho bạn. Chúng quét tất cả các khối và, dựa trên khóa công khai hoặc khóa script được khai báo trong các tập lệnh khóa, tính toán “địa chỉ” tương ứng. Điều này cho phép họ hiển thị mức độ Bitcoin liên kết với địa chỉ đó.

Segregated Witness và Witness

Hiểu về P2SH giúp chúng ta hiểu rõ hơn về Taproot, một thành phần quan trọng cho BitVM. Tuy nhiên, trước khi đào sâu vào Taproot, việc hiểu về khái niệm của Witness và Segregated Witness (SegWit) là rất quan trọng. Xem xét về mã mở khóa và mã khóa, cũng như quá trình mở khóa UTXO, nhấn mạnh một vấn đề: chữ ký số cho một giao dịch được bao gồm trong mã mở khóa. Khi tạo chữ ký này, chính mã mở khóa không thể là một phần của dữ liệu được ký (vì các thông số được sử dụng để tạo chữ ký không thể bao gồm chính chữ ký).

Do đó, chữ ký số chỉ có thể bao gồm một phần dữ liệu giao dịch bên ngoài kịch bản mở khóa, nghĩa là nó không thể bảo vệ hoàn toàn toàn bộ dữ liệu giao dịch. Điều này dẫn đến một lỗ hổng khi một bên trung gian có thể thay đổi một cách nhẹ nhàng kịch bản mở khóa mà không ảnh hưởng đến việc xác minh chữ ký. Ví dụ, các node Bitcoin hoặc các nhóm đào có thể chèn thêm dữ liệu vào kịch bản mở khóa. Mặc dù sự thay đổi này không ảnh hưởng đến việc xác minh và kết quả của giao dịch, nó nhẹ nhàng thay đổi dữ liệu giao dịch, từ đó thay đổi hash giao dịch/tên giao dịch được tính toán. Vấn đề này được biết đến là biến đổi giao dịch.

Vấn đề ở đây là nếu bạn dự định khởi đầu nhiều giao dịch tuần tự phụ thuộc vào nhau (ví dụ, giao dịch 3 tham chiếu đến đầu ra của giao dịch 2, và giao dịch 2 tham chiếu đến đầu ra của giao dịch 1), thì các giao dịch tiếp theo phải tham chiếu đến các hash của các giao dịch trước đó. Bất kỳ bên trung gian nào, như một nhóm đào hoặc nút Bitcoin, đều có thể thực hiện các thay đổi nhỏ vào tập lệnh mở khóa, làm cho hash giao dịch khác biệt so với mong đợi của bạn sau khi nó được trên blockchain.

Sự không nhất quán này có thể làm vô hiệu hóa chuỗi giao dịch phụ thuộc vào nhau theo kế hoạch của bạn. Vấn đề này đặc biệt quan trọng trong bối cảnh các cầu DLC và BitVM2, nơi mà các lô giao dịch liên quan theo thứ tự được xây dựng, khiến cho các tình huống như vậy khá phổ biến.


Đơn giản, vấn đề biến đổi giao dịch xảy ra vì việc tính toán ID/hash giao dịch bao gồm dữ liệu từ kịch bản mở khóa. Các bên trung gian, như các nút Bitcoin, có thể thực hiện sửa đổi nhỏ vào kịch bản mở khóa, dẫn đến ID giao dịch không khớp với kỳ vọng của người dùng. Vấn đề này bắt nguồn từ các hạn chế thiết kế ban đầu trong Bitcoin. Nâng cấp Segregated Witness (SegWit) giải quyết vấn đề này bằng cách tách rời ID giao dịch khỏi kịch bản mở khóa. Với SegWit, việc tính toán băm giao dịch loại bỏ dữ liệu kịch bản mở khóa. Kịch bản khóa UTXO dưới SegWit bắt đầu bằng một opcode “OP_0” như một điểm đánh dấu, và kịch bản mở khóa tương ứng được đổi tên từ SigScript thành Witness.

Bằng cách tuân thủ các quy tắc Segregated Witness (SegWit), vấn đề về tính linh hoạt của giao dịch được giải quyết hiệu quả, loại bỏ những lo ngại về dữ liệu giao dịch bị giả mạo bởi các nút Bitcoin. Chức năng của P2WSH (Pay to Witness Script Hash) về cơ bản giống như P2SH (Pay to Script Hash). Bạn có thể đặt trước hàm băm tập lệnh trong tập lệnh khóa UTXO và người gửi tập lệnh mở khóa sẽ cung cấp nội dung tập lệnh tương ứng cho chuỗi để thực thi. Tuy nhiên, nếu nội dung tập lệnh bạn cần rất lớn và chứa nhiều mã, các phương pháp thông thường có thể không cho phép bạn gửi toàn bộ tập lệnh lên blockchain Bitcoin (do giới hạn kích thước khối). Trong những trường hợp như vậy, Taproot phát huy tác dụng. Taproot cho phép nén nội dung tập lệnh trên chuỗi, giúp xử lý các tập lệnh lớn hơn. BitVM tận dụng Taproot để xây dựng các giải pháp phức tạp hơn. Trong bài viết tiếp theo của loạt bài "Tiếp cận BTC" của chúng tôi, chúng tôi sẽ cung cấp giải thích chi tiết về Taproot, chữ ký trước và các công nghệ tiên tiến khác liên quan đến BitVM. Giữ nguyên!

Miễn trừ trách nhiệm:

  1. Bài viết này được sao chép từ [ Geek Web3], với bản quyền thuộc về tác giả ban đầu [Nickqiao & Faust & Shew Wang]. Nếu có bất kỳ ý kiến phản đối nào về việc tái in, vui lòng liên hệ với Học cửađội, và đội sẽ xử lý ngay theo các quy trình liên quan.
  2. Xin lưu ý: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ là của tác giả và không hình thành bất kỳ lời khuyên đầu tư nào.
  3. Các phiên bản bằng ngôn ngữ khác của bài viết đã được dịch bởi đội ngũ Gate Learn. Mà không đề cậpGate.io, các bài báo dịch không được sao chép, phổ biến hoặc đạo văn.
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!