Ngôn ngữ lập trình Lurk là gì?

Lurk là một ngôn ngữ lập trình dựa trên Lisp được sử dụng cho zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). Ngôn ngữ này cho phép xây dựng zk-SNARKs cho các chương trình tùy ý mà không cần biên dịch chúng thành mạch phẳng, giới hạn kích thước và độ phức tạp của tính toán. Thay vào đó, các chương trình Lurk được cung cấp dưới dạng dữ liệu cho mạch thông dịch Lurk chung, cho phép ngôn ngữ kết quả đạt độ hoàn thiện Turing mà không ảnh hưởng đến kích thước của các bằng chứng chứng minh. Lurk sử dụng khái niệm “content addressing” để xử lý các vấn đề liên quan đến việc lập trình zk-SNARKs.

Click Digital xin phép được giải thích thêm về Lurk, một ngôn ngữ lập trình mới dựa trên LISP cho zk-SNARKs. Các phương pháp truyền thống để lập trình trên các chứng minh không có kiến thức yêu cầu biên dịch tính toán mong muốn thành mạch phẳng, áp đặt các ràng buộc nghiêm trọng về kích thước và phức tạp của các tính toán có thể đạt được trong thực tế. Thay vì đưa ra các chương trình Lurk dưới dạng dữ liệu cho mạch thông dụng của trình thông dịch Lurk, cho phép ngôn ngữ kết quả có khả năng Turing mà không làm ảnh hưởng đến kích thước của các chứng minh. Công việc của chúng tôi mô tả thiết kế và lý thuyết đằng sau Lurk, cùng với việc trình bày cách thức triển khai của nó về hệ thống định vị nội dung có thể được sử dụng để né tránh nhiều lo ngại thông thường trong lập trình chứng minh không có kiến thức.

Lurk1 là một ngôn ngữ lập trình mới dựa trên LISP mà tự động xây dựng zk-SNARKs cho các chương trình tùy ý, tránh việc biên dịch tùy ý các chương trình thành mạch phẳng – quá trình này áp đặt các ràng buộc nghiêm trọng về kích thước và phức tạp của các tính toán có thể đạt được trong thực tế. Mặc dù zk-SNARKs lý thuyết cho phép ứng dụng như những gì đã được mô tả ở trên, khả năng triển khai chúng cho đến nay đã bị ảnh hưởng bởi thiếu hụt về ngôn ngữ chung cụ thể và thực tế. Một tác giả đã nảy ra ý tưởng về Lurk sau khi trải qua trải nghiệm triển khai các chứng minh Filecoin [Fisch et al. 2018], trong đó chủ yếu là các chứng minh bao gồm các chứng minh Merkle-inclusion ở quy mô lớn.

Lurk đã nổi lên thông qua một nỗ lực thiết kế để tổng quát hóa các chứng minh kiến thức này, để khai thác các bước tiến mới trong hệ thống chứng minh mật mã gần đây và để giải quyết các vấn đề về khả dụng của kỹ thuật phần mềm vẫn chưa được giải quyết bởi mật mã mới. Các khẳng định về tính toán có thể được chứng minh trong mạch tính toán hình học (ngôn ngữ thực hiện của các câu lệnh SNARK) thường kết thúc với quan sát rằng các mạch này là Turing-complete. Điều tương đương lý thuyết này có thể khiến người triển khai chứng minh sai tin rằng các chứng minh thực thi các chương trình được viết bằng các ngôn ngữ lập trình thông thường có thể dễ dàng được biểu diễn trong các mạch SNARK, nhưng điều này không đúng. Trên thực tế, các chương trình phức tạp không dùng mô tả R1CS yêu cầu các cấu trúc điều khiển được giải mã và chương trình đệ quy được dịch sang dạng được chứng minh mà khó kiểm tra hoặc viết bằng tay và ảnh hưởng đến hiệu suất của các chương trình tổng quát.

Lurk giải quyết vấn đề này bằng cách tích hợp một trình thông dịch ngắn gọn với phần mềm mật mã, để biểu thị các chứng minh về việc đánh giá ngôn ngữ lập trình nguồn có khả năng Turing cao. Nói cách khác, trình thông dịch Lurk giảm dần các chương trình Lurk cho đến khi chỉ còn một kết quả cuối cùng, không cần biểu diễn trung gian: chương trình dễ đọc và ghi (có địa chỉ nội dung) là đầu vào cho mạch tính toán chứng minh sự giảm dần của nó; và kết quả cuối cùng của việc đánh giá cũng có thể đọc được tương tự.

Phương pháp này phát sinh sau khi nhận thấy rằng các chứng minh Merkle tương tự với các kiểm tra thành viên chức năng khi cấu trúc dữ liệu được biểu diễn dưới dạng Merkle DAGs. Trong mô hình này, các con trỏ hashconsed tới các giá trị nguyên tử, bao gồm các biểu tượng, cấp phát dữ liệu phức tạp trên một heap ảo để khởi tạo một RAM không có không gian địa chỉ tuyến tính. Các biểu thức được mã hóa trong một ngôn ngữ dữ liệu có địa chỉ nội dung như vậy (mà không cần bước biên dịch) chỉ định tính toán tùy ý bằng cách sử dụng mô hình đánh giá được đề cập trong bài báo gốc Lisp của McCarthy [McCarthy 1960]. Điều này chỉ yêu cầu một số thao tác nguyên thủy, đủ để giải quyết các vấn đề về khả năng biểu diễn của các mạch phẳng. Ngôn ngữ kết quả là một ngôn ngữ Lisp có khả năng đọc và viết với tính tương đương giữa mã và dữ liệu. Nó có thể được chứng minh trực tiếp bằng một mạch SNARK duy nhất được lặp lại bởi một hệ thống chứng minh đệ quy phù hợp (ví dụ như Nova).

Vietnam Pham – Click Digital

  • Token Saigon (SGN), blockchain knowledge, backed by Click Digital, BSC address: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
  • Chart, buy now: https://dexscreener.com/bsc/0xa29c5da6673fd66e96065f44da94e351a3e2af65
  • Staking SGN: http://135web.net
Rate this post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *