Tác giả: Nickqiao & Faust & Shew Wang, web3 đam mê

Tư vấn: Nhóm nghiên cứu Bitlayer

Bản tóm tắt:

Gần đây, Delphi Digital đã phát hành một báo cáo nghiên cứu về các công nghệ liên quan đến lớp thứ hai của Bitcoin có tiêu đề “Bình minh của khả năng lập trình Bitcoin: Mở đường cho các bản cuộn”, trong đó sắp xếp một cách có hệ thống các khái niệm cốt lõi liên quan đến Bitcoin Rollup, chẳng hạn như BitVM Family Bucket, OP_CAT và Các hạn chế của giao ước, lớp DA sinh thái Bitcoin, cầu nối và bốn lớp Bitcoin thứ hai chính sử dụng BitVM, bao gồm Bitlayer, Citrea, Yona và Bob.

Mặc dù báo cáo nghiên cứu nhìn chung cho thấy bức tranh chung về công nghệ lớp thứ hai của Bitcoin nhưng nhìn chung nó tương đối chung chung và thiếu mô tả chi tiết, gây khó hiểu. Geek web3 đã tiến hành khai thác chuyên sâu dựa trên các báo cáo nghiên cứu của Delphi, cố gắng giúp nhiều người hiểu BitVM và các công nghệ khác một cách có hệ thống.

Chúng tôi sẽ cùng khởi động một loạt chuyên mục có tên "Tiếp cận BTC" với nhóm nghiên cứu Bitlayer và cộng đồng BitVM Trung Quốc để tiến hành phổ biến khoa học lâu dài xung quanh các chủ đề chính như BitVM, OP_CAT và cầu nối chuỗi chéo Bitcoin, đồng thời cam kết loại bỏ niềm tin Bitcoin dành cho nhiều người hơn. Các công nghệ liên quan đến Coin lớp 2 giúp mở đường cho nhiều người đam mê hơn.

chữ:

Vài tháng trước, Robin Linus, người đứng đầu ZeroSync, đã xuất bản một bài báo có tên "BitVM: Tính toán mọi thứ trên Bitcoin", chính thức đề xuất khái niệm về BitVM và thúc đẩy sự tiến bộ của công nghệ lớp thứ hai của Bitcoin. Có thể nói đây là một trong những đổi mới mang tính cách mạng nhất trong hệ sinh thái Bitcoin, nó đã làm bùng nổ toàn bộ hệ sinh thái lớp thứ hai Bitcoin, thu hút sự tham gia của các dự án ngôi sao như Bitlayer, Citrea, BOB, v.v. và mang lại sức sống cho nó. toàn bộ thị trường.

Sau đó, có thêm nhiều nhà nghiên cứu tham gia cải tiến BitVM và liên tiếp tung ra các phiên bản lặp khác nhau như BitVM1, BitVM2, BitVMX và BitSNARK. Tình hình chung như sau:

  1. Sách trắng về triển khai BitVM được Robin Linus đề xuất lần đầu tiên vào năm ngoái là một triển khai BitVM dựa trên các mạch cổng logic hư cấu, được gọi là BitVM0;

  2. Trong một số bài phát biểu và phỏng vấn tiếp theo, Robin Linus đã giới thiệu một cách không chính thức giải pháp BitVM dựa trên một CPU hư cấu (được gọi là BitVM1), tương tự như hệ thống chống gian lận Cannon của Optimism. Nó có thể sử dụng các tập lệnh Bitcoin để mô phỏng hiệu ứng CPU có mục đích chung. .

  3. Robin Linus cũng đề xuất BitVM2, một giao thức chống gian lận không tương tác một bước không được phép.

  4. Các thành viên của Rootstock Labs và Fairgate Labs đã phát hành sách trắng BitVMX Tương tự như BitVM1, họ hy vọng có thể mô phỏng tác động của CPU đa năng (ngoài chuỗi) thông qua các tập lệnh 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à sự cải tiến lặp đi lặp lại của các công cụ ngoại vi cũng có thể nhìn thấy được 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ồ” ngay từ “lâu đài” ban đầu. in the air”, điều này cũng đã thu hút ngày càng nhiều người. Ngày càng có nhiều nhà phát triển và nhà đầu tư mạo hiểm đổ xô vào hệ sinh thái Bitcoin.

Nhưng đối với hầu hết mọi người, không dễ để hiểu các thuật ngữ kỹ thuật liên quan đến BitVM và Bitcoin Lớp 2, bởi vì trước tiên bạn phải có sự hiểu biết có hệ thống về những kiến ​​thức cơ bản xung quanh nó, đặc biệt là các nền tảng như tập lệnh Bitcoin và Kiến thức Taproot. Các tài liệu tham khảo hiện có trên Internet hoặc quá dài và đầy những điều vô nghĩa, hoặc giải thích chưa thấu đáo, khiến người ta tưởng chừng như hiểu nhưng lại không hiểu. Chúng tôi cam kết giải quyết các vấn đề trên và cố gắng sử dụng ngôn ngữ rõ ràng nhất có thể để giúp nhiều người hiểu được kiến ​​thức xung quanh lớp thứ hai của Bitcoin và thiết lập sự hiểu biết có hệ thống về hệ thống BitVM.

MATT và cam kết: ý tưởng cơ bản của BitVM

Trước hết, chúng tôi muốn nhấn mạnh rằng ý tưởng cơ bản của BitVM là MATT, có nghĩa là Merkleize All The Things. Nó chủ yếu đề cập đến việc sử dụng cấu trúc lưu trữ dữ liệu dạng cây như Merkle Tree để hiển thị quy trình thực thi chương trình phức tạp và cố gắng tạo bằng chứng gian lận xác minh của Bitcoin Native.

Mặc dù MATT có thể thể hiện một chương trình phức tạp và dấu vết xử lý dữ liệu của nó, nhưng nó sẽ không trực tiếp xuất bản những dữ liệu này trên chuỗi BTC vì quy mô tổng thể của những dữ liệu này là rất lớn. Giải pháp sử dụng MATT chỉ lưu trữ dữ liệu trong chuỗi ngoài cây Merkle và chỉ xuất bản bản tóm tắt hàng đầu (Merkle Root) của cây Merkle lên chuỗi. Cây Merkle này chủ yếu chứa ba nội dung cốt lõi:

  • Mã tập lệnh hợp đồng thông minh

  • Dữ liệu theo yêu cầu của hợp đồng

  • Dấu vết còn lại trong quá trình thực hiện hợp đồng (bản ghi các thay đổi đối với thanh ghi bộ nhớ và CPU khi hợp đồng thông minh được thực thi trong các máy ảo như EVM)

Theo sơ đồ MATT, chỉ Merkle Root cực kỳ nhỏ được lưu trữ trên chuỗi và tập dữ liệu hoàn chỉnh có trong Merkle Tree được lưu trữ ngoài chuỗi. Điều này sử dụng một ý tưởng gọi là "cam kết". Dưới đây là giải thích về “Cam kết” là gì.

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

Tại một thời điểm nào đó, hàm băm của dữ liệu có thể được sử dụng như một "cam kết" đối với chính dữ liệu đó. Các sơ đồ cam kết khác bao gồm cam kết KZG hoặc Cây Merkle. Trong giao thức chống gian lận thông thường của Lớp 2, nhà xuất bản dữ liệu sẽ xuất bản tập dữ liệu hoàn chỉnh ngoài chuỗi và cam kết xuất bản tập dữ liệu trên chuỗi. Nếu ai đó phát hiện ra dữ liệu không hợp lệ trong tập 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 Cam kết, lớp thứ hai có thể nén một lượng lớn dữ liệu và chỉ công bố “cam kết” của mình 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 thế giới bên ngoài quan sát được.

Hiện tại, một số giải pháp BitVM chính, chẳng hạn như BitVM0, BitVM1, BitVM2 và BitVMX, về cơ bản áp dụng các cấu trúc trừu tượng tương tự:

1. Phân tách và cam kết chương trình: Đầu tiên, phân tách chương trình phức tạp thành một số lượng lớn mã hoạt động cơ bản (biên dịch), sau đó ghi lại dấu vết do các mã hoạt động này tạo ra trong quá trình thực thi cụ thể (nói một cách thẳng thắn là một chương trình chạy trên CPU và Khi vào bộ nhớ, toàn bộ thay đổi trạng thái đều được ghi lại, gọi là Trace). Sau đó, chúng tôi sắp xếp tất cả dữ liệu, bao gồm cả dấu vết và mã hoạt động, thành một tập dữ liệu, sau đó tạo cam kết cho tập dữ liệu đó.

