Chắc hẳn anh em đều biết máy ảo EVM, một công nghệ làm nên tên tuổi của Ethereum, nó giúp thực thi các smart contract trên mạng lưới Ethereum. Thế còn zkEVM là gì? nó có vai trò quan trọng như máy ảo EVM không?
zkEVM là gì?
zkEVM (zero-knowlege Ethereum Virtual Machine) là một máy ảo hỗ trợ tính toán zero-knowledge proofs hay ZKP để xác minh tính đúng đắn của việc thực thi các chương trình, bao gồm cả tính hợp lệ của đầu vào (inputs) và đầu ra (outputs) trong chương trình.
Nói một cách đơn giản thì zkEVM được thiết kế để thực hiện các smart contract có hỗ trợ công nghệ zero-knowledge (zk).
Tầm quan trọng của zkEVM
Trước tiên chúng ta cùng điểm lại tầm quan trọng của công nghệ zk. ZKP (zero-knowledge proofs) là một cách để chứng minh một trạng thái là đúng mà không phải tiết lộ thêm bất kỳ thông tin nào, nhờ đó mà người dùng giữ được quyền riêng tư như thông tin cá nhân, bí mật kinh doanh, dữ liệu độc quyền… Đặc biệt trong không gian Web3 thì quyền riêng tư là không thể thiếu. Ví dụ nhờ zk bạn có thể sử dụng web mà ko bị lấy cắp thông tin cá nhân, hay sử dụng dữ liệu độc quyền làm đầu vào để kích hoạt hợp đồng thông minh.
zkEVM tận dụng tài nguyên của Ethereum, tận dụng khả năng mở rộng, tính hợp lệ, chi phí thấp, hiệu quả vốn của công nghệ zk-Rollup và khả năng mang lại quyền riêng tư của của công nghệ zk:
- Với Layer 2, zk-Rollup ban đầu thiếu khả năng thực thi smart contract, chỉ có thể thực thi swap hay payment đơn giản. Tuy nhiên, với sự ra đời của zkEVM thì zk-Rollup đang hỗ trợ smart contract và giúp các các nhà phát triển dễ dàng phát triển dApp với ngôn ngữ Solidity quen thuộc.
- Với Layer 1 sử dụng công nghệ zk như Mina thì zkEVM giúp các bằng chứng trạng thái có thể được chứng minh trực tiếp trên Ethereum, từ đó sẽ mở ra cầu nối giữa Mina với công nghệ zk và Ethereum.
zkEVM có phải là yếu tố quyết định sự phát triển của công nghệ zk không? câu trả lời là không. Ví dụ một số dự án non-EVM như StarkNet sử dụng Warp để biên dịch ngôn ngữ Solidity sang Cairo hay Polygon Miden sử dụng máy ảo MidenVM.
Vậy tại sao lại là zkEVM mà không phải là máy ảo khác? Như đã nói ở trên, đó là zkEVM giúp tận dụng tài nguyên từ Ethereum như:
- Công cụ quen thuộc dành cho nhà phát triển như Truffle, Hardhat và Foundry
- Các phương pháp hay nhất về bảo mật đã được thiết lập
- Triển khai hợp đồng thông minh mô-đun hiện có thông qua OpenZeppelin
- Nhiều công ty kiểm toán có chuyên môn trong EVM
- Cộng đồng nhà phát triển Web3 lớn nhất
- Người dùng đã quen thuộc với các tiện ích của blockchain dựa trên EVM như Etherscan, ví metamask…
- Theo DeFi Llama, khoảng 80% TVL nằm trên các chuỗi EVM. Các ứng dụng DeFi blue-chip như Uniswap, Aave, Maker đều được xây dựng trên EVM, các ứng dụng này có thể dễ dàng tích hợp sang blockchain EVM khác, mà người dùng thường sẽ tin tưởng những tên tuổi đã được khẳng định qua thời gian.
zkEVM tăng cường sức mạnh cho giải pháp mở rộng Ethereum. Như chúng ta biết zk-Rollup được cho là giải pháp mở rộng trong trung và dài hạn của Ethereum với nhiều lợi thế như: khả năng mở rộng lên tới 2000TPS (gấp 4 lần Optimistic-Rollup), tạo bằng chứng hợp lệ, chi phí thấp, hiệu quả vốn (chỉ mất ~10 phút để rút tiền về L1 trong khi Optimistic là 1 tuần). zkEVM nâng tầm giải pháp mở rộng zk-Rollup thông qua việc tương thích EVM, giúp các nhà phát triển dễ dàng tận dụng tài nguyên từ Ethereum.
Cách hoạt động của zkEVM
Để hiểu cách thức hoạt động của zkEVM (và tại sao nó lại khác), trước tiên chúng ta hãy xem lại cách EVM hoạt động hiện tại nhé
Cách hoạt động của máy ảo EVM
Máy ảo hoạt động theo cách tương tự như một máy vật lý với bộ lưu trữ, bộ nhớ và CPU nhưng chúng hoạt động hoàn toàn dưới dạng mã.
(1). Bytecode hợp đồng (được biên dịch từ mã nguồn) được tải từ bộ lưu trữ của EVM và được thực thi bởi các node ngang hàng trên EVM. Các node sử dụng các đầu vào (inputs) giống nhau, điều này đảm bảo rằng mỗi node đến cùng một kết quả (hoặc nếu không thì chúng không thể đạt được sự đồng thuận).
(2). Các Opcodes EVM (có trong bytecode) thực hiện các thao tác đọc-ghi tức là đọc các giá trị từ bộ lưu trữ trạng thái (state Storage) và ghi các giá trị mới vào bộ nhớ (Memory)của EVM.
(3). Các opcodes EVM thực hiện tính toán các giá trị thu được từ bộ lưu trữ trạng thái (state storage) trước khi trả về các giá trị mới. Việc cập nhật này dẫn đến việc EVM chuyển đổi sang trạng thái mới (các giao dịch được gọi là “chuyển đổi trạng thái” vì lý do này). Trạng thái mới này được sao chép bởi các node khác và duy trì cho đến khi một giao dịch khác được thực hiện.
Cách thức hoạt động của zkEVM
Giống như EVM, zkEVM là một máy ảo chuyển đổi giữa các trạng thái sau khi thực thi chương trình. Nhưng zkEVM còn đi xa hơn bằng cách tạo ra các bằng chứng không có kiến thức (ZKP) để xác minh các yếu tố khác nhau trong mỗi phép tính:
(1). Truy cập Bytecode: Mã chương trình thích hợp có được tải đúng cách, từ đúng địa chỉ không?
(2). Các thao tác đọc – ghi:
- a. Chương trình có tìm nạp các giá trị phù hợp từ ngăn xếp/ bộ nhớ/ lưu trữ (stack/memory/storage) trước khi tính toán không?
- b. Chương trình có ghi các giá trị đầu ra chính xác vào ngăn xếp/ bộ nhớ/ lưu trữ (stack/memory/storage) sau khi hoàn thành việc thực thi không?
(3). Tính toán: Các mã opcodes có được thực thi chính xác không (tức là lần lượt nối tiếp nhau, không bỏ qua các bước)?
Kiến trúc zkEVM
ZkEVM được chia thành ba phần: an execution environment (môi trường thực thi), proving circuit (mạch chứng minh) và verifier contract (hợp đồng xác minh). Mỗi thành phần đóng góp vào việc thực thi chương trình, tạo bằng chứng và xác minh bằng chứng của zkEVM.
Môi trường thực thi
Môi trường thực thi là nơi các chương trình (smart contracts) được chạy trong zkEVM. Môi trường thực thi của zkEVM hoạt động giống như EVM: nó lấy trạng thái ban đầu và giao dịch hiện tại để tạo ra trạng thái mới (hay còn gọi là trạng thái cuối cùng).
Mạch chứng minh
Mạch chứng minh tạo ra các bằng chứng không có kiến thức (ZKP) xác minh tính hợp lệ của các giao dịch được tính toán trong môi trường thực thi.
Quá trình tạo bằng chứng được hoàn thành bằng cách sử dụng dữ liệu đầu vào gồm: (1) trạng thái trước, (2) đầu vào giao dịch và (3) thông tin sau trạng thái.
Sau đó, người xác minh thu được một bằng chứng ngắn gọn về tính hợp lệ của sự chuyển đổi trạng thái cụ thể đó.
Hợp đồng người xác minh
ZK-rollups gửi bằng chứng hợp lệ cho một hợp đồng thông minh được triển khai trên chuỗi L1 (Ethereum) để xác minh.
Đầu vào (trạng thái trước và thông tin giao dịch) và đầu ra (trạng thái cuối cùng) cũng được đệ trình cho hợp đồng người xác minh.
Sau đó, người xác minh chạy tính toán trên bằng chứng được cung cấp và xác nhận rằng các đầu ra được gửi đã được tính toán chính xác từ các đầu vào.
zkEVM opcodes là gì?
zkEVM opcodes là các lệnh máy cấp thấp được sử dụng để thực thi các chương trình trong một zk-Rollup tương thích với EVM.
Chúng ta cần zkEVM opcodes vì EVM opcodes thông thường không hiệu quả để sử dụng trong các mạch chứng minh không có kiến thức. Nhìn chung, có hai cách tiếp cận để tạo zkEVM opcodes:
- Xây dựng mạch ZK cho các opcodes EVM gốc
Cách tiếp cận này giúp zkEVM tương thích ở mức bytecode tương đương EVM. Nghĩa là các nhà phát triển có thể tạo các smart contract bằng cách sử dụng công cụ dành cho nhà phát triển blockchain hiện có hoặc chuyển các hợp đồng Ethereum hiện có sang ZK-rollups mà không cần sửa đổi nhiều. Tuy nhiên đó là một nỗ lực kỹ thuật khá phức tạp và tốn nhiều thời gian.
- Tạo ngôn ngữ mới cho tính toán bằng chứng ZK
Cách tiếp cận này yêu cầu xây dựng một ngôn ngữ mới — được thiết kế để hỗ trợ các bằng chứng hợp lệ — và phát triển các mã opcodes tùy chỉnh. Các nhà phát triển sẽ cần phải viết hợp đồng trực tiếp bằng ngôn ngữ mới hoặc biên dịch mã nguồn Solidity sang mã opcodes zkEVM tùy chỉnh.
Mặc dù phương pháp này thường đơn giản hơn để thực hiện so với cách tiếp cận đầu tiên, nhưng nó có những hạn chế. Ví dụ: các nhà phát triển có thể không thể truy cập vào cơ sở hạ tầng và tài nguyên Ethereum hiện có.
Một số dự án đang triển khai zkEVM
Polygon zkEVM
Polygon zkEVM được đổi tên từ Polygon Hermez là một layer 2 zk-Rollup với một máy ảo zk được thiết kế để hỗ trợ khả năng tương thích EVM. Để thực hiện việc này, mã bytecode EVM được biên dịch thành “micro opcodes” và được thực thi trong uVM — một máy ảo sử dụng các bằng chứng SNARK và STARK để xác minh tính đúng đắn của việc thực thi chương trình.
zkSTARK được sử dụng cho mục đích chứng minh, vì nó rất nhanh, nhưng tạo ra các bằng chứng nặng hơn. zkSNARK nhẹ hơn, vì vậy nó được xuất bản dưới dạng bằng chứng xác thực
zkSync zkEVM
zkSync là một zk-Rollup tương thích với EVM do Matter Labs phát triển và được cung cấp bởi zkEVM của riêng nó. ZkSync đạt được khả năng tương thích với Ethereum bằng cách sử dụng chiến lược sau:
- Biên dịch mã hợp đồng được viết bằng Solidity sang Yul, một ngôn ngữ trung gian có thể được biên dịch thành bytecode cho các máy ảo khác nhau.
- Biên dịch lại mã bytecode Yul (sử dụng khung LLVM) thành bộ mã bytecode tùy chỉnh, tương thích với mạch được thiết kế đặc biệt cho zkEVM của zkSync.
Giống như Polygon Hermez, zkSync zkEVM đạt được khả năng tương thích EVM ở cấp độ ngôn ngữ, không phải cấp độ bytecode.
Scroll zkEVM
Scroll là một triển khai zkEVM mới đang được phát triển bởi một nhóm kỹ sư độc lập, những người làm việc chặt chẽ với nhóm Mật mã ứng dụng của Ethereum Foundation. Nhóm Scroll có kế hoạch thiết kế các mạch zk cho mỗi opcode EVM. Điều này sẽ cho phép các nhà phát triển triển khai các hợp đồng thông minh gốc Ethereum trên Scroll mà không cần phải sửa đổi mã bytecode EVM.
zkEVM đang phát triển ở giai đoạn nào?
Ngoại trừ zkSync đang testnet, hầu hết các zkEVM vẫn đang được sản xuất, Polygon zkEVM dự kiến testnet vào Q3 2022, Scroll mới phát hành bản Pre-Alpha testnet ngày 19/7/2022. Sự phát triển vượt bậc trong công nghệ zk có nghĩa là triển vọng về một zkEVM đầy đủ chức năng là tốt hơn bao giờ hết.
StarkNet không tương thích với EVM, nhưng các nhà phát triển có thể sử dụng Warp để biên dịch mã nguồn Solidity sang mã bytecode thân thiện với ZK tùy chỉnh. Tuy nhiên Warp vẫn đang trong giai đoạn hoàn thiện nên khả quan hơn thời điểm này vẫn là chọn viết hợp đồng bằng Cairo (ngôn ngữ của StarkWare).
Tổng kết
zkEVM là một trong những nhân tố quan trọng nhất giúp các nhà phát triển xây dựng/tích hợp dApp của mình trên nền tảng công nghệ zk bằng ngôn ngữ quen thuộc solidity.
Đặc biệt là với zk-Rollup, zkEVM giúp các nhà phát triển tận dụng được tài nguyên của Ethereum, tận dụng khả năng mở rộng, tính hợp lệ, chi phí thấp, hiệu quả vốn của công nghệ zk-Rollup và khả năng mang lại quyền riêng tư của của công nghệ zk. Nếu nỗ lực xây dựng zkEVM thành công, hệ sinh thái Ethereum chắc chắn sẽ tiếp tục giữ được lợi thế cạnh tranh so với các L1 thay thế khác.
Không gian zkEVM có thể sẽ nóng lên trong những tháng tới khi zkSync tiến tới mainnet, Scroll, Polygon zkEVM chạy testnet.