Giải thích chi tiết về trình xác thực khối Ethereum Zeth: zkEVM Loại 0 đầu tiên

Tiêu đề gốc: Thông báo Zeth: Type Zero zkEVM đầu tiên

Diễn viên: Tim Cartens, Victor Graf, Rami Khalil, Steven Li, Parker Thompson, Wolfgang Welz, Zeth Collaboration

Bản dựng: bayemon.eth, ChainCatcher

Vào ngày 25 tháng 8, Zeth, trình xác thực khối ZK mã nguồn mở Ethereum dựa trên RISC Zero zkVM, đã được phát hành công khai. Zeth thực hiện tất cả công việc cần thiết để xây dựng các khối mới trong zkVM mà không cần dựa vào người xác thực hoặc ủy ban đồng bộ hóa. Zeth đã được xác minh trên nhiều khối thực của mạng chính Ethereum và đã vượt qua tất cả các bài kiểm tra có liên quan của bộ kiểm tra Ethereum chính thức. Zeth đã có thể triển khai hỗ trợ Rust dựa trên zkVM và các bo mạch mạnh bao gồm revm, ete và hợp kim trong vòng 4 tuần. Với sự hỗ trợ của zkVM cho các dịch vụ chứng minh tính liên tục và Bonsai, Zeth có thể tạo ra những bằng chứng này trong vài phút. Với sự hỗ trợ của Zeth cho việc xác minh trên chuỗi, bất kỳ ai cũng có thể xác minh những bằng chứng này trên chuỗi với chi phí thấp. Trong bài đăng này, chúng tôi sẽ đi vào chi tiết hơn, nhưng nếu bạn muốn tìm hiểu sâu hơn về mã, hãy xem mã nguồn và truy cập cổng thông tin dành cho nhà phát triển RISC Zero.

Bản tóm tắt

Khoảng một năm trước, Vitalik đã trình bày chi tiết về các loại zkEVM khác nhau:

Ethereum ban đầu không được thiết kế hướng tới tính thân thiện với ZK, do đó, có nhiều phần của giao thức Ethereum cần tính toán chuyên sâu để xác minh ZK. EVM Loại 1 nhằm mục đích tái tạo hoàn toàn Ethereum, vì vậy nó không thể làm giảm bớt sự kém hiệu quả này. Hiện tại, việc chứng minh các khối Ethereum phải mất hàng giờ để hoàn thành.

Mặc dù đã có những trường hợp trong lịch sử Ethereum có thể thực hiện được điều này, nhưng hôm nay chúng tôi vui mừng thông báo rằng việc chứng minh khối Ethereum bằng dịch vụ zkVM và Bonsai của RISC Zero chỉ mất vài phút chứ không phải hàng giờ.

Zeth: Tạo khối Ethereum có thể kiểm chứng

Hôm nay chúng tôi đã phát hành Zeth, trình xác thực khối ZK mã nguồn mở cho Ethereum trên RISC Zero zkVM.

Zeth có thể chứng minh rằng một khối Ethereum nhất định là hợp lệ mà không cần dựa vào người xác nhận hoặc ủy ban đồng bộ hóa. Điều này là do Zeth thực hiện tất cả công việc cần thiết để tạo các khối mới trong zkVM, bao gồm:

  • Xác minh chữ ký giao dịch
  • Xác thực trạng thái tài khoản và lưu trữ dựa trên trạng thái gốc của khối gốc.
  • Giao dịch ứng dụng
  • Trả phí để chặn tác giả.
  • cập nhật trạng thái gốc
  • Công việc khác cần thiết để tạo khối

Sau khi một khối mới được tạo, Zeth sẽ tính toán và đưa ra hàm băm của nó. Bằng cách chạy quy trình này trong zkVM, chúng tôi có thể thu được bằng chứng ZK rằng các khối mới là hợp lệ.

Bằng cách tận dụng zkVM của RISC Zero và các thùng Rust phổ biến như revm, ether và hợp kim, chúng tôi đã viết phiên bản đầu tiên của Zeth trong vòng chưa đầy 4 tuần. Với sự hỗ trợ của zkVM về tính liên tục và dịch vụ chứng minh Bonsai, việc tạo bằng chứng có thể được thực hiện chỉ trong vài phút. Với sự hỗ trợ xác minh trên chuỗi, chúng tôi có thể xác minh những bằng chứng này trên chuỗi với chi phí thấp.

Zeth đã được xác minh trên nhiều khối thực của mạng chính Ethereum và đã vượt qua tất cả các bài kiểm tra có liên quan của bộ kiểm tra Ethereum chính thức.

Vì Zeth xây dựng các khối Ethereum tiêu chuẩn nên nó có thể được coi là zkEVM loại 1. Nhưng nó còn hơn thế nữa: vì Zeth được xây dựng bằng cách sử dụng bảng mã Rust tiêu chuẩn (cùng bảng mã được sử dụng bởi các nút đầy đủ phổ biến như Reth), nên chúng tôi thích coi nó như một zkEVM lớp 0: khả năng tương thích hoàn toàn với Giao thức và rất nhiều khả năng tái sử dụng mã . **

Giải thích chi tiết về trình xác thực khối Ethereum Zeth: zkEVM loại 0 đầu tiên

Cột mốc quan trọng này thể hiện một bước tiến lớn đối với công nghệ ZK và hệ sinh thái Ethereum. Trong bài đăng này, chúng tôi thảo luận về cách viết phiên bản đầu tiên của Zeth sau vài tuần, hiệu suất của nó, cách thức hoạt động và điều này có ý nghĩa gì đối với dự án ZK.

RISC Zero giúp việc xây dựng các bản cuộn zk, zkEVM, ứng dụng khách nhẹ và cầu nối trở nên dễ dàng hơn

Chúng tôi viết Zeth vì hai lý do:

  1. Giúp các nhóm khác xây dựng cơ sở hạ tầng dựa trên ZK của riêng họ dễ dàng hơn: ZK rollup, zkEVM, ZK light client, ZK bridge, v.v. Zeth cung cấp mọi thứ cần thiết để tạo bằng chứng ZK cho các khối dựa trên EVM. Đây là thành phần quan trọng của bất kỳ zkEVM hoặc cầu nối nào. Zeth là mã nguồn mở dựa trên revm nên các nhà phát triển dự án có thể dễ dàng sửa đổi hoặc sử dụng nó. Bằng chứng có thể được xác minh trên chuỗi (tuyệt vời cho bridge và L2) hoặc trong một ứng dụng cục bộ (tuyệt vời cho các nút đầy đủ và ứng dụng khách nhẹ).
  2. Tiến hành nghiên cứu liên quan về hiệu suất EVM trong zkVM của Zeth, đặc biệt là các nhiệm vụ liên quan đến Ethereum. (Xem bên dưới để phân tích kết quả khảo sát).

zk rollup và zkEVM

Với tư cách là zkEVM Loại 0, Zeth cho phép các nhà phát triển xây dựng các bản tổng hợp zk với khả năng tương thích EVM và Ethereum hoàn toàn nguyên gốc. Cùng với sự hỗ trợ của Zeth để xác minh bằng chứng trên chuỗi, việc xây dựng giải pháp mở rộng L2 do ZK điều khiển sẽ trở nên cực kỳ đơn giản.

Các cuộn ZK và mạch zkEVM hiện tại có thiết kế nguyên khối và không thể nâng cấp nếu nhà phát triển không có hiểu biết cao về mật mã ZK. Ngược lại, cách tiếp cận Zeth dựa trên zkVM cho phép bất kỳ nhà phát triển nào tùy chỉnh và sửa đổi nó theo nhu cầu của họ.

Zeth là mã nguồn mở dựa trên revm và việc điều chỉnh để hỗ trợ các chuỗi tương thích zkEVM và EVM khác là một nhiệm vụ tương đối dễ dàng. Do đó, Zeth sẽ có phản hồi tương đối nhanh hơn với các bản cập nhật EIP trong tương lai. Ngoài ra, Zeth còn cung cấp tính mô-đun, cho phép các nhà phát triển xây dựng logic xây dựng khối của riêng họ trong đó.

Chúng tôi hy vọng rằng những nỗ lực của Zeth sẽ dân chủ hóa zk rollup và zkEVM, biết rằng các giải pháp L2 do zk điều khiển trước đây cần nhiều năm nghiên cứu và phát triển và hơn 100 triệu đô la Mỹ tài trợ, đây là mức tiêu thụ mà hầu hết các dự án không thể chi trả được.

Light client và bridge

Không còn nghi ngờ gì nữa, việc giới thiệu chuỗi đèn hiệu là một lợi ích cho các khách hàng và cầu nối nhẹ. Các kỹ thuật này được xây dựng trên mô hình PoS hiện đã hoàn thiện của Ethereum, cho phép các máy khách và cầu nối đơn giản dễ dàng xác minh các khối gần đây mà không cần xây dựng lại chúng, miễn là mọi người tuân thủ các quy tắc.

Tất nhiên, mục đích chung của việc đặt cược là cung cấp các động lực kinh tế cho các nút tuân theo các quy tắc. Tuy nhiên, mối đe dọa mà Slashing gây ra cho các nút không thể tránh hoàn toàn cái ác-các động lực từ bên ngoài sẽ luôn nghiêng "sự cân bằng" lợi ích về phía cái ác--và điều rất quan trọng là phải thiết kế một ứng dụng khách hoặc cầu nối nhẹ có thể xử lý đúng cách các hành vi độc hại này. cứng.

Với các công cụ như Zeth, nguy cơ các nút làm điều ác sẽ giảm đi đáng kể. Các máy khách hạng nhẹ có thể tích hợp với Zeth chỉ bằng cách thêm một vài chú thích vào zkVM; các ứng dụng trên chuỗi như cầu nối có thể tích hợp với Zeth bằng hợp đồng xác minh bằng chứng trên chuỗi của chúng tôi.

Trong tương lai gần, chúng ta có thể tưởng tượng các máy khách và cầu nối nhẹ sử dụng bằng chứng ZK để xác định xem một khối nhất định có hợp lệ hay không. Cách tiếp cận này sẽ giảm thiểu rủi ro đáng kể mà không làm tăng đáng kể chi phí xác thực các khối.

Điều này đặc biệt quan trọng đối với các chuỗi ứng dụng, hệ sinh thái mô-đun và các chuỗi mới chưa có cùng mức độ bảo mật mà cộng đồng nút đầy đủ lớn của Ethereum cung cấp.

Nền tảng tốt giúp đơn giản hóa quá trình phát triển dự án

Dựa trên RISC Zero zkVM và được hỗ trợ bởi kiến trúc tập lệnh RISC-V, Zeth có thể cung cấp cho các nhà phát triển trải nghiệm lập trình quen thuộc. Nhưng zkVM của chúng tôi không chỉ là lõi RISC-V. Chúng tôi cũng có các mạch tăng tốc cho các tác vụ mật mã phổ biến như băm và xác minh chữ ký.

Cách tiếp cận kết hợp này (sự kết hợp giữa các lõi CPU đa năng với các mạch tăng tốc) mang đến cho chúng tôi những điều tốt nhất của cả hai thế giới:

  • Hỗ trợ các ngôn ngữ lập trình chính thống.
  • Hiệu suất của các hoạt động mã hóa quan trọng không bị ảnh hưởng.

Kết quả là chúng tôi có thể nhanh chóng xây dựng Zeth bằng cách sử dụng các gói mã Rust hiện có từ revm, ether và Alloy. Bằng cách sử dụng lại các bảng hiện có, chúng tôi đã hoàn thành phiên bản đầu tiên của Zeth trong vòng chưa đầy 4 tuần. Loại tốc độ này không thể thực hiện được ở các hệ sinh thái kém trưởng thành hơn.

Về hiệu suất, Zeth tận dụng các mạch tăng tốc của chúng tôi để xác minh chữ ký ECDSA cũng như Continuity - một tính năng mới trong khung ZK của chúng tôi giúp dễ dàng sử dụng các cụm GPU hoạt động song song (sử dụng nVidia CUDA hoặc Apple Metal) để nhanh chóng chứng minh quy mô lớn. tính toán. Tính năng tiếp tục rất dễ sử dụng: chức năng này được cung cấp một cách minh bạch cho tất cả các chương trình khách đang chạy trong zkVM, tức là không cần sửa đổi mã để nó hoạt động bình thường.

Với zkVM của chúng tôi, chúng tôi có thể nhanh chóng tạo ra bằng chứng ZK về tính hợp lệ của khối Ethereum trong vài phút chứ không phải hàng giờ.

Hiệu suất

Chúng tôi sẽ đề cập đến hiệu suất của trình tạo khối Zeth. Zeth vẫn là một sản phẩm mới nên những con số này có thể thay đổi; tuy nhiên, chúng tôi muốn cung cấp một số con số cụ thể để làm cơ sở cho công việc trong tương lai.

Khi nói đến hiệu suất, có một số yếu tố cần xem xét:

  • Nguồn lực tính toán cần thiết để tạo ra bằng chứng.
  • "Thời gian treo tường" cần thiết để tạo bằng chứng (tức là người dùng phải đợi bao lâu để có bằng chứng).
  • Tổng chi phí tạo bằng chứng (USD).

Liên tục

ZkVM của Zeth có thể được điều chỉnh về hiệu suất bằng cách chạy liên tục. Vì vậy, chúng ta cần tạm dừng một chút và thảo luận về cách hoạt động của "hoạt động liên tục".

ZkVM của chúng tôi triển khai bộ xử lý RISC-V tiêu chuẩn. Do đó, việc thực hiện được đo theo chu kỳ. (Trong mạch của chúng tôi, hầu hết các lệnh RISC-V đều thực thi trong 1 chu kỳ, mặc dù vẫn có những trường hợp ngoại lệ). Các chương trình đơn giản thường chỉ cần vài trăm nghìn chu kỳ để thực thi, nhưng các chương trình phức tạp hơn có thể yêu cầu hàng tỷ chu kỳ.

Trong một hệ thống ZK điển hình, các chu kỳ thực thi này được gộp lại thành một bằng chứng; khi số chu kỳ tăng lên thì thời gian và bộ nhớ cần thiết để tạo ra bằng chứng cũng tăng theo. Nhưng zkVM của chúng tôi không tuân theo những khuôn mẫu này và đầu năm nay, chúng tôi đã đi tiên phong về tính năng liên tục mới giúp cải thiện những hạn chế của việc tạo lược đồ chứng minh truyền thống.

Xét về tính liên tục, quá trình chứng minh được chia thành ba giai đoạn:

Chúng tôi thực hiện các phép tính cần thiết trong một trình mô phỏng không chứng minh được. Trong quá trình thực hiện, chúng tôi đếm số lần vòng lặp đã chạy cho đến nay. Tại các khoảng thời gian có thể định cấu hình, chúng tôi chụp ảnh nhanh trạng thái của chương trình. Điều này có hiệu quả chia việc thực hiện thành nhiều phần. Mỗi phân đoạn đều nhỏ, thường đại diện cho 1 triệu chu kỳ hoặc ít hơn.

Những phần này được giao cho một nhóm công nhân tạo bằng chứng. Họ tạo ra các bằng chứng ZK cho các phân đoạn chương trình nhất định của họ. Điều quan trọng là họ có thể làm điều này song song. Chỉ cần có đủ người lao động thì tất cả các phân đoạn chương trình đều có thể được chứng minh trong thời gian cần thiết để chứng minh một phân đoạn chương trình. Do kích thước của phân đoạn mạng nhỏ nên thời gian cần thiết thường ngắn (hàng chục giây).

Khi bằng chứng về phân đoạn được tạo, cuối cùng chúng sẽ được tổng hợp. Mỗi thao tác "cuộn" lấy một cặp bằng chứng được phân đoạn liên tiếp và tạo ra một bằng chứng mới cho sự kết hợp của các phân đoạn đó. Ví dụ: nếu phân đoạn 1 chứng minh rằng chương trình đã chuyển từ trạng thái A sang trạng thái B và phân đoạn 2 chứng minh rằng chương trình đã chuyển từ trạng thái B sang trạng thái C, thì việc tổng hợp sẽ chứng minh rằng chương trình đã chuyển từ trạng thái A sang trạng thái C. Với đủ công nhân, việc này có thể được thực hiện trong thời gian log(N), trong đó N là số mảnh.

Chúng ta sẽ thấy những giai đoạn này hoạt động khi chúng ta đi sâu vào các con số.

**Xây dựng một khối Ethereum khó đến mức nào? **

Đầu tiên, chúng ta hãy xem mức độ phức tạp của việc xây dựng khối Ethereum. Trong bảng bên dưới, chúng tôi lấy một số khối Ethereum trong thế giới thực và xây dựng lại chúng bằng Zeth trong zkVM.

Giải thích chi tiết về trình xác thực khối Ethereum Zeth: zkEVM loại 0 đầu tiên

Ví dụ: khối 17606771 tạo ra 2131 phạm vi. Mỗi phân đoạn đại diện cho tối đa 2^20 chu kỳ thực hiện, do đó toàn bộ quá trình tính toán mất tối đa 2.234.515.456 chu kỳ thực hiện.

Nhìn chung, chúng ta thấy một khối Ethereum điển hình cần 2-400 triệu chu kỳ để xây dựng, nhưng đôi khi lên tới 9,5 tỷ chu kỳ. (Lúc đầu, chúng tôi rất ngạc nhiên khi thấy rằng những khác biệt này không được phản ánh trong khí của giao dịch. Nhưng sau khi nghĩ kỹ hơn, chúng tôi thấy có lý: hệ thống gas được thiết kế với mục đích thực hiện thường xuyên chứ không phải bằng chứng ZK).

Với tính liên tục, quy mô này rất dễ quản lý. Theo những số liệu này, mạng ngang hàng gồm 10.000 nút chạy trình xác thực zkVM là đủ để đạt được hiệu suất xác thực song song cao nhất cho các khối lớn nhất, một phần nhỏ trong số 700.000 trình xác thực mà Ethereum hiện có.

**Mất bao lâu để tạo bằng chứng? **

Để thu thập một số dữ liệu hiệu suất cơ bản, chúng tôi đã khởi chạy phiên bản thử nghiệm Bonsai với 64 GPU Worker. Sau đó, chúng tôi đã yêu cầu nó chứng thực để chặn 17735424 (182 giao dịch, 3242 phân đoạn hoặc khoảng 3,4B chu kỳ) bằng Zeth.

Để tạo bằng chứng, trước tiên zkVM phải chia việc thực thi thành các phân đoạn. Trong ảnh chụp màn hình bên dưới, quá trình này được ghi lại bởi tác vụ utor, chạy trong 10 phút. (Hầu hết thời gian đó là thực hiện các công việc AWS như ghi vào bộ lưu trữ mạng). Trên máy cục bộ, tác vụ tương tự chỉ mất chưa đầy 6 phút để hoàn thành. Chúng tôi hy vọng sẽ giảm đáng kể thời gian này trong năm tới).

Người thi hành án cuối cùng chia việc thực thi thành 3242 phần. Đó là sự phân mảnh rất lớn đối với chỉ 64 GPU. Do đó, mỗi nút công nhân phải tạo ra 50 bằng chứng về phân đoạn. Như thể hiện trong hình bên dưới, quá trình này mất 35 phút. Nếu chúng ta có số nút công nhân gấp 50 lần thì chỉ mất 42 giây.

Sau khi quá trình chứng minh phân đoạn hoàn tất, quá trình tổng hợp sẽ bắt đầu. Vì có 3242 phân đoạn nên chúng tôi cần thực hiện quy trình tổng hợp log_2(3242) = 12 vòng. Trong giai đoạn đầu của quá trình tổng hợp, có nhiều công nhân hơn công nhân; vì vậy giai đoạn đầu tiên mất 1 phút, giai đoạn thứ hai mất 35 giây, giai đoạn thứ ba mất 25 giây, v.v. Đến giai đoạn bảy, thời gian ổn định chỉ hơn 5 giây. Tương tự như vậy, nếu chúng ta có nhiều công nhân hơn thì mỗi giai đoạn sẽ chỉ mất 5 giây.

Sau khi quá trình tổng hợp hoàn tất, kết quả sẽ được hoàn thiện và mất thêm một phút nữa.

Kết quả là chúng tôi có thể tạo bằng chứng trong khoảng 50 phút (tốc độ hiệu dụng là 1,1 MHz) với kích thước cụm không đủ. Nếu cụm có kích thước phù hợp, chúng tôi ước tính rằng việc tạo bằng chứng sẽ nhanh hơn:

Trong trường hợp song song hoàn toàn, bước chứng minh có thể được hoàn thành trong 42 + 12 * 5 + 60 giây hoặc 2 phút 42 giây.

Nếu chúng tôi làm tròn một cách thận trọng và bao gồm thời gian thực thi thì thời gian sẽ nằm trong khoảng từ 9 đến 12 phút (tốc độ hiệu dụng 4,7 MHz - 6,3 MHz).

Khi chúng tôi tiếp tục cải thiện bộ thực thi và khung chứng minh của mình, chúng tôi lạc quan rằng thời gian này sẽ giảm đáng kể trong năm tới.

Giải thích chi tiết về trình xác thực khối Ethereum Zeth: zkEVM loại 0 đầu tiên

Tiêu thụ tài nguyên để tạo bằng chứng

Cụm thử nghiệm trên đã được triển khai lên AWS. Nó bao gồm 64 nút chứng minh g5.xlarge và 1 nút thực thi m5zn.xlarge. Theo Amazon, mỗi nút g5.xlarge có

  • 1 GPU với bộ nhớ GPU 24 GiB
  • 4 vCPU có dung lượng bộ nhớ 16 GiB

Theo văn bản này, giá Theo yêu cầu cho các phiên bản này là 1,006 USD/giờ và Phiên bản dự trữ là 0,402 USD/giờ. Trong khi đó, bảng thông số kỹ thuật của Amazon cho thấy nút m5zn.xlarge của chúng tôi có

  • 4 vCPU, RAM 16GB

Theo văn bản này, giá Theo yêu cầu cho phiên bản này là 0,3303 USD/giờ.

Chúng ta có thể sử dụng những con số này để ước tính đại khái chi phí chứng minh cho khối 17735424 được mô tả ở trên.

Hãy nhớ lại rằng chúng tôi đã triển khai 64 nút bằng chứng và trong quá trình triển khai này, phải mất 50 phút (từ đầu đến cuối) để tạo bằng chứng. Bỏ qua thời gian chạy không tải của nhân viên, 64 nút chứng minh cộng với một nút thực thi có giá 50/60 * (64 * 0,402 + 0,3303) = 21,72 USD trong 50 phút. Đây là một sự đánh giá quá cao vì nó cho rằng chúng ta đang trả lương cho những người lao động nhàn rỗi. Nếu chúng ta không tính đến chi phí của những công nhân không hoạt động (ví dụ, cho họ nghỉ việc hoặc chuyển họ sang công việc khác), chi phí sẽ là khoảng 19,61 USD.

  • Khối này có 182 giao dịch, tương đương 0,11 USD cho mỗi giao dịch.
  • Tổng giá trị của giao dịch là 1,125045057 Eth, tương đương khoảng 2137,59 USD. Do đó, cứ 1 đô la bằng chứng mang lại 109,01 đô la tiền của người dùng.
  • Phần thưởng được trả cho cùng một khối là 0,117623263003047027 Eth (không bao gồm phí giao dịch). Tại thời điểm viết bài, đó là khoảng $223,48. Do đó, bằng chứng của chúng tôi có giá khoảng 8,7% phần thưởng khối.
  • Phí giao dịch cộng lại lên tới 0,03277635 Eth, hoặc 62,28 USD, cao hơn gấp 3 lần chi phí chứng minh của chúng tôi.

Điều đáng chú ý là những ước tính về số tiền này không phụ thuộc vào quy mô của cụm! Điều quan trọng là số lượng phân đoạn. Điều này là do 1 máy thực hiện 2 công việc theo trình tự có chi phí tương đương với 2 máy thực hiện 1 công việc song song. Do đó, nếu kích thước cụm lớn hơn, bằng chứng sẽ được tạo ra nhanh hơn nhưng không tốn kém hơn.

Có một số cách để tiếp tục giảm chi phí. Ngoài việc tiếp tục cải thiện hiệu suất của zkVM, có lẽ là thêm bộ tăng tốc Keccak, chúng ta cũng có thể tìm kiếm các phiên bản rẻ hơn. Điều quan trọng là, với các máy có thông số kỹ thuật thấp mà chúng tôi đang sử dụng (và zkVM của chúng tôi hỗ trợ nVidia Cuda và Apple Metal), công việc này có thể được thực hiện dễ dàng qua mạng p2p của PC và máy Mac tiêu dùng thông thường.

Xác minh trên chuỗi

Như đã đề cập ở trên, chúng tôi đã xác minh bằng chứng Zeth trên Sepolia bằng trình xác thực RISC Zero Groth16. Đây là một phần tương đối mới trong ngăn xếp giao thức RISC Zero, được phát hành vào đầu tháng này. Nó hoạt động bằng cách sử dụng Bonsai để chuyển đổi bằng chứng STARK gốc của zkVM thành bằng chứng SNARK tương đương và gửi bằng chứng đó đến trình xác thực SNARK trên chuỗi.

Nếu chúng tôi xem đầu vào giao dịch dưới dạng dữ liệu UTF-8, chúng tôi sẽ thấy rằng bằng chứng tương ứng với khối 17735424.

Giải thích chi tiết về trình xác thực khối Ethereum Zeth: zkEVM loại 0 đầu tiên

Sử dụng Bonsai, quá trình chuyển đổi từ STARK sang SNARK mất khoảng 40 giây. Việc xác minh SNARK trên chuỗi tiêu tốn 245.129 gas (~ 5,90 USD tại thời điểm viết bài).

Tất nhiên, một ưu điểm của zkVM là nó có thể kết hợp nhiều bằng chứng thành một. Với chức năng này, toàn bộ bộ bằng chứng có thể được xác minh trên chuỗi mà không cần sử dụng thêm bất kỳ gas nào. Bằng cách này, chi phí xác minh trên chuỗi có thể được trải đều trên toàn bộ bộ bằng chứng, giảm chi phí cho mọi người.

Điều này có ý nghĩa gì đối với Ethereum

Như đã đề cập trước đó, Ethereum không được thiết kế nhằm mục đích thân thiện với ZK. Như trường hợp của zkEVM cho thấy, có nhiều thứ có thể được thực hiện theo nhiều cách khác nhau, đặc biệt là khi nói đến opcode, chữ ký số và hàm băm.

Mặc dù những thay đổi này đã cải thiện hiệu suất nhưng chúng tôi vẫn có thể đạt được hiệu suất ổn định mà không cần những thay đổi này. Khi Vitalik viết về các loại zkEVM khác nhau vào năm ngoái, phải mất hàng giờ để chứng minh tính hợp lệ của khối Ethereum; giờ đây, chúng tôi có thể làm điều đó trong vài phút. Hiệu suất của ZK đang được cải thiện nhanh chóng và chúng tôi có lý do để tin rằng xu hướng này sẽ tiếp tục trong vài năm tới.

Phụ lục: Cách thức hoạt động của Zeth

Phần này dành cho các nhà phát triển.

Nói một cách đại khái, Zeth xây dựng các khối giống như một nút đầy đủ: chúng tôi bắt đầu với khối gốc, danh sách giao dịch và tác giả khối, sau đó thực hiện nhiều tính toán (xác minh chữ ký, chạy giao dịch, cập nhật trạng thái toàn cầu, v.v.), và cuối cùng trả về giá trị băm khối mới.

Nhưng không giống như các nút đầy đủ, chúng tôi thực hiện việc này trong zkVM. Điều này có nghĩa là chúng tôi nhận được bằng chứng ZK rằng một khối có hàm băm nhất định là hợp lệ.

Tất nhiên, điều này không phải là không có thách thức. Trong phần này, chúng tôi giới thiệu những thách thức này và cách chúng tôi giải quyết chúng.

Mật mã

Thử thách đầu tiên là mật mã. Việc xây dựng một khối Ethereum đòi hỏi rất nhiều công việc, trong đó quan trọng nhất là băm (Keccak-256) và xác minh chữ ký (ECDSA và secp256k1).

ZkVM của chúng tôi đã tăng tốc hỗ trợ cho các đường cong elip, do đó việc xác minh chữ ký ECDSA không khó.

Nhưng khi nói đến việc băm, chúng ta không may mắn như vậy. ZkVM của chúng tôi đã tăng tốc hỗ trợ cho Sha2-256, nhưng không phải (tại thời điểm viết bài) Keccak-256. Do đó, hiện tại chúng tôi chỉ sử dụng triển khai Keccak trong thùng sha3 Rust. Thông qua việc lập hồ sơ, chúng tôi biết rằng việc này mất rất nhiều chu kỳ. Nó không phải là tối ưu, nhưng zkVM của chúng tôi có thể xử lý nó và chúng tôi có thể tái chế và thêm bộ tăng tốc Keccak sau này.

Tài khoản và lưu trữ: Hiệu suất và bảo mật

Trong Ethereum, tài khoản và bộ nhớ được theo dõi bởi Merkle Patricia Trie (MPT) toàn cầu.

Tại thời điểm viết bài, cây chứa trạng thái của gần 250.000.000 địa chỉ Ethereum duy nhất, theo Etherscan. Nhìn chung, đó không phải là một lượng dữ liệu khổng lồ nhưng cũng đủ để khiến chúng ta phải cẩn thận về cách lưu trữ và sử dụng dữ liệu đó. Đặc biệt, hiệu suất của MPT là rất quan trọng.

Nhưng hiệu suất không phải là yếu tố duy nhất, chúng ta còn phải tính đến vấn đề bảo mật.

Trình tạo khối của Zeth chạy như một máy khách trong zkVM. Điều này có nghĩa là nó không thể truy cập trực tiếp vào mạng Ethereum p2p hoặc các nhà cung cấp RPC khác. Thay vào đó, nó phải dựa vào dữ liệu được cung cấp bởi các chương trình riêng biệt chạy bên ngoài zkVM.

Khi phân tích tính bảo mật của ứng dụng ZK, chúng tôi phải cho rằng các chương trình bên ngoài là độc hại và do đó có thể cung cấp dữ liệu độc hại. Để ngăn chặn điều này, các ứng dụng ZK phải xác minh rằng dữ liệu được cung cấp cho chúng là hợp lệ.

Đối với trình tạo khối Zeth, điều này có nghĩa là xác minh trạng thái của tất cả các tài khoản và bộ nhớ có liên quan (tức là các tài khoản và bộ nhớ cần thiết để chạy một danh sách giao dịch nhất định).

May mắn thay, cơ chế như vậy được cung cấp bởi EIP-1186, cơ chế này xác định một cách tiêu chuẩn để chứng minh trạng thái của một tài khoản nhất định (và bộ lưu trữ của nó) thông qua việc đưa Merkle vào.

Về nguyên tắc, trình tạo khối của Zeth có thể xác minh tài khoản và trạng thái lưu trữ bằng cách xác minh một bộ bằng chứng bao gồm EIP-1186. Nhưng cách tiếp cận này không lý tưởng.

Thay vào đó, tốt hơn là sử dụng dữ liệu trong bằng chứng bao gồm EIP-1186 để xây dựng một phần MPT. Đây là loại MPT chỉ bao gồm các nút có liên quan đến danh sách giao dịch nhất định; các nhánh không liên quan được biểu diễn đơn giản bằng các giá trị băm tương ứng. Bạn có thể coi MPT một phần như một loại "kết hợp" của các bằng chứng bao gồm Merkle; hoặc, nếu bạn thích, như bằng chứng tập hợp con Merkle.

Quá trình xác minh một phần MPT về cơ bản giống như xác minh bằng chứng EIP-1186 thông thường: hàm băm gốc được tính toán và so sánh với gốc trạng thái của khối gốc. Nếu cả hai bằng nhau thì tính toàn vẹn của tài khoản và lưu trữ bên trong tài khoản đó có thể được tin cậy.

Sau khi MPT một phần được xác minh, giao dịch có thể được áp dụng và MPT một phần được cập nhật. Gốc trạng thái mới có thể thu được bằng cách tính giá trị băm gốc mới của MPT một phần.

  1. Trước khi chạy trình tạo khối Zeth, chúng tôi chạy danh sách giao dịch trong hộp cát để xác định tài khoản và bộ lưu trữ nào có liên quan. (Quy trình này cũng cho phép chúng tôi xác định khối tiền thân có liên quan lâu đời nhất, được yêu cầu để hỗ trợ các truy vấn blockhash()).
  2. Chúng tôi thu thập bằng chứng bao gồm EIP-1186 cho từng tài khoản và bộ lưu trữ có liên quan. (Chúng tôi cũng nhận được các khối tiền thân có liên quan).
  3. Chúng tôi sử dụng những bằng chứng đưa vào này để xây dựng một phần MPT bao gồm tất cả dữ liệu liên quan.
  4. Chúng tôi khởi động zkVM, để nó chạy trình tạo khối Zeth và cung cấp một số MPT và các đầu vào khác (khối mẹ, danh sách giao dịch, v.v.).

Trong zkVM, trình tạo khối Zeth:

  1. Xác minh rằng gốc MPT một phần khớp với gốc trạng thái của khối cha.
  2. Xác minh chuỗi băm của khối trước đó cho đến khối chính.
  3. Giao dịch ứng dụng.
  4. Cập nhật một số MPT.
  5. Sử dụng hàm băm gốc mới của MPT một phần làm gốc trạng thái của khối mới.

Sau khi trình tạo khối Zeth hoàn thành, nó sẽ xuất ra giá trị băm của khối mới.

Hàm băm này bao gồm một cam kết đối với khối gốc và do đó là gốc trạng thái của khối gốc (được sử dụng để xác minh một phần MPT ban đầu). Điều này có nghĩa là trình xác thực độc hại không thể cung cấp tài khoản và bộ lưu trữ dữ liệu không hợp lệ nếu không cung cấp khối gốc không hợp lệ.

Nói cách khác: nếu khối gốc hợp lệ thì khối mới do Zeth tạo ra cũng hợp lệ.

Vì vậy, nếu ai đó đưa cho bạn một khối mới và bằng chứng ZK do Zeth tạo ra, bạn có thể kiểm tra tính hợp lệ của khối bằng cách kiểm tra ba điều sau:

  1. Đảm bảo bằng chứng ZK hợp lệ và từ Zeth. Đối với các ứng dụng ngoài chuỗi, các chức năng do zkVM Rust cung cấp có thể được sử dụng để kiểm tra. Đối với các ứng dụng trên chuỗi, điều này có thể được kiểm tra bằng trình xác thực bằng chứng trên chuỗi của chúng tôi.
  2. Đảm bảo ZK chứng minh rằng hàm băm của khối mới đã được xác nhận.
  3. Đảm bảo khối gốc có hàm băm mà bạn mong đợi.

Nếu những điều này được kiểm tra thì khối mới hợp lệ.

Các hạn chế và những cải tiến trong tương lai

Mục tiêu của dự án của chúng tôi là nghiên cứu hiệu suất xây dựng khối. Vì lý do này, chúng tôi quyết định giới hạn phạm vi ở các khối được hợp nhất.

Ngoài ra, mặc dù Zeth có thể chứng minh rằng một khối nhất định là hợp lệ nhưng hiện tại nó không thể chứng minh được sự đồng thuận (tức là khối đó thực sự được bao gồm trong chuỗi chuẩn). Điều này có thể thay đổi trong tương lai, có thể bằng cách thêm kiểm tra chữ ký của người xác thực hoặc ủy ban đồng bộ hóa trong zkVM.

Cuối cùng, Zeth là một phần mềm mới. Mặc dù chúng tôi đã thực hiện một số thử nghiệm (bao gồm bộ thử nghiệm Ethereum và các khối trong thế giới thực khác nhau), Zeth có thể vẫn còn một số lỗi. Theo văn bản này, nó nên được coi là phần mềm thử nghiệm.

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)