lời tựa
lời tựa
Máy ảo Ethereum là một môi trường vận hành mã được xây dựng trên chuỗi khối Ethereum. Mã hợp đồng có thể được cách ly hoàn toàn với bên ngoài và chạy bên trong EVM. Chức năng chính của nó là xử lý các hợp đồng thông minh trong hệ thống Ethereum. Lý do tại sao Ethereum hoàn thiện Turing là các nhà phát triển có thể sử dụng ngôn ngữ Solidity để tạo các ứng dụng chạy trên EVM và tất cả các vấn đề tính toán đều có thể được tính toán. Nhưng tính đầy đủ của Turing vẫn chưa đủ, người ta cũng cố gắng đóng gói EVM trong hệ thống chứng minh ZK, nhưng vấn đề là khi đóng gói sẽ có rất nhiều điểm dư thừa. "Chế độ bảng nhỏ" zkEVM do Fox phát minh sẽ không chỉ đảm bảo rằng các nhà phát triển Solidity Ethereum bản địa có thể di chuyển liền mạch sang zkEVM mà còn giảm đáng kể chi phí dư thừa khi đóng gói EVM vào hệ thống bằng chứng ZK.
EVM đang trải qua quá trình chuyển đổi ZK hoành tráng kể từ khi thành lập vào năm 2015. Sự chuyển đổi lớn này có hai hướng chính.
Hướng đầu tiên là cái gọi là đường đua zkVM.Dự án đường đua này được dành riêng để cải thiện hiệu suất của Ứng dụng đến mức tối ưu và khả năng tương thích với máy ảo Ethereum không phải là yếu tố được cân nhắc chính. Có hai hướng phụ ở đây. Một là tạo DSL (Ngôn ngữ dành riêng cho miền) của riêng bạn. Ví dụ: StarkWare cam kết quảng bá ngôn ngữ Cairo, ngôn ngữ này không dễ quảng bá. Thứ hai là mục tiêu tương thích với các ngôn ngữ tương đối trưởng thành hiện có, chẳng hạn như RISC Zero cam kết làm cho zkVM tương thích với C++/Rust. Khó khăn của bài hát này là các ràng buộc đối với đầu ra cuối cùng phức tạp hơn do sự ra đời của tập lệnh ISA.
Hướng thứ hai là cái gọi là rãnh zkEVM, được dành riêng cho khả năng tương thích của EVM Bytecode, nghĩa là các mã EVM ở cấp Bytecode và trên hết là tạo ra các bằng chứng không kiến thức tương ứng thông qua ZkEVM, để các nhà phát triển Solidity Ethereum bản địa Nó sẽ có thể chuyển sang zkEVM miễn phí. Những người chơi trên đường đua này chủ yếu bao gồm Polygon zkEVM, Scroll, Taiko và Fox. Khó khăn của đường đua này là nó tương thích với chi phí dự phòng của EVM, không phù hợp để đóng gói trong hệ thống bằng chứng ZK. Sau một thời gian dài suy nghĩ và tranh luận, Fox cuối cùng đã tìm ra chìa khóa để giảm thiểu một cách cơ bản sự dư thừa rất lớn của zkEVM thế hệ đầu tiên: "chế độ bảng nhỏ" zkEVM.
Mạch dữ liệu và bằng chứng là hai yếu tố cốt lõi của zkEVM để tạo bằng chứng. Một mặt, trong zkEVM, người chứng minh cần tất cả dữ liệu liên quan đến giao dịch để chứng minh rằng việc chuyển trạng thái do giao dịch mang lại là chính xác, trong khi dữ liệu trong EVM rất lớn và phức tạp. Do đó, làm thế nào để tổ chức và sắp xếp dữ liệu cần thiết cho bằng chứng là một vấn đề cần được xem xét cẩn thận để xây dựng một zkEVM hiệu quả. Mặt khác, làm thế nào để chứng minh (hoặc xác minh) hiệu quả tính hợp lệ và chính xác của việc thực hiện tính toán thông qua một loạt các ràng buộc mạch là cơ sở để đảm bảo tính bảo mật của zkEVM.
Mô tả hình ảnh
Hình 1: Hai thế hệ giải pháp zkEVM cho bảng lớn và bảng nhỏ
Ví dụ: chúng tôi tập hợp từng thay đổi của các phần tử trong ngăn xếp, đặc biệt viết chứng minh mạch ngăn xếp, viết một tập hợp các mạch số học cho các phép toán số học thuần túy, v.v. Bằng cách này, các tình huống mà mỗi mạch cần xem xét trở nên tương đối đơn giản. Các mạch này với các chức năng khác nhau có tên khác nhau trong các zkEVM khác nhau. Một số người gọi chúng là mạch trực tiếp, trong khi những người khác gọi chúng là máy trạng thái (phụ), nhưng bản chất của ý tưởng là như nhau.
Để giải thích rõ hơn ý nghĩa của việc làm này, chúng ta hãy đưa ra một ví dụ, giả sử rằng chúng ta muốn chứng minh phép toán cộng (lấy 2 phần tử trên của ngăn xếp và đưa tổng của chúng trở lại đầu ngăn xếp):
Giả sử ngăn xếp ban đầu là [ 1, 3, 5, 4, 2 ]
Khi đó nếu không phân loại và tách, ta cần thử chứng minh rằng sau các phép toán trên, ngăn xếp trở thành [ 1, 3, 5, 6 ]
Còn nếu phân loại thì ta chỉ cần chứng minh riêng các điều sau:
mạch ngăn xếp:
C 1 : Chứng minh rằng [ 1, 3, 5, 4, 2 ] bật lên 2 và 4 trở thành [ 1, 3, 5 ]
C 2 : Chứng minh rằng [ 1, 3, 5 ] trở thành [ 1, 3, 5, 6 ] sau khi đẩy ( 6)
Mạch số học:
C 3 :a= 2, b= 4,c= 6 , chứng minh rằng a+b=c
Mô tả hình ảnh
Hình 2: Mô hình bảng lớn được thế hệ zkEVM đầu tiên áp dụng
Một khi phân loại được chia nhỏ, tình huống của từng phần sẽ trở nên tương đối đơn giản, do đó độ khó chứng minh sẽ giảm đi đáng kể.
Nhưng việc phân loại và chia tách cũng sẽ dẫn đến các vấn đề khác, đó là vấn đề nhất quán dữ liệu của các loại mạch khác nhau.Ví dụ, trong ví dụ trên, chúng ta thực sự cần chứng minh hai điều sau:
C 4 : "số xuất hiện trong C 1" = "a và b trong C 3"
C 5 : "Số lần đẩy trong C 2" = "c trong C 3"
Để giải quyết vấn đề này, chúng ta quay lại câu hỏi đầu tiên, đó là cách chúng ta tổ chức dữ liệu liên quan đến giao dịch và chúng ta sẽ thảo luận về chủ đề này tiếp theo:
Một phương pháp trực quan là: thông qua theo dõi, chúng ta có thể phân tách từng bước liên quan đến tất cả các giao dịch, biết dữ liệu liên quan và gửi yêu cầu đến nút để lấy phần dữ liệu không có trong dấu vết, sau đó chúng ta sẽ Nó được sắp xếp thành một bảng lớn T như sau:
"Thao tác bước đầu tiên" "Dữ liệu liên quan đến thao tác bước đầu tiên"
"Thao tác bước thứ hai" "Dữ liệu liên quan đến thao tác bước thứ hai"
... "hoạt động thứ n" "dữ liệu liên quan đến hoạt động thứ n"
Vì vậy, trong ví dụ trên, chúng ta sẽ có một dòng ghi
"bước k: phép cộng" "a= 2, b= 4, c= 6 "
Và C 4 ở trên có thể được chứng minh như sau:
C 4(a): Số hiện ra bởi C 1 phù hợp với bước thứ k trong bảng lớn T
C 4(a): a và b của C 3 phù hợp với bước k trong bảng lớn T
Mô tả hình ảnh
Hình 3: "Chế độ bảng nhỏ" zkEVM do Fox phát minh
Chúng tôi xem xét một loạt các cấu trúc bảng sau đây:
Mẫu Ta:
"hoạt động đầu tiên của loại a" "dữ liệu liên quan đến hoạt động đầu tiên của loại a"
"hoạt động thứ hai của loại a" "dữ liệu liên quan đến hoạt động thứ hai của loại a"
..."hoạt động thứ m của loại a" "dữ liệu liên quan đến hoạt động thứ m của loại a"
Mẫu TB:
"hoạt động đầu tiên của loại b" "dữ liệu liên quan đến hoạt động đầu tiên của loại b"
"hoạt động thứ hai của loại b" "dữ liệu liên quan đến hoạt động thứ hai của loại b"
..."hoạt động thứ m của loại b" "dữ liệu liên quan đến hoạt động thứ n của loại b"
…Cấu tạo nhiều bảng nhỏ theo cách này, ưu điểm của cách làm này là chúng ta có thể trực tiếp thực hiện tra cứu trong các bảng nhỏ tương ứng theo loại thao tác liên quan đến dữ liệu cần thiết, theo cách này, hiệu quả có thể được cải thiện rất nhiều.
Một ví dụ đơn giản (giả sử chúng ta chỉ có thể tra cứu một phần tử tại một thời điểm) là nếu chúng ta muốn chứng minh rằng 8 chữ cái a~h tồn tại trong [a, b, c, d, e, f, g, h], chúng ta cần Thực hiện 8 lần tra cứu trên một bảng có kích thước là 8, nhưng nếu ta chia bảng thành [a, b, c, d] và [e, f, g, h] thì ta chỉ cần thực hiện 4 lần tra cứu trên là đủ các bảng tương ứng!
Tóm lại là
Tóm lại là
"Chế độ bảng nhỏ" zkEVM do Fox phát minh không chỉ đảm bảo rằng các nhà phát triển Solidity Ethereum bản địa có thể chuyển sang zkEVM miễn phí mà còn giảm đáng kể chi phí dư thừa khi đóng gói EVM vào hệ thống bằng chứng ZK. Đây là một thay đổi lớn trong cấu trúc của zkEVM, sẽ có tác động sâu sắc đến kế hoạch mở rộng của Ethereum.
