Khám phá Ngôn ngữ Lập trình ZK

Người mới bắt đầu12/24/2023, 3:04:47 PM
Bài viết này giới thiệu phạm vi ứng dụng của các ngôn ngữ lập trình ZK khác nhau, cùng với các ưu điểm và nhược điểm tương ứng của chúng.

Zero-Knowledge Proofs (ZKP) là một công cụ mật mã mạnh mẽ có thể xác thực tính chính xác của các phép tính trong khi bảo vệ sự riêng tư của dữ liệu đầu vào. Ngôn ngữ Đặc thù Miền (DSLs) đóng một vai trò quan trọng như một phần của hệ thống cơ sở này, giúp đơn giản hóa quá trình phát triển và xác minh mạch ZKP. Chúng đóng vai trò quan trọng như một cầu nối quan trọng giữa các khái niệm trừu tượng và biểu diễn mạch chính xác cần thiết bởi hệ thống chứng minh.

Một trong những thách thức quan trọng mà hệ thống chứng minh phải đối mặt là dịch các khái niệm trừu tượng ở mức cao thành mạch thực hành. Tuy nhiên, sự xuất hiện của DSLs đã giải quyết vấn đề này bằng cách tạo điều kiện cho việc cấu trúc hóa các khái niệm trừu tượng này một cách cụ thể và có thể thực thi hơn, từ đó đáp ứng được thách thức này.

Trong thập kỷ qua, chúng ta đã chứng kiến sự gia tăng đáng kể về số lượng và đa dạng của các ngôn ngữ mô tả DSL. Sự sôi động trong lĩnh vực này rõ ràng trong việc phát triển các ngôn ngữ mạch khác nhau, bao gồm Noir, Leo và Zinc. Cho dù bạn cần một lựa chọn linh hoạt như Circom hoặc một giải pháp tùy chỉnh cho một nền tảng cụ thể như Cairo, bạn có thể lựa chọn từ nhiều ngôn ngữ và khung viết mạch ZKP khác nhau.

Trong bài viết này, chúng tôi sẽ khám phá các ngôn ngữ lập trình ZK chính được các nhà phát triển sử dụng một cách tích cực và phân tích các tính năng tốt nhất của mỗi ngôn ngữ.

Cairo bởi StarkWare

Cairo là ngôn ngữ cốt lõi cho các chương trình tính toán chung hỗ trợ chứng minh STARK. Nó đã đóng vai trò quan trọng trong sự thành công của StarkNet và StarkEx, thúc đẩy tính mở rộng của ứng dụng trên Ethereum mainnet. Đáng chú ý, Cairo đã đóng một vai trò quan trọng trong việc hỗ trợ nhiều ứng dụng khác nhau, bao gồm dYdX, Sorare và Immutable X. Tên “Cairo” được tạo ra từ viết tắt của “CPU Algebraic Intermediate Representation.” Trong lĩnh vực chứng minh không chứng, nó hoạt động tương tự như một ngôn ngữ hợp ngữ, cho phép các nhà phát triển quen thuộc với các ngôn ngữ lập trình cấp thấp như C, C++ hoặc Solidity bắt đầu dễ dàng hơn.

Được truyền cảm hứng từ Rust, Cairo giúp các nhà phát triển tạo hợp đồng thông minh Starknet với sự tập trung vào bảo mật và phát triển thân thiện với người dùng. Cairo sở hữu cú pháp mạnh mẽ giúp đơn giản hóa việc tạo mạch ZK, cho phép người dùng thực hiện các nhiệm vụ khác nhau trong các chương trình Cairo. Ngoài ra, một trong những ưu điểm quan trọng của Cairo là tính mở rộng, cho phép tích hợp linh hoạt các tính năng và chức năng mới.

Trong các hệ thống ZK, hiệu suất và khả năng mở rộ là các yếu tố quan trọng, và Cairo đáp ứng các yêu cầu này bằng cách nhấn mạnh cả hai. Ngôn ngữ tích hợp các chiến lược tối ưu, bao gồm giảm ràng buộc và loại bỏ vòng lặp, nhằm giảm bớt gánh nặng tính toán thường gặp trong mạch ZK. Việc tối ưu hóa trong thiết kế mạch dẫn đến việc tạo ra bằng chứng và xác minh nhanh hơn, khiến nó trở thành lựa chọn lý tưởng cho các ứng dụng đòi hỏi lưu lượng cao và độ trễ tối thiểu.

Sự mở rộng và phát triển của Cairo đã rất đáng chú ý, chứng kiến sự bùng nổ đặc biệt trong số lượng các nhà phát triển toàn thời gian trong hai năm qua. Sự bùng nổ này làm nổi bật tính linh hoạt của Cairo, vì việc sử dụng nó không chỉ giới hạn trong lĩnh vực blockchain mà còn quan trọng trong bất kỳ ngữ cảnh nào đòi hỏi xác minh tính toán. Do đó, chúng ta có thể dự đoán sự tăng trưởng đáng kể hơn nữa trong số lượng nhà phát triển chấp nhận Cairo.

Vào ngày 28 tháng 9 năm 2023, Starknet đã ra mắt một bản nâng cấp lớn cho ngôn ngữ lập trình của mình với Cairo v2.3.0. Phiên bản này đánh dấu một bước tiến quan trọng trong việc làm cho hợp đồng trở nên linh hoạt hơn bằng cách giới thiệu các tính năng mới, tùy chọn lưu trữ và quản lý sự kiện, tăng cường tiềm năng của hợp đồng thông minh. Việc tích hợp các thành phần này cung cấp một cách linh hoạt để mở rộng chức năng của hợp đồng, cho phép các mô-đun bên thứ ba tăng cường chức năng của các hợp đồng.

