TL;DR
Hôm nay, các giải pháp tầng 2 đổi lấy tính khả năng mở rộ cho việc phân mảnh trạng thái. Chúng tôi giới thiệu một thiết kế tầng 2 (L2), =nil;, mà đẩy giới hạn của tính mở rộ của Ethereum mà không đánh đổi các lợi ích của môi trường thực thi thống nhất. Giải pháp kết hợp cơ chế phân mảnh động với quyền truy cập có thể xác minh vào dữ liệu Ethereum, được bảo vệ bởi công nghệ không chứng minh. Các yếu tố chính bao gồm:
Thông qua zkSharding =nil; hǣnđợc lợi ích từ các ưu điêm của cả thiện mônôlít và thiết kế modul, bao gồm:
Khả năng mở rộng
Môi trường thực thi thống nhất
Bảo mật
Chức năng
Ở cấp độ thấp hơn, trạng thái của =nil; được phân chia thành shard chính và một số shard phụ. Vai trò chính của shard chính là đồng bộ và tổng hợp dữ liệu từ các shard phụ. Nó sử dụng Ethereum cả là Lớp Khả dụng Dữ liệu và là một bộ xác minh cho các chứng minh chuyển trạng thái, tương tự như các hoạt động zkRollups điển hình.
Các mảnh phụ thực hiện vai trò "công nhân", thực thi giao dịch người dùng. Các mảnh này duy trì tính thanh khoản và dữ liệu thống nhất thông qua giao thức nhắn tin giữa các mảnh, loại bỏ bất kỳ phân mảnh nào giữa chúng.
Mỗi phân mảnh được giám sát bởi một ủy ban các nhà xác minh. Có sự xoay vòng định kỳ của những người xác minh này qua các phân mảnh. Ngoài ra, các cập nhật đối với trạng thái của một phân mảnh được xác minh đến phân mảnh chính bằng cách sử dụng zkEVM.
Để minh họa quá trình giao dịch từ việc khởi tạo bởi người dùng đến xác nhận trên Ethereum, hãy xem xét các bước sau:
Bản dự thảo này giả định rằng giao dịch của người dùng không kích hoạt giao thức tin nhắn chéo shard. Tuy nhiên, trong trường hợp này, luồng giao dịch vẫn giữ nguyên nhưng có sự khác biệt là giao dịch của người dùng có thể kích hoạt tạo ra các giao dịch mới trên các shard khác.
Với tất cả các tài khoản được phân phối trên các mảnh, điều này có vẻ giống với vấn đề phân mảnh dữ liệu được tìm thấy trong phương pháp rollups cụ thể cho ứng dụng. Tuy nhiên, điểm khác biệt chính là cách xử lý giao tiếp giữa các mảnh: nó được tích hợp trực tiếp vào giao thức tổng thể, thay vì được quản lý bởi các cầu nối bên ngoài, riêng lẻ.
Để đảm bảo an ninh của mỗi phân mảnh phụ, ủy ban xác nhận của nó có nghĩa vụ chứng minh các chuyển đổi trạng thái của nó cho phân mảnh chính để đảm bảo rằng không có gian lận xảy ra trong một nhóm xác nhận nhỏ hơn. Mỗi ủy ban xác nhận phân mảnh có các nhiệm vụ bổ sung vượt qua việc bảo trì phân mảnh. Người xác nhận chịu trách nhiệm theo dõi các loại sự kiện cụ thể, cụ thể là các tin nhắn chéo phân mảnh, trong “các phân mảnh gần”. Các phân mảnh gần được xác định dựa trên khoảng cách Hamming trong các định danh phân mảnh.
=nil;s zkEVM là một zkEVM Loại 1 được biên dịch bằng zkLLVM. Để hiểu sự khác biệt giữa các zkEVM truyền thống hơn và zkEVM của =nil;, chúng ta cần thảo luận về các hạn chế liên quan đến quy trình định nghĩa mạch mà là cơ sở của các zkEVM. Mạch zkEVM là một phần quan trọng, chịu trách nhiệm cho việc chứng minh chuyển đổi trạng thái được coi là đúng, thường được định nghĩa với một số zkDSL tùy chỉnh hoặc đơn giản chỉ là một thư viện. Cách định nghĩa mạch như vậy mang lại các vấn đề liên quan đến:
=nil; zkEVM đang hiệu quả giải quyết tất cả những thách thức này bằng cách:
zkEVM được biên dịch thông qua zkLLVM được thiết kế an toàn, tận dụng evmone để đảm bảo tính nhất quán hoàn toàn với EVM được sử dụng trong sản xuất của Ethereum. zkLLVM (bằng C++ hoặc Rust) tự động biên dịch xuống mạch, có nghĩa là lỗi của con người được loại bỏ khỏi quy trình định nghĩa mạch.
Hơn nữa, vì =nil; zkEVM được biên dịch thông qua zkLLVM, nó tự nhiên linh hoạt hơn (và vì vậy, đảm bảo trong tương lai) so với việc xác định mạch điện thủ công vì nó dễ dàng điều chỉnh và việc tạo mạch là tự động. Nó cũng dễ kiểm tra hơn, có nghĩa là tính bảo mật của nó không phải là một chi phí bao gồm các EIP mới nhất được thêm vào Ethereum.
Khi các phần mảnh chính và các phần mảnh phụ khác nhau về nhiệm vụ riêng - các phần mảnh phụ tập trung vào xử lý giao dịch trong khi phần mảnh chính tập trung vào đồng bộ dữ liệu - chúng có các phương pháp khác nhau về sẵn có dữ liệu (DA), giúp khôi phục dữ liệu trạng thái trong tình huống khẩn cấp. Điều này có nghĩa là:
Sắp xếp này được thiết lập bằng cách phát hành hai loại phân mảnh vào lúc bắt đầu: những phân mảnh với một giải pháp DA bên ngoài riêng và những phân mảnh không có. Trong những giai đoạn tiếp theo, chỉ có thể hợp nhất các phân mảnh cùng loại DA. Điều này có nghĩa là trong quá trình tạo ra, mỗi tài khoản phải được ánh xạ vào một loại DA cụ thể.
Ngoài ra, khung này có thể được mở rộng để bao gồm các loại DA khác.
Một trong những mục tiêu chính của chúng tôi là tối ưu hóa cho tính khả năng sáng tạo ứng dụng và ngăn chặn sự phân mảnh thanh khoản, vì vậy cách tiếp cận zkSharding sẽ không hoàn chỉnh nếu thiếu quyền truy cập không tin cậy đến trạng thái Ethereum. Điều này có nghĩa là =nil; cung cấp tính khả năng sáng tạo đầy đủ và tích hợp minh bạch với Ethereum qua mô-đun Data Provider.
Nhà cung cấp dữ liệu hoạt động độc lập từ lưu trữ dữ liệu của shard, đồng bộ thông tin của mình với cơ sở dữ liệu bên ngoài và tiêm vân tay Ethereum của trạng thái cơ sở dữ liệu cuối cùng được giám sát (được đại diện bởi mã băm khối Ethereum) vào khối của shard. Trạng thái mới nhất của cơ sở dữ liệu này nhận được sự xác nhận từ mô-đun xác nhận, sử dụng zkBridge với bằng chứng đồng thuận Casper FFG của Ethereum.
=nil; và zkSharding là kết quả của các sản phẩm mà =nil; Foundation đã phát triển trong suốt 4 năm qua. Mục tiêu của nó là trở thành giải pháp Ethereum L2 zkRollup đầu tiên có thể tổ hợp, mở rộng và phổ quát. Chúng tôi rất háo hức chia sẻ thêm chi tiết triển khai trong vài tháng tới. Đừng quên theo dõi Twitter của chúng tôi để cập nhật thông tin về tiến trình của chúng tôi!
Đối với thiên hướng kỹ thuật, chúng tôi đã phát triển một sách hướng dẫn riêng, toàn diệnmở rộng vào chi tiết của =nil; và zkSharding. Bài viết này là cổng thông tin của bạn để hiểu sâu hơn về những phức tạp đằng sau phương pháp này, được trang bị tất cả các chi tiết kỹ thuật và sơ yếu lý thuyết bạn cần.
Bắt đầu ngay bây giờ với bài hướng dẫn kỹ thuật của chúng tôi và tham gia cuộc trò chuyện trên DiscordvàTelegramHãy cùng khám phá những khả năng không giới hạn của zkSharding!
TL;DR
Hôm nay, các giải pháp tầng 2 đổi lấy tính khả năng mở rộ cho việc phân mảnh trạng thái. Chúng tôi giới thiệu một thiết kế tầng 2 (L2), =nil;, mà đẩy giới hạn của tính mở rộ của Ethereum mà không đánh đổi các lợi ích của môi trường thực thi thống nhất. Giải pháp kết hợp cơ chế phân mảnh động với quyền truy cập có thể xác minh vào dữ liệu Ethereum, được bảo vệ bởi công nghệ không chứng minh. Các yếu tố chính bao gồm:
Thông qua zkSharding =nil; hǣnđợc lợi ích từ các ưu điêm của cả thiện mônôlít và thiết kế modul, bao gồm:
Khả năng mở rộng
Môi trường thực thi thống nhất
Bảo mật
Chức năng
Ở cấp độ thấp hơn, trạng thái của =nil; được phân chia thành shard chính và một số shard phụ. Vai trò chính của shard chính là đồng bộ và tổng hợp dữ liệu từ các shard phụ. Nó sử dụng Ethereum cả là Lớp Khả dụng Dữ liệu và là một bộ xác minh cho các chứng minh chuyển trạng thái, tương tự như các hoạt động zkRollups điển hình.
Các mảnh phụ thực hiện vai trò "công nhân", thực thi giao dịch người dùng. Các mảnh này duy trì tính thanh khoản và dữ liệu thống nhất thông qua giao thức nhắn tin giữa các mảnh, loại bỏ bất kỳ phân mảnh nào giữa chúng.
Mỗi phân mảnh được giám sát bởi một ủy ban các nhà xác minh. Có sự xoay vòng định kỳ của những người xác minh này qua các phân mảnh. Ngoài ra, các cập nhật đối với trạng thái của một phân mảnh được xác minh đến phân mảnh chính bằng cách sử dụng zkEVM.
Để minh họa quá trình giao dịch từ việc khởi tạo bởi người dùng đến xác nhận trên Ethereum, hãy xem xét các bước sau:
Bản dự thảo này giả định rằng giao dịch của người dùng không kích hoạt giao thức tin nhắn chéo shard. Tuy nhiên, trong trường hợp này, luồng giao dịch vẫn giữ nguyên nhưng có sự khác biệt là giao dịch của người dùng có thể kích hoạt tạo ra các giao dịch mới trên các shard khác.
Với tất cả các tài khoản được phân phối trên các mảnh, điều này có vẻ giống với vấn đề phân mảnh dữ liệu được tìm thấy trong phương pháp rollups cụ thể cho ứng dụng. Tuy nhiên, điểm khác biệt chính là cách xử lý giao tiếp giữa các mảnh: nó được tích hợp trực tiếp vào giao thức tổng thể, thay vì được quản lý bởi các cầu nối bên ngoài, riêng lẻ.
Để đảm bảo an ninh của mỗi phân mảnh phụ, ủy ban xác nhận của nó có nghĩa vụ chứng minh các chuyển đổi trạng thái của nó cho phân mảnh chính để đảm bảo rằng không có gian lận xảy ra trong một nhóm xác nhận nhỏ hơn. Mỗi ủy ban xác nhận phân mảnh có các nhiệm vụ bổ sung vượt qua việc bảo trì phân mảnh. Người xác nhận chịu trách nhiệm theo dõi các loại sự kiện cụ thể, cụ thể là các tin nhắn chéo phân mảnh, trong “các phân mảnh gần”. Các phân mảnh gần được xác định dựa trên khoảng cách Hamming trong các định danh phân mảnh.
=nil;s zkEVM là một zkEVM Loại 1 được biên dịch bằng zkLLVM. Để hiểu sự khác biệt giữa các zkEVM truyền thống hơn và zkEVM của =nil;, chúng ta cần thảo luận về các hạn chế liên quan đến quy trình định nghĩa mạch mà là cơ sở của các zkEVM. Mạch zkEVM là một phần quan trọng, chịu trách nhiệm cho việc chứng minh chuyển đổi trạng thái được coi là đúng, thường được định nghĩa với một số zkDSL tùy chỉnh hoặc đơn giản chỉ là một thư viện. Cách định nghĩa mạch như vậy mang lại các vấn đề liên quan đến:
=nil; zkEVM đang hiệu quả giải quyết tất cả những thách thức này bằng cách:
zkEVM được biên dịch thông qua zkLLVM được thiết kế an toàn, tận dụng evmone để đảm bảo tính nhất quán hoàn toàn với EVM được sử dụng trong sản xuất của Ethereum. zkLLVM (bằng C++ hoặc Rust) tự động biên dịch xuống mạch, có nghĩa là lỗi của con người được loại bỏ khỏi quy trình định nghĩa mạch.
Hơn nữa, vì =nil; zkEVM được biên dịch thông qua zkLLVM, nó tự nhiên linh hoạt hơn (và vì vậy, đảm bảo trong tương lai) so với việc xác định mạch điện thủ công vì nó dễ dàng điều chỉnh và việc tạo mạch là tự động. Nó cũng dễ kiểm tra hơn, có nghĩa là tính bảo mật của nó không phải là một chi phí bao gồm các EIP mới nhất được thêm vào Ethereum.
Khi các phần mảnh chính và các phần mảnh phụ khác nhau về nhiệm vụ riêng - các phần mảnh phụ tập trung vào xử lý giao dịch trong khi phần mảnh chính tập trung vào đồng bộ dữ liệu - chúng có các phương pháp khác nhau về sẵn có dữ liệu (DA), giúp khôi phục dữ liệu trạng thái trong tình huống khẩn cấp. Điều này có nghĩa là:
Sắp xếp này được thiết lập bằng cách phát hành hai loại phân mảnh vào lúc bắt đầu: những phân mảnh với một giải pháp DA bên ngoài riêng và những phân mảnh không có. Trong những giai đoạn tiếp theo, chỉ có thể hợp nhất các phân mảnh cùng loại DA. Điều này có nghĩa là trong quá trình tạo ra, mỗi tài khoản phải được ánh xạ vào một loại DA cụ thể.
Ngoài ra, khung này có thể được mở rộng để bao gồm các loại DA khác.
Một trong những mục tiêu chính của chúng tôi là tối ưu hóa cho tính khả năng sáng tạo ứng dụng và ngăn chặn sự phân mảnh thanh khoản, vì vậy cách tiếp cận zkSharding sẽ không hoàn chỉnh nếu thiếu quyền truy cập không tin cậy đến trạng thái Ethereum. Điều này có nghĩa là =nil; cung cấp tính khả năng sáng tạo đầy đủ và tích hợp minh bạch với Ethereum qua mô-đun Data Provider.
Nhà cung cấp dữ liệu hoạt động độc lập từ lưu trữ dữ liệu của shard, đồng bộ thông tin của mình với cơ sở dữ liệu bên ngoài và tiêm vân tay Ethereum của trạng thái cơ sở dữ liệu cuối cùng được giám sát (được đại diện bởi mã băm khối Ethereum) vào khối của shard. Trạng thái mới nhất của cơ sở dữ liệu này nhận được sự xác nhận từ mô-đun xác nhận, sử dụng zkBridge với bằng chứng đồng thuận Casper FFG của Ethereum.
=nil; và zkSharding là kết quả của các sản phẩm mà =nil; Foundation đã phát triển trong suốt 4 năm qua. Mục tiêu của nó là trở thành giải pháp Ethereum L2 zkRollup đầu tiên có thể tổ hợp, mở rộng và phổ quát. Chúng tôi rất háo hức chia sẻ thêm chi tiết triển khai trong vài tháng tới. Đừng quên theo dõi Twitter của chúng tôi để cập nhật thông tin về tiến trình của chúng tôi!
Đối với thiên hướng kỹ thuật, chúng tôi đã phát triển một sách hướng dẫn riêng, toàn diệnmở rộng vào chi tiết của =nil; và zkSharding. Bài viết này là cổng thông tin của bạn để hiểu sâu hơn về những phức tạp đằng sau phương pháp này, được trang bị tất cả các chi tiết kỹ thuật và sơ yếu lý thuyết bạn cần.
Bắt đầu ngay bây giờ với bài hướng dẫn kỹ thuật của chúng tôi và tham gia cuộc trò chuyện trên DiscordvàTelegramHãy cùng khám phá những khả năng không giới hạn của zkSharding!