Trong bài viết này, chúng tôi sẽ xem xét hai khái niệm phổ biến gần đây là zkCoprocessor và zkOracle và so sánh sự khác biệt của họ.
Khi một thuật ngữ được đưa ra, ý nghĩa thực sự của nó không được xác định bởi chính nó. Chúng ta đã thấy điều này rất nhiều trong trường hợp của blockchain.
Chúng tôi thấy một hiện tượng tương tự trong thuật ngữ zkCoprocessor. Mọi người đều sử dụng thuật ngữ này, nhưng họ không nhất thiết phải đề cập đến cùng một điều.
Vì vậy, chúng tôi muốn diễn đạt những gì dự án nghĩ về zkCoprocessor, những gì cộng đồng hiểu về zkCoprocessor, và ý nghĩa và vai trò thực sự của zkCoprocessor từ quan điểm của chúng tôi.
Định nghĩa 1 từ Axiom: zkCoprocessor chứng minh dữ liệu lịch sử trên chuỗi.
Khái niệm về zkCoprocessor đã được phổ biến bởi Axiom, người ban đầu đã nghĩ ra nó như một zkAttestor. Từ ý tưởng của Axiom, zkCoprocessor đại diện cho thành phần mà "chứng minh dữ liệu lịch sử trên chuỗi và sử dụng dữ liệu đó trong một hợp đồng thông minh một cách đáng tin cậy".
Lưu ý rằng nhóm Brevis đã nói rằng loại zkCoprocessors này về cơ bản là một lớp API/DSL trên cùng của mạch zk cơ bản. Vì vậy, điều này không thể lập trình được.
Định nghĩa 2 từ RISC Zero: zkCoprocessor giảm tải tính toán từ onchain sang offchain.
RISC Zero cũng thường tự gọi là một zkCoprocessor. Từ quan điểm của họ, họ coi zkCoprocessor như một khái niệm rộng hơn, "một công cụ để sử dụng ZKPs để giảm bớt tính toán từ on-chain sang off-chain".
Định nghĩa từ Peteris (giống như 1): zkCoprocessor có thể truy cập vào trạng thái lịch sử trên chuỗi.
Peteris từ Aera Finance tin rằngzkCoprocessor hoạt động rất giống như một trình báo cáo trạng thái, với chức năng chính là truy cập vào dữ liệu lịch sử. Đồng thời, anh ta và Rishabh từ BananaHQtin rằng mô tả của định nghĩa 2 giống hơn là một zkVM hơn là một lớp con của zkCoprocessor.
Định nghĩa từ Messari, Modular Media và Kobi (giống như 2): zkCoprocessor giảm tải tính toán từ onchain sang offchain.
Messari cũng đã đưa ra định nghĩa riêng về zkCoprocessor. Sami, một nhà nghiên cứu tại Messari, tin rằngRằng zkCoprocessor cho phép các nhà phát triển hợp đồng thông minh dễ dàng giảm tải logic phức tạp ra khỏi chuỗi mà không cần giả định tin mới. Modular Media cũng đưa ra cùng một khái niệm. Kobi từ Hình họcso sánh rollup với một bộ xử lý phụ trợ, Brevis nói thêm rằng zkCoprocessor giao dịch chi phí duy trì lưu trữ trạng thái cố định chống lại hiệu suất tăng cường cực kỳ, Taiko đã đưa ra thiết kế của Booster Rollupđã tiếp tục khám phá ý tưởng về Bộ xử lý phụ trợ Rollup. Đây chính là định nghĩa giống như RISC Zero.
Tóm lại, chúng tôi kết luận rằng có hai loại zkCoprocessor trong thực tế, và chúng là như sau:
Hyper Oracle cung cấp cho chúng tôi một giải thích về Oracle trong Xác định zkOracle cho Ethereum.
Oracle thực tế tổng hợp "infra" trong bất kỳ không gian blockchain nào, như một định nghĩa tốt hơn so với bộ xử lý phụ trợ.
Nếu đầu vào cho infra/oracle là dữ liệu off-chain và đầu ra là on-chain, thì đó là một oracle đầu vào (ví dụ: Chainlink Price Feed). Ngược lại, đó là một oracle đầu ra (ví dụ: The Graph). Nếu oracle đầu ra đứng trước, sau đó đến oracle đầu vào, thì đó là một oracle I/O (ví dụ: Mạng Gelato).
Nói ngắn gọn, oracle rất giống với khái niệm của bộ xử lý phụ, nhưng đồng thời có các đặc điểm của việc truy cập dữ liệu và tính toán.
Ví dụ, lấy Hyper Oracle làm ví dụ, mối quan hệ giữa mộtzkOraclevà một zkCoprocessor?
ZkOracle được thảo luận trong Xác định zkOracle cho Ethereum thực sự có khả năng của cả hai zkCoprocessors.
Ví dụ, một zkOracle như Hyper Oracle:
Khi chúng ta so sánh trực tiếp hai loại zkCoprocessor với zkOracle, chúng ta có thể thấy rằng zkOracle có tất cả các tính năng của zkCoprocessor cùng một lúc:
So sánh trực tiếp, zkOracle là một giải pháp chuyên nghiệp hơn có thể cung cấp cho các nhà phát triển một bộ công nghệ hoàn chỉnh hơn.
Hai zkCoprocessors mở rộng trên các phân ngành tương ứng của họ, ví dụ, zkCoprocessor Truy cập Dữ liệu mở khóa các kịch bản chéo chuỗi, và zkCoprocessor Tính toán zkVM đại diện cho zk rollup dựa trên zkVM.
Chọn cái nào khi xây dựng?
Theo thứ tự từng bước, chúng ta có thể đưa ra một số quyết định về việc xây dựng một ứng dụng.
Đầu tiên, một triển khai Solidity thuần túy của các hợp đồng thông minh vẫn là một lựa chọn rất tốt. Mặc dù các hợp đồng thông minh thuần túy không cung cấp một số tính năng mới tốt nhất, chúng vẫn đủtrong một số tình huống. Ngoài ra, sự có sẵn hiện tại của Arbitrum Stylus đã mở khóa rất nhiều ứng dụng mới với hợp đồng thông minh thuần túy.
Trong nhiều trường hợp, các nhà phát triển có thể muốn sử dụng zkCoprocessor Truy cập Dữ liệu hoặc zkOracle cho hợp đồng thông minh để truy cập các nguồn dữ liệu phong phú hơn.
Trong tình huống này, nếu Data Access zkCoprocessor được sử dụng một mình, việc tính toán vẫn được xử lý trong hợp đồng thông minh. Vai trò của zkCoprocessor là giảm độ phức tạp khi lấy dữ liệu theo cách truyền thống, nhưng không làm cho hợp đồng thông minh mạnh mẽ về mặt tính toán hơn.
Trong tình huống này, chúng ta thấy rất nhiều dự án liên quan đến dữ liệu nhỏ, thay vì các ứng dụng phi tập trung hoàn chỉnh theo nghĩa truyền thống:
Thường xuyên, một số thuật toán phức tạp không thể được tính toán trực tiếp trên chuỗi, đối với trò chơi, logic tính toán rất phức tạp, chẳng hạn như etherquake và GameOfLife tốn $2k để chạy một bước. Hoặc các thuật toán phức tạp liên quan đến ML. Hoặc các thuật toán phức tạp liên quan đến ML mà không thể chạy trên chuỗi. Do đó, chúng ta cần zkVM zkCoprocessor hoặc zkOracle để chạy tính toán ngoại chuỗi, sau đó gửi nó đến chuỗi dưới dạng ZKP.
Trong ví dụ này, chúng ta có thể thấy một số tiềm năng tính toán không giới hạn của họ:
Cuối cùng, chúng tôi đã nói về các ứng dụng chỉ có thể xây dựng được với zkOracle. Lấy ứng dụng DeFi làm ví dụ, một DeFi hoàn chỉnh rất phức tạp. Thế hệ tiếp theo của các ứng dụng DeFi, hoặc DeFi 3.0 DApps, sẽ yêu cầu:
Chúng tôi đã thảo luận về cách zkOracle chia sẻ các khả năng của cả hai zkCoprocessors, đồng thời thực hiện hai yêu cầu chức năng đầu tiên. Làm thế nào zkOracle thực hiện tính năng tự động và zkCoprocessor không thực hiện?
Vì vậy, những gì không có tự trị trong zkCoprocessor đòi hỏi:
Do đó, zkOracle là sự lựa chọn hoàn hảo và đầy đủ cho một ứng dụng hoàn chỉnh như DeFi.
Đáng chú ý rằng Hooks cũng có thể xử lý một số chức năng thiếu sót của zkCoprocessor, nhưng CHỈ trong các tình huống như DeFi, và không phổ biến.
Trong bài viết này, chúng tôi sẽ xem xét hai khái niệm phổ biến gần đây là zkCoprocessor và zkOracle và so sánh sự khác biệt của họ.
Khi một thuật ngữ được đưa ra, ý nghĩa thực sự của nó không được xác định bởi chính nó. Chúng ta đã thấy điều này rất nhiều trong trường hợp của blockchain.
Chúng tôi thấy một hiện tượng tương tự trong thuật ngữ zkCoprocessor. Mọi người đều sử dụng thuật ngữ này, nhưng họ không nhất thiết phải đề cập đến cùng một điều.
Vì vậy, chúng tôi muốn diễn đạt những gì dự án nghĩ về zkCoprocessor, những gì cộng đồng hiểu về zkCoprocessor, và ý nghĩa và vai trò thực sự của zkCoprocessor từ quan điểm của chúng tôi.
Định nghĩa 1 từ Axiom: zkCoprocessor chứng minh dữ liệu lịch sử trên chuỗi.
Khái niệm về zkCoprocessor đã được phổ biến bởi Axiom, người ban đầu đã nghĩ ra nó như một zkAttestor. Từ ý tưởng của Axiom, zkCoprocessor đại diện cho thành phần mà "chứng minh dữ liệu lịch sử trên chuỗi và sử dụng dữ liệu đó trong một hợp đồng thông minh một cách đáng tin cậy".
Lưu ý rằng nhóm Brevis đã nói rằng loại zkCoprocessors này về cơ bản là một lớp API/DSL trên cùng của mạch zk cơ bản. Vì vậy, điều này không thể lập trình được.
Định nghĩa 2 từ RISC Zero: zkCoprocessor giảm tải tính toán từ onchain sang offchain.
RISC Zero cũng thường tự gọi là một zkCoprocessor. Từ quan điểm của họ, họ coi zkCoprocessor như một khái niệm rộng hơn, "một công cụ để sử dụng ZKPs để giảm bớt tính toán từ on-chain sang off-chain".
Định nghĩa từ Peteris (giống như 1): zkCoprocessor có thể truy cập vào trạng thái lịch sử trên chuỗi.
Peteris từ Aera Finance tin rằngzkCoprocessor hoạt động rất giống như một trình báo cáo trạng thái, với chức năng chính là truy cập vào dữ liệu lịch sử. Đồng thời, anh ta và Rishabh từ BananaHQtin rằng mô tả của định nghĩa 2 giống hơn là một zkVM hơn là một lớp con của zkCoprocessor.
Định nghĩa từ Messari, Modular Media và Kobi (giống như 2): zkCoprocessor giảm tải tính toán từ onchain sang offchain.
Messari cũng đã đưa ra định nghĩa riêng về zkCoprocessor. Sami, một nhà nghiên cứu tại Messari, tin rằngRằng zkCoprocessor cho phép các nhà phát triển hợp đồng thông minh dễ dàng giảm tải logic phức tạp ra khỏi chuỗi mà không cần giả định tin mới. Modular Media cũng đưa ra cùng một khái niệm. Kobi từ Hình họcso sánh rollup với một bộ xử lý phụ trợ, Brevis nói thêm rằng zkCoprocessor giao dịch chi phí duy trì lưu trữ trạng thái cố định chống lại hiệu suất tăng cường cực kỳ, Taiko đã đưa ra thiết kế của Booster Rollupđã tiếp tục khám phá ý tưởng về Bộ xử lý phụ trợ Rollup. Đây chính là định nghĩa giống như RISC Zero.
Tóm lại, chúng tôi kết luận rằng có hai loại zkCoprocessor trong thực tế, và chúng là như sau:
Hyper Oracle cung cấp cho chúng tôi một giải thích về Oracle trong Xác định zkOracle cho Ethereum.
Oracle thực tế tổng hợp "infra" trong bất kỳ không gian blockchain nào, như một định nghĩa tốt hơn so với bộ xử lý phụ trợ.
Nếu đầu vào cho infra/oracle là dữ liệu off-chain và đầu ra là on-chain, thì đó là một oracle đầu vào (ví dụ: Chainlink Price Feed). Ngược lại, đó là một oracle đầu ra (ví dụ: The Graph). Nếu oracle đầu ra đứng trước, sau đó đến oracle đầu vào, thì đó là một oracle I/O (ví dụ: Mạng Gelato).
Nói ngắn gọn, oracle rất giống với khái niệm của bộ xử lý phụ, nhưng đồng thời có các đặc điểm của việc truy cập dữ liệu và tính toán.
Ví dụ, lấy Hyper Oracle làm ví dụ, mối quan hệ giữa mộtzkOraclevà một zkCoprocessor?
ZkOracle được thảo luận trong Xác định zkOracle cho Ethereum thực sự có khả năng của cả hai zkCoprocessors.
Ví dụ, một zkOracle như Hyper Oracle:
Khi chúng ta so sánh trực tiếp hai loại zkCoprocessor với zkOracle, chúng ta có thể thấy rằng zkOracle có tất cả các tính năng của zkCoprocessor cùng một lúc:
So sánh trực tiếp, zkOracle là một giải pháp chuyên nghiệp hơn có thể cung cấp cho các nhà phát triển một bộ công nghệ hoàn chỉnh hơn.
Hai zkCoprocessors mở rộng trên các phân ngành tương ứng của họ, ví dụ, zkCoprocessor Truy cập Dữ liệu mở khóa các kịch bản chéo chuỗi, và zkCoprocessor Tính toán zkVM đại diện cho zk rollup dựa trên zkVM.
Chọn cái nào khi xây dựng?
Theo thứ tự từng bước, chúng ta có thể đưa ra một số quyết định về việc xây dựng một ứng dụng.
Đầu tiên, một triển khai Solidity thuần túy của các hợp đồng thông minh vẫn là một lựa chọn rất tốt. Mặc dù các hợp đồng thông minh thuần túy không cung cấp một số tính năng mới tốt nhất, chúng vẫn đủtrong một số tình huống. Ngoài ra, sự có sẵn hiện tại của Arbitrum Stylus đã mở khóa rất nhiều ứng dụng mới với hợp đồng thông minh thuần túy.
Trong nhiều trường hợp, các nhà phát triển có thể muốn sử dụng zkCoprocessor Truy cập Dữ liệu hoặc zkOracle cho hợp đồng thông minh để truy cập các nguồn dữ liệu phong phú hơn.
Trong tình huống này, nếu Data Access zkCoprocessor được sử dụng một mình, việc tính toán vẫn được xử lý trong hợp đồng thông minh. Vai trò của zkCoprocessor là giảm độ phức tạp khi lấy dữ liệu theo cách truyền thống, nhưng không làm cho hợp đồng thông minh mạnh mẽ về mặt tính toán hơn.
Trong tình huống này, chúng ta thấy rất nhiều dự án liên quan đến dữ liệu nhỏ, thay vì các ứng dụng phi tập trung hoàn chỉnh theo nghĩa truyền thống:
Thường xuyên, một số thuật toán phức tạp không thể được tính toán trực tiếp trên chuỗi, đối với trò chơi, logic tính toán rất phức tạp, chẳng hạn như etherquake và GameOfLife tốn $2k để chạy một bước. Hoặc các thuật toán phức tạp liên quan đến ML. Hoặc các thuật toán phức tạp liên quan đến ML mà không thể chạy trên chuỗi. Do đó, chúng ta cần zkVM zkCoprocessor hoặc zkOracle để chạy tính toán ngoại chuỗi, sau đó gửi nó đến chuỗi dưới dạng ZKP.
Trong ví dụ này, chúng ta có thể thấy một số tiềm năng tính toán không giới hạn của họ:
Cuối cùng, chúng tôi đã nói về các ứng dụng chỉ có thể xây dựng được với zkOracle. Lấy ứng dụng DeFi làm ví dụ, một DeFi hoàn chỉnh rất phức tạp. Thế hệ tiếp theo của các ứng dụng DeFi, hoặc DeFi 3.0 DApps, sẽ yêu cầu:
Chúng tôi đã thảo luận về cách zkOracle chia sẻ các khả năng của cả hai zkCoprocessors, đồng thời thực hiện hai yêu cầu chức năng đầu tiên. Làm thế nào zkOracle thực hiện tính năng tự động và zkCoprocessor không thực hiện?
Vì vậy, những gì không có tự trị trong zkCoprocessor đòi hỏi:
Do đó, zkOracle là sự lựa chọn hoàn hảo và đầy đủ cho một ứng dụng hoàn chỉnh như DeFi.
Đáng chú ý rằng Hooks cũng có thể xử lý một số chức năng thiếu sót của zkCoprocessor, nhưng CHỈ trong các tình huống như DeFi, và không phổ biến.