Kẽm bởi ZkSync

Zinc là một ngôn ngữ lập trình được thiết kế đặc biệt để tạo ra các hợp đồng thông minh và mạch SNARK trên nền tảng zkSync. Nó áp dụng cú pháp Rust, tích hợp các yếu tố của Solidity và cung cấp các chức năng độc đáo.

Điểm độc đáo của Zinc nằm ở tính thân thiện với người dùng. Bạn có thể viết mã an toàn mà không cần phải đắm mình vào tất cả các chi tiết phức tạp của Hệ thống Ràng buộc Bậc Một (R1CS). Zinc nhấn mạnh tính bất biến, trao cho nó những đặc tính chức năng bẩm sinh. Điều này có nghĩa là nó ưu tiên dữ liệu bất biến và đánh giá chức năng, từ đó giảm thiểu hiệu ứng phụ và tạo điều kiện cho việc viết mã hợp đồng thông minh sạch sẽ, ít lỗi hơn.

Ngoài ra, Zinc bao gồm các phép toán toán học an toàn để ngăn chặn tràn bộ nhớ tiềm năng, đảm bảo an toàn cho tất cả các hoạt động. Mặc dù có một số hạn chế, chẳng hạn như thiếu vòng lặp vô hạn và đệ quy, Zinc đơn giản hóa quá trình gỡ lỗi thông qua theo dõi console log. Những bản log này giúp việc theo dõi và giải quyết vấn đề giao dịch trở nên dễ dàng trên các mạng thử nghiệm hoặc mạng chính, từ đó nâng cao trải nghiệm gỡ lỗi.

Noir By Aztec

Noir, một DSL mã nguồn mở được phát triển bởi Aztec và dựa trên Rust, nhằm mục đích đơn giản hóa việc tạo ra mạch ZK và các chương trình ZK mà không cần kiến thức mật mã sâu rộng. Nó được coi là một trong những ngôn ngữ dễ tiếp cận nhất để viết các ứng dụng ZK tương thích với bất kỳ hệ thống chứng minh nào. Noir tập trung vào bảo mật, đơn giản và hiệu suất, cung cấp cú pháp cấp cao tương tự như Rust. Nó trừu tượng hóa bảo mật mật mã, đơn giản hóa việc sử dụng nguyên lý mật mã trong khi vẫn duy trì hiệu suất cao.

Noir có lợi thế đáng kể trong việc mở rộng phạm vi ứng dụng có thể tận dụng khả năng bảo vệ quyền riêng tư do ZKP cung cấp, do đó nâng cao hiệu quả bảo mật và xác minh. Nó biên dịch thành một biểu diễn trung gian được gọi là Đại diện trung gian mạch trừu tượng (Acer), sau đó có thể được biên dịch thêm thành R1CS. Việc tách hệ thống chứng minh phụ trợ khỏi chính ngôn ngữ cho phép Noir hỗ trợ các hệ thống chứng minh khác nhau, bao gồm Aztec Brettenberg, Turbo Plonk và các tích hợp tiềm năng trong tương lai như Groth16 và Halo2.

Ngôn ngữ này bao gồm một thư viện tiêu chuẩn có các chức năng hiệu quả như SHA-256 (một hàm băm mật mã tạo ra đầu ra có kích thước cố định) và kiểm tra Pedersen-Merkle (một kỹ thuật xác minh mật mã sử dụng các cam kết Pedersen và cây Merkle để đảm bảo tính toàn vẹn và nhất quán của dữ liệu). Thiết kế của Noir, giống như Rust, bao gồm các tính năng quen thuộc cho các nhà phát triển ứng dụng, như hàm, mô-đun con, loại do người dùng xác định (cấu trúc), câu lệnh điều kiện, vòng lặp và hằng số toàn cục. Ngoài ra, những nỗ lực liên tục đang được thực hiện để phát triển thuốc generic và các chức năng hạng nhất để tăng cường hơn nữa tính biểu cảm của Noir.

Lưu ý rằng Noir vẫn đang tiếp tục phát triển, với những hạn chế và lỗi tiềm ẩn. Tuy nhiên, nhóm phát triển cam kết nỗ lực liên tục để cải thiện và tối ưu hóa sản phẩm.

o1js bởi 0(1) Labs

o1js, trước đây được biết đến với tên SnarkyJS, là một thư viện TypeScript được phát triển bởi 0(1) Labs để tạo các hợp đồng thông minh bằng ngôn ngữ lập trình SNARK. Nó hoàn toàn tận dụng các công nghệ đã được thiết lập như Node.js và sự tương thích trình duyệt để đảm bảo việc truy cập dễ dàng và thuận tiện cho các nhà phát triển.

o1js tích hợp một cách mượt mà với thư viện và công cụ JavaScript và TypeScript, cung cấp cho các nhà phát triển một hệ sinh thái mạnh mẽ và sự hỗ trợ từ cộng đồng rộng lớn. Sự tích hợp này giúp đơn giản hóa quá trình phát triển và giảm thiểu độ dốc học tập liên quan đến việc áp dụng môi trường phát triển mới. Ngoài ra, nó hoàn toàn hỗ trợ Visual Studio Code (VS Code), một trình soạn thảo mã nguồn được sử dụng rộng rãi, giúp cho các nhà phát triển tận dụng đầy đủ các tính năng như hoàn thành mã, làm nổi bật cú pháp và gỡ lỗi để tăng cường trải nghiệm phát triển.

