Đối với một thuật toán f, hai bên không tin tưởng lẫn nhau, Alice và Bob, có thể xác định niềm tin theo cách sau:
Đối với các trường hợp 2, 3 và 4 ở trên, cho x là các giao dịch Layer2 và trạng thái ban đầu, f là chương trình đồng thuận Layer2, và y là trạng thái cuối của giao dịch, tương ứng với giải pháp mở rộng Layer2 trên blockchain. Trong đó:
Bảng 1: Cách thiết lập niềm tin
Ngoài ra, quan trọng phải lưu ý:
Hiện tại, nhờ vào hợp đồng thông minh Turing-complete của Solidity, công nghệ chứng minh gian lận và chứng minh tính hợp lệ được sử dụng rộng rãi trong việc mở rộng Layer2 của Ethereum. Tuy nhiên, dưới mô hình Bitcoin, bị hạn chế bởi chức năng opcode hạn chế của Bitcoin, 1000 phần tử ngăn xếp và các hạn chế khác, việc áp dụng các công nghệ này vẫn đang ở giai đoạn khám phá. Bài viết này tóm tắt các hạn chế và công nghệ đột phá dưới mô hình Bitcoin trong bối cảnh mở rộng Layer2 của Bitcoin, nghiên cứu công nghệ chứng minh tính hợp lệ và chứng minh gian lận, và đề cập đến công nghệ phân đoạn script độc đáo dưới mô hình Bitcoin.
Dưới mô hình Bitcoin, có nhiều hạn chế nhưng có thể sử dụng các phương pháp hoặc kỹ thuật thông minh khác nhau để vượt qua những hạn chế này. Ví dụ, cam kết bit có thể vượt qua hạn chế không có trạng thái UTXO, taproot có thể vượt qua hạn chế không gian kịch bản, đầu ra connector có thể vượt qua hạn chế phương pháp tiêu thụ UTXO và hợp đồng có thể vượt qua hạn chế chữ ký trước.
Bitcoin áp dụng mô hình UTXO, trong đó mỗi UTXO được khóa trong một tập lệnh khóa xác định các điều kiện phải đáp ứng để tiêu thụ UTXO đó. Kịch bản Bitcoin có các hạn chế sau:
Hiện tại, các kịch bản Bitcoin hoàn toàn không có trạng thái. Khi thực thi một tập lệnh Bitcoin, môi trường thực thi của nó được đặt lại sau mỗi tập lệnh. Điều này dẫn đến việc các tập lệnh Bitcoin không có khả năng hỗ trợ các tập lệnh ràng buộc 1 và 2 có cùng giá trị x. Tuy nhiên, vấn đề này có thể được giải quyết thông qua một số phương pháp, với ý tưởng cốt lõi là ký một giá trị theo một cách nào đó. Nếu một chữ ký có thể được tạo cho một giá trị, có thể đạt được các tập lệnh Bitcoin trạng thái. Nghĩa là, bằng cách kiểm tra chữ ký của giá trị x trong tập lệnh 1 và 2, có thể thực thi rằng cùng một giá trị x được sử dụng trong cả hai tập lệnh. Nếu có một chữ ký xung đột, có nghĩa là hai giá trị khác nhau được ký cho cùng một biến x, một hình phạt có thể được áp dụng. Giải pháp này được gọi là cam kết bit.
Nguyên tắc cam kết bit khá đơn giản. Một bit đề cập đến việc thiết lập hai giá trị hash khác nhau, hash0 và hash1, cho mỗi bit trong thông điệp cần ký. Nếu giá trị bit cần ký là 0, preimage0 của hash0 được tiết lộ; nếu giá trị bit cần ký là 1, preimage1 của hash1 được tiết lộ.
Ví dụ, với một tin nhắn bit đơn m ∈{0,1}, kịch bản mở khóa cam kết bit tương ứng chỉ là một số bức ảnh trước: nếu giá trị bit là 0, kịch bản mở khóa tương ứng là bức ảnh trước 0 - “0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140”; nếu giá trị bit là 1, kịch bản mở khóa tương ứng là bức ảnh trước 1 - “0x47c31e611a3bd2f3a7a42207613046703fa27496”. Do đó, với cam kết bit, có thể vượt qua giới hạn không trạng thái của UTXO và đạt được các kịch bản Bitcoin có trạng thái, tạo ra các tính năng mới thú vị khả dĩ.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // Đây là hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // Đây là hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// Hiện giá trị cam kết bit đang nằm trên ngăn xếp. Hoặc là “0” hoặc là “1”.
Hiện tại, có 2 cách thực hiện cam kết bit:
Hiện tại, thư viện BitVM2 triển khai các chữ ký Winternitz dựa trên hàm băm Blake3. Độ dài của chữ ký tương ứng với một bit đơn là khoảng 26 byte. Do đó, có thể thấy rằng giới thiệu trạng thái thông qua cam kết bit là tốn kém. Do đó, trong việc triển khai BitVM2, thông điệp được băm trước để thu được giá trị băm 256-bit, sau đó thực hiện cam kết bit trên giá trị băm để tiết kiệm chi phí, thay vì cam kết từng bit của thông điệp ban đầu dài hơn.
Bản nâng cấp Bitcoin Taproot soft fork, kích hoạt vào tháng 11 năm 2021, bao gồm ba đề xuất: chữ ký Schnorr (BIP 340), Taproot (BIP 341) và TapScript (BIP 342). Nó giới thiệu một loại giao dịch mới - giao dịch Pay-to-Taproot (P2TR). Giao dịch P2TR có thể tạo ra định dạng giao dịch riêng tư, linh hoạt và có khả năng mở rộng hơn bằng cách kết hợp những ưu điểm của Taproot, MAST (Merkel Abstract Syntax Tree) và chữ ký Schnorr.
P2TR hỗ trợ hai phương pháp chi tiêu: chi tiêu theo đường dẫn khóa hoặc đường dẫn script.
Theo quy định trong Taproot (BIP 341), khi chi tiêu qua đường dẫn tập lệnh, đường dẫn Merkle tương ứng không được vượt quá độ dài tối đa là 128. Điều này có nghĩa là số lượng tapleaf trong taptree không thể vượt quá 2 ^ 128. Kể từ khi nâng cấp SegWit vào năm 2017, mạng Bitcoin đo kích thước khối theo đơn vị trọng lượng, với mức hỗ trợ tối đa là 4 triệu đơn vị trọng lượng (khoảng 4MB). Khi đầu ra P2TR được chi tiêu qua đường dẫn tập lệnh, nó chỉ cần hiển thị một tập lệnh tapleaf duy nhất, có nghĩa là khối được đóng gói với một tập lệnh tapleaf duy nhất. Điều này ngụ ý rằng đối với các giao dịch P2TR, kích thước tập lệnh tương ứng với mỗi tapleaf có thể tối đa khoảng 4MB. Tuy nhiên, theo chính sách mặc định của Bitcoin, nhiều nút chỉ chuyển tiếp các giao dịch nhỏ hơn 400K; Các giao dịch lớn hơn cần phải cộng tác với các thợ đào để được đóng gói.
Khả năng tăng giá trị mang lại bởi Taproot làm cho việc mô phỏng các hoạt động mật mã như nhân và băm bằng các opcode hiện có trở nên quý giá hơn.
Khi xây dựng tính toán xác thực dựa trên P2TR, kích thước script tương ứng không còn bị giới hạn trong các ràng buộc 4MB, mà có thể được chia thành nhiều phần con được phân tán trên nhiều tapleafs, qua đó phá vỡ giới hạn không gian script 4MB. Trên thực tế, thuật toán xác minh Groth16 được thực hiện trong BitVM2 hiện tại có kích thước lên đến 2GB. Tuy nhiên, nó có thể được chia thành khoảng 1000 tapleafs và kết hợp với cam kết bit, sự nhất quán giữa các đầu vào và đầu ra của mỗi phần con tính toán có thể được ràng buộc, đảm bảo tính toàn vẹn và đúng đắn của toàn bộ tính toán.
Hiện tại, Bitcoin cung cấp hai phương pháp chi tiêu gốc cho một UTXO: chi tiêu bằng tập lệnh hoặc bằng khóa công khai. Do đó, miễn là chữ ký khóa công khai hoặc điều kiện tập lệnh chính xác được đáp ứng, UTXO có thể được sử dụng. Hai UTXO có thể được chi tiêu độc lập và không có hạn chế nào có thể được thêm vào để hạn chế hai UTXO, có nghĩa là phải đáp ứng các điều kiện bổ sung để chúng được chi tiêu.
Tuy nhiên, Burak, người sáng lập giao thức Ark, đã thông minh sử dụng cờ SIGHASH để đạt được đầu ra của bộ nối. Cụ thể, Alice có thể tạo ra một chữ ký để gửi BTC của mình cho Bob. Tuy nhiên, vì chữ ký có thể cam kết đến nhiều đầu vào, Alice có thể đặt chữ ký của mình là điều kiện: chữ ký chỉ hợp lệ cho giao dịch Taketx nếu và chỉ nếu giao dịch đó tiêu thụ đầu vào thứ hai. Đầu vào thứ hai được gọi là bộ nối, liên kết UTXO A và UTXO B. Nói cách khác, giao dịch Taketx chỉ hợp lệ nếu và chỉ nếu UTXO B chưa được tiêu thụ bởi Challengetx. Do đó, bằng cách phá hủy đầu ra của bộ nối, hiệu quả của giao dịch Taketx có thể bị chặn.
Hình 1: Minh họa Đầu ra Kết nối
Trong giao thức BitVM2, đầu ra của trình kết nối hoạt động như một nếu... chức năng khác. Khi đầu ra của trình kết nối được chi tiêu bởi một giao dịch, nó không thể được chi tiêu bởi một giao dịch khác để đảm bảo chi tiêu độc quyền của nó. Trong triển khai thực tế, để cho phép một giai đoạn phản ứng thách thức, các UTXO bổ sung với khóa thời gian được giới thiệu. Hơn nữa, đầu ra trình kết nối tương ứng cũng có thể được thiết lập với các chiến lược chi tiêu khác nhau khi cần thiết, chẳng hạn như cho phép bất kỳ bên nào chi tiêu trong trường hợp giao dịch thách thức, trong khi chỉ cho phép nhà điều hành chi tiêu hoặc cho phép bất kỳ ai chi tiêu sau thời gian chờ cho các giao dịch phản hồi.
Hiện tại, kịch bản Bitcoin chủ yếu giới hạn các điều kiện để mở khóa, mà không hạn chế cách UTXO có thể được tiêu thụ tiếp theo. Điều này bởi vì các kịch bản Bitcoin không thể đọc nội dung của giao dịch chính nó, có nghĩa là chúng không thể thực hiện kiểm tra giao dịch. Nếu các kịch bản Bitcoin có thể kiểm tra bất kỳ nội dung của giao dịch nào (bao gồm các đầu ra), chức năng hợp đồng có thể được thực hiện.
Các triển khai hợp đồng hiện tại có thể được chia thành hai loại:
Cả bằng chứng hợp lệ và bằng chứng gian lận đều có thể được sử dụng cho việc mở rộng Bitcoin L2, với những khác biệt chính được hiển thị trong Bảng 2.
Bảng 2: Bằng chứng Hợp lệ so với Bằng chứng Gian lận
Dựa trên cam kết bit, taproot, ký trước và đầu ra kết nối, bằng chứng gian lận dựa trên Bitcoin có thể được xây dựng. Dựa trên taproot, bằng chứng hợp lệ dựa trên Bitcoin cũng có thể được xây dựng bằng cách giới thiệu các opcode hợp đồng, chẳng hạn như OP_CAT. Ngoài ra, tùy thuộc vào việc Bob có hệ thống nhập học hay không, bằng chứng gian lận có thể được chia thành bằng chứng gian lận được phép và bằng chứng gian lận không được phép. Trong bằng chứng gian lận được phép, chỉ các nhóm cụ thể mới có thể đóng vai trò là Bob để bắt đầu thử thách, trong khi trong bằng chứng gian lận không được phép, bất kỳ bên thứ ba nào cũng có thể đóng vai trò là Bob để bắt đầu thử thách. Tính bảo mật của bằng chứng gian lận không được phép vượt trội so với những bằng chứng được phép, giảm nguy cơ thông đồng giữa những người tham gia được phép.
Dựa vào số lần tương tác thách thức-phản hồi giữa Alice và Bob, bằng chứng gian lận có thể được chia thành bằng chứng gian lận một vòng và bằng chứng gian lận nhiều vòng, như được thể hiện trong Hình 2.
Hình 2: Bằng chứng gian lận một vòng so với bằng chứng gian lận nhiều vòng
Như được hiển thị trong Bảng 3, bằng chứng gian lận có thể được thực hiện thông qua các mô hình tương tác khác nhau, bao gồm mô hình tương tác một vòng và mô hình tương tác nhiều vòng.
Bảng 3: Tương tác một vòng vs. Tương tác nhiều vòng
Trong mô hình mở rộng Layer2 của Bitcoin, BitVM1 áp dụng cơ chế bằng chứng gian lận đa vòng, trong khi BitVM2 sử dụng cơ chế bằng chứng gian lận một vòng, và bitcoin-circle stark sử dụng bằng chứng hợp lệ. Trong số này, BitVM1 và BitVM2 có thể được thực hiện mà không cần thay đổi bất kỳ điều gì trong giao thức Bitcoin, trong khi bitcoin-circle stark yêu cầu giới thiệu một mã opcode mới là OP_CAT.
Đối với hầu hết các nhiệm vụ tính toán, signet, testnet và mainnet của Bitcoin không thể đại diện hoàn toàn cho một tập lệnh 4MB, buộc phải sử dụng công nghệ chia tách tập lệnh - tức là chia tách tập lệnh tính toán hoàn chỉnh thành các phần nhỏ hơn 4MB, phân phối trên các tapleafs khác nhau.
Như thể hiện trong Bảng 3, bằng chứng gian lận nhiều vòng phù hợp với các tình huống có mong muốn giảm tính toán trọng tài trên chuỗi và / hoặc khi không thể xác định các phân đoạn tính toán có vấn đề trong một bước. Bằng chứng gian lận nhiều vòng, như tên cho thấy, yêu cầu nhiều vòng tương tác giữa người chứng minh và người xác minh để xác định các phân đoạn tính toán có vấn đề, tiếp theo là trọng tài dựa trên các phân đoạn được xác định.
Trong báo cáo BitVM đầu tiên của Robin Linus (thông thường được gọi là BitVM1), đã sử dụng bằng chứng gian lận đa vòng. Giả sử mỗi giai đoạn thử thách kéo dài một tuần và sử dụng phương pháp tìm kiếm nhị phân để định vị các đoạn tính toán gây sự cố, thời gian phản hồi thử thách trên chuỗi cho Bộ xác minh Groth16 có thể kéo dài lên đến 30 tuần, dẫn đến độ chính xác thấp. Mặc dù hiện có các nhóm nghiên cứu phương pháp tìm kiếm n-ary hiệu quả hơn so với tìm kiếm nhị phân, tuy nhiên độ chính xác của chúng vẫn thấp hơn đáng kể so với chu kỳ 2 tuần trong bằng chứng gian lận một vòng.
Hiện tại, các bằng chứng gian lận đa vòng trong mô hình Bitcoin sử dụng thử thách có sự cho phép, trong khi bằng chứng gian lận một vòng đã đạt được phương pháp thử thách không cần sự cho phép, giảm thiểu nguy cơ kết đồng trong số các thành viên và do đó tăng cường an ninh. Với mục tiêu này, Robin Linus đã tận dụng hoàn toàn những ưu điểm của Taproot để tối ưu hóa BitVM1. Không chỉ là số vòng tương tác đã giảm xuống còn một, mà phương pháp thử thách cũng được mở rộng thành một phương pháp không cần sự cho phép, mặc dù có tác động tăng cường tính toán trọng tài trên chuỗi.
Trong mô hình này, việc xác minh bằng chứng gian lận có thể được hoàn thành thông qua một tương tác duy nhất giữa người chứng minh và người xác minh. Người xác minh chỉ cần bắt đầu một thử thách và người chứng minh chỉ cần trả lời một lần. Trong phản hồi này, người chứng minh phải cung cấp bằng chứng tuyên bố rằng tính toán của họ là chính xác. Nếu người xác minh có thể tìm thấy sự mâu thuẫn trong bằng chứng đó, thách thức đã thành công; nếu không, nó không thành công. Các đặc điểm của bằng chứng gian lận tương tác một vòng được thể hiện trong Bảng 3.
Hình 3: Bằng chứng gian lận một vòng
Vào ngày 15 tháng 8 năm 2024, Robin Linus đã phát hành bản tóm tắt kỹ thuật BitVM2: Bridging Bitcoin to Second Layers, triển khai một cầu nối cross-chain sử dụng phương pháp bằng chứng gian lận một vòng tương tự như được hiển thị trong Hình 3.
OPCAT là một phần của ngôn ngữ script gốc khi Bitcoin được phát hành nhưng đã bị vô hiệu hóa vào năm 2010 do lỗ hổng bảo mật. Tuy nhiên, cộng đồng Bitcoin đã thảo luận về việc kích hoạt lại nó trong nhiều năm qua. OPCAT hiện đã được gán số 347 và đã được kích hoạt trên Bitcoin’s signet.
Chức năng chính của OP_CAT là kết hợp hai phần tử trong ngăn xếp và đẩy kết quả hợp nhất trở lại ngăn xếp. Chức năng này mở ra khả năng cho các hợp đồng và STARK Verifiers trên Bitcoin:
Mặc dù tải phần tính toán cần thiết để chạy thuật toán xác minh tương ứng để xác minh chứng minh sau bằng chứng SNARK/STARK nhỏ hơn nhiều so với phần tính toán gốc f, nhưng lượng script cần thiết khi chuyển đổi nó để thực hiện thuật toán xác minh trong kịch bản Bitcoin vẫn rất lớn. Hiện tại, dựa trên các opcode Bitcoin hiện có, kích thước script xác minh Groth16 tối ưu hóa và kích thước script xác minh Fflonk vẫn lớn hơn 2GB cả hai. Tuy nhiên, kích thước của một khối Bitcoin duy nhất chỉ là 4MB, khiến việc chạy toàn bộ script xác minh trong một khối duy nhất trở nên không thể. Tuy nhiên, kể từ khi nâng cấp Taproot, Bitcoin hỗ trợ thực thi script bằng tapleaf, cho phép script xác minh được chia thành nhiều phần, với mỗi phần phục vụ như một tapleaf để xây dựng một taptree. Sự nhất quán của các giá trị giữa các phần có thể được đảm bảo thông qua cam kết bit.
Trong sự hiện diện của các hợp đồng OP_CAT, Trình xác minh STARK có thể được chia thành nhiều giao dịch tiêu chuẩn nhỏ hơn 400KB, cho phép việc xác minh toàn bộ bằng chứng hợp lệ STARK được hoàn thành mà không cần phối hợp với các nhà đào tạo.
Phần này tập trung vào công nghệ chia nhỏ liên quan đến Bitcoin scripts trong điều kiện hiện tại mà không giới thiệu hoặc kích hoạt bất kỳ opcode mới nào.
Khi thực hiện phân tách script, các chiều thông tin sau phải cân bằng:
Hiện tại, phương pháp chia script có thể được chia thành ba danh mục chính sau đây:
Ví dụ, sau nhiều vòng tối ưu hóa, kích thước kịch bản của bộ xác minh Groth16 đã được giảm từ khoảng 7GB xuống còn khoảng 1.26GB. Ngoài việc tối ưu hóa tính toán tổng thể này, mỗi mảnh cũng có thể được tối ưu hóa riêng lẻ để tận dụng tối đa không gian stack. Ví dụ, bằng cách giới thiệu các thuật toán dựa trên bảng tra cứu tốt hơn và tải và dỡ bảng tra cứu một cách động, kích thước kịch bản của mỗi mảnh có thể được giảm thêm.
Chi phí tính toán và môi trường thời gian chạy của các ngôn ngữ lập trình web2 hoàn toàn khác biệt so với ngôn ngữ Bitcoin, vì vậy việc dịch đơn giản các thực hiện hiện có cho các thuật toán khác nhau thành Bitcoin scripts không khả thi. Do đó, cần xem xét các tối ưu hóa cụ thể cho tình huống Bitcoin:
Bài viết này trước tiên giới thiệu những hạn chế của các tập lệnh Bitcoin và thảo luận về việc sử dụng các cam kết Bitcoin để khắc phục giới hạn không trạng thái UTXO, sử dụng Taproot để vượt qua các giới hạn về không gian tập lệnh, sử dụng đầu ra của trình kết nối để vượt qua các hạn chế về phương thức chi tiêu UTXO và sử dụng hợp đồng để khắc phục các hạn chế trước khi ký. Sau đó, nó cung cấp một cái nhìn tổng quan và tóm tắt toàn diện về các đặc điểm của bằng chứng gian lận và bằng chứng hợp lệ, các tính năng của bằng chứng gian lận được phép và không được phép, sự khác biệt giữa bằng chứng gian lận một vòng và nhiều vòng và công nghệ tách tập lệnh Bitcoin.
Đối với một thuật toán f, hai bên không tin tưởng lẫn nhau, Alice và Bob, có thể xác định niềm tin theo cách sau:
Đối với các trường hợp 2, 3 và 4 ở trên, cho x là các giao dịch Layer2 và trạng thái ban đầu, f là chương trình đồng thuận Layer2, và y là trạng thái cuối của giao dịch, tương ứng với giải pháp mở rộng Layer2 trên blockchain. Trong đó:
Bảng 1: Cách thiết lập niềm tin
Ngoài ra, quan trọng phải lưu ý:
Hiện tại, nhờ vào hợp đồng thông minh Turing-complete của Solidity, công nghệ chứng minh gian lận và chứng minh tính hợp lệ được sử dụng rộng rãi trong việc mở rộng Layer2 của Ethereum. Tuy nhiên, dưới mô hình Bitcoin, bị hạn chế bởi chức năng opcode hạn chế của Bitcoin, 1000 phần tử ngăn xếp và các hạn chế khác, việc áp dụng các công nghệ này vẫn đang ở giai đoạn khám phá. Bài viết này tóm tắt các hạn chế và công nghệ đột phá dưới mô hình Bitcoin trong bối cảnh mở rộng Layer2 của Bitcoin, nghiên cứu công nghệ chứng minh tính hợp lệ và chứng minh gian lận, và đề cập đến công nghệ phân đoạn script độc đáo dưới mô hình Bitcoin.
Dưới mô hình Bitcoin, có nhiều hạn chế nhưng có thể sử dụng các phương pháp hoặc kỹ thuật thông minh khác nhau để vượt qua những hạn chế này. Ví dụ, cam kết bit có thể vượt qua hạn chế không có trạng thái UTXO, taproot có thể vượt qua hạn chế không gian kịch bản, đầu ra connector có thể vượt qua hạn chế phương pháp tiêu thụ UTXO và hợp đồng có thể vượt qua hạn chế chữ ký trước.
Bitcoin áp dụng mô hình UTXO, trong đó mỗi UTXO được khóa trong một tập lệnh khóa xác định các điều kiện phải đáp ứng để tiêu thụ UTXO đó. Kịch bản Bitcoin có các hạn chế sau:
Hiện tại, các kịch bản Bitcoin hoàn toàn không có trạng thái. Khi thực thi một tập lệnh Bitcoin, môi trường thực thi của nó được đặt lại sau mỗi tập lệnh. Điều này dẫn đến việc các tập lệnh Bitcoin không có khả năng hỗ trợ các tập lệnh ràng buộc 1 và 2 có cùng giá trị x. Tuy nhiên, vấn đề này có thể được giải quyết thông qua một số phương pháp, với ý tưởng cốt lõi là ký một giá trị theo một cách nào đó. Nếu một chữ ký có thể được tạo cho một giá trị, có thể đạt được các tập lệnh Bitcoin trạng thái. Nghĩa là, bằng cách kiểm tra chữ ký của giá trị x trong tập lệnh 1 và 2, có thể thực thi rằng cùng một giá trị x được sử dụng trong cả hai tập lệnh. Nếu có một chữ ký xung đột, có nghĩa là hai giá trị khác nhau được ký cho cùng một biến x, một hình phạt có thể được áp dụng. Giải pháp này được gọi là cam kết bit.
Nguyên tắc cam kết bit khá đơn giản. Một bit đề cập đến việc thiết lập hai giá trị hash khác nhau, hash0 và hash1, cho mỗi bit trong thông điệp cần ký. Nếu giá trị bit cần ký là 0, preimage0 của hash0 được tiết lộ; nếu giá trị bit cần ký là 1, preimage1 của hash1 được tiết lộ.
Ví dụ, với một tin nhắn bit đơn m ∈{0,1}, kịch bản mở khóa cam kết bit tương ứng chỉ là một số bức ảnh trước: nếu giá trị bit là 0, kịch bản mở khóa tương ứng là bức ảnh trước 0 - “0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140”; nếu giá trị bit là 1, kịch bản mở khóa tương ứng là bức ảnh trước 1 - “0x47c31e611a3bd2f3a7a42207613046703fa27496”. Do đó, với cam kết bit, có thể vượt qua giới hạn không trạng thái của UTXO và đạt được các kịch bản Bitcoin có trạng thái, tạo ra các tính năng mới thú vị khả dĩ.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // Đây là hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // Đây là hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// Hiện giá trị cam kết bit đang nằm trên ngăn xếp. Hoặc là “0” hoặc là “1”.
Hiện tại, có 2 cách thực hiện cam kết bit:
Hiện tại, thư viện BitVM2 triển khai các chữ ký Winternitz dựa trên hàm băm Blake3. Độ dài của chữ ký tương ứng với một bit đơn là khoảng 26 byte. Do đó, có thể thấy rằng giới thiệu trạng thái thông qua cam kết bit là tốn kém. Do đó, trong việc triển khai BitVM2, thông điệp được băm trước để thu được giá trị băm 256-bit, sau đó thực hiện cam kết bit trên giá trị băm để tiết kiệm chi phí, thay vì cam kết từng bit của thông điệp ban đầu dài hơn.
Bản nâng cấp Bitcoin Taproot soft fork, kích hoạt vào tháng 11 năm 2021, bao gồm ba đề xuất: chữ ký Schnorr (BIP 340), Taproot (BIP 341) và TapScript (BIP 342). Nó giới thiệu một loại giao dịch mới - giao dịch Pay-to-Taproot (P2TR). Giao dịch P2TR có thể tạo ra định dạng giao dịch riêng tư, linh hoạt và có khả năng mở rộng hơn bằng cách kết hợp những ưu điểm của Taproot, MAST (Merkel Abstract Syntax Tree) và chữ ký Schnorr.
P2TR hỗ trợ hai phương pháp chi tiêu: chi tiêu theo đường dẫn khóa hoặc đường dẫn script.
Theo quy định trong Taproot (BIP 341), khi chi tiêu qua đường dẫn tập lệnh, đường dẫn Merkle tương ứng không được vượt quá độ dài tối đa là 128. Điều này có nghĩa là số lượng tapleaf trong taptree không thể vượt quá 2 ^ 128. Kể từ khi nâng cấp SegWit vào năm 2017, mạng Bitcoin đo kích thước khối theo đơn vị trọng lượng, với mức hỗ trợ tối đa là 4 triệu đơn vị trọng lượng (khoảng 4MB). Khi đầu ra P2TR được chi tiêu qua đường dẫn tập lệnh, nó chỉ cần hiển thị một tập lệnh tapleaf duy nhất, có nghĩa là khối được đóng gói với một tập lệnh tapleaf duy nhất. Điều này ngụ ý rằng đối với các giao dịch P2TR, kích thước tập lệnh tương ứng với mỗi tapleaf có thể tối đa khoảng 4MB. Tuy nhiên, theo chính sách mặc định của Bitcoin, nhiều nút chỉ chuyển tiếp các giao dịch nhỏ hơn 400K; Các giao dịch lớn hơn cần phải cộng tác với các thợ đào để được đóng gói.
Khả năng tăng giá trị mang lại bởi Taproot làm cho việc mô phỏng các hoạt động mật mã như nhân và băm bằng các opcode hiện có trở nên quý giá hơn.
Khi xây dựng tính toán xác thực dựa trên P2TR, kích thước script tương ứng không còn bị giới hạn trong các ràng buộc 4MB, mà có thể được chia thành nhiều phần con được phân tán trên nhiều tapleafs, qua đó phá vỡ giới hạn không gian script 4MB. Trên thực tế, thuật toán xác minh Groth16 được thực hiện trong BitVM2 hiện tại có kích thước lên đến 2GB. Tuy nhiên, nó có thể được chia thành khoảng 1000 tapleafs và kết hợp với cam kết bit, sự nhất quán giữa các đầu vào và đầu ra của mỗi phần con tính toán có thể được ràng buộc, đảm bảo tính toàn vẹn và đúng đắn của toàn bộ tính toán.
Hiện tại, Bitcoin cung cấp hai phương pháp chi tiêu gốc cho một UTXO: chi tiêu bằng tập lệnh hoặc bằng khóa công khai. Do đó, miễn là chữ ký khóa công khai hoặc điều kiện tập lệnh chính xác được đáp ứng, UTXO có thể được sử dụng. Hai UTXO có thể được chi tiêu độc lập và không có hạn chế nào có thể được thêm vào để hạn chế hai UTXO, có nghĩa là phải đáp ứng các điều kiện bổ sung để chúng được chi tiêu.
Tuy nhiên, Burak, người sáng lập giao thức Ark, đã thông minh sử dụng cờ SIGHASH để đạt được đầu ra của bộ nối. Cụ thể, Alice có thể tạo ra một chữ ký để gửi BTC của mình cho Bob. Tuy nhiên, vì chữ ký có thể cam kết đến nhiều đầu vào, Alice có thể đặt chữ ký của mình là điều kiện: chữ ký chỉ hợp lệ cho giao dịch Taketx nếu và chỉ nếu giao dịch đó tiêu thụ đầu vào thứ hai. Đầu vào thứ hai được gọi là bộ nối, liên kết UTXO A và UTXO B. Nói cách khác, giao dịch Taketx chỉ hợp lệ nếu và chỉ nếu UTXO B chưa được tiêu thụ bởi Challengetx. Do đó, bằng cách phá hủy đầu ra của bộ nối, hiệu quả của giao dịch Taketx có thể bị chặn.
Hình 1: Minh họa Đầu ra Kết nối
Trong giao thức BitVM2, đầu ra của trình kết nối hoạt động như một nếu... chức năng khác. Khi đầu ra của trình kết nối được chi tiêu bởi một giao dịch, nó không thể được chi tiêu bởi một giao dịch khác để đảm bảo chi tiêu độc quyền của nó. Trong triển khai thực tế, để cho phép một giai đoạn phản ứng thách thức, các UTXO bổ sung với khóa thời gian được giới thiệu. Hơn nữa, đầu ra trình kết nối tương ứng cũng có thể được thiết lập với các chiến lược chi tiêu khác nhau khi cần thiết, chẳng hạn như cho phép bất kỳ bên nào chi tiêu trong trường hợp giao dịch thách thức, trong khi chỉ cho phép nhà điều hành chi tiêu hoặc cho phép bất kỳ ai chi tiêu sau thời gian chờ cho các giao dịch phản hồi.
Hiện tại, kịch bản Bitcoin chủ yếu giới hạn các điều kiện để mở khóa, mà không hạn chế cách UTXO có thể được tiêu thụ tiếp theo. Điều này bởi vì các kịch bản Bitcoin không thể đọc nội dung của giao dịch chính nó, có nghĩa là chúng không thể thực hiện kiểm tra giao dịch. Nếu các kịch bản Bitcoin có thể kiểm tra bất kỳ nội dung của giao dịch nào (bao gồm các đầu ra), chức năng hợp đồng có thể được thực hiện.
Các triển khai hợp đồng hiện tại có thể được chia thành hai loại:
Cả bằng chứng hợp lệ và bằng chứng gian lận đều có thể được sử dụng cho việc mở rộng Bitcoin L2, với những khác biệt chính được hiển thị trong Bảng 2.
Bảng 2: Bằng chứng Hợp lệ so với Bằng chứng Gian lận
Dựa trên cam kết bit, taproot, ký trước và đầu ra kết nối, bằng chứng gian lận dựa trên Bitcoin có thể được xây dựng. Dựa trên taproot, bằng chứng hợp lệ dựa trên Bitcoin cũng có thể được xây dựng bằng cách giới thiệu các opcode hợp đồng, chẳng hạn như OP_CAT. Ngoài ra, tùy thuộc vào việc Bob có hệ thống nhập học hay không, bằng chứng gian lận có thể được chia thành bằng chứng gian lận được phép và bằng chứng gian lận không được phép. Trong bằng chứng gian lận được phép, chỉ các nhóm cụ thể mới có thể đóng vai trò là Bob để bắt đầu thử thách, trong khi trong bằng chứng gian lận không được phép, bất kỳ bên thứ ba nào cũng có thể đóng vai trò là Bob để bắt đầu thử thách. Tính bảo mật của bằng chứng gian lận không được phép vượt trội so với những bằng chứng được phép, giảm nguy cơ thông đồng giữa những người tham gia được phép.
Dựa vào số lần tương tác thách thức-phản hồi giữa Alice và Bob, bằng chứng gian lận có thể được chia thành bằng chứng gian lận một vòng và bằng chứng gian lận nhiều vòng, như được thể hiện trong Hình 2.
Hình 2: Bằng chứng gian lận một vòng so với bằng chứng gian lận nhiều vòng
Như được hiển thị trong Bảng 3, bằng chứng gian lận có thể được thực hiện thông qua các mô hình tương tác khác nhau, bao gồm mô hình tương tác một vòng và mô hình tương tác nhiều vòng.
Bảng 3: Tương tác một vòng vs. Tương tác nhiều vòng
Trong mô hình mở rộng Layer2 của Bitcoin, BitVM1 áp dụng cơ chế bằng chứng gian lận đa vòng, trong khi BitVM2 sử dụng cơ chế bằng chứng gian lận một vòng, và bitcoin-circle stark sử dụng bằng chứng hợp lệ. Trong số này, BitVM1 và BitVM2 có thể được thực hiện mà không cần thay đổi bất kỳ điều gì trong giao thức Bitcoin, trong khi bitcoin-circle stark yêu cầu giới thiệu một mã opcode mới là OP_CAT.
Đối với hầu hết các nhiệm vụ tính toán, signet, testnet và mainnet của Bitcoin không thể đại diện hoàn toàn cho một tập lệnh 4MB, buộc phải sử dụng công nghệ chia tách tập lệnh - tức là chia tách tập lệnh tính toán hoàn chỉnh thành các phần nhỏ hơn 4MB, phân phối trên các tapleafs khác nhau.
Như thể hiện trong Bảng 3, bằng chứng gian lận nhiều vòng phù hợp với các tình huống có mong muốn giảm tính toán trọng tài trên chuỗi và / hoặc khi không thể xác định các phân đoạn tính toán có vấn đề trong một bước. Bằng chứng gian lận nhiều vòng, như tên cho thấy, yêu cầu nhiều vòng tương tác giữa người chứng minh và người xác minh để xác định các phân đoạn tính toán có vấn đề, tiếp theo là trọng tài dựa trên các phân đoạn được xác định.
Trong báo cáo BitVM đầu tiên của Robin Linus (thông thường được gọi là BitVM1), đã sử dụng bằng chứng gian lận đa vòng. Giả sử mỗi giai đoạn thử thách kéo dài một tuần và sử dụng phương pháp tìm kiếm nhị phân để định vị các đoạn tính toán gây sự cố, thời gian phản hồi thử thách trên chuỗi cho Bộ xác minh Groth16 có thể kéo dài lên đến 30 tuần, dẫn đến độ chính xác thấp. Mặc dù hiện có các nhóm nghiên cứu phương pháp tìm kiếm n-ary hiệu quả hơn so với tìm kiếm nhị phân, tuy nhiên độ chính xác của chúng vẫn thấp hơn đáng kể so với chu kỳ 2 tuần trong bằng chứng gian lận một vòng.
Hiện tại, các bằng chứng gian lận đa vòng trong mô hình Bitcoin sử dụng thử thách có sự cho phép, trong khi bằng chứng gian lận một vòng đã đạt được phương pháp thử thách không cần sự cho phép, giảm thiểu nguy cơ kết đồng trong số các thành viên và do đó tăng cường an ninh. Với mục tiêu này, Robin Linus đã tận dụng hoàn toàn những ưu điểm của Taproot để tối ưu hóa BitVM1. Không chỉ là số vòng tương tác đã giảm xuống còn một, mà phương pháp thử thách cũng được mở rộng thành một phương pháp không cần sự cho phép, mặc dù có tác động tăng cường tính toán trọng tài trên chuỗi.
Trong mô hình này, việc xác minh bằng chứng gian lận có thể được hoàn thành thông qua một tương tác duy nhất giữa người chứng minh và người xác minh. Người xác minh chỉ cần bắt đầu một thử thách và người chứng minh chỉ cần trả lời một lần. Trong phản hồi này, người chứng minh phải cung cấp bằng chứng tuyên bố rằng tính toán của họ là chính xác. Nếu người xác minh có thể tìm thấy sự mâu thuẫn trong bằng chứng đó, thách thức đã thành công; nếu không, nó không thành công. Các đặc điểm của bằng chứng gian lận tương tác một vòng được thể hiện trong Bảng 3.
Hình 3: Bằng chứng gian lận một vòng
Vào ngày 15 tháng 8 năm 2024, Robin Linus đã phát hành bản tóm tắt kỹ thuật BitVM2: Bridging Bitcoin to Second Layers, triển khai một cầu nối cross-chain sử dụng phương pháp bằng chứng gian lận một vòng tương tự như được hiển thị trong Hình 3.
OPCAT là một phần của ngôn ngữ script gốc khi Bitcoin được phát hành nhưng đã bị vô hiệu hóa vào năm 2010 do lỗ hổng bảo mật. Tuy nhiên, cộng đồng Bitcoin đã thảo luận về việc kích hoạt lại nó trong nhiều năm qua. OPCAT hiện đã được gán số 347 và đã được kích hoạt trên Bitcoin’s signet.
Chức năng chính của OP_CAT là kết hợp hai phần tử trong ngăn xếp và đẩy kết quả hợp nhất trở lại ngăn xếp. Chức năng này mở ra khả năng cho các hợp đồng và STARK Verifiers trên Bitcoin:
Mặc dù tải phần tính toán cần thiết để chạy thuật toán xác minh tương ứng để xác minh chứng minh sau bằng chứng SNARK/STARK nhỏ hơn nhiều so với phần tính toán gốc f, nhưng lượng script cần thiết khi chuyển đổi nó để thực hiện thuật toán xác minh trong kịch bản Bitcoin vẫn rất lớn. Hiện tại, dựa trên các opcode Bitcoin hiện có, kích thước script xác minh Groth16 tối ưu hóa và kích thước script xác minh Fflonk vẫn lớn hơn 2GB cả hai. Tuy nhiên, kích thước của một khối Bitcoin duy nhất chỉ là 4MB, khiến việc chạy toàn bộ script xác minh trong một khối duy nhất trở nên không thể. Tuy nhiên, kể từ khi nâng cấp Taproot, Bitcoin hỗ trợ thực thi script bằng tapleaf, cho phép script xác minh được chia thành nhiều phần, với mỗi phần phục vụ như một tapleaf để xây dựng một taptree. Sự nhất quán của các giá trị giữa các phần có thể được đảm bảo thông qua cam kết bit.
Trong sự hiện diện của các hợp đồng OP_CAT, Trình xác minh STARK có thể được chia thành nhiều giao dịch tiêu chuẩn nhỏ hơn 400KB, cho phép việc xác minh toàn bộ bằng chứng hợp lệ STARK được hoàn thành mà không cần phối hợp với các nhà đào tạo.
Phần này tập trung vào công nghệ chia nhỏ liên quan đến Bitcoin scripts trong điều kiện hiện tại mà không giới thiệu hoặc kích hoạt bất kỳ opcode mới nào.
Khi thực hiện phân tách script, các chiều thông tin sau phải cân bằng:
Hiện tại, phương pháp chia script có thể được chia thành ba danh mục chính sau đây:
Ví dụ, sau nhiều vòng tối ưu hóa, kích thước kịch bản của bộ xác minh Groth16 đã được giảm từ khoảng 7GB xuống còn khoảng 1.26GB. Ngoài việc tối ưu hóa tính toán tổng thể này, mỗi mảnh cũng có thể được tối ưu hóa riêng lẻ để tận dụng tối đa không gian stack. Ví dụ, bằng cách giới thiệu các thuật toán dựa trên bảng tra cứu tốt hơn và tải và dỡ bảng tra cứu một cách động, kích thước kịch bản của mỗi mảnh có thể được giảm thêm.
Chi phí tính toán và môi trường thời gian chạy của các ngôn ngữ lập trình web2 hoàn toàn khác biệt so với ngôn ngữ Bitcoin, vì vậy việc dịch đơn giản các thực hiện hiện có cho các thuật toán khác nhau thành Bitcoin scripts không khả thi. Do đó, cần xem xét các tối ưu hóa cụ thể cho tình huống Bitcoin:
Bài viết này trước tiên giới thiệu những hạn chế của các tập lệnh Bitcoin và thảo luận về việc sử dụng các cam kết Bitcoin để khắc phục giới hạn không trạng thái UTXO, sử dụng Taproot để vượt qua các giới hạn về không gian tập lệnh, sử dụng đầu ra của trình kết nối để vượt qua các hạn chế về phương thức chi tiêu UTXO và sử dụng hợp đồng để khắc phục các hạn chế trước khi ký. Sau đó, nó cung cấp một cái nhìn tổng quan và tóm tắt toàn diện về các đặc điểm của bằng chứng gian lận và bằng chứng hợp lệ, các tính năng của bằng chứng gian lận được phép và không được phép, sự khác biệt giữa bằng chứng gian lận một vòng và nhiều vòng và công nghệ tách tập lệnh Bitcoin.