OP_CAT có đang diễn ra không? Đề xuất giao ước vừa được gán số BIP #347. Nhưng trước khi tìm hiểu sâu hơn, hãy cùng khám phá các giao ước là gì và tại sao người chơi Bitcoin có thể muốn chúng.

Bitcoin có phải là trạng thái lý tưởng của tiền điện tử kỹ thuật số hay chúng ta muốn nhiều hơn nữa từ đồng tiền trên chuỗi của mình?

Làm trầy xước bề mặt: Hạn chế của tập lệnh Bitcoin

Để hiểu các đề xuất giao ước như OP_CAT, điều quan trọng là phải tìm hiểu những hạn chế cơ bản của Bitcoin Script như hiện nay. Dưới vỏ bọc, Bitcoin cho phép tạo các hợp đồng thông minh cơ bản thông qua các mã xác định các quy tắc khóa và mở khóa tiền. Tuy nhiên, Bitcoin Script, với tư cách là một ngôn ngữ lập trình, khá hạn chế ở logic cơ bản chỉ phát huy tác dụng khi di chuyển tiền trong một giao dịch mới.

Trong Bitcoin ngày nay, không có cách nào để định cấu hình trước hoặc ra lệnh cho đường dẫn giao dịch của tiền xu của bạn hoặc tốc độ di chuyển của tiền xu tại thời điểm chúng bị khóa (ngoài quy trình làm việc hacky sử dụng PSBT, các giao dịch bitcoin được ký một phần, không thể thực hiện đúng cách). bao gồm phí giao dịch, chứng minh việc xóa nếu không sử dụng hoặc ngăn chặn việc phát sóng sau này).

Sự đơn giản này, mặc dù là cốt lõi của mô hình bảo mật Bitcoin, nhưng lại gây ra những hạn chế đáng kể về khả năng hỗ trợ ngay cả các hợp đồng thông minh cơ bản của ngôn ngữ kịch bản.

Mô hình thực thi tuyến tính

Một hạn chế của Bitcoin Script là mô hình hoạt động của nó trong đó các opcode được thực thi tuần tự mà không có vòng lặp.

Từ ví dụ về giao dịch P2PKH này, bạn có thể thấy cách tập lệnh thực thi tuyến tính: sao chép khóa chung, băm nó thành một địa chỉ, xác minh hàm băm đối với tập lệnh khóa và cuối cùng kiểm tra chữ ký đối với khóa chung.

Việc không có vòng lặp có nghĩa là các tập lệnh không hoàn thành Turing và được đảm bảo chấm dứt, ngăn chặn các sự cố như vòng lặp vô hạn có khả năng làm dừng hoặc làm chậm mạng đáng kể. Mặc dù lựa chọn thiết kế này cho phép việc sử dụng tài nguyên bị giới hạn tĩnh nhưng nó cũng hạn chế khả năng quản lý các quy trình công việc phức tạp của Script.

Thiếu số học cơ bản

Bitcoin Script chỉ có dưới 100 mã opcode không cần thiết và hơi ngạc nhiên là không có khả năng nhân, chia hoặc kết hợp các đối tượng trên ngăn xếp. Như nhiều người dùng quan tâm đến OP_CAT sẽ biết, Satoshi đã vô hiệu hóa một số opcode trong Bitcoin vào năm 2010, bao gồm OP_OR, OP_MUL (nhân), OP_DIV (chia) và OP_CAT (nối) cùng với các opcode khác. Các opcode bị vô hiệu hóa đã bị xóa vì quá trình triển khai ban đầu của chúng có các lỗ hổng có thể khai thác được và có thể ảnh hưởng đến bảo mật của mạng. Nhưng sự vắng mặt của các opcode này khiến việc tính toán cơ bản trở nên khó khăn, điều này có thể hữu ích trong các tình huống đơn giản như tính phí giao dịch trong hợp đồng.

Thiếu khả năng hiển thị dữ liệu giao dịch

Nhìn bề ngoài, tôi nghĩ hầu hết mọi người đều cho rằng hợp đồng thông minh Bitcoin có thể thấy số lượng giá trị và bất kỳ phần nào khác của dữ liệu giao dịch, vì thông tin này đã có thể xem công khai trên blockchain. Nhưng trái ngược với giả định này, các hợp đồng trên Bitcoin không thể đặt điều kiện chi tiêu dựa trên dữ liệu giao dịch, bởi vì Bitcoin Script có khả năng rất hạn chế trong việc xem dữ liệu giao dịch.

Nếu tập lệnh có khả năng diễn giải nhiều chi tiết hơn trong dữ liệu giao dịch, chúng tôi có thể xây dựng các hợp đồng mạnh mẽ hơn nhiều, có thể thực hiện tất cả những điều thú vị như thực thi các điều kiện chi tiêu cụ thể, tạo giao dịch nhiều giai đoạn và kích hoạt các tính năng bảo mật nâng cao hơn như kho tiền.

Chúng ta phải làm gì với nó?

Chúng tôi biết Bitcoin có những hạn chế này và trong nhiều năm qua, nhiều đề xuất khác nhau đã được thảo luận để giới thiệu (hoặc trong một số trường hợp giới thiệu lại) chức năng này. Các thử nghiệm rộng hơn với Bitcoin Script, chẳng hạn như Simplicity và các thử nghiệm khác, nhằm mục đích cung cấp giải pháp thay thế cho các ràng buộc dựa trên ngăn xếp. Các mã opcode như OP_MULTISHA256, OP_LESS và OP_LE32TOLE64 nhằm mục đích nâng cấp khả năng số học của Bitcoin. Các đề xuất như OP_CTV và OP_CAT liên quan đến các mã hoạt động nội tâm được nhóm lại theo thuật ngữ giao ước.

Vậy chính xác thì sự khác biệt giữa hợp đồng thông minh và giao ước thời hạn mới là gì?

Hợp đồng thông minh so với giao ước

Hợp đồng thông minh là các giao dịch tự thực hiện chuyển tiền mà không qua trung gian. Trong Bitcoin ngày nay, các hợp đồng thông minh chỉ giới hạn ở hành động khóa và mở khóa bitcoin bằng Bitcoin Script. Các giao ước nhằm mục đích nâng cao chức năng hợp đồng thông minh của Bitcoin bằng cách cho phép người dùng kiểm soát cách chi tiêu tiền của họ trong các giao dịch trong tương lai.

Bằng cách cho phép Script diễn giải dữ liệu giao dịch, chúng tôi tạo ra một cách hiệu quả để sử dụng dữ liệu đó trong logic hợp đồng.

Đây chỉ là một số mã hoạt động nội tâm thú vị hơn dành cho chức năng của giao ước:

  1. OP_TXHASH: Cung cấp hàm băm của đầu vào (hoặc đầu ra) của giao dịch và cung cấp cho Script khả năng xác minh và thực thi các điều kiện dựa trên dữ liệu giao dịch.

  2. OP_CSFS + OP_CAT: Cả hai cùng nhau cho phép các tập lệnh kiểm tra chữ ký đối với bất kỳ dữ liệu nào, không chỉ chính giao dịch. Điều này có nghĩa là Tập lệnh có thể xác minh các điều kiện dựa trên dữ liệu giao dịch hoặc thông tin bên ngoài, mở rộng khả năng xác thực trong tập lệnh Bitcoin.

Hai mã hoạt động này có phạm vi rộng có chủ ý, cho phép các quy trình xác thực phức tạp và khả năng xem xét nội tâm. Những giao ước khác có phạm vi hẹp hơn và được thiết kế để trở thành một hình thức giao ước hạn chế hơn.

  1. OP_CHECKTEMPLATEVERIFY (CTV): Cho phép đầu ra giao dịch nhúng mẫu của giao dịch chi tiêu trong tương lai, cho phép các giao ước theo cách hạn chế hơn.

  2. OP_VAULT: Cho phép một hình thức giao ước cụ thể được sử dụng cho “vòm tiền”, cho phép người dùng chỉ định điểm đến giao dịch nhưng không thực sự di chuyển tiền ngoại trừ sau khi bị trì hoãn.

Sau đó, có OP_CAT riêng, đây không phải là một opcode trực tiếp xem xét nội tâm…

  1. OP_CAT: Cho phép Tập lệnh nối hai phần tử trên ngăn xếp, điều này rất hữu ích để kết hợp các phần thông tin khác nhau trong tập lệnh.

OP_CAT dường như không có bất kỳ khả năng nội tâm nào, vậy chuyện gì đang xảy ra ở đây?

OP_CAT: Làm sáng tỏ tất cả các khả năng

Xem xét nội tâm giao dịch

Vào năm 2021, Andrew Poelstra đã viết về các thủ thuật xem xét nội tâm của OP_CAT trong một bài đăng trên blog. Ông đưa ra những ví dụ cụ thể nhưng cho rằng độc giả đã có kiến ​​thức trước về các kỹ thuật tương tự. Ở đây, tôi sẽ nhằm mục đích đơn giản hóa lời giải thích đó để hiểu rõ hơn.

Trong Bitcoin Script, chỉ có ba mã hoạt động chính cho phép bạn xem xét dữ liệu giao dịch: CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY và CHECKSIG. Ngoài ra, còn có các biến thể như CHECKSIGVERIFY, CHECKSIGADD, CHECKMULTISIG và CHECKMULTISIGVERIFY, về cơ bản là các biến thể nhỏ của CHECKSIG. Hai cái đầu tiên chỉ cho bạn biết liệu séc có được xác minh hay không, cung cấp chức năng khá hẹp. CHECKSIG cũng tương tự, nhưng điểm khác biệt ở đây là nó cho phép bạn lấy chữ ký và khóa chung trên ngăn xếp. Hấp dẫn.

Theo truyền thống, chúng ta coi phép nối là một hàm nối hai mục lại với nhau, nhưng chúng ta cũng có thể sử dụng nó để tách hoặc tách một mục, trong trường hợp này—chữ ký thành một cặp (r, s).

Làm cách nào để chúng tôi lấy được chức năng OP_SPLIT từ OP_CAT?

“Nếu bạn có một vật thể lớn nào đó, bạn có thể chia nó thành hai phần bằng cách yêu cầu người dùng dành thời gian để cung cấp hai phần đó. Bạn CAT chúng lại với nhau và kiểm tra sự bình đẳng về cơ bản. Bạn luôn có thể đảo ngược mọi thao tác theo cách này. Với CAT, bạn có thể tách rời các chữ ký.” — Andrew Poelstra, TABConf 2021

Chuyện gì đang xảy ra ở đây?

Bằng cách yêu cầu người dùng cung cấp chữ ký, khóa chung và giao dịch, bạn có thể chia chữ ký thành các phần cấu thành của nó, sau đó kiểm tra từng phần một cách độc lập với dữ liệu giao dịch. Kỹ thuật này có thể được xem như một hình thức phân tách hoặc kết hợp, vì nó xác nhận rằng chữ ký và khóa chung thực sự là các thành phần của một giao dịch hợp lệ.

Làm thế nào tất cả những điều này giúp chúng ta xem xét nội tâm?

“Trong Taproot, nơi chúng tôi có chữ ký Schnorr sử dụng OP_CAT và opcode xác minh chữ ký Schnorr, hóa ra là có thể nhận được một dạng giao ước không đệ quy trong đó bạn thực sự nhận được hàm băm giao dịch. Thậm chí không giống như một hàm băm giao dịch bị xáo trộn hài hước mà là một hàm băm SHA2 theo nghĩa đen của tất cả dữ liệu giao dịch trong ngăn xếp.” — Andrew Poelstra, TABConf 2021

Poelstra tiếp tục trình bày cách bạn có thể nhận được hàm băm SHA2 cho các đầu vào hoặc đầu ra giao dịch còn sót lại trên ngăn xếp. Chúng ta sẽ bỏ qua phép toán mặt trăng ở đây, nhưng hàm ý là với OP_CAT, chúng ta có thể hạn chế các phần của giao dịch theo yêu cầu của tập lệnh mở khóa. Chúng ta có thể hạn chế địa chỉ gửi hoặc giá trị được gửi của giao dịch đó, trong đó hàm băm giao dịch đóng vai trò là chìa khóa để mở khóa.

hầm

Việc sử dụng các kỹ thuật tương tự giúp chúng tôi xem xét nội tâm giao dịch và nhanh chóng cung cấp cho chúng tôi phiên bản cơ bản của vault. Theo logic được nêu trong blog của Poelstra, một nhà phát triển có tên Rijndael đã chứng minh rằng chúng ta có thể làm điều này chỉ với OP_CAT khi triển khai Purrfect Vaults của anh ấy.

“Việc xây dựng lại TXID trên ngăn xếp để xem xét các giao dịch trước đó thực sự dễ dàng hơn tôi mong đợi.” — Rijndael

Với vault, người dùng chỉ định địa chỉ tiếp theo mà tiền của họ phải đến, cung cấp cơ chế thu hồi tiền trong trường hợp khóa bị xâm phạm và giảm động cơ trộm cắp khóa riêng.

Cây Merkle cho tập lệnh

Trong Bitcoin ngày nay, Cây Merkle là cấu trúc dữ liệu được sử dụng để xác minh, đồng bộ hóa dữ liệu và ít nhiều ‘xâu chuỗi’ các giao dịch và khối của chuỗi khối lại với nhau. Opcode OP_CAT, cho phép ghép hai biến ngăn xếp, khi được sử dụng cùng với hàm băm SHA256 của khóa chung, tạo điều kiện thuận lợi cho quá trình xác minh cây Merkle đơn giản cho các tập lệnh. Cách tiếp cận này, ban đầu được đề xuất bởi Pieter Wuille vào năm 2015, đã được triển khai thành công trong mạng Liquid.

Hãy tưởng tượng một cấu trúc cây chứa đầy các điều kiện chi tiêu khác nhau, chẳng hạn như tiền ảnh băm, khóa thời gian và khóa chung, được gọi là chữ ký cây.

Chữ ký cây

OP_CAT cho phép tạo Chữ ký cây:

“…Cung cấp tập lệnh đa chữ ký có kích thước có thể logarit theo số lượng khóa chung và có thể mã hóa các điều kiện chi tiêu vượt quá n-of-m. Chẳng hạn, một giao dịch có kích thước nhỏ hơn 1KB có thể hỗ trợ chữ ký cây với hàng nghìn khóa chung. Điều này cũng cho phép các điều kiện chi tiêu hợp lý tổng quát.” — Tác giả BIP, Ethan Heilman, trong danh sách gửi thư của nhà phát triển bitcoin

Điều này sẽ cho phép xác thực bất kỳ nội dung băm nào trong cây, duy trì tính toàn vẹn và độ tin cậy của dữ liệu mà không cần thêm số lượng lớn hoặc cồng kềnh không cần thiết vào chuỗi khối.

Điều gì thú vị về tất cả những điều này?

Giao ước đệ quy

Nếu bạn có khả năng kiểm tra một giao dịch và áp dụng các ràng buộc cho một số phần nhất định của giao dịch đó, bạn có thể thiết lập các điều kiện áp dụng cho nhiều giao dịch, tạo ra một chuỗi các hạn chế liên tục một cách hiệu quả. Khái niệm này được gọi là giao ước đệ quy. OP_CAT là một đề xuất độc đáo vì nó mang lại cho chúng tôi rất nhiều sức mạnh chỉ với 10 dòng mã mới. Nó có khả năng giải quyết cả ba hạn chế ban đầu mà chúng tôi đã đề cập khi bắt đầu bài đăng: khả năng hiển thị dữ liệu giao dịch, chức năng toán học tốt hơn và mô hình thực thi tuyến tính của nó.

Mặc dù ban đầu OP_CAT có vẻ đơn giản nhưng nó sẽ mở ra tiềm năng đáng kể khi được tận dụng một cách sáng tạo. Nó đóng vai trò như một khối xây dựng cho nhiều chức năng hơn nữa vượt ra ngoài phạm vi của cuộc thảo luận này, như Chữ ký Lamport sau lượng tử.

Điều này có an toàn không?

Trước khi OP_CAT bị xóa lần đầu, khi kết hợp với OP_DUP (trùng lặp) và được sử dụng lặp đi lặp lại để sao chép giá trị 1 byte ban đầu trên ngăn xếp, việc sử dụng bộ nhớ có thể bị bùng nổ. Điều này có thể đã được sử dụng như một cuộc tấn công từ chối dịch vụ (DoS) do mức tiêu thụ bộ nhớ tăng lên. Đề xuất mới ngăn chặn cuộc tấn công này một cách tầm thường bằng cách áp đặt giới hạn 520 byte cho các phần tử ngăn xếp.

Có nguy cơ hợp đồng kéo dài mãi mãi không?

Nếu điều này có nghĩa là OP_CAT có thay đổi mô hình thực thi của Tập lệnh thành có nghĩa là nó không còn giới hạn tĩnh việc sử dụng tài nguyên của nó nữa (như một hàm tuyến tính của kích thước Tập lệnh) không? KHÔNG.

Các giao ước có tạo ra thị trường cho các đồng tiền khác ngoài Bitcoin không?

Nếu bạn có giao ước đệ quy, vâng, về mặt kỹ thuật, bạn có thể xây dựng các ứng dụng lớp 2 phức tạp, bao gồm NFT, sàn giao dịch phi tập trung và mèo lượng tử. Tuy nhiên, làm được điều đó không hề đơn giản. Thật khó để thấy bất kỳ thị trường nghiêm túc nào làm như vậy.

Bạn có thể “làm hỏng” xu vĩnh viễn bằng cách sử dụng CAT không?

Trong trường hợp đồng tiền màu và NFT, việc phát hành những tài sản này, người dùng sẽ ‘đốt’ một satoshi một cách hiệu quả, đánh dấu nó theo cách biểu thị quyền sở hữu tài sản ‘lớp 2’. Quá trình này được gọi là tiền xu 'làm hỏng'. Nhưng chỉ chủ sở hữu đồng xu mới có thể đánh dấu đồng tiền của họ và ví Bitcoin sẽ không còn nhận ra nó nữa (trừ khi tác giả của chúng thêm mã rõ ràng để kích hoạt điều này). Các đồng tiền thu được sẽ không được ví bitcoin chấp nhận. Có thể chúng sẽ được chấp nhận bởi ví tiền điện tử hoặc thứ gì đó tương tự, nhưng điều này không liên quan đến hầu hết người dùng bitcoin.

Điều này có tạo ra vấn đề MEV trên Bitcoin không?

Điểm khác biệt chính giữa Bitcoin và Ethereum là khả năng hiển thị giao dịch. Không giống như Ethereum, không phải tất cả các khía cạnh của hợp đồng đều nhất thiết phải minh bạch, có nghĩa là những người khai thác Bitcoin không có khả năng giống nhau để xem trạng thái hợp đồng nội bộ và chạy trước chúng.

Mối quan tâm chính của OP_CAT đối với những người chơi Bitcoin có đầu óc kinh tế là tiềm năng về Giá trị có thể trích xuất của người khai thác (MEV). Như đã thảo luận rộng rãi hơn trong bài viết trước của tôi về chủ đề này. Nhiều người dùng lo ngại rằng nếu chúng tôi thực hiện hợp đồng lớp 2 về mặt kỹ thuật thì MEV sẽ trở nên không thể tránh khỏi. Nhưng điều này có đúng không? Cụ thể, liệu tính khả thi về mặt kỹ thuật của đồng xu lớp 2 trên Bitcoin có hàm ý rằng chúng không thể tránh khỏi việc được tạo ra và áp dụng không?

Bạn có thể tưởng tượng việc xây dựng các hợp đồng hoán đổi đơn giản hoặc NFT tương đối kém hiệu quả, nhưng việc xây dựng thứ gì đó phức tạp như DEX với các nhà tạo lập thị trường tự động dường như cực kỳ khó xảy ra và chưa bao giờ là điều chúng tôi từng thấy trên Liquid mặc dù có ‘khả năng kỹ thuật’ cho nó.

Vậy OP_CAT có thực sự hoàn hảo không?

Hầu như không, xa nó. Một số người muốn thấy các giao ước đệ quy, trong khi những người khác chỉ đơn giản là không muốn thấy Bitcoin thay đổi chút nào.

Một nhóm người chơi Bitcoin, “những người theo chủ nghĩa cốt lõi hóa”, ủng hộ việc bảo tồn Bitcoin ở trạng thái hiện tại và xem bất kỳ nâng cấp giao thức nào với thái độ hoài nghi. Họ đặc biệt lo ngại rằng những thay đổi đáng kể, chẳng hạn như việc đưa ra các giao ước, có thể làm suy yếu tính phân cấp của mạng lưới. Lập luận của họ dựa trên niềm tin rằng tốt nhất nên bám sát tầm nhìn ban đầu của Bitcoin. Điều trớ trêu là OP_CAT ban đầu là một phần của Bitcoin, đã gây ra một lập luận phản bác. Một số người tin rằng việc đưa OP_CAT trở lại thực sự có thể sắp xếp lại Bitcoin theo tầm nhìn ban đầu của Satoshi.

Nếu bạn muốn xem một số tính năng bảo mật mà các giao ước đệ quy có thể thực hiện được, thì OP_CAT sẽ rất tốt, nhưng chắc chắn không tốt bằng một ngôn ngữ kịch bản Lisp-esque hoàn chỉnh. Vấn đề ở đây là đây sẽ là một sự thay đổi lớn đối với Bitcoin, điều đó không có khả năng sớm tìm được chỗ đứng.

Hoặc có thể bạn ở đầu bên kia và bạn thích sự đơn giản của phương pháp không đệ quy như OP_CTV hoặc OP_VAULT. Các giao ước không đệ quy đơn giản hơn và dễ lập luận hơn mà không có nguy cơ tạo ra một chuỗi ràng buộc không kiểm soát được.

Điều gì sẽ xảy ra nếu một số phiên bản của giao ước đệ quy là không thể tránh khỏi?

Trong những năm qua, các nhà phát triển đã nhận thấy rằng hầu hết mọi phần mở rộng đối với logic xác thực giao dịch đều có thể được sử dụng để mô phỏng chức năng của OP_CAT.

Trong vũ trụ Script, có hai lĩnh vực, dựa trên kích thước của các phần tử ngăn xếp. Đối với các phần tử ngăn xếp lớn hơn 4 byte, bạn có thể so sánh sự bằng nhau, diễn giải dưới dạng khóa chữ ký hoặc băm nó. Đối với các phần tử ngăn xếp nhỏ hơn hoặc bằng 4 byte, bạn có thể coi chúng là đối tượng để thực hiện số học hoặc phân nhánh. Với bộ xử lý RISC-V chạy trên BitVM, bạn có thể làm bất cứ điều gì theo đúng nghĩa đen. Bất cứ điều gì cho phép bạn mô phỏng OP_CAT, chia nhỏ các phần tử ngăn xếp hoặc ghép chúng lại với nhau sẽ mang hai lĩnh vực này lại với nhau để bạn có thể 'làm bất cứ điều gì' với Script.

Các nhà nghiên cứu như Andrew Poelstra hy vọng chúng ta có thể thực hiện các giao ước đệ quy với hầu hết mọi opcode mới. Nếu đúng, đó sẽ là lý do biện minh cho việc hướng tới cách thực hiện tốt chúng.

OP_CAT có phải là con đường phù hợp cho các giao ước không?

Nếu các giao ước không chỉ thú vị mà còn không thể tránh khỏi, thì làm cách nào để chúng tôi đảm bảo nó được triển khai theo cách khiến nhiều người dùng Bitcoin gửi tiền một cách không đáng tin cậy như Satoshi đã hình dung ban đầu? Trong khi những người theo chủ nghĩa cốt hóa vẫn bị chia rẽ, OP_CAT vẫn tiếp tục nổi lên như một đối thủ mạnh trong cuộc tranh luận về các giao ước.

OP_CAT không phải là công cụ đục đẽo đẹp mắt nhất nhưng là công cụ có tỷ lệ sức mạnh trên độ phức tạp tốt nhất, cho phép các nhà phát triển tạo ra một số tính năng mới tuyệt vời.

Đây là một bài viết của khách bởi Kiara Bickers. Các ý kiến ​​được bày tỏ hoàn toàn là của riêng họ và không nhất thiết phản ánh quan điểm của BTC Inc hoặc Bitcoin Magazine.

Nguồn: Tạp chí Bitcoin

Bài đăng OP_CAT: Giải pháp hoàn hảo cho các giao ước? xuất hiện đầu tiên trên Crypto Breaking News.