Về cơ bản, o1js là một khung ZK đa chức năng cung cấp các công cụ chính cần thiết để tạo ra các chứng minh ZK. Nó hỗ trợ một loạt các chương trình ZK đa dạng, bao gồm một loạt các hoạt động có thể chứng minh tích hợp sẵn như phép tính cơ bản, băm, ký, hoạt động logic boolean, so sánh, và nhiều hơn nữa. Với khung o1js, bạn có thể xây dựng zkApps trên Giao thức Mina, các hợp đồng thông minh này thực thi trên phía máy khách với đầu vào riêng tư.

Đáng chú ý, vào đầu tháng 9 năm 2023, nhóm 0(1) Labs đã công bố việc chuyển từ SnarkyJS sang o1js, nhấn mạnh cam kết của họ trong việc cải thiện hiệu suất. Đáng chú ý đặc biệt là thành tựu của họ trong việc giảm thời gian tải thư viện từ 3-4 lần, đề cập đến thời gian cần thiết để nhập o1js, quá trình này có thể chặn luồng chính. Đối với ứng dụng web, thời gian tải là rất quan trọng đối với thời gian thực thi JavaScript và việc hiển thị trang web tổng thể. Hơn nữa, nhóm cũng cập nhật Mina zkApp CLI, cải thiện trải nghiệm xây dựng giao diện người dùng, và công bố các cải tiến tiếp theo cho Archive Node API để nâng cao tính đáng tin cậy và sự rõ ràng của nó.

Leo bởi Aleo

Blockchain Aleo nổi bật trong lĩnh vực hợp đồng thông minh với sự nhấn mạnh mạnh mẽ vào bảo vệ quyền riêng tư. Tại trung tâm của nó là ngôn ngữ lập trình Leo, một ngôn ngữ kiểu tĩnh lấy cảm hứng từ Rust. Được thiết kế đặc biệt cho việc phát triển ứng dụng riêng tư, Leo hỗ trợ những người sáng tạo mục tiêu xây dựng hệ sinh thái phi tập trung an toàn và bí mật. Điều thực sự làm Leo nổi bật là vai trò tiên phong của nó trong việc giới thiệu một bộ công cụ toàn diện cho các ứng dụng tri thức không thông. Bộ công cụ này bao gồm một khung thử nghiệm, đăng ký gói, trình phân tích nhập, trình biên dịch từ xa và bộ tạo định lý.

Khái niệm về Leo bắt nguồn từ một nhóm phát triển do Howard Wu dẫn dắt, hình dung một hệ thống cho phép các nhà phát triển xây dựng ứng dụng phi tập trung với ưu tiên về quyền riêng tư và bảo mật. Rút ngắn từ nguyên tắc của Rust, thiết kế của Leo cũng tích hợp các yếu tố tương tự như JavaScript, tạo cảm giác quen thuộc và dễ dàng trong quá trình phát triển. Hơn nữa, Leo nhắm vào việc tăng tốc và tối ưu hóa quá trình phát triển bằng cách cung cấp một nền tảng kiểm tra tích hợp, bộ lưu trữ gói và trình chuyển đổi nhập khẩu. Sự tích hợp này cho phép các nhà phát triển tập trung vào logic cốt lõi của ứng dụng mà không bị quấy rối bởi các vấn đề cơ sở hạ tầng.

Một tính năng đáng chú ý của Leo là trình biên dịch của nó, biến đổi các chương trình thành định dạng bằng chứng R1CS cấp thấp. Sự độc đáo của trình biên dịch Leo nằm ở quy trình xác minh chính thức nghiêm ngặt của nó. Việc xác minh này rất quan trọng vì các lỗ hổng có thể phát sinh ở nhiều giai đoạn, từ lập trình ban đầu đến kiểm toán và biên dịch. Bằng cách tiến hành kiểm tra toán học nghiêm ngặt để đảm bảo trình biên dịch phù hợp với ý định của lập trình viên, Leo nhằm giảm thiểu rủi ro lỗi không bị phát hiện hoặc lỗ hổng tiềm ẩn, đặc biệt là trong ngữ cảnh L2, ZK-rollup hoặc các chương trình riêng tư trên nền tảng Leo.

Circom by iden3

Circom, một Ngôn ngữ Đặc thù Miền (DSL) được tinh chỉnh kỹ lưỡng cho việc phát triển mạch ZK, là một sáng tạo cộng tác của Jordi Baylina và nhóm iden3. Trình biên dịch Circom, được viết bằng Rust, chủ yếu hoạt động để biên dịch các mạch được phát triển bằng ngôn ngữ Circom. Đáng chú ý, Circom đã trở thành lựa chọn ưa thích cho các ứng dụng ZK xuất sắc trong thế giới thực, như Dark Forest và Tornado Cash. Sự phổ biến của nó được gán cho hiệu suất ấn tượng, bao gồm thời gian chứng minh trình duyệt nhanh thông qua chứng minh WASM được tối ưu hóa, chứng minh server-side hiệu quả qua rapidsnark, và xác minh hiệu quả trên chuỗi.

Tuy nhiên, quan trọng là nhận ra rằng chức năng của Circom chủ yếu tập trung vào việc phát triển mạch ZK, điều này có thể khiến nó ít phù hợp hơn cho các nhiệm vụ tính toán rộng lớn hơn. Các nhà phát triển tìm kiếm khả năng linh hoạt hơn để đáp ứng một loạt các nhu cầu phát triển rộng hơn có thể thấy rằng khả năng của Circom hơi hạn chế. Trong những trường hợp như vậy, các nhà phát triển có thể cần tích hợp các ngôn ngữ lập trình hoặc framework khác để đáp ứng yêu cầu phát triển toàn diện hơn.


Nguồn ảnh: Circom

Khả năng tương thích của Circom chủ yếu tập trung vào các hệ thống Zero-Knowledge Proof (ZKP) được sử dụng rộng rãi như snarkjs và libsnark. Khả năng tương thích này đảm bảo tích hợp liền mạch với các hệ thống thường được sử dụng này, nhưng nó cũng có nghĩa là các mạch Circom kế thừa các tính năng và hạn chế cụ thể liên quan đến các phụ thuộc này. Các nhà phát triển thích hoặc cần các hệ thống ZKP thay thế có thể phải đối mặt với những thách thức về khả năng tương thích hoặc cần đầu tư thêm nỗ lực để điều chỉnh và tích hợp các mạch do Circom tạo ra vào các hệ thống ưa thích của họ.

Lurk của Lurk Lab

Lurk là một ngôn ngữ Lisp với phạm vi tĩnh được ảnh hưởng bởi Scheme và Common Lisp, với một tính năng độc đáo: nó cho phép chứng minh trực tiếp tính đúng đắn của việc thực thi chương trình bằng zk-SNARKs, cho phép xác minh hiệu quả và gọn nhẹ. Các ứng dụng chính của Lurk bao gồm:

Tính toán có thể xác minh: Lurk cho phép chứng minh tính đúng đắn của các biểu thức dưới điều kiện không biết, tăng cường sự tin cậy vào kết quả tính toán.

Zero Knowledge: Người dùng có thể chứng minh kiến thức mà không cần tiết lộ thông tin cụ thể ngoài các đầu vào công khai, do đó bảo vệ sự riêng tư.

Dữ liệu có địa chỉ nội dung: Mỗi chương trình Lurk được trang bị một nhận dạng nội dung duy nhất (CID), làm cho nó tương thích với IPFS và IPLD.

Đầy đủ Turing: Lurk hỗ trợ việc tạo và chứng minh các câu lệnh tính toán tùy ý.

Higher-Order Functions: Các hàm Lurk có thể chấp nhận và trả về các hàm khác, tạo điều kiện cho lập trình chức năng diễn đạt.

Tính toán với Dữ liệu Riêng tư: Lurk cho phép xử lý dữ liệu riêng tư đồng thời đảm bảo đầu ra chính xác theo cách có thể chứng minh mà không có rò rỉ riêng tư.

Trong việc xây dựng mạch mục đích chung, Lurk sử dụng rộng rãi trình cấp phát bộ nhớ "cons" của Lisp, kết hợp biểu thức và tạo ra các tham chiếu thông qua băm. Chìa khóa nằm ở việc chứng minh rằng hai biểu thức thực sự băm đến cùng một tham chiếu. Việc xác minh này cho phép Lurk thực hiện tính toán trong các mạch snark.

Chức năng của Lurk rất phong phú, bao gồm hỗ trợ cho đệ quy vô hạn, vòng lặp, luồng điều khiển có điều kiện và nhiều hệ thống chứng minh backend như Groth16, SnarkPack+ và Nova. Tính linh hoạt này mở ra cánh cửa cho các ứng dụng đa dạng, bao gồm tính toán có thể xác minh, xử lý dữ liệu riêng tư và thực thi chương trình Turing hoàn chỉnh trong mạch snark.

Kết luận

Khi đa dạng ứng dụng ZK ngày càng phát triển, triển vọng cho ngôn ngữ miêu tả miền dạng ZK rộng lớn. Chìa khóa thành công của một ngôn ngữ miêu tả miền nằm ở việc xây dựng cộng đồng phát triển sôi động và một thư viện phong phú để làm phong phú trải nghiệm của các nhà phát triển. Những ngôn ngữ miêu tả miền ưu tiên tương thích với thư viện hiện có có thể tận dụng tri thức và tài nguyên của cộng đồng nhà phát triển rộng lớn. Cách tiếp cận này giúp tích hợp mượt mà hơn, tăng tốc độ phát triển và cung cấp linh hoạt lớn hơn trong việc triển khai ứng dụng ZK. Những nỗ lực hợp tác như vậy rất quan trọng trong việc nuôi dưỡng một hệ sinh thái mạnh mẽ hơn xung quanh ngôn ngữ miêu tả miền, mang lại lợi ích rõ ràng cho nhà phát triển và thúc đẩy việc áp dụng và hiệu quả của công nghệ ZK.

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

  1. Bài viết này được sao chép từ [Gatepanewslab]. Tất cả bản quyền thuộc về tác giả gốc [ScalingX]. Nếu có ý kiến ​​phản đối về việc tái in này, vui lòng liên hệ với đội ngũ Gate Learn, họ sẽ xử lý ngay lập tức.
  2. Liability Disclaimer: 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ề đại diện cho bất kỳ lời khuyên đầu tư nào.
  3. Các bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi được nêu rõ, việc sao chép, phân phối hoặc đạo văn bản dịch là không được phép.

Khám phá Ngôn ngữ Lập trình ZK

Người mới bắt đầu12/24/2023, 3:04:47 PM
Bài viết này giới thiệu phạm vi ứng dụng của các ngôn ngữ lập trình ZK khác nhau, cùng với các ưu điểm và nhược điểm tương ứng của chúng.

Zero-Knowledge Proofs (ZKP) là một công cụ mật mã mạnh mẽ có thể xác thực tính chính xác của các phép tính trong khi bảo vệ sự riêng tư của dữ liệu đầu vào. Ngôn ngữ Đặc thù Miền (DSLs) đóng một vai trò quan trọng như một phần của hệ thống cơ sở này, giúp đơn giản hóa quá trình phát triển và xác minh mạch ZKP. Chúng đóng vai trò quan trọng như một cầu nối quan trọng giữa các khái niệm trừu tượng và biểu diễn mạch chính xác cần thiết bởi hệ thống chứng minh.

Một trong những thách thức quan trọng mà hệ thống chứng minh phải đối mặt là dịch các khái niệm trừu tượng ở mức cao thành mạch thực hành. Tuy nhiên, sự xuất hiện của DSLs đã giải quyết vấn đề này bằng cách tạo điều kiện cho việc cấu trúc hóa các khái niệm trừu tượng này một cách cụ thể và có thể thực thi hơn, từ đó đáp ứng được thách thức này.

Trong thập kỷ qua, chúng ta đã chứng kiến sự gia tăng đáng kể về số lượng và đa dạng của các ngôn ngữ mô tả DSL. Sự sôi động trong lĩnh vực này rõ ràng trong việc phát triển các ngôn ngữ mạch khác nhau, bao gồm Noir, Leo và Zinc. Cho dù bạn cần một lựa chọn linh hoạt như Circom hoặc một giải pháp tùy chỉnh cho một nền tảng cụ thể như Cairo, bạn có thể lựa chọn từ nhiều ngôn ngữ và khung viết mạch ZKP khác nhau.

Trong bài viết này, chúng tôi sẽ khám phá các ngôn ngữ lập trình ZK chính được các nhà phát triển sử dụng một cách tích cực và phân tích các tính năng tốt nhất của mỗi ngôn ngữ.

Cairo bởi StarkWare

Cairo là ngôn ngữ cốt lõi cho các chương trình tính toán chung hỗ trợ chứng minh STARK. Nó đã đóng vai trò quan trọng trong sự thành công của StarkNet và StarkEx, thúc đẩy tính mở rộng của ứng dụng trên Ethereum mainnet. Đáng chú ý, Cairo đã đóng một vai trò quan trọng trong việc hỗ trợ nhiều ứng dụng khác nhau, bao gồm dYdX, Sorare và Immutable X. Tên “Cairo” được tạo ra từ viết tắt của “CPU Algebraic Intermediate Representation.” Trong lĩnh vực chứng minh không chứng, nó hoạt động tương tự như một ngôn ngữ hợp ngữ, cho phép các nhà phát triển quen thuộc với các ngôn ngữ lập trình cấp thấp như C, C++ hoặc Solidity bắt đầu dễ dàng hơn.

Được truyền cảm hứng từ Rust, Cairo giúp các nhà phát triển tạo hợp đồng thông minh Starknet với sự tập trung vào bảo mật và phát triển thân thiện với người dùng. Cairo sở hữu cú pháp mạnh mẽ giúp đơn giản hóa việc tạo mạch ZK, cho phép người dùng thực hiện các nhiệm vụ khác nhau trong các chương trình Cairo. Ngoài ra, một trong những ưu điểm quan trọng của Cairo là tính mở rộng, cho phép tích hợp linh hoạt các tính năng và chức năng mới.

Trong các hệ thống ZK, hiệu suất và khả năng mở rộ là các yếu tố quan trọng, và Cairo đáp ứng các yêu cầu này bằng cách nhấn mạnh cả hai. Ngôn ngữ tích hợp các chiến lược tối ưu, bao gồm giảm ràng buộc và loại bỏ vòng lặp, nhằm giảm bớt gánh nặng tính toán thường gặp trong mạch ZK. Việc tối ưu hóa trong thiết kế mạch dẫn đến việc tạo ra bằng chứng và xác minh nhanh hơn, khiến nó trở thành lựa chọn lý tưởng cho các ứng dụng đòi hỏi lưu lượng cao và độ trễ tối thiểu.

Sự mở rộng và phát triển của Cairo đã rất đáng chú ý, chứng kiến sự bùng nổ đặc biệt trong số lượng các nhà phát triển toàn thời gian trong hai năm qua. Sự bùng nổ này làm nổi bật tính linh hoạt của Cairo, vì việc sử dụng nó không chỉ giới hạn trong lĩnh vực blockchain mà còn quan trọng trong bất kỳ ngữ cảnh nào đòi hỏi xác minh tính toán. Do đó, chúng ta có thể dự đoán sự tăng trưởng đáng kể hơn nữa trong số lượng nhà phát triển chấp nhận Cairo.

Vào ngày 28 tháng 9 năm 2023, Starknet đã ra mắt một bản nâng cấp lớn cho ngôn ngữ lập trình của mình với Cairo v2.3.0. Phiên bản này đánh dấu một bước tiến quan trọng trong việc làm cho hợp đồng trở nên linh hoạt hơn bằng cách giới thiệu các tính năng mới, tùy chọn lưu trữ và quản lý sự kiện, tăng cường tiềm năng của hợp đồng thông minh. Việc tích hợp các thành phần này cung cấp một cách linh hoạt để mở rộng chức năng của hợp đồng, cho phép các mô-đun bên thứ ba tăng cường chức năng của các hợp đồng.

Kẽm bởi ZkSync

Zinc là một ngôn ngữ lập trình được thiết kế đặc biệt để tạo ra các hợp đồng thông minh và mạch SNARK trên nền tảng zkSync. Nó áp dụng cú pháp Rust, tích hợp các yếu tố của Solidity và cung cấp các chức năng độc đáo.

Điểm độc đáo của Zinc nằm ở tính thân thiện với người dùng. Bạn có thể viết mã an toàn mà không cần phải đắm mình vào tất cả các chi tiết phức tạp của Hệ thống Ràng buộc Bậc Một (R1CS). Zinc nhấn mạnh tính bất biến, trao cho nó những đặc tính chức năng bẩm sinh. Điều này có nghĩa là nó ưu tiên dữ liệu bất biến và đánh giá chức năng, từ đó giảm thiểu hiệu ứng phụ và tạo điều kiện cho việc viết mã hợp đồng thông minh sạch sẽ, ít lỗi hơn.

Ngoài ra, Zinc bao gồm các phép toán toán học an toàn để ngăn chặn tràn bộ nhớ tiềm năng, đảm bảo an toàn cho tất cả các hoạt động. Mặc dù có một số hạn chế, chẳng hạn như thiếu vòng lặp vô hạn và đệ quy, Zinc đơn giản hóa quá trình gỡ lỗi thông qua theo dõi console log. Những bản log này giúp việc theo dõi và giải quyết vấn đề giao dịch trở nên dễ dàng trên các mạng thử nghiệm hoặc mạng chính, từ đó nâng cao trải nghiệm gỡ lỗi.

Noir By Aztec

Noir, một DSL mã nguồn mở được phát triển bởi Aztec và dựa trên Rust, nhằm mục đích đơn giản hóa việc tạo ra mạch ZK và các chương trình ZK mà không cần kiến thức mật mã sâu rộng. Nó được coi là một trong những ngôn ngữ dễ tiếp cận nhất để viết các ứng dụng ZK tương thích với bất kỳ hệ thống chứng minh nào. Noir tập trung vào bảo mật, đơn giản và hiệu suất, cung cấp cú pháp cấp cao tương tự như Rust. Nó trừu tượng hóa bảo mật mật mã, đơn giản hóa việc sử dụng nguyên lý mật mã trong khi vẫn duy trì hiệu suất cao.

Noir có lợi thế đáng kể trong việc mở rộng phạm vi ứng dụng có thể tận dụng khả năng bảo vệ quyền riêng tư do ZKP cung cấp, do đó nâng cao hiệu quả bảo mật và xác minh. Nó biên dịch thành một biểu diễn trung gian được gọi là Đại diện trung gian mạch trừu tượng (Acer), sau đó có thể được biên dịch thêm thành R1CS. Việc tách hệ thống chứng minh phụ trợ khỏi chính ngôn ngữ cho phép Noir hỗ trợ các hệ thống chứng minh khác nhau, bao gồm Aztec Brettenberg, Turbo Plonk và các tích hợp tiềm năng trong tương lai như Groth16 và Halo2.

Ngôn ngữ này bao gồm một thư viện tiêu chuẩn có các chức năng hiệu quả như SHA-256 (một hàm băm mật mã tạo ra đầu ra có kích thước cố định) và kiểm tra Pedersen-Merkle (một kỹ thuật xác minh mật mã sử dụng các cam kết Pedersen và cây Merkle để đảm bảo tính toàn vẹn và nhất quán của dữ liệu). Thiết kế của Noir, giống như Rust, bao gồm các tính năng quen thuộc cho các nhà phát triển ứng dụng, như hàm, mô-đun con, loại do người dùng xác định (cấu trúc), câu lệnh điều kiện, vòng lặp và hằng số toàn cục. Ngoài ra, những nỗ lực liên tục đang được thực hiện để phát triển thuốc generic và các chức năng hạng nhất để tăng cường hơn nữa tính biểu cảm của Noir.

Lưu ý rằng Noir vẫn đang tiếp tục phát triển, với những hạn chế và lỗi tiềm ẩn. Tuy nhiên, nhóm phát triển cam kết nỗ lực liên tục để cải thiện và tối ưu hóa sản phẩm.

o1js bởi 0(1) Labs

o1js, trước đây được biết đến với tên SnarkyJS, là một thư viện TypeScript được phát triển bởi 0(1) Labs để tạo các hợp đồng thông minh bằng ngôn ngữ lập trình SNARK. Nó hoàn toàn tận dụng các công nghệ đã được thiết lập như Node.js và sự tương thích trình duyệt để đảm bảo việc truy cập dễ dàng và thuận tiện cho các nhà phát triển.

o1js tích hợp một cách mượt mà với thư viện và công cụ JavaScript và TypeScript, cung cấp cho các nhà phát triển một hệ sinh thái mạnh mẽ và sự hỗ trợ từ cộng đồng rộng lớn. Sự tích hợp này giúp đơn giản hóa quá trình phát triển và giảm thiểu độ dốc học tập liên quan đến việc áp dụng môi trường phát triển mới. Ngoài ra, nó hoàn toàn hỗ trợ Visual Studio Code (VS Code), một trình soạn thảo mã nguồn được sử dụng rộng rãi, giúp cho các nhà phát triển tận dụng đầy đủ các tính năng như hoàn thành mã, làm nổi bật cú pháp và gỡ lỗi để tăng cường trải nghiệm phát triển.

Về cơ bản, o1js là một khung ZK đa chức năng cung cấp các công cụ chính cần thiết để tạo ra các chứng minh ZK. Nó hỗ trợ một loạt các chương trình ZK đa dạng, bao gồm một loạt các hoạt động có thể chứng minh tích hợp sẵn như phép tính cơ bản, băm, ký, hoạt động logic boolean, so sánh, và nhiều hơn nữa. Với khung o1js, bạn có thể xây dựng zkApps trên Giao thức Mina, các hợp đồng thông minh này thực thi trên phía máy khách với đầu vào riêng tư.

Đáng chú ý, vào đầu tháng 9 năm 2023, nhóm 0(1) Labs đã công bố việc chuyển từ SnarkyJS sang o1js, nhấn mạnh cam kết của họ trong việc cải thiện hiệu suất. Đáng chú ý đặc biệt là thành tựu của họ trong việc giảm thời gian tải thư viện từ 3-4 lần, đề cập đến thời gian cần thiết để nhập o1js, quá trình này có thể chặn luồng chính. Đối với ứng dụng web, thời gian tải là rất quan trọng đối với thời gian thực thi JavaScript và việc hiển thị trang web tổng thể. Hơn nữa, nhóm cũng cập nhật Mina zkApp CLI, cải thiện trải nghiệm xây dựng giao diện người dùng, và công bố các cải tiến tiếp theo cho Archive Node API để nâng cao tính đáng tin cậy và sự rõ ràng của nó.

Leo bởi Aleo

Blockchain Aleo nổi bật trong lĩnh vực hợp đồng thông minh với sự nhấn mạnh mạnh mẽ vào bảo vệ quyền riêng tư. Tại trung tâm của nó là ngôn ngữ lập trình Leo, một ngôn ngữ kiểu tĩnh lấy cảm hứng từ Rust. Được thiết kế đặc biệt cho việc phát triển ứng dụng riêng tư, Leo hỗ trợ những người sáng tạo mục tiêu xây dựng hệ sinh thái phi tập trung an toàn và bí mật. Điều thực sự làm Leo nổi bật là vai trò tiên phong của nó trong việc giới thiệu một bộ công cụ toàn diện cho các ứng dụng tri thức không thông. Bộ công cụ này bao gồm một khung thử nghiệm, đăng ký gói, trình phân tích nhập, trình biên dịch từ xa và bộ tạo định lý.

Khái niệm về Leo bắt nguồn từ một nhóm phát triển do Howard Wu dẫn dắt, hình dung một hệ thống cho phép các nhà phát triển xây dựng ứng dụng phi tập trung với ưu tiên về quyền riêng tư và bảo mật. Rút ngắn từ nguyên tắc của Rust, thiết kế của Leo cũng tích hợp các yếu tố tương tự như JavaScript, tạo cảm giác quen thuộc và dễ dàng trong quá trình phát triển. Hơn nữa, Leo nhắm vào việc tăng tốc và tối ưu hóa quá trình phát triển bằng cách cung cấp một nền tảng kiểm tra tích hợp, bộ lưu trữ gói và trình chuyển đổi nhập khẩu. Sự tích hợp này cho phép các nhà phát triển tập trung vào logic cốt lõi của ứng dụng mà không bị quấy rối bởi các vấn đề cơ sở hạ tầng.

Một tính năng đáng chú ý của Leo là trình biên dịch của nó, biến đổi các chương trình thành định dạng bằng chứng R1CS cấp thấp. Sự độc đáo của trình biên dịch Leo nằm ở quy trình xác minh chính thức nghiêm ngặt của nó. Việc xác minh này rất quan trọng vì các lỗ hổng có thể phát sinh ở nhiều giai đoạn, từ lập trình ban đầu đến kiểm toán và biên dịch. Bằng cách tiến hành kiểm tra toán học nghiêm ngặt để đảm bảo trình biên dịch phù hợp với ý định của lập trình viên, Leo nhằm giảm thiểu rủi ro lỗi không bị phát hiện hoặc lỗ hổng tiềm ẩn, đặc biệt là trong ngữ cảnh L2, ZK-rollup hoặc các chương trình riêng tư trên nền tảng Leo.

Circom by iden3

Circom, một Ngôn ngữ Đặc thù Miền (DSL) được tinh chỉnh kỹ lưỡng cho việc phát triển mạch ZK, là một sáng tạo cộng tác của Jordi Baylina và nhóm iden3. Trình biên dịch Circom, được viết bằng Rust, chủ yếu hoạt động để biên dịch các mạch được phát triển bằng ngôn ngữ Circom. Đáng chú ý, Circom đã trở thành lựa chọn ưa thích cho các ứng dụng ZK xuất sắc trong thế giới thực, như Dark Forest và Tornado Cash. Sự phổ biến của nó được gán cho hiệu suất ấn tượng, bao gồm thời gian chứng minh trình duyệt nhanh thông qua chứng minh WASM được tối ưu hóa, chứng minh server-side hiệu quả qua rapidsnark, và xác minh hiệu quả trên chuỗi.

Tuy nhiên, quan trọng là nhận ra rằng chức năng của Circom chủ yếu tập trung vào việc phát triển mạch ZK, điều này có thể khiến nó ít phù hợp hơn cho các nhiệm vụ tính toán rộng lớn hơn. Các nhà phát triển tìm kiếm khả năng linh hoạt hơn để đáp ứng một loạt các nhu cầu phát triển rộng hơn có thể thấy rằng khả năng của Circom hơi hạn chế. Trong những trường hợp như vậy, các nhà phát triển có thể cần tích hợp các ngôn ngữ lập trình hoặc framework khác để đáp ứng yêu cầu phát triển toàn diện hơn.


Nguồn ảnh: Circom

Khả năng tương thích của Circom chủ yếu tập trung vào các hệ thống Zero-Knowledge Proof (ZKP) được sử dụng rộng rãi như snarkjs và libsnark. Khả năng tương thích này đảm bảo tích hợp liền mạch với các hệ thống thường được sử dụng này, nhưng nó cũng có nghĩa là các mạch Circom kế thừa các tính năng và hạn chế cụ thể liên quan đến các phụ thuộc này. Các nhà phát triển thích hoặc cần các hệ thống ZKP thay thế có thể phải đối mặt với những thách thức về khả năng tương thích hoặc cần đầu tư thêm nỗ lực để điều chỉnh và tích hợp các mạch do Circom tạo ra vào các hệ thống ưa thích của họ.

Lurk của Lurk Lab

Lurk là một ngôn ngữ Lisp với phạm vi tĩnh được ảnh hưởng bởi Scheme và Common Lisp, với một tính năng độc đáo: nó cho phép chứng minh trực tiếp tính đúng đắn của việc thực thi chương trình bằng zk-SNARKs, cho phép xác minh hiệu quả và gọn nhẹ. Các ứng dụng chính của Lurk bao gồm:

Tính toán có thể xác minh: Lurk cho phép chứng minh tính đúng đắn của các biểu thức dưới điều kiện không biết, tăng cường sự tin cậy vào kết quả tính toán.

Zero Knowledge: Người dùng có thể chứng minh kiến thức mà không cần tiết lộ thông tin cụ thể ngoài các đầu vào công khai, do đó bảo vệ sự riêng tư.

Dữ liệu có địa chỉ nội dung: Mỗi chương trình Lurk được trang bị một nhận dạng nội dung duy nhất (CID), làm cho nó tương thích với IPFS và IPLD.

Đầy đủ Turing: Lurk hỗ trợ việc tạo và chứng minh các câu lệnh tính toán tùy ý.

Higher-Order Functions: Các hàm Lurk có thể chấp nhận và trả về các hàm khác, tạo điều kiện cho lập trình chức năng diễn đạt.

Tính toán với Dữ liệu Riêng tư: Lurk cho phép xử lý dữ liệu riêng tư đồng thời đảm bảo đầu ra chính xác theo cách có thể chứng minh mà không có rò rỉ riêng tư.

Trong việc xây dựng mạch mục đích chung, Lurk sử dụng rộng rãi trình cấp phát bộ nhớ "cons" của Lisp, kết hợp biểu thức và tạo ra các tham chiếu thông qua băm. Chìa khóa nằm ở việc chứng minh rằng hai biểu thức thực sự băm đến cùng một tham chiếu. Việc xác minh này cho phép Lurk thực hiện tính toán trong các mạch snark.

Chức năng của Lurk rất phong phú, bao gồm hỗ trợ cho đệ quy vô hạn, vòng lặp, luồng điều khiển có điều kiện và nhiều hệ thống chứng minh backend như Groth16, SnarkPack+ và Nova. Tính linh hoạt này mở ra cánh cửa cho các ứng dụng đa dạng, bao gồm tính toán có thể xác minh, xử lý dữ liệu riêng tư và thực thi chương trình Turing hoàn chỉnh trong mạch snark.

Kết luận

Khi đa dạng ứng dụng ZK ngày càng phát triển, triển vọng cho ngôn ngữ miêu tả miền dạng ZK rộng lớn. Chìa khóa thành công của một ngôn ngữ miêu tả miền nằm ở việc xây dựng cộng đồng phát triển sôi động và một thư viện phong phú để làm phong phú trải nghiệm của các nhà phát triển. Những ngôn ngữ miêu tả miền ưu tiên tương thích với thư viện hiện có có thể tận dụng tri thức và tài nguyên của cộng đồng nhà phát triển rộng lớn. Cách tiếp cận này giúp tích hợp mượt mà hơn, tăng tốc độ phát triển và cung cấp linh hoạt lớn hơn trong việc triển khai ứng dụng ZK. Những nỗ lực hợp tác như vậy rất quan trọng trong việc nuôi dưỡng một hệ sinh thái mạnh mẽ hơn xung quanh ngôn ngữ miêu tả miền, mang lại lợi ích rõ ràng cho nhà phát triển và thúc đẩy việc áp dụng và hiệu quả của công nghệ ZK.

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

  1. Bài viết này được sao chép từ [Gatepanewslab]. Tất cả bản quyền thuộc về tác giả gốc [ScalingX]. Nếu có ý kiến ​​phản đối về việc tái in này, vui lòng liên hệ với đội ngũ Gate Learn, họ sẽ xử lý ngay lập tức.
  2. Liability Disclaimer: 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ề đại diện cho bất kỳ lời khuyên đầu tư nào.
  3. Các bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi được nêu rõ, việc sao chép, phân phối hoặc đạo văn bản dịch là không được phép.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!