Tiêu đề gốc: " zkSync 2.0: Xin chào Ethereum! 》
Tác giả gốc: Shui Duoduo|zkSync
Tôi có thể so sánh bạn với một ngày hè được không?
Khả năng mở rộng và bảo mật cao hơn của bạn .
Cơn gió mạnh thực sự làm rung chuyển trái tim thân yêu của tôi vào tháng Năm,
Ngày thuê mùa hè là quá ngắn.
——Satoshi Shakespeare, 2021
p>
Đối mặt với thách thức kỹ thuật lớn nhất, chúng tôi bắt đầu triển khai hợp đồng thông minh trong môi trường tương thích với EVM. Phiên bản đầu tiên của testnet đang hoạt động: bạn đã có thể xem hoạt động trên zkSync 2.0 bằng trình khám phá khối. Trong bài đăng này, chúng tôi sẽ giải thích sâu từng thành phần chính, cung cấp bản cập nhật tiến độ và kế hoạch cho bản phát hành tiếp theo.
Về mặt mật mã, bộ hướng dẫn cho zk EVM đã được hoàn thành, với cả hai quá trình triển khai đã hoàn tất: trong mạch và trong môi trường thực thi.
Biên dịch trên phía máy chủ, các hợp đồng thông minh được viết bằng Solidity và Zinc giờ đây có thể được biên dịch thành mã byte zkEVM.
p>
Ở cốt lõi nền tảng Về cơ sở vật chất, việc tích hợp nút đầy đủ đã được hoàn thành và các hợp đồng thông minh được biên soạn có thể được triển khai và thực hiện thành công.
p>
Mặc dù zk EVM Và cơ sở hạ tầng lõi 2.0 đã sẵn sàng để lộ diện, nhưng trình biên dịch cần thực hiện nhiều công việc hơn để xử lý chính xác tất cả các trường hợp biên. Để cung cấp trải nghiệm toàn diện hơn cho nhà phát triển, chúng tôi đã quyết định mở quyền truy cập vào zkEVM, trình biên dịch và SDK cốt lõi ngay khi trình biên dịch đáng tin cậy 100%.
p>
Hầu hết mọi thứ đều trông giống nhau. Dưới đây là một số khác biệt quan trọng:
Hỗ trợ hầu hết các opcode trong Ethereum! Tuy nhiên, vẫn có một số trường hợp ngoại lệ:
Các mã ADDMOD, SMOD, MULMOD, EXP và CREATE2 không được hỗ trợ trong phiên bản này nhưng sẽ được hỗ trợ trong tương lai.
Chúng tôi hiện không hỗ trợ mã hoạt động KECCAK256, thay vào đó tự động thay thế tất cả các lệnh gọi của nó bằng các lệnh gọi đến một hàm băm chống va chạm khác. KECCAK256 sẽ được giới thiệu dưới dạng trình biên dịch trước sau này.
Chúng tôi quyết định không Chứa opcode SELFDESTRUCT vì Ethereum có kế hoạch loại bỏ nó.
Chúng tôi có thể xóa hỗ trợ cho opcode XOR/AND/OR 256-bit đầy đủ vì các Opcode này chỉ tồn tại trong mã được biên dịch, đáng tin cậy để tạo mặt nạ bit. Điều này có thể được thực hiện bởi trình biên dịch bằng cách sử dụng các opcode khác.
Trong zkSync 2.0, có một khái niệm khác về gas. Giá giao dịch sẽ dựa trên giá gas L1 hiện tại (do đến việc phát hành dữ liệu cuộc gọi) và chi phí tạo ZKP dao động. Cuộc gọi hợp đồng thông minh sẽ có số bước zk EVM tối đa và tham số ghi bộ nhớ.
Phiên bản tiếp theo sẽ bao gồm triển khai API Web3 của chúng tôi, tương thích với tiêu chuẩn Web3 được xác định bởi tài liệu Ethereum. Các sự kiện sẽ có sẵn và tất cả các dịch vụ có thể dễ dàng Tích hợp.
zkSync bao gồm L1 và không không có các tính năng, chẳng hạn như khái niệm về cam kết và khối cuối cùng. Do đó, sẽ có thêm cách để nhà phát triển kiểm soát dữ liệu chính xác hơn. Mã máy khách Web3 sẽ nhận được dữ liệu giống như bạn nhận trên Ethereum, nhưng có thể sử dụng " zksync_" đặt tên Space yêu cầu thông tin chuyên biệt.
Vì zkSync có nhiều giao dịch type và sử dụng chữ ký EIP712 nên định dạng của dữ liệu `eth_sendRawTransaction` sẽ khác với L1. Tuy nhiên, mã hóa tương ứng với Ethereum ABI nên việc hỗ trợ nó không khó.
Các giao dịch trong zkSync 2.0 có thể được ủy quyền theo 2 cách (ngoài cơ chế xếp hàng ưu tiên):
Người dùng có thể ký các giao dịch bằng ví Ethereum thông thường của họ (chẳng hạn như Metamask hoặc bất kỳ ví WalletConnect nào) bằng cách ký vào tin nhắn EIP712.
Bất kỳ tài khoản nào cũng có thể thiết lập khóa chung để tạo chữ ký Schnorr nội bộ của chúng tôi để ký giao dịch. Điều này cho phép các ví dựa trên hợp đồng thông minh tương tác với zkSync 2.0 mà không phải trả thêm phí gửi tin nhắn L1.
Ghi đè vùng lưu trữ chỉ được áp dụng một lần cho mỗi khối. Điều này có nghĩa là nếu nhiều người dùng có một AMM duy nhất tương tác với hợp đồng, khe lưu trữ của hợp đồng AMM sẽ chỉ bị ghi đè một lần. Điều này cho phép trình sắp xếp chuỗi hoàn trả cho người dùng chi phí chung của một lần ghi vào một ngày sau đó.
Cơ chế "biên dịch trước" đã được lên kế hoạch nhưng sẽ được phát hành sau. Chúng tôi dự định ban đầu hỗ trợ băm keccak256, sha256 và phục hồi nguyên thủy ECDSA. Các phần biên dịch trước khác có thể được xem xét đưa vào tùy thuộc vào yêu cầu và độ phức tạp, chẳng hạn như chức năng bánh xe Blake2f (hầu như không thể sử dụng được trong Ethereum ở dạng hiện tại).
Lần lặp đầu tiên của zkSync 2.0 có thể áp đặt giới hạn bổ sung là 32 lệnh gọi hợp đồng thông minh cho mỗi giao dịch cho đến khi cơ chế kế toán phù hợp được triển khai.
Theo dõi thực thi Sẽ có một giới hạn cứng, nhưng nó sẽ tương đương với giới hạn hiện tại về kích thước khối Ethereum và sẽ không ảnh hưởng đến hầu hết các giao thức.
p>
Có thể có Nhiều hạn chế hơn, nhưng chúng tôi mong muốn giảm chúng xuống mức tối thiểu trong phiên bản cuối cùng.
p>
Bạn có thể đã nghe nói về bộ ba bất khả thi của blockchain, nhưng có yếu tố thứ tư khi nói đến việc mở rộng quy mô Ethereum: khả năng lập trình. Tất cả các giải pháp mở rộng quy mô hiện tại đều tồn tại trong phạm vi hy sinh một số tính bảo mật, phân quyền và khả năng lập trình để đạt được khả năng mở rộng. zkSync 2.0 được thiết kế để tối đa hóa cả 4 tính năng bằng cách kết hợp 2 đột phá công nghệ sau:
zk EVM: Công cụ hỗ trợ zkRollup tương thích EVM của chúng tôi, giải pháp duy nhất hỗ trợ bảo mật L1 và hợp đồng thông minh đáng tin cậy.
zkPorter: An hệ thống sẵn có dữ liệu ngoài chuỗi có khả năng mở rộng gấp 2 lần so với hệ thống tổng hợp.


Vì zkEVM và zkPorter có thể tương tác và kết hợp, zkSync 2.0 vượt trội đáng kể so với tất cả các giải pháp mở rộng quy mô khác.
Sự đồng thuận hiện tại là Eth2 Tính năng phân chia dữ liệu sẽ ra mắt vào cuối năm 2022 để cung cấp lớp sẵn có dữ liệu lớn hơn theo cấp số nhân mà không phải hy sinh khả năng phân quyền. Công nghệ zkRollup của zkSync kết hợp với phân chia dữ liệu Eth2 là mục tiêu cuối cùng mà không phải hy sinh bất kỳ 4 tiêu chí nào. Đạt được hơn 100.000 TPS mà không cần yếu tố nào.
Cây trạng thái zkSync 2.0 bao gồm toàn bộ không gian địa chỉ 160-bit của Ethereum. Mỗi tài khoản sẽ nằm trong phần zkRollup hoặc phần zkPorter của trạng thái. Tài khoản zkRollup và zkPorter hoàn toàn giống nhau, ngoại trừ một thành phần: đảm bảo tính sẵn có của dữ liệu. Dữ liệu giao dịch zkRollup được xuất bản lên Ethereum thông qua calldata, dữ liệu giao dịch zkPorter được xuất bản lên mạng zkSync Guardian và chủ sở hữu mã thông báo zkSync tham gia vào bằng chứng vốn chủ sở hữu.
Nơi chứa dữ liệu được xuất bản là Sự cân bằng giữa chi phí và bảo mật. Giao dịch zkPorter rẻ hơn nhiều so với giao dịch tổng hợp, nhưng nó có khả năng đóng băng tiền của bạn. Tuy nhiên, tính hợp lệ của cả tài khoản zkRollup và zkPorter đều được đảm bảo thông qua bằng chứng không có kiến thức và Ethereum . Ngoài ra, điều đó có nghĩa là tiền trong zkPorter chỉ có thể bị đóng băng và không thể bị đánh cắp.
Tài khoản zkRollup và zkPorter Khả năng tương tác và khả năng kết hợp mang đến cho mọi người dùng cơ hội trở thành công dân hạng nhất trong zkSync. Uniswap được triển khai bên zkRollup có thể được truy cập thông qua tài khoản zkPorter để đổi lấy mức phí tối thiểu. zkSync 2.0 là một hệ thống được thiết kế cho người dùng trong lĩnh vực tài chính và thiết kế.
VM của chúng tôi, thường được gọi là zkEVM, không phải là bản sao 1:1 của EVM, nhưng được thiết kế để có thể chạy 99% hợp đồng được viết bằng Solidity và giữ nó hành vi tương tự, chẳng hạn như trong quá trình khôi phục và ngoại lệ. Ngoài ra, hãy viết zk EVM để tạo ra bằng chứng không có kiến thức trong các mạch một cách hiệu quả.
Đây là trong The của chúng tôi bằng chứng đã được hoàn thành mà không có bất kỳ thay đổi lớn nào đối với hệ thống, chúng tôi tiếp tục sử dụng PLONK với các cổng và bảng tra cứu tùy chỉnh (thường được gọi là UltraPLONK) và đường cong BN-254 của Ethereum. Điều này là thuận lợi vì tính đến tháng 6 năm 2020, hệ thống bằng chứng này đã được thử nghiệm thực địa trong zkSync 1.0 và các dự án khác sử dụng cùng một hệ thống kiểm chứng trong nhiều tháng.
Sau vài tháng vất vả work , một lần nữa chúng tôi vui mừng thông báo rằng tập lệnh zkEVM đã được hoàn thành và triển khai trong mạch và môi trường thực thi.
Có một điểm quan trọng ở đây Sự khác biệt: Việc triển khai trong mạch và môi trường thực thi là riêng biệt và phục vụ các mục đích khác nhau. Nhiệm vụ của mạch là tạo ra bằng chứng về dấu vết thực thi và cung cấp nhân chứng, nhưng điều này rất chậm. Mặt khác, môi trường thực thi thì chậm giao diện trực tiếp với zk EVM trong Triển khai Rust rất hiệu quả và nhanh chóng. Nếu chúng ta dựa vào các mạch để tạo và thực thi bằng chứng, tính hữu hạn của các giao dịch sẽ mất hàng giờ. Việc tách biệt giữa tạo bằng chứng và thực thi đơn giản cho phép các giao dịch trên zkSync được giải quyết ngay lập tức.
Tiếp theo, chúng tôi tập trung vào Nó kết hợp zkEVM và trình biên dịch và kết hợp đệ quy: đệ quy giữa các khối, cho phép chúng tôi đưa ra bằng chứng cho N khối và đệ quy trong một khối, tổng hợp các bằng chứng phụ của các phần logic khác nhau của khối. Đây là phần dễ dàng! bằng chứng tổng hợp giữa các khối đã được sử dụng trên mainnet cho zkSync 1.0 kể từ tháng 6 năm 2020. Để biết thêm thông tin về đệ quy trong khối và cách zk EVM của chúng tôi hoạt động, hãy xem video giải thích này .
Chúng tôi đang đồng thời phát triển hai giao diện người dùng trình biên dịch cho zkEVM: Yul và Zinc. Yul là một đại diện Solidity trung gian, có thể là được biên dịch thành mã byte cho các chương trình phụ trợ khác nhau. Zinc là ngôn ngữ dựa trên Rust của chúng tôi dành cho các hợp đồng thông minh và các mạch chứng minh không có kiến thức cho mục đích chung.
p>
Bởi vì trình biên dịch được xây dựng bằng cách sử dụng khung LLVM, vì vậy bạn có thể coi nó như có mã byte Yul LLVM IR mặt trước và mã byte LLVM IR zkEVM mặt sau. Việc áp dụng LLVM mang lại một số lợi thế lớn:
p>
1. Khung tối ưu hóa LLVM là vô song: nó tạo ra mã byte zkEVM hiệu quả nhất từ LLVM IR.
2. Sử dụng phiên bản Solidity mới hơn Hoặc Zinc, giao diện người dùng của trình biên dịch sẽ xử lý tất cả các thay đổi và LLVM sẽ giải phóng chúng ta khỏi những thay đổi đối với giao diện người dùng của trình biên dịch.
3. Trong tương lai, nếu các nhà phát triển muốn sử dụng Để viết hợp đồng thông minh nguyên bản bằng Rust hoặc Javascript, chỉ cần xây dựng giao diện người dùng trình biên dịch cho ngôn ngữ đó và các hợp đồng thông minh có thể được sử dụng ngay trong zkSync.
Bảo mật trình biên dịch Cần thiết cho chúng tôi và đã vượt qua nhiều bộ kiểm tra:
1. Kiểm tra từ vựng, cú pháp và ngữ nghĩa trong trình biên dịch Zinc và Yul.
2. Thử nghiệm tích hợp Zinc và Solidity của chúng tôi diễn ra trong toàn bộ vòng đời hợp đồng thông minh: từ phân tích mã nguồn đến triển khai hợp đồng và thực hiện giao dịch trên zkSync.
3. Bộ thử nghiệm mở rộng được tích hợp từ kho lưu trữ Solidity và được điều chỉnh cho phù hợp với công cụ thử nghiệm tích hợp của chúng tôi.
Mỗi bộ đã chứa hàng nghìn bài kiểm tra và chúng tôi sẽ tăng số lượng này lên ít nhất một bậc độ lớn.
2 phần tổng hợp của chúng tôi Trình biên dịch đã triển khai và thực thi thành công các hợp đồng thông minh đơn giản bằng cả hai ngôn ngữ. Tuy nhiên, cần phải thực hiện nhiều tối ưu hóa hơn và một số câu lệnh LLVM IR phức tạp cần được dịch sang mã byte zkEVM. Do đó, chúng tôi đã quyết định đặt trình biên dịch ở vị trí mạnh mẽ hơn trạng thái trước khi xuất bản.
Sau khi trình biên dịch hoàn tất , Chúng tôi sẽ tập trung vào việc làm cho Zinc trở nên biểu cảm hơn và giàu tính năng hơn, sau đó xây dựng giao diện người dùng của trình biên dịch Rust để cho phép các hợp đồng thông minh được viết bằng Rust gốc.
Lõi zkSync 2.0 bao gồm một số trình phát chính:
Môi trường thực thi tiền mạch cho mã byte zkEVM thông qua máy ảo
Trạng thái vài giây sau khi giao dịch được gửi Có sẵn trong vòng đồng hồ
Lọc ra các giao dịch rõ ràng là không chính xác có thể làm tăng khối (ví dụ: không đủ tiền cho giao dịch)
Thực hiện các giao dịch và tạo khối trong mempool
Nhận nhân chứng của khối và tạo ra bằng chứng không có kiến thức
Prover giao diện để tạo bằng chứng song song
Trình chia tỷ lệ tự động trình chứng minh tùy chỉnh để tạo và chấm dứt các máy chứng minh theo yêu cầu
Công cụ xem và tương tác với Ethereum L1,
Theo Token Giá, chi phí tạo ZKP và giá gas L1 để tính phí giao dịch
Prometheus, đàn hồi, canh gác, thời gian hoạt động, Một số hệ thống thông báo sự kiện độc lập và dịch vụ kiểm tra sức khỏe tùy chỉnh.
p>
Nền tảng cốt lõi này Cơ sở này có đầy đủ chức năng và được tích hợp bộ truyền động zkEVM!
p>
Sau khi trình biên dịch hoàn tất, chúng tôi sẽ chia sẻ quyền truy cập vào tất cả các thành phần với nhau! Các nhà phát triển sẽ có thể triển khai các hợp đồng thông minh Solidity/Zinc và tương tác thông qua API Web3.
p>
Liên kết gốc
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia