Hướng dẫn dành cho nhà phát triển về zkGalaxy

Hướng dẫn dành cho nhà phát triển về zkGalaxy

Nút nguồn: 1946171

Giới thiệu

Sự đánh đổi của Vitalik đối với zkEVM giữa hiệu suất và khả năng tương thích

Đây là một kinh nghiệm cực kỳ hữu ích để phân biệt các phương pháp hỗ trợ zkEVM. Tuy nhiên, zkEVM là một tập hợp con của tất cả các cách có thể để xây dựng các ứng dụng không có kiến ​​thức. Đối với một lập trình viên muốn tận dụng các thuộc tính độc đáo của tính toán zk, cụ thể là ngắn gọn, không có kiến ​​​​thức và chính xác, zkEVM có thể không phải là lựa chọn tốt nhất. Bằng cách trình bày toàn bộ bộ công cụ dành cho nhà phát triển, tôi hy vọng sẽ cung cấp hướng dẫn hỗ trợ quá trình ra quyết định xung quanh ngăn xếp zk phù hợp cho ứng dụng của bạn.

Trong một hoặc hai năm qua, đã có rất nhiều tiến bộ trong các công cụ zk. Họ đang tiến gần đến điểm mà các nhà phát triển phần mềm thông thường có thể tận dụng các thuộc tính mạnh mẽ của zk mà không cần hiểu sâu về toán học và kỹ thuật cơ bản đáng sợ. Mặt khác, đã có sự phổ biến trong các công cụ dành cho người dùng thành thạo giúp các chuyên gia zk kiểm soát cực kỳ tốt đối với ngăn xếp zk.

Sức mạnh của sự phức tạp trừu tượng

Phần mềm hiện đại được xây dựng trên vô số lớp trừu tượng để tối đa hóa năng suất của chuyên gia. Có nhiều lợi thế đối với sự trừu tượng hóa trong kỹ thuật hơi trực quan – một nhà phát triển web không cần phải hiểu sâu về cách hệ điều hành hoạt động. 

Chìa khóa để xây dựng các lớp trừu tượng tốt, có thể tái sử dụng là gói gọn độ phức tạp của một lớp và sau đó cung cấp các giao diện đơn giản nhưng biểu cảm cho các lớp cao hơn trong ngăn xếp để sử dụng. Thực hiện đúng cách, điều này cho phép các nhà phát triển có các lĩnh vực chuyên môn và kiến ​​thức khác nhau xây dựng các công cụ hữu ích trên toàn bộ ngăn xếp.

Không có gì ngạc nhiên, những nguyên tắc tương tự này áp dụng cho các hệ thống zk và các lớp trừu tượng này đang trở nên đủ trưởng thành để một người mới làm quen với zk bắt đầu sử dụng chúng và xây dựng các ứng dụng ngay hôm nay.

ngăn xếp công nghệ zk
Ngăn xếp zk với một số công cụ/công nghệ ví dụ ở mỗi lớp

Phát triển zk cấp thấp

Arkworks-rs

Arkworks-rs là một hệ sinh thái gồm các thư viện Rust cung cấp các triển khai hiệu quả và an toàn cho các thành phần phụ của ứng dụng zkSNARK. Arkworks cung cấp các giao diện cần thiết cho các nhà phát triển để tùy chỉnh ngăn xếp phần mềm cho ứng dụng zk mà không cần phải triển khai lại các điểm chung với các thư viện hiện có khác.

Trước Arkworks, cách duy nhất để tạo một ứng dụng zk mới là xây dựng mọi thứ từ đầu. Ưu điểm chính của Arkworks-rs so với các công cụ tích hợp theo chiều dọc, được xây dựng tùy chỉnh là mức độ linh hoạt, giảm kỹ thuật trùng lặp và giảm nỗ lực kiểm tra. Các đường giao diện hợp lý của Arkworks giữa các thành phần cho phép tốc độ nâng cấp có thể giữ cho ngăn xếp phù hợp giữa tốc độ đổi mới chóng mặt của công nghệ zk mà không buộc các nhóm phải xây dựng lại mọi thứ từ đầu.

Visa này dành cho đối tượng nào?

Arkworks dành cho các dự án cần kiểm soát tốt toàn bộ ngăn xếp phần mềm zk, nhưng không muốn xây dựng tất cả các phần thừa từ đầu. Nếu bạn đang xem xét một phiên bản tùy chỉnh của DSL mạch vì, chẳng hạn như bạn đang tạo mẫu thử một hệ thống bằng chứng mới nhưng không chắc chắn về sơ đồ cam kết hoặc đường cong elip tương ứng, thì Arkworks sẽ cho phép bạn chuyển đổi nhanh chóng giữa một số tùy chọn với các giao diện được chia sẻ, thay vì hơn là bắt đầu lại từ đầu.

Ưu điểm

  • Tính linh hoạt thông qua mô đun
  • Ít trùng lặp mã hơn
    • Chi phí kỹ thuật thấp hơn
    • Giảm diện tích bề mặt kiểm tra/lỗi
  • Nâng cấp bất kỳ thành phần nào mà không cần tái cấu trúc lớn
  • Dễ dàng thử nghiệm với các nguyên mẫu mới trong môi trường zk đang phát triển nhanh chóng

Nhược điểm

  • Yêu cầu hiểu biết sâu về ngăn xếp phần mềm đầy đủ
    • Kiểm soát quá nhiều có thể dẫn đến súng chân nếu không hiểu đúng
  • Kiểm soát chi tiết yêu cầu chuyên môn ở tất cả các cấp của ngăn xếp
    • Arkworks cung cấp một số giá trị mặc định hợp lý.

zk Ngôn ngữ dành riêng cho miền (DSL)

Để tạo bằng chứng về một số tính toán, trước tiên, tính toán này phải được thể hiện ở dạng mà hệ thống zkSNARK có thể hiểu được. Một số ngôn ngữ miền cụ thể đã tạo ra các ngôn ngữ lập trình cho phép các nhà phát triển ứng dụng thể hiện tính toán của họ theo cách như vậy. Bao gồm các Aztec Noir, Starknet của CairoxiếcZoKratesvà Aleo's Leo trong số những người khác. Hệ thống bằng chứng cơ bản và chi tiết toán học thường không được tiết lộ cho nhà phát triển ứng dụng.

Trải nghiệm nhà phát triển

Các nhà phát triển zkApp phải trở nên thành thạo trong việc viết chương trình của họ bằng các ngôn ngữ dành riêng cho miền. Một số ngôn ngữ này trông rất giống ngôn ngữ lập trình quen thuộc, trong khi những ngôn ngữ khác có thể khá khó học. Hãy chia nhỏ một vài trong số này:

Cairo – Starkware DSL cần thiết để xây dựng ứng dụng trên Starknet. Biên dịch thành ngôn ngữ lắp ráp dành riêng cho Cairo mà zkVM của Cairo có thể diễn giải được.

ZoKrates — ZoKrates là bộ công cụ dành cho các nhu cầu chung về SNARK bao gồm ngôn ngữ cấp cao để viết mạch. ZoKrates cũng có một số tính linh hoạt xung quanh các đường cong, sơ đồ chứng minh và phụ trợ, cho phép các nhà phát triển hoán đổi nóng bằng đối số CLI đơn giản.

xiếc — Circo là một ngôn ngữ được xây dựng có mục đích để xây dựng các mạch điện. Hiện tại, nó là ngôn ngữ thực tế cho các mạch trong sản xuất. Ngôn ngữ không đặc biệt tiện dụng. Bản thân ngôn ngữ khiến bạn nhận thức sâu sắc về thực tế là bạn đang viết mạch.

Leo — Leo được phát triển làm ngôn ngữ cho chuỗi khối Aleo. Leo có một số cú pháp giống như Rust và được tạo riêng cho các chuyển đổi trạng thái bên trong chuỗi khối.

Noir – Cú pháp lấy cảm hứng từ Rust. Được kiến ​​trúc xung quanh IR chứ không phải chính ngôn ngữ đó, điều đó có nghĩa là nó có thể có giao diện người dùng tùy ý. 

Ngăn biên dịch Aztec Noir, đáng chú ý, có kiến ​​trúc mô-đun

Visa này dành cho đối tượng nào?

Bất kỳ nhà phát triển ứng dụng nào muốn tận dụng các thuộc tính độc đáo của zk trong ứng dụng của họ. Một số ngôn ngữ này đã được thử nghiệm trong trận chiến với hàng tỷ đô la di chuyển qua chúng thông qua các chuỗi như ZCash và Starknet. Mặc dù một số dự án mà chúng ta sẽ thảo luận chưa hoàn toàn sẵn sàng để sử dụng trong sản xuất, nhưng viết mạch của bạn bằng một trong những ngôn ngữ này hiện là chiến lược tốt nhất, trừ khi bạn cần các biện pháp kiểm soát tốt hơn mà bộ công cụ như Arkworks cung cấp.

Ưu điểm

  • Người dùng không cần hiểu chi tiết zk cơ bản
  • Có sẵn hôm nay với một số kinh nghiệm sản xuất
  • Có thể kiểm chứng trên chuỗi
  • hệ sinh thái bất khả tri

Nhược điểm

  • Người dùng cần tìm hiểu một DSL mới
  • Công cụ im lặng và hỗ trợ xung quanh từng ngôn ngữ này
  • Ít hoặc không kiểm soát được ngăn xếp chứng minh cơ bản (hiện tại)

Mục tiêu chính của zkEVM là thực hiện quá trình chuyển đổi trạng thái Ethereum và chứng minh tính hợp lệ của nó bằng cách sử dụng bằng chứng chính xác bằng không có kiến ​​​​thức ngắn gọn. Như đã đề cập trong bài đăng của Vitalik, có một số cách để thực hiện việc này với sự khác biệt tinh tế và sự đánh đổi tương ứng. 

Sự khác biệt kỹ thuật chính giữa tất cả những thứ này chính xác là ở đâu trong ngăn xếp ngôn ngữ, tính toán được chuyển đổi thành một dạng (số học) có thể được sử dụng trong một hệ thống chứng minh. Trong một số zkEVM, điều này xảy ra ở các ngôn ngữ cấp cao (Solidity, Vyper, Yul), trong khi các cách tiếp cận khác cố gắng chứng minh EVM ở cấp độ opcode. Sự đánh đổi giữa các cách tiếp cận này đã được đề cập sâu trong bài đăng của Vitalik, nhưng tôi sẽ tóm tắt nó trong một câu: Chuyển đổi/số học xảy ra trong ngăn xếp càng thấp thì hình phạt về hiệu suất càng lớn.

Tại sao mã opcode EVM đắt tiền để chứng minh bằng zk?

Thách thức chính với việc tạo bằng chứng cho một máy ảo là kích thước của mạch tăng tỷ lệ thuận với kích thước của TẤT CẢ các lệnh có thể có cho mỗi lệnh được thực thi. Điều này xảy ra do mạch không biết những lệnh nào sẽ được thực hiện trong mỗi chương trình, vì vậy nó cần hỗ trợ tất cả chúng.

Trong các mạch phổ quát, mỗi lệnh được thực hiện có chi phí tỷ lệ thuận với tổng của tất cả các lệnh được hỗ trợ.

Điều này có nghĩa là trong thực tế, bạn phải trả (chi phí thực hiện) cho hướng dẫn đắt nhất có thể, ngay cả khi bạn chỉ thực hiện hướng dẫn đơn giản nhất. Điều này dẫn đến sự đánh đổi trực tiếp giữa khả năng khái quát hóa và hiệu suất–khi bạn thêm nhiều hướng dẫn hơn cho khả năng khái quát hóa, bạn sẽ trả tiền cho điều này trên mỗi hướng dẫn bạn chứng minh!

Đây là một vấn đề cơ bản với các mạch phổ quát, nhưng với những phát triển mới trong công nghệ giống như IVC (tính toán có thể kiểm chứng gia tăng), hạn chế này có thể được cải thiện bằng cách chia phép tính thành các phần nhỏ hơn mà mỗi phần có các mạch con chuyên biệt, nhỏ hơn.

Việc triển khai zkEVM ngày nay sử dụng các chiến lược khác nhau để giảm thiểu tác động của vấn đề này… Ví dụ: zkSync tách các hoạt động tốn kém hơn (chủ yếu là các trình biên dịch trước bằng mật mã như hàm băm và ECDSA) từ mạch chứng minh thực thi chính thành các mạch riêng biệt được tổng hợp lại với nhau tại kết thúc thông qua đệ quy snark. zkSync đã thực hiện phương pháp này sau khi họ nhận ra rằng phần lớn chi phí của họ đến từ một số lệnh phức tạp.

Chi phí giao dịch bị chi phối bởi một vài hoạt động tốn kém.

Về cốt lõi, lý do khiến việc chứng minh một tập lệnh tương đương với EVM đắt hơn là do EVM không được thiết kế cho các tính toán zk. Việc loại bỏ EVM sớm hơn trong ngăn xếp cho phép các zkEVM chạy trên các tập lệnh được tối ưu hóa hơn cho zk và do đó rẻ hơn để chứng minh.

Visa này dành cho đối tượng nào?

Khách hàng lý tưởng cho zkEVM là các ứng dụng hợp đồng thông minh cần các đơn đặt hàng có giá trị giao dịch rẻ hơn so với những gì có sẵn trên L1 Ethereum. Những nhà phát triển này không nhất thiết phải có chuyên môn hoặc băng thông để viết các ứng dụng zk từ đầu. Do đó, họ thích viết các ứng dụng của mình bằng các ngôn ngữ cấp cao hơn mà họ quen thuộc, chẳng hạn như Solidity. 

Tại sao có quá nhiều đội xây dựng điều này?

Nhân rộng Ethereum hiện là ứng dụng được yêu cầu nhiều nhất của công nghệ zk.

zkEVM là một giải pháp mở rộng quy mô Ethereum giúp giảm thiểu một cách dễ dàng vấn đề tắc nghẽn hạn chế các nhà phát triển L1 dApp.

Trải nghiệm nhà phát triển

Mục tiêu của zkEVM là hỗ trợ trải nghiệm của nhà phát triển gần nhất có thể với sự phát triển Ethereum hiện tại. Hỗ trợ Full Solidity có nghĩa là các nhóm không phải xây dựng và duy trì nhiều cơ sở mã. Điều này hơi không thực tế để thực hiện một cách hoàn hảo vì zkEVM cần đánh đổi một số khả năng tương thích để có thể tạo bằng chứng có kích thước hợp lý trong một khoảng thời gian hợp lý.

Nghiên cứu trường hợp nhanh: zkSync vs Scroll

Sự khác biệt chính giữa zkSync và Scroll là ở đâu/khi nào trong ngăn xếp chúng thực hiện phép tính số học – tức là ở đâu chúng chuyển đổi từ các cấu trúc EVM bình thường thành một biểu diễn thân thiện với SNARK. Đối với zkSync, điều này xảy ra khi họ chuyển đổi mã byte YUL thành tập lệnh zk tùy chỉnh của riêng họ. Đối với Scroll, điều này xảy ra ở cuối, khi dấu vết thực thi thực tế được tạo bằng các mã thực thi EVM.

Vì vậy, đối với zkSync, mọi thứ đều giống như tương tác với EVM cho đến khi mã byte zk được tạo. Đối với Scroll, mọi thứ đều giống nhau cho đến khi mã byte thực tế được thực thi. Đây là một sự khác biệt tinh tế, đánh đổi hiệu suất để được hỗ trợ. Ví dụ: zkSync sẽ không hỗ trợ các công cụ mã byte EVM giống như một trình gỡ lỗi sẵn có, bởi vì nó là một mã byte hoàn toàn khác. Mặc dù Scroll sẽ gặp nhiều khó khăn hơn để có được hiệu suất tốt từ một bộ hướng dẫn, nhưng điều đó không được thiết kế cho zk. Có những ưu và nhược điểm đối với cả hai chiến lược và cuối cùng có rất nhiều yếu tố ngoại sinh sẽ ảnh hưởng đến thành công tương đối của chúng.

Trình biên dịch mạch zkLLVM

💡 Mặc dù được đặt tên như vậy, LLVM không phải là VM (máy ảo). LLVM là tên của một tập hợp các công cụ biên dịch được cố định bởi một biểu diễn trung gian (IR) không phụ thuộc vào ngôn ngữ.

= không; Foundation (về cái tên, đó là một Trò đùa SQL injection nếu bạn đang thắc mắc) đang xây dựng một trình biên dịch có thể chuyển đổi bất kỳ ngôn ngữ giao diện người dùng LLVM nào thành một biểu diễn trung gian có thể được chứng minh trong SNARK. zkLLVM được thiết kế như một phần mở rộng cho cơ sở hạ tầng LLVM hiện có, một chuỗi công cụ tiêu chuẩn công nghiệp hỗ trợ nhiều ngôn ngữ cấp cao như Rust, C, C++, v.v.

Cách thức thực hiện

Bản phác thảo sơ bộ về kiến ​​trúc zkLLVM

Người dùng muốn chứng minh một số tính toán sẽ chỉ cần thực hiện tính toán đó trong C++. zkLLVM lấy mã nguồn cấp cao này được hỗ trợ bởi trình biên dịch clang đã sửa đổi của họ (hiện tại là C++) và tạo ra một số biểu diễn trung gian của mạch. Tại thời điểm này, mạch đã sẵn sàng để được chứng minh, nhưng người dùng có thể muốn chứng minh mạch dựa trên một số đầu vào động. Để xử lý các đầu vào động, zkLLVM có một thành phần bổ sung được gọi là bộ gán, thành phần này tạo ra một bảng gán với tất cả các đầu vào và nhân chứng được xử lý trước đầy đủ và sẵn sàng để được chứng minh cùng với mạch.

2 thành phần này là tất cả những gì cần thiết để tạo ra một bằng chứng. Về mặt lý thuyết, người dùng có thể tự tạo bằng chứng, nhưng vì đây là một nhiệm vụ tính toán hơi chuyên biệt nên họ có thể muốn trả tiền cho người khác, người có phần cứng, để thực hiện việc đó cho họ. Đối với cơ chế khám phá đối tác này, =nil; Foundation cũng đã thiết lập một 'thị trường bằng chứng', nơi những người chứng minh cạnh tranh để chứng minh tính toán cho những người dùng sẽ trả tiền cho họ để làm như vậy. Sự năng động của thị trường tự do này sẽ dẫn đến việc các nhà chứng minh tối ưu hóa các nhiệm vụ chứng minh có giá trị nhất.

Đánh đổi

Vì mọi nhiệm vụ tính toán cần chứng minh là duy nhất và tạo ra một mạch khác nhau, nên có vô số mạch mà người kiểm chứng sẽ cần để có thể xử lý. Tính khái quát bắt buộc này làm cho việc tối ưu hóa các mạch riêng lẻ trở nên khó khăn. Sự ra đời của một thị trường bằng chứng cho phép chuyên môn hóa trên các mạch mà thị trường cho là có giá trị. Nếu không có thị trường này, sẽ rất khó để thuyết phục một người chứng minh tối ưu hóa mạch này vì vấn đề khởi động nguội tự nhiên này.

Sự đánh đổi khác là sự trừu tượng cổ điển so với sự kiểm soát. Người dùng sẵn sàng sử dụng giao diện dễ sử dụng này đang từ bỏ quyền kiểm soát đối với các nguyên tắc mật mã cơ bản. Đối với nhiều người dùng, đây là một sự đánh đổi rất hợp lý để thực hiện, vì thường tốt hơn là để các chuyên gia mật mã đưa ra những quyết định này cho bạn.

Ưu điểm

  • Người dùng có thể viết mã bằng các ngôn ngữ cấp cao quen thuộc
  • Tất cả các phần bên trong zk được trừu tượng hóa khỏi người dùng
  • Không dựa vào một mạch 'VM' cụ thể có thêm chi phí bổ sung

Nhược điểm

  • Mỗi chương trình có một mạch khác nhau. Khó tối ưu hóa. (chứng minh thị trường giải quyết một phần điều này)
  • Không tầm thường để trao đổi/nâng cấp các thư viện zk nội bộ (yêu cầu chuyển đổi)

Một zkVM mô tả superset của tất cả các máy ảo zk, trong khi zkEVM là một loại zkVM cụ thể, đáng để thảo luận như một chủ đề riêng vì mức độ phổ biến của nó ngày nay. Có một vài dự án khác đang làm việc để xây dựng các zkVM tổng quát hơn dựa trên ISA bên cạnh các VM tiền điện tử đặt riêng.

Thay vì chứng minh EVM, hệ thống có thể chứng minh một kiến ​​trúc tập lệnh (ISA) khác, chẳng hạn như RISC-V hoặc WASM trong một máy ảo mới. Hai dự án đang hoạt động trên các zkVM tổng quát này là RISC Zero và zkWASM. Hãy đi sâu vào RISC Zero một chút ở đây để chứng minh chiến lược này hoạt động như thế nào và một số ưu điểm/nhược điểm của nó. 

Kiến trúc cấp cao thế hệ bằng chứng Risc Zero

RISC Zero có thể chứng minh bất kỳ tính toán nào được thực hiện trên kiến ​​trúc RISC-V. RISC-V là một tiêu chuẩn kiến ​​trúc tập lệnh (ISA) mã nguồn mở đã và đang trở nên phổ biến. Triết lý RISC (máy tính tập lệnh giảm) là xây dựng một tập lệnh cực kỳ đơn giản với độ phức tạp tối thiểu. Điều này có nghĩa là các nhà phát triển ở các lớp cao hơn trong ngăn xếp sẽ đảm nhận khối lượng công việc lớn hơn trong việc triển khai các hướng dẫn sử dụng kiến ​​trúc này trong khi làm cho việc triển khai phần cứng trở nên đơn giản hơn.

Triết lý này cũng áp dụng cho điện toán nói chung, chip ARM đã tận dụng các tập lệnh kiểu RISC và bắt đầu chiếm lĩnh thị trường chip di động. Nó chỉ ra rằng các tập lệnh đơn giản hơn cũng có hiệu suất năng lượng và diện tích khuôn lớn hơn.

Sự tương tự này giữ khá tốt cho hiệu quả của việc tạo bằng chứng zk. Như đã thảo luận trước đây, khi chứng minh một dấu vết thực thi trong zk, bạn phải trả cho tổng chi phí của tất cả các lệnh trên mỗi mục trong dấu vết, vì vậy tổng số lệnh đơn giản hơn và ít hơn sẽ tốt hơn.

Cách thức thực hiện

Từ góc độ của nhà phát triển, việc sử dụng RISC Zero để xử lý bằng chứng zk cũng giống như sử dụng các hàm AWS Lambda để xử lý kiến ​​trúc máy chủ phụ trợ. Các nhà phát triển tương tác với RISC Zero hoặc AWS Lambda bằng cách viết mã đơn giản và dịch vụ xử lý tất cả sự phức tạp của phần phụ trợ.

Đối với RISC Zero, các nhà phát triển viết Rust hoặc C++ (cuối cùng là bất kỳ thứ gì hướng tới RISC-V). Sau đó, hệ thống lấy tệp ELF được tạo trong quá trình biên dịch và sử dụng tệp đó làm mã đầu vào cho mạch VM. Các nhà phát triển chỉ cần gọi chứng minh trả về một đối tượng biên nhận (có chứa bằng chứng zk của dấu vết thực thi) mà bất kỳ ai cũng có thể gọi `xác minh` từ bất cứ đâu. Theo quan điểm của nhà phát triển, không cần phải hiểu cách thức hoạt động của zk, hệ thống cơ bản xử lý tất cả sự phức tạp này.

Thực tập sinh Risc Zero?

Ưu điểm

  • Dễ sử dụng. Mở ra cơ hội cho bất kỳ lập trình viên nào xây dựng các ứng dụng zk
  • Mạch đơn mà người chứng minh có thể chuyên dùng cho
    • Ngoài ra, diện tích bề mặt ít hơn để tấn công và ít hơn để kiểm tra
  • Tương thích với bất kỳ chuỗi khối nào, bạn chỉ cần đăng bằng chứng

Nhược điểm

  • Mất rất nhiều chi phí (về kích thước bằng chứng và tốc độ tạo) để hỗ trợ giao diện chung như vậy
  • Yêu cầu cải tiến đáng kể trong các kỹ thuật tạo bằng chứng để đạt được sự hỗ trợ rộng rãi cho các thư viện hiện có

Mạch tái sử dụng được xây dựng sẵn

Đối với một số mạch cơ bản và có thể tái sử dụng đặc biệt hữu ích cho các ứng dụng chuỗi khối hoặc ở nơi khác, các nhóm có thể đã xây dựng và tối ưu hóa các mạch này cho bạn. Bạn chỉ có thể cung cấp đầu vào cho trường hợp sử dụng cụ thể của mình. Ví dụ, bằng chứng bao gồm Merkle là thứ thường cần trong các ứng dụng tiền điện tử (danh sách airdrop, Tornado Cash, v.v.). Với tư cách là nhà phát triển ứng dụng, bạn luôn có thể sử dụng lại các hợp đồng đã được thử nghiệm trong trận chiến này và chỉ cần sửa đổi các lớp ở trên cùng để tạo một ứng dụng độc đáo.

Ví dụ: các mạch của Tornado Cash có thể được sử dụng lại cho một ứng dụng airdrop riêng hoặc một ứng dụng bỏ phiếu riêng tư. Manta và Semaphore đang xây dựng toàn bộ bộ công cụ gồm các tiện ích mạch phổ biến như thế này có thể được sử dụng trong các hợp đồng Solidity mà không cần hoặc có rất ít hiểu biết về toán học zk moon cơ bản.

Hướng dẫn — Chọn ngăn xếp của bạn

Như đã thảo luận ở phần dài, có vô số tùy chọn khác nhau để phát triển ứng dụng zk, tất cả đều có sự đánh đổi độc đáo của riêng chúng. Biểu đồ này sẽ giúp tóm tắt ma trận quyết định này để dựa trên mức độ chuyên môn zk và nhu cầu hiệu suất của bạn, bạn có thể chọn công cụ tốt nhất cho công việc. Đây không phải là một danh sách toàn diện, tôi dự định sẽ thêm vào danh sách này trong tương lai khi tôi biết về nhiều công cụ sắp xuất hiện trong không gian.

Hướng dẫn dành cho nhà phát triển ứng dụng về zkGalaxy

Bảng tính dành cho nhà phát triển ứng dụng zk

1. Thư viện Snark cấp thấp

Khi nào nên sử dụng: 

  • Bạn cần kiểm soát tốt toàn bộ kho tục ngữ
  • Muốn tránh xây dựng lại các thành phần phổ biến
  • Bạn muốn thử nghiệm với các kết hợp khác nhau chứng minh sơ đồ, đường cong, và mức độ thấp khác nguyên thủy

Khi nào không sử dụng:

  • Bạn là người mới tìm kiếm giao diện chứng minh cấp cao

Tùy chọn: 


3. Trình biên dịch zk

Khi nào nên sử dụng: 

  • Không sẵn sàng nhận chi phí của một mạch phổ quát
  • Muốn viết mạch bằng ngôn ngữ quen thuộc 
  • Cần mạch tùy chỉnh cao

Khi nào không sử dụng: 

  • Muốn kiểm soát các nguyên tắc mật mã cơ bản
  • Cần một mạch đã được tối ưu hóa rất nhiều

Tùy chọn:


5. zkVM

Khi nào nên sử dụng: 

  • Muốn viết mã bằng ngôn ngữ cấp cao 
  • Cần chứng minh tính đúng đắn của việc thực hiện này 
  • Cần ẩn một số đầu vào để thực thi này khỏi trình xác minh
  • Có ít hoặc không có chuyên môn về zk

Khi nào không sử dụng:

  • Trong môi trường có độ trễ cực thấp (nó vẫn còn chậm)
  • Bạn có một chương trình khổng lồ (hiện tại)

Tùy chọn:

2. zk DSL

Khi nào nên sử dụng: 

  • Bạn cảm thấy thoải mái khi chọn một ngôn ngữ mới
  • Muốn sử dụng một số ngôn ngữ đã qua thử thách
  • Cần kích thước mạch tối thiểu, sẵn sàng từ bỏ sự trừu tượng

Khi nào không sử dụng: 

  • Cần kiểm soát tốt back-end đang được chứng minh (hiện tại, có thể trao đổi back-end cho một số DSL)

Tùy chọn:


4. zkEVM

Khi nào nên sử dụng: 

  • Bạn có một dApp đã hoạt động trên EVM
  • Bạn cần giao dịch rẻ hơn cho người dùng của mình 
  • Bạn muốn giảm thiểu nỗ lực triển khai sang một chuỗi mới
  • Chỉ quan tâm đến thuộc tính ngắn gọn của zk (nén)

Khi nào không sử dụng: 

  • Bạn cần tương đương EVM hoàn hảo
  • Bạn cần thuộc tính riêng tư của zk 
  • Bạn có trường hợp sử dụng không phải blockchain 

Tùy chọn: 


6. Mạch tái sử dụng dựng sẵn

Khi nào nên sử dụng: 

  • Bạn có một ứng dụng hợp đồng thông minh dựa trên các khối xây dựng zk phổ biến, chẳng hạn như bao gồm Merkle
  • Bạn có ít hoặc không có kiến ​​thức chuyên môn về các công cụ cơ bản của zk

Khi nào không sử dụng:

  • Bạn có nhu cầu chuyên môn cao
  • Trường hợp sử dụng của bạn không được hỗ trợ bởi các mạch dựng sẵn 

Tùy chọn: 

Kết luận

zk là đỉnh cao của một số công nghệ và việc xây dựng nó đòi hỏi sự hiểu biết sâu sắc về toán học, mật mã, khoa học máy tính và kỹ thuật phần cứng. Tuy nhiên, với ngày càng nhiều lớp trừu tượng có sẵn mỗi ngày, các nhà phát triển ứng dụng có thể tận dụng sức mạnh của zk mà không cần bằng tiến sĩ. Vì các hạn chế về thời gian chứng minh đang dần được dỡ bỏ theo thời gian thông qua việc tối ưu hóa ở tất cả các cấp độ của ngăn xếp, chúng ta có thể sẽ thấy các công cụ thậm chí còn đơn giản hơn cho nhà phát triển bình thường.

Tôi hy vọng tôi đã thuyết phục được bạn, nhà phát triển phần mềm tò mò, rằng bạn có thể bắt đầu sử dụng zk trong các ứng dụng của mình ngay hôm nay. Hack vui vẻ 🙂

bạn còn chờ gì nữa, hãy xây dựng một số ứng dụng zk

Tiết lộ: Blockchain Capital là một nhà đầu tư trong một số giao thức được đề cập ở trên.

Quan điểm thể hiện trong mỗi bài đăng trên blog có thể là quan điểm cá nhân của từng tác giả và không nhất thiết phản ánh quan điểm của Blockchain Capital và các chi nhánh của nó. Cả Blockchain Capital và tác giả đều không đảm bảo tính chính xác, đầy đủ hoặc đầy đủ của thông tin được cung cấp trong mỗi bài đăng trên blog. Không có tuyên bố hay bảo đảm nào, rõ ràng hay ngụ ý, được thực hiện hoặc đưa ra bởi hoặc thay mặt cho Blockchain Capital, tác giả hoặc bất kỳ người nào khác về tính chính xác và đầy đủ hoặc công bằng của thông tin có trong bất kỳ bài đăng trên blog nào và không có trách nhiệm hoặc trách nhiệm pháp lý nào được chấp nhận cho bất kỳ thông tin như vậy. Không có nội dung nào trong mỗi bài đăng trên blog cấu thành đầu tư, quy định, pháp lý, tuân thủ hoặc thuế hoặc lời khuyên khác cũng như không được dựa vào để đưa ra quyết định đầu tư. Các bài đăng trên blog không nên được xem là các khuyến nghị hoặc chào mời hiện tại hoặc trước đây về một đề nghị mua hoặc bán bất kỳ chứng khoán nào hoặc áp dụng bất kỳ chiến lược đầu tư nào. Các bài đăng trên blog có thể chứa các dự đoán hoặc tuyên bố hướng tới tương lai khác, dựa trên niềm tin, giả định và kỳ vọng có thể thay đổi do nhiều sự kiện hoặc yếu tố có thể xảy ra. Nếu có thay đổi xảy ra, kết quả thực tế có thể thay đổi đáng kể so với kết quả được thể hiện trong các tuyên bố hướng tới tương lai. Tất cả các tuyên bố hướng tới tương lai chỉ được đưa ra kể từ ngày các tuyên bố đó được đưa ra và cả Blockchain Capital cũng như mỗi tác giả đều không có bất kỳ nghĩa vụ nào để cập nhật các tuyên bố đó trừ khi được pháp luật yêu cầu. Trong phạm vi mà bất kỳ tài liệu, bản trình bày hoặc tài liệu nào khác do Blockchain Capital sản xuất, xuất bản hoặc phân phối được tham chiếu trong bất kỳ bài đăng trên blog nào, những tài liệu đó nên được đọc cẩn thận với bất kỳ tuyên bố từ chối trách nhiệm nào được cung cấp trong đó.

Dấu thời gian:

Thêm từ Blockchain Capital