Các kế hoạch cam kết cụ thể có thể có nhiều dạng, chẳng hạn như: Cây Merkle, PIOP (các thuật toán ZK khác nhau), hàm băm

2. Cam kết và ký trước tài sản: Nhà xuất bản và người xác minh dữ liệu cần khóa một lượng tài sản nhất định trên chuỗi thông qua ký trước và sẽ có những hạn chế. Các điều kiện này sẽ được kích hoạt cụ thể cho các tình huống có thể xảy ra trong tương lai. Nếu nhà xuất bản dữ liệu làm điều xấu, người xác minh có thể gửi chứng chỉ để lấy đi tài sản của nhà xuất bản dữ liệu.

3. Xuất bản dữ liệu và cam kết: Nhà xuất bản dữ liệu xuất bản cam kết trên chuỗi, tập dữ liệu hoàn chỉnh được xuất bản ra khỏi chuỗi và người xác minh truy xuất tập dữ liệu và kiểm tra xem có bất kỳ lỗi nào không. Mọi phần của tập dữ liệu ngoài chuỗi đều có mối tương quan với cam kết trên chuỗi.

4. Thử thách và hình phạt: Khi người xác minh phát hiện ra có lỗi trong dữ liệu do nhà xuất bản dữ liệu cung cấp, họ sẽ đưa phần dữ liệu này lên chuỗi để xác minh trực tiếp (phần dữ liệu này trước tiên phải được cắt thật tinh xảo) ). Đây là logic của bằng chứng gian lận. Nếu kết quả xác minh cho thấy nhà xuất bản dữ liệu thực sự đã cung cấp dữ liệu không hợp lệ ngoài chuỗi, thì nội dung của nó sẽ bị người xác thực thách thức anh ta lấy đi.

Tóm lại, Alice, nhà xuất bản dữ liệu, tiết lộ tất cả dấu vết được tạo trong quá trình thực hiện các giao dịch lớp thứ hai ngoài chuỗi và công bố các cam kết tương ứng với chuỗi. Nếu bạn muốn chứng minh rằng một phần dữ liệu nhất định là sai, trước tiên hãy chứng minh với nút Bitcoin rằng phần dữ liệu này có liên quan đến cam kết trên chuỗi, nghĩa là chứng minh rằng dữ liệu được chính Alice tiết lộ và sau đó hãy để nút Bitcoin xác nhận rằng phần dữ liệu này sai.

Bây giờ chúng ta đã hiểu đại khái về ý tưởng tổng thể của BitVM và tất cả các biến thể BitVM về cơ bản không thể tách rời khỏi mô hình trên. Vì vậy, tiếp theo, chúng ta hãy bắt đầu tìm hiểu và hiểu một số công nghệ quan trọng được sử dụng trong quy trình trên, bắt đầu với các tập lệnh Bitcoin cơ bản nhất, Taproot và ký trước.

Tập lệnh Bitcoin là gì?

Kiến thức liên quan đến Bitcoin khó hiểu hơn Ethereum. Ngay cả hành vi chuyển tiền cơ bản nhất cũng liên quan đến một loạt khái niệm, bao gồm UTXO (đầu ra giao dịch chưa được xác định), tập lệnh khóa (còn được gọi là ScriptPubKey) và tập lệnh mở khóa (Còn được gọi là ScriptSig). Trước tiên hãy giải thích những khái niệm chính này.

(Một ví dụ về mã tập lệnh Bitcoin bao gồm các mã opcode cấp thấp hơn ngôn ngữ cấp cao)

Cách thể hiện tài sản trong Ethereum giống như Alipay hoặc WeChat hơn. Mỗi lần chuyển tiền chỉ cộng và trừ số dư của các tài khoản khác nhau. Phương pháp này lấy tài khoản làm trung tâm và số dư tài sản chỉ là một con số dưới tên tài khoản; Biểu thức giống như vàng hơn. Mỗi miếng vàng (UTXO) sẽ được đánh dấu bằng chủ sở hữu của nó. Việc chuyển giao thực sự sẽ phá hủy UTXO cũ và tạo ra một UTXO mới (chủ sở hữu sẽ thay đổi).

Bitcoin UTXO chứa hai trường chính:

Số tiền, tính bằng "satoshi" (một trăm triệu satoshi là một BTC);

Tập lệnh khóa, còn được gọi là "ScriptPubKey", xác định các điều kiện mở khóa của UTXO.

Cần lưu ý rằng quyền sở hữu Bitcoin UTXO được thể hiện thông qua tập lệnh khóa. Nếu bạn muốn chuyển UTXO của mình cho Sam, bạn có thể bắt đầu giao dịch để hủy một trong các UTXO của mình và viết các điều kiện mở khóa của UTXO mới được tạo dưới dạng " Chỉ có Sam mới có thể mở khóa được nó".

Sau đó, nếu Sam muốn sử dụng số Bitcoin này, anh ấy cần gửi tập lệnh mở khóa (ScriptSig). Trong tập lệnh mở khóa này, Sam phải xuất trình chữ ký số của mình để chứng minh rằng anh ấy chính là Sam. Nếu tập lệnh mở khóa khớp với tập lệnh khóa nói trên, Sam có thể mở khóa và chuyển bitcoin cho người khác.

(Kịch bản mở khóa phải khớp với kịch bản khóa)

Từ góc độ biểu hiện, mỗi giao dịch trên chuỗi Bitcoin tương ứng với nhiều Đầu vào và Đầu ra. Mỗi Đầu vào phải khai báo một UTXO nhất định mà nó muốn mở khóa và gửi tập lệnh mở khóa để mở khóa và hủy UTXO Đầu ra Thông tin UTXO mới được tạo; sẽ được hiển thị và nội dung của tập lệnh khóa sẽ được tiết lộ cho công chúng.

Ví dụ: trong đầu vào của một giao dịch, bạn chứng minh rằng bạn là Sam, mở khóa nhiều UTXO do người khác cung cấp cho bạn, tiêu diệt chúng một cách thống nhất, tạo ra nhiều UTXO mới và tuyên bố rằng xxx sẽ mở khóa chúng trong tương lai.

Cụ thể, trong dữ liệu đầu vào của giao dịch, bạn phải khai báo những UTXO nào bạn muốn mở khóa và cho biết “vị trí lưu trữ” của những dữ liệu UTXO này. Cần lưu ý ở đây rằng Bitcoin và Ethereum hoàn toàn khác nhau. Ethereum cung cấp hai loại tài khoản: tài khoản hợp đồng và tài khoản EOA để lưu trữ dữ liệu. Số dư tài sản được ghi dưới dạng số dưới tên tài khoản hợp đồng hoặc tài khoản EOA. được đặt trong một tệp thống nhất có tên "Thế giới Trong cơ sở dữ liệu của "Trạng thái thế giới", các tài khoản cụ thể có thể được sửa đổi trực tiếp từ "Trạng thái thế giới" khi truyền, giúp dễ dàng xác định vị trí lưu trữ dữ liệu;

Bitcoin không có thiết kế trạng thái thế giới và dữ liệu tài sản được phân tán và lưu trữ trong các khối trước đây (nghĩa là dữ liệu UTXO đã mở khóa được lưu trữ riêng trong OutPut của mỗi giao dịch).

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

Khi bạn thường 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ỉ nhất định. Điều này thường là do dịch vụ ví tự lập chỉ mục tất cả các địa chỉ bằng cách quét các khối, giúp chúng tôi truy vấn nhanh chóng hơn.

(Khi bạn tạo một báo cáo giao dịch để cung cấp UTXO của mình cho người khác, bạn cần đánh dấu vị trí của UTXO trong lịch sử Bitcoin dựa trên mã băm/ID giao dịch mà các UTXO này thuộc về)

Điều thú vị là kết quả của các 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 mình, họ phải trực tiếp tạo cả Đầu vào và Đầu ra, tương đương với việc tính toán kết quả đầu ra của giao dịch. Các giao dịch được phát lên mạng Bitcoin và được các nút xác minh trước khi đưa vào chuỗi. Mô hình "xác minh tính toán ngoài chuỗi" này hoàn toàn khác với Ethereum, trên Ethereum, bạn chỉ cần cung cấp các tham số đầu vào giao dịch và kết quả giao dịch sẽ được nút Ethereum tính toán và xuất ra.

Ngoài ra, tập lệnh khóa UTXO (Locking Script) có thể tùy chỉnh. Bạn có thể đặt UTXO thành "có thể mở khóa bởi chủ sở hữu của một địa chỉ Bitcoin nhất định". . Trong loại giao dịch Pay-to-Script-Hash (P2SH), bạn có thể thêm Hash Script trong tập lệnh khóa UTXO. Ai có thể gửi hình ảnh gốc của tập lệnh tương ứng với Hash này và đáp ứng các điều kiện đặt trước trong hình ảnh gốc của tập lệnh? bạn có thể mở khóa UTXO. Tập lệnh Taproot mà BitVM dựa vào sử dụng các tính năng tương tự như P2SH.

Cách kích hoạt tập lệnh Bitcoin

Ở đây, trước tiên chúng tôi sử dụng P2PKH làm ví dụ để giới thiệu phương thức kích hoạt của tập lệnh Bitcoin. Chỉ khi hiểu phương thức kích hoạt của nó, chúng ta mới có thể hiểu được Taproot và BitVM phức tạp hơn. Tên đầy đủ của P2PKH là "Trả tiền cho băm khóa công khai". Theo sơ đồ này, hàm băm khóa công khai sẽ được đặt trong tập lệnh khóa UTXO và khóa chung tương ứng với hàm băm cần phải được gửi khi mở khóa. giống như ý tưởng chuyển Bitcoin thông thường.

Tại thời điểm này, nút Bitcoin phải xác nhận rằng khóa chung trong tập lệnh mở khóa khớp với hàm băm khóa chung được chỉ định trong tập lệnh khóa. Nói cách khác, nó phải xác nhận rằng “khóa” do người mở khóa gửi và giá trị đặt trước “khóa”. bởi UTXO khớp với nhau.

Hơn nữa, theo sơ đồ P2PKH, sau khi nút Bitcoin nhận được giao dịch, nó sẽ ghép tập lệnh mở khóa ScriptSig do người dùng cung cấp với tập lệnh khóa ScriptPubkey của UTXO để mở khóa và thực thi nó trong môi trường thực thi của tập lệnh BTC. Hình dưới đây thể hiện kết quả nối trước khi thực hiện:

Có thể bạn đọc chưa biết về môi trường thực thi script của BTC nên sau đây chúng tôi sẽ giới thiệu ngắn gọn về nó. Đầu tiên, tập lệnh BTC chứa hai phần tử:

dữ liệu và opcode. Các dữ liệu và mã thao tác này sẽ được đẩy vào ngăn xếp theo thứ tự từ trái qua phải và thực thi theo logic đã chỉ định để thu được kết quả cuối cùng (chi tiết về ngăn xếp là gì sẽ không được trình bày chi tiết ở đây. Bạn đọc có thể tự chatgpt).

Lấy hình trên làm ví dụ, phía bên trái là tập lệnh mở khóa ScriptSig do ai đó tải lên, bao gồm chữ ký số và khóa chung của anh ta, trong khi tập lệnh khóa ScriptPubkey ở phía bên phải chứa opcode và dữ liệu do người tạo UTXO thiết lập khi tạo ra UTXO (Ở đây chúng ta không cần hiểu ý nghĩa của từng opcode mà chỉ cần hiểu sơ bộ thôi).

DUP, HASH160, EQUALVERIFY và các mã hoạt động khác trong tập lệnh khóa ở bên phải trong hình trên chịu trách nhiệm băm Khóa công khai có trong tập lệnh mở khóa ở bên trái và so sánh nó với mã băm khóa công khai đặt trước trong tập lệnh khóa. Nếu cả hai bằng nhau, điều đó có nghĩa là khóa chung được tải lên trong tập lệnh mở khóa khớp với hàm băm khóa chung đặt trước trong tập lệnh khóa và lần xác minh đầu tiên được thông qua.

Tuy nhiên, có một vấn đề. Nội dung của tập lệnh khóa UTXO thực sự được công khai trên chuỗi. Bất kỳ ai cũng có thể quan sát hàm băm khóa công khai có trong đó. Bất kỳ ai cũng có thể tải lên khóa chung tương ứng và tuyên bố sai rằng anh ta là người đã ". do hoàng đế bổ nhiệm". "Nhân dân. Do đó, sau khi xác minh khóa chung và hàm băm khóa chung, cũng cần xác minh xem người khởi tạo giao dịch có thực sự là người kiểm soát khóa chung hay không, điều này yêu cầu xác minh chữ ký số. Opcode KIỂM TRA trong tập lệnh khóa có trách nhiệm xác minh chữ ký số.

Tóm lại, theo sơ đồ P2PKH, tập lệnh mở khóa do người khởi tạo giao dịch gửi có chứa khóa chung và chữ ký số phải khớp với hàm băm khóa chung được chỉ định trong tập lệnh khóa và chỉ chữ ký số của giao dịch là chính xác. khi những điều kiện này được đáp ứng thì việc Mở khóa UTXO có thể diễn ra suôn sẻ.

(Bức ảnh này rất động: sơ đồ của tập lệnh mở khóa Bitcoin theo sơ đồ P2PKH

Nguồn: https://learnmeabitcoin.com/Technology/script)

Tất nhiên, mạng Bitcoin hỗ trợ nhiều loại giao dịch, không chỉ Trả tiền cho khóa công khai/băm khóa chung mà còn cả P2SH (Trả tiền cho tập lệnh băm), v.v. Mọi thứ phụ thuộc vào cách đặt tập lệnh khóa tùy chỉnh khi UTXO được tạo. .

Cần lưu ý ở đây rằng theo sơ đồ P2SH, Script Hash có thể được đặt trước trong tập lệnh khóa và tập lệnh mở khóa yêu cầu gửi đầy đủ nội dung tập lệnh tương ứng với Script Hash. Các nút bitcoin có thể thực thi tập lệnh này. Nếu logic xác minh đa chữ ký được xác định trong tập lệnh này, thì hiệu ứng của ví đa chữ ký có thể đạt được trên chuỗi Bitcoin.

Tất nhiên, theo sơ đồ P2SH, người tạo UTXO phải cho người mở khóa UTXO trong tương lai biết trước nội dung tập lệnh tương ứng với Script Hash miễn là cả hai bên đều biết nội dung của Script này thì chúng ta mới có thể triển khai. logic kinh doanh phức tạp hơn nhiều chữ ký.

Cần lưu ý ở đây rằng chuỗi (khối) Bitcoin không ghi trực tiếp UTXO nào được liên kết với địa chỉ nào. Nó chỉ ghi lại hàm băm khóa công khai/băm tập lệnh nào mà UTXO có thể được mở khóa, nhưng chúng tôi dựa trên hàm băm khóa chung/. script Hash có thể nhanh chóng tính toán địa chỉ tương ứng (phần hiển thị trên giao diện ví trông giống như các ký tự bị cắt xén).

Lý do tại sao chúng ta có thể thấy số lượng xx Bitcoin dưới địa chỉ xx trong giao diện ví và trình khám phá khối là vì dự án ví và thám hiểm khối giúp bạn phân tích dữ liệu, quét tất cả các khối và khóa tập lệnh theo Bảng băm khóa công khai/băm tập lệnh được khai báo trong , tính toán "địa chỉ" tương ứng, sau đó hiển thị số lượng Bitcoin dưới tên của địa chỉ xx.

Nhân chứng tách biệt và nhân chứng

Sau khi hiểu được ý tưởng về P2SH, chúng tôi tiến một bước gần hơn tới Taproot mà BitVM dựa vào. Nhưng trước đó, chúng ta cần hiểu một khái niệm quan trọng: Nhân chứng và Nhân chứng tách biệt.

Xem lại tập lệnh mở khóa và tập lệnh khóa được đề cập trước đó, cũng như quy trình mở khóa UTXO, bạn sẽ thấy một vấn đề: chữ ký số của giao dịch được bao gồm trong tập lệnh mở khóa và tập lệnh mở khóa không thể bị ghi đè khi tạo chữ ký (tập lệnh mở khóa không thể bị ghi đè). các tham 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 các phần không phải là tập lệnh mở khóa, nghĩa là nó chỉ có thể được liên kết với phần chính của dữ liệu giao dịch và không thể bao gồm hoàn toàn giao dịch dữ liệu.

Bằng cách này, ngay cả khi tập lệnh mở khóa giao dịch bị người trung gian thao túng một chút cũng sẽ không ảnh hưởng đến kết quả xác minh chữ ký. Ví dụ: các nút Bitcoin hoặc nhóm khai thác có thể chèn dữ liệu khác vào tập lệnh mở khóa của giao dịch, gây ra những thay đổi nhỏ trong dữ liệu giao dịch mà không ảnh hưởng đến việc xác minh chữ ký và kết quả giao dịch được tính toán cuối cùng cũng sẽ thay đổi. Điều này được gọi là vấn đề về tính linh hoạt của giao dịch.

Điểm bất lợi của điều này là nếu bạn dự định bắt đầu nhiều giao dịch liên tiếp và có sự phụ thuộc tuần tự (ví dụ: giao dịch 3 tham chiếu đầu ra của giao dịch 2 và giao dịch 2 tham chiếu đầu ra của giao dịch 1), thì các giao dịch tiếp theo sẽ ID (băm) của giao dịch trước đó phải được trích dẫn. Bất kỳ trung gian nào như nhóm khai thác hoặc nút Bitcoin đều có thể tinh chỉnh nội dung của tập lệnh mở khóa để hàm băm sau khi giao dịch được tải lên không phù hợp với những gì bạn mong đợi. nhiều giao dịch bạn đã tạo trước có các giao dịch liên quan tuần tự sẽ không còn hiệu lực.

Trên thực tế, trong các giải pháp cầu nối DLC và BitVM2, các giao dịch có tương quan tuần tự sẽ được xây dựng theo đợt nên kịch bản nêu trên không phải là hiếm.

Nói một cách đơn giản, vấn đề về khả năng mở rộng giao dịch là do khi tính toán ID/băm giao dịch, dữ liệu của tập lệnh mở khóa sẽ được đưa vào và các trung gian như nút Bitcoin có thể tinh chỉnh nội dung của tập lệnh mở khóa, khiến cho ID giao dịch khác với những gì người dùng mong đợi không tương thích. Trên thực tế, đây là dấu vết lịch sử do sự thiếu cân nhắc kỹ lưỡng của Bitcoin trong thiết kế ban đầu để lại.

Bản nâng cấp Segregated Witness/SegWit sau này thực sự tách riêng hoàn toàn ID giao dịch và tập lệnh mở khóa. Không cần bao gồm dữ liệu tập lệnh mở khóa khi tính toán hàm băm giao dịch. Tập lệnh khóa UTXO sau khi nâng cấp SegWit sẽ đặt một opcode có tên "OP_0" ở vị trí đầu tiên theo mặc định, đóng vai trò như một dấu hiệu; và tập lệnh mở khóa tương ứng đã được đổi tên từ SigScript thành Witness.

Sau khi tuân theo các quy tắc SegWit, vấn đề về khả năng mở rộng giao dịch sẽ được giải quyết ổn thỏa và bạn không cần phải lo lắng về việc dữ liệu giao dịch gửi đến nút Bitcoin sẽ được tinh chỉnh. Tất nhiên, chúng ta không cần phải suy nghĩ quá phức tạp. Chức năng của P2WSH về cơ bản không khác biệt so với P2SH đã đề cập trước đó. Bạn có thể đặt trước hàm băm tập lệnh trong tập lệnh khóa UTXO và đợi người gửi tập lệnh mở khóa gửi. nội dung tập lệnh tương ứng với hàm băm vào chuỗi và được thực thi.

Nhưng nếu nội dung của tập lệnh bạn muốn triển khai đặc biệt lớn và chứa nhiều mã thì tập lệnh hoàn chỉnh không thể được gửi tới chuỗi Bitcoin thông qua các phương pháp thông thường (mỗi khối có giới hạn kích thước). Phải làm gì? Điều này yêu cầu sử dụng Taproot để hợp lý hóa nội dung tập lệnh trên chuỗi và BitVM là một giải pháp phức tạp được xây dựng dựa trên Taproot.