Máy ảo là một hệ thống máy tính được mô phỏng bằng phần mềm cung cấp môi trường thực thi cho các chương trình. Nó có thể mô phỏng các thiết bị phần cứng khác nhau để các chương trình có thể chạy trong một môi trường được kiểm soát và tương thích. Máy ảo Ethereum (EVM) là một máy ảo dựa trên ngăn xếp được sử dụng để thực hiện các hợp đồng thông minh Ethereum.
zkEVM là một EVM tích hợp công nghệ chứng minh tính hợp lệ/bằng chứng không kiến thức. Nó cho phép xác minh việc thực thi EVM bằng cách sử dụng bằng chứng không có kiến thức mà không yêu cầu tất cả các trình xác minh thực thi lại EVM. Có nhiều sản phẩm zkEVM khác nhau trên thị trường, mỗi sản phẩm có cách tiếp cận và thiết kế riêng.
Lý do của zkEVM là cần có một máy ảo hỗ trợ thực thi hợp đồng thông minh trên Lớp 2. Ngoài ra, một số dự án chọn sử dụng zkEVM để tận dụng lợi thế của hệ sinh thái người dùng rộng rãi của EVM và thiết kế một bộ hướng dẫn thân thiện hơn với các bằng chứng không có kiến thức.
Kakarot là zkEVM được triển khai trên Starknet bằng ngôn ngữ Cairo. Nó mô phỏng ngăn xếp, bộ nhớ, thực thi và các khía cạnh khác của EVM dưới dạng hợp đồng thông minh Cairo. Kakarot phải đối mặt với những thách thức như khả năng tương thích với hệ thống tài khoản Starknet, tối ưu hóa chi phí và tính ổn định vì ngôn ngữ Cairo vẫn còn đang thử nghiệm.
Warp là trình dịch từ mã Solidity sang mã Cairo, cung cấp khả năng tương thích ở cấp độ ngôn ngữ cấp cao. Kakarot, mặt khác, cung cấp khả năng tương thích ở cấp độ EVM bằng cách triển khai mã hóa và tiền biên dịch EVM.
Máy ảo là gì?
Để làm rõ máy ảo là gì, trước tiên chúng ta phải nói về quá trình thực thi của máy tính theo kiến trúc von Neumann chủ đạo hiện nay. Các chương trình khác nhau chạy trên máy tính thường được chuyển đổi bởi các lớp ngôn ngữ cấp cao và cuối cùng tạo ra các mã máy có thể hiểu được để thực thi. Theo cách chuyển đổi sang mã máy, ngôn ngữ bậc cao có thể tạm chia thành ngôn ngữ biên dịch và ngôn ngữ thông dịch.
Một ngôn ngữ được biên dịch có nghĩa là sau khi mã được viết, nó cần được xử lý bởi trình biên dịch để chuyển đổi mã ngôn ngữ cấp cao thành mã máy và tạo tệp thực thi. Sau khi được biên dịch, nó có thể được thực thi nhiều lần với hiệu quả cao hơn. Ưu điểm của ngôn ngữ biên dịch là mã đã được chuyển thành mã máy trong quá trình biên dịch nên tốc độ thực thi nhanh, chương trình chạy được trong môi trường không cần trình biên dịch, thuận tiện cho người sử dụng và không cần để cài đặt thêm phần mềm. Các ngôn ngữ biên dịch phổ biến bao gồm C, C++, Go, v.v.
Bản đối của các ngôn ngữ được biên dịch là các ngôn ngữ được giải thích. Ngôn ngữ được thông dịch có nghĩa là mã được thông dịch và thực thi từng dòng thông qua trình thông dịch và mã này chạy trực tiếp trên máy tính và quá trình dịch cần được dịch lại mỗi khi chạy. Ưu điểm của ngôn ngữ thông dịch là hiệu quả phát triển cao và dễ dàng gỡ lỗi mã nhưng tốc độ thực thi tương đối chậm. Các ngôn ngữ thông dịch phổ biến bao gồm Python, Java, Ruby, v.v.
Cần nhấn mạnh rằng về bản chất ngôn ngữ không phân biệt giữa các loại được biên dịch và thông dịch, nhưng sẽ có một số xu hướng trong thiết kế ban đầu. C/C++ được biên dịch và thực thi trong hầu hết các trường hợp, nhưng nó cũng có thể được thông dịch và thực thi (Cint, Cling). Nhiều ngôn ngữ được giải thích theo nghĩa truyền thống hiện được biên dịch thành mã trung gian và được thực thi trên các máy ảo (Python, Lua).
Biết quá trình thực thi của máy vật lý, bây giờ hãy nói về máy ảo.
Máy ảo thường cung cấp môi trường máy tính ảo bằng cách mô phỏng các thiết bị phần cứng khác nhau. Các thiết bị phần cứng có thể được mô phỏng bởi các máy ảo khác nhau là khác nhau, nhưng nhìn chung bao gồm CPU, bộ nhớ, đĩa cứng, giao diện mạng, v.v.
Lấy Ethereum Virtual Machine (EVM) làm ví dụ, EVM là một máy ảo dựa trên ngăn xếp được sử dụng để thực thi các hợp đồng thông minh Ethereum. EVM cung cấp một môi trường máy tính ảo bằng cách mô phỏng các thiết bị phần cứng như CPU, bộ nhớ, lưu trữ và ngăn xếp.
Cụ thể, EVM là một máy ảo dựa trên ngăn xếp sử dụng ngăn xếp để lưu trữ dữ liệu và thực hiện các lệnh. Tập lệnh của EVM bao gồm nhiều mã lệnh khác nhau, chẳng hạn như phép toán số học, phép toán logic, phép toán lưu trữ, phép nhảy, v.v. Các lệnh này có thể được thực thi trên ngăn xếp của EVM để hoàn tất việc thực hiện hợp đồng thông minh.
Bộ nhớ và bộ lưu trữ được mô phỏng bởi EVM là các thiết bị được sử dụng để lưu trữ trạng thái và dữ liệu của hợp đồng thông minh. EVM coi bộ nhớ và bộ lưu trữ là hai khu vực riêng biệt và nó có thể truy cập trạng thái và dữ liệu của hợp đồng thông minh bằng cách đọc và ghi vào bộ nhớ và bộ lưu trữ.
Ngăn xếp được mô phỏng bởi EVM được sử dụng để lưu trữ các toán hạng và kết quả của các lệnh. Hầu hết các hướng dẫn trong bộ hướng dẫn của EVM đều dựa trên ngăn xếp, đọc toán hạng từ ngăn xếp và đẩy kết quả trở lại ngăn xếp.
Nói tóm lại, EVM cung cấp một môi trường máy tính ảo bằng cách mô phỏng các thiết bị phần cứng như CPU, bộ nhớ, bộ lưu trữ và ngăn xếp, có thể thực thi các hướng dẫn của hợp đồng thông minh và lưu trữ trạng thái cũng như dữ liệu của hợp đồng thông minh. Trong hoạt động thực tế, EVM sẽ tải mã byte của hợp đồng thông minh vào bộ nhớ và thực thi logic của hợp đồng thông minh bằng cách thực hiện tập lệnh. Những gì EVM thực sự thay thế là một phần của hệ điều hành + phần cứng trong hình trên.
Quá trình thiết kế của EVM rõ ràng là từ dưới lên, đầu tiên hoàn thiện môi trường phần cứng mô phỏng (ngăn xếp, bộ nhớ), sau đó một bộ tập lệnh lắp ráp (Opcode) và mã byte (Bytecode) được thiết kế theo môi trường tương ứng. Mặc dù bộ hướng dẫn hợp ngữ là để mọi người đọc, nhưng nó liên quan đến rất nhiều kiến thức cấp thấp, yêu cầu cao đối với người phát triển và phát triển cồng kềnh, do đó, cần có một ngôn ngữ cấp cao để che chắn cấp thấp khó hiểu và cồng kềnh các cuộc gọi và cung cấp cho các nhà phát triển trải nghiệm tốt hơn. Do thiết kế tùy chỉnh của tập lệnh hợp ngữ của EVM, rất khó để sử dụng trực tiếp các ngôn ngữ cấp cao truyền thống và chỉ cần tạo lại một ngôn ngữ cấp cao mới để thích ứng với máy ảo. Cộng đồng Ethereum đã thiết kế hai ngôn ngữ cấp cao được biên dịch—Solidity và Vyper—để thực thi EVM hiệu quả. Solidity thì không cần phải nhấn mạnh, Vyper là một ngôn ngữ cấp cao EVM được Vitalik thiết kế sau khi cải thiện một số khiếm khuyết trong Solidity, tuy nhiên nó không được cộng đồng áp dụng rộng rãi nên dần bị mai một trong giai đoạn lịch sử.
zkEVM là gì
Nói một cách đơn giản, zkEVM là một EVM sử dụng công nghệ chứng minh tính hợp lệ/bằng chứng không kiến thức, để quy trình thực thi của EVM có thể được xác minh hiệu quả hơn và với chi phí thấp thông qua bằng chứng không kiến thức/bằng chứng tính hợp lệ mà không yêu cầu tất cả các trình xác minh thực hiện ra quá trình thực thi của EVM.
Có rất nhiều sản phẩm zkEVM trên thị trường và đường đua đang rất hot. Những người chơi chính bao gồm Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (trước đây là Polygon Hermez), v.v., được chia thành 5 loại (1, 2 , 2.5, 3, 4) của Vitalik. Nội dung cụ thể có thể được xem trên blog của Vitalik.
Tại sao cần có zkEVM
Câu hỏi này cần được nhìn từ hai khía cạnh.
Các lần thử zk Rollup ban đầu chỉ có thể đạt được các chức năng giao dịch và chuyển giao tương đối đơn giản, chẳng hạn như zkSync Lite, Loopring, v.v. Nhưng một khi biển quá khó, người ta quen sử dụng EVM Turing-Complete trên Ethereum, khi không thể tạo các ứng dụng đa dạng thông qua lập trình, người ta bắt đầu kêu gọi máy ảo trên L2. Nhu cầu viết hợp đồng thông minh là một.
Vì một số thiết kế trong EVM không thân thiện với việc tạo bằng chứng xác thực/bằng chứng không có kiến thức, nên một số người chơi chọn sử dụng bộ hướng dẫn thân thiện với bằng chứng xác thực/bằng chứng không có kiến thức ở lớp dưới cùng, chẳng hạn như Hội đồng Cairo của Starknet và zkSync của Hướng dẫn kẽm Nhưng đồng thời, mọi người đều không muốn từ bỏ hệ sinh thái người dùng khổng lồ của EVM, vì vậy họ chọn tương thích với EVM ở lớp trên, đó là loại 3 và 4 zkEVM. Một số người chơi vẫn khăng khăng sử dụng Opcode của tập lệnh EVM truyền thống và tập trung vào việc tạo ra các bằng chứng hiệu quả hơn cho Opcode, đó là zkEVM Loại 1 và Loại 2. Hệ sinh thái khổng lồ của EVM được chia thành hai.
Kakarot: Máy ảo trên máy ảo?
Tại sao máy ảo khác có thể được thực hiện trên máy ảo? Điều này là phổ biến đối với những người sử dụng máy tính, nhưng nó có thể không quá rõ ràng đối với những người dùng không hiểu về máy tính. Thực ra rất dễ hiểu, điều này giống như các khối xây dựng, chỉ cần tầng dưới đủ mạnh (với môi trường thực thi hoàn chỉnh Turing), các khối xây dựng có thể được xếp chồng lên tầng trên mà không có giới hạn. Nhưng cho dù có bao nhiêu lớp được xây dựng, thì phần thực thi cuối cùng vẫn phải được xử lý bởi phần cứng vật lý cấp thấp nhất, vì vậy việc tăng số lượng lớp sẽ dẫn đến giảm hiệu quả. Đồng thời, do các thiết kế khác nhau của các khối xây dựng khác nhau (thiết kế máy ảo khác nhau), khi các khối xây dựng được xây dựng càng cao, khả năng khối xây dựng bị sập (lỗi chạy) càng lớn, đòi hỏi cấp độ càng cao. của hỗ trợ kỹ thuật.
Kakarot là một EVM được triển khai bằng ngôn ngữ Cairo trên Starknet. Nó sử dụng hợp đồng thông minh Cairo để mô phỏng ngăn xếp, bộ nhớ, thực thi, v.v. trong EVM. Nói một cách tương đối, triển khai EVM không khó, ngoài EVM được viết bằng Golang trong Go-Ethereum có tỷ lệ sử dụng cao nhất, còn có các EVM hiện có được viết bằng Python, Java, Java và Rust.
Khó khăn kỹ thuật của Kakarot zkEVM là giao thức tồn tại dưới dạng hợp đồng trên chuỗi Starknet, điều này dẫn đến hai vấn đề chính.
Khả năng tương thích Starknet sử dụng một hệ thống tài khoản hoàn toàn khác với Ethereum. Tài khoản trong Ethereum được chia thành EOA (tài khoản thuộc sở hữu bên ngoài) và CA (tài khoản hợp đồng). Tuy nhiên, Starknet hỗ trợ trừu tượng hóa tài khoản gốc và tất cả các tài khoản đều là tài khoản hợp đồng. Đồng thời, do các thuật toán mã hóa khác nhau được sử dụng, người dùng không thể sử dụng cùng một entropy để tạo cùng một địa chỉ trong Starknet như trong Ethereum.
Chi phí Vì kakarot zkEVM tồn tại trên chuỗi dưới dạng hợp đồng nên nó có yêu cầu cao đối với việc triển khai mã và cần được tối ưu hóa cho Gas càng nhiều càng tốt để giảm chi phí tương tác.
Tính ổn định Khác với việc sử dụng các ngôn ngữ cấp cao truyền thống như Golang, Rust, Python, v.v., ngôn ngữ Cairo vẫn đang trong giai đoạn thử nghiệm, từ Cairo 0 đến Cairo 1 đến Cairo 2 (hoặc nếu bạn thích thì Cairo 1 phiên bản 2), nhóm chính thức vẫn là Các tính năng ngôn ngữ liên tục được sửa đổi. Đồng thời, Cairo VM chưa được thử nghiệm đầy đủ và không thể loại trừ khả năng viết lại quy mô lớn tiếp theo.
Giao thức kakarot bao gồm năm thành phần chính (bốn thành phần được viết trong tài liệu GitHub, không bao gồm EOA, bài viết này đã được điều chỉnh để thuận tiện cho người đọc):
Kakarot (Core): chịu trách nhiệm thực hiện các giao dịch dưới dạng Ethereum và cung cấp tài khoản Starknet tương ứng cho người dùng Ethereum
Tài khoản hợp đồng: CA theo nghĩa của Ethereum, chịu trách nhiệm lưu trữ mã byte của hợp đồng và trạng thái của các biến trong hợp đồng
Tài khoản thuộc sở hữu bên ngoài: EOA theo nghĩa của Ethereum, chịu trách nhiệm chuyển tiếp các giao dịch Ethereum tới Kakarot Core
Sổ đăng ký tài khoản: Lưu trữ sự tương ứng giữa tài khoản Ethereum và tài khoản Starknet.
Blockhash Registry: Là một Opcode đặc biệt, Blockhash cần dữ liệu khối trong quá khứ và Kakarot không thể trực tiếp lấy dữ liệu trên chuỗi. Thành phần này lưu trữ mối quan hệ ánh xạ của block_number -> block_hash, được viết bởi quản trị viên và cung cấp cho Kakarot Core.
Theo phản hồi từ Giám đốc điều hành kakarot Elias Tazartes, trong phiên bản mới nhất của nhóm, thiết kế của Account Resister đã bị loại bỏ và thay vào đó, ánh xạ từ địa chỉ Starknet 31 byte sang địa chỉ EVM 20 bit được sử dụng trực tiếp để lưu mối quan hệ tương ứng . Trong tương lai, để cải thiện khả năng tương tác và cho phép các hợp đồng Starknet đăng ký địa chỉ EVM của riêng họ, thiết kế Đăng ký tài khoản có thể được sử dụng lại.
Tương thích với EVM trên Starknet: Sự khác biệt giữa Warp và kakarot là gì
Theo loại zkEVM do Vitalik xác định, Warp thuộc Loại-4, trong khi kakarot hiện thuộc Loại-2.5.
Warp là một trình dịch chuyển mã Solidity sang mã Cairo, lý do tại sao nó không được gọi là trình biên dịch có lẽ vì Cairo đầu ra vẫn là một ngôn ngữ cấp cao. Thông qua Warp, các nhà phát triển Solidity có thể duy trì trạng thái phát triển ban đầu mà không cần phải học ngôn ngữ Cairo mới. Đối với nhiều bên dự án, Warp hạ thấp ngưỡng tham gia hệ sinh thái Starknet và không cần sử dụng Cairo để viết lại một lượng lớn mã kỹ thuật.
Mặc dù ý tưởng dịch đơn giản nhưng khả năng tương thích cũng kém nhất, một số mã Solidity không thể dịch tốt sang Cairo, logic mã liên quan đến hệ thống tài khoản, thuật toán mật mã, v.v. cần sửa đổi mã nguồn để hoàn tất quá trình di chuyển. Bạn có thể xem tài liệu về các tính năng cụ thể không được hỗ trợ. Ví dụ: nhiều dự án sẽ phân biệt logic thực thi của tài khoản EOA và tài khoản hợp đồng, nhưng tất cả các tài khoản trong Starknet đều là tài khoản hợp đồng và phần mã này cần được sửa đổi trước khi dịch.
Warp tương thích ở cấp độ ngôn ngữ cấp cao và kakarot tương thích ở cấp độ EVM.
Việc viết lại hoàn toàn EVM và triển khai từng cái một Opcode và Pre-compile cho phép kakarot có khả năng tương thích gốc cao hơn. Xét cho cùng, việc thực thi trong cùng một máy ảo (EVM) luôn tương thích hơn so với thực thi trong một máy ảo khác (Cairo VM). Cơ quan đăng ký tài khoản và Cơ quan đăng ký Blockhash khéo léo che chắn sự khác biệt trong các hệ thống khác nhau và giảm thiểu trở ngại trong quá trình di chuyển của người dùng.
Nhóm Kakarot
Cảm ơn nhóm kakarot vì những nhận xét quý giá của họ về bài viết này, đặc biệt là Elias Tazartes. Cảm ơn ngài!
Xem bản gốc
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Kakarot: Khám phá con đường tương thích với EVM của Starknet
Tác giả: hoài nghi
TL;DR
Máy ảo là gì?
Để làm rõ máy ảo là gì, trước tiên chúng ta phải nói về quá trình thực thi của máy tính theo kiến trúc von Neumann chủ đạo hiện nay. Các chương trình khác nhau chạy trên máy tính thường được chuyển đổi bởi các lớp ngôn ngữ cấp cao và cuối cùng tạo ra các mã máy có thể hiểu được để thực thi. Theo cách chuyển đổi sang mã máy, ngôn ngữ bậc cao có thể tạm chia thành ngôn ngữ biên dịch và ngôn ngữ thông dịch.
Một ngôn ngữ được biên dịch có nghĩa là sau khi mã được viết, nó cần được xử lý bởi trình biên dịch để chuyển đổi mã ngôn ngữ cấp cao thành mã máy và tạo tệp thực thi. Sau khi được biên dịch, nó có thể được thực thi nhiều lần với hiệu quả cao hơn. Ưu điểm của ngôn ngữ biên dịch là mã đã được chuyển thành mã máy trong quá trình biên dịch nên tốc độ thực thi nhanh, chương trình chạy được trong môi trường không cần trình biên dịch, thuận tiện cho người sử dụng và không cần để cài đặt thêm phần mềm. Các ngôn ngữ biên dịch phổ biến bao gồm C, C++, Go, v.v.
Bản đối của các ngôn ngữ được biên dịch là các ngôn ngữ được giải thích. Ngôn ngữ được thông dịch có nghĩa là mã được thông dịch và thực thi từng dòng thông qua trình thông dịch và mã này chạy trực tiếp trên máy tính và quá trình dịch cần được dịch lại mỗi khi chạy. Ưu điểm của ngôn ngữ thông dịch là hiệu quả phát triển cao và dễ dàng gỡ lỗi mã nhưng tốc độ thực thi tương đối chậm. Các ngôn ngữ thông dịch phổ biến bao gồm Python, Java, Ruby, v.v.
Biết quá trình thực thi của máy vật lý, bây giờ hãy nói về máy ảo.
Máy ảo thường cung cấp môi trường máy tính ảo bằng cách mô phỏng các thiết bị phần cứng khác nhau. Các thiết bị phần cứng có thể được mô phỏng bởi các máy ảo khác nhau là khác nhau, nhưng nhìn chung bao gồm CPU, bộ nhớ, đĩa cứng, giao diện mạng, v.v.
Lấy Ethereum Virtual Machine (EVM) làm ví dụ, EVM là một máy ảo dựa trên ngăn xếp được sử dụng để thực thi các hợp đồng thông minh Ethereum. EVM cung cấp một môi trường máy tính ảo bằng cách mô phỏng các thiết bị phần cứng như CPU, bộ nhớ, lưu trữ và ngăn xếp.
Cụ thể, EVM là một máy ảo dựa trên ngăn xếp sử dụng ngăn xếp để lưu trữ dữ liệu và thực hiện các lệnh. Tập lệnh của EVM bao gồm nhiều mã lệnh khác nhau, chẳng hạn như phép toán số học, phép toán logic, phép toán lưu trữ, phép nhảy, v.v. Các lệnh này có thể được thực thi trên ngăn xếp của EVM để hoàn tất việc thực hiện hợp đồng thông minh.
Bộ nhớ và bộ lưu trữ được mô phỏng bởi EVM là các thiết bị được sử dụng để lưu trữ trạng thái và dữ liệu của hợp đồng thông minh. EVM coi bộ nhớ và bộ lưu trữ là hai khu vực riêng biệt và nó có thể truy cập trạng thái và dữ liệu của hợp đồng thông minh bằng cách đọc và ghi vào bộ nhớ và bộ lưu trữ.
Ngăn xếp được mô phỏng bởi EVM được sử dụng để lưu trữ các toán hạng và kết quả của các lệnh. Hầu hết các hướng dẫn trong bộ hướng dẫn của EVM đều dựa trên ngăn xếp, đọc toán hạng từ ngăn xếp và đẩy kết quả trở lại ngăn xếp.
Nói tóm lại, EVM cung cấp một môi trường máy tính ảo bằng cách mô phỏng các thiết bị phần cứng như CPU, bộ nhớ, bộ lưu trữ và ngăn xếp, có thể thực thi các hướng dẫn của hợp đồng thông minh và lưu trữ trạng thái cũng như dữ liệu của hợp đồng thông minh. Trong hoạt động thực tế, EVM sẽ tải mã byte của hợp đồng thông minh vào bộ nhớ và thực thi logic của hợp đồng thông minh bằng cách thực hiện tập lệnh. Những gì EVM thực sự thay thế là một phần của hệ điều hành + phần cứng trong hình trên.
Quá trình thiết kế của EVM rõ ràng là từ dưới lên, đầu tiên hoàn thiện môi trường phần cứng mô phỏng (ngăn xếp, bộ nhớ), sau đó một bộ tập lệnh lắp ráp (Opcode) và mã byte (Bytecode) được thiết kế theo môi trường tương ứng. Mặc dù bộ hướng dẫn hợp ngữ là để mọi người đọc, nhưng nó liên quan đến rất nhiều kiến thức cấp thấp, yêu cầu cao đối với người phát triển và phát triển cồng kềnh, do đó, cần có một ngôn ngữ cấp cao để che chắn cấp thấp khó hiểu và cồng kềnh các cuộc gọi và cung cấp cho các nhà phát triển trải nghiệm tốt hơn. Do thiết kế tùy chỉnh của tập lệnh hợp ngữ của EVM, rất khó để sử dụng trực tiếp các ngôn ngữ cấp cao truyền thống và chỉ cần tạo lại một ngôn ngữ cấp cao mới để thích ứng với máy ảo. Cộng đồng Ethereum đã thiết kế hai ngôn ngữ cấp cao được biên dịch—Solidity và Vyper—để thực thi EVM hiệu quả. Solidity thì không cần phải nhấn mạnh, Vyper là một ngôn ngữ cấp cao EVM được Vitalik thiết kế sau khi cải thiện một số khiếm khuyết trong Solidity, tuy nhiên nó không được cộng đồng áp dụng rộng rãi nên dần bị mai một trong giai đoạn lịch sử.
zkEVM là gì
Nói một cách đơn giản, zkEVM là một EVM sử dụng công nghệ chứng minh tính hợp lệ/bằng chứng không kiến thức, để quy trình thực thi của EVM có thể được xác minh hiệu quả hơn và với chi phí thấp thông qua bằng chứng không kiến thức/bằng chứng tính hợp lệ mà không yêu cầu tất cả các trình xác minh thực hiện ra quá trình thực thi của EVM.
Có rất nhiều sản phẩm zkEVM trên thị trường và đường đua đang rất hot. Những người chơi chính bao gồm Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (trước đây là Polygon Hermez), v.v., được chia thành 5 loại (1, 2 , 2.5, 3, 4) của Vitalik. Nội dung cụ thể có thể được xem trên blog của Vitalik.
Tại sao cần có zkEVM
Câu hỏi này cần được nhìn từ hai khía cạnh.
Các lần thử zk Rollup ban đầu chỉ có thể đạt được các chức năng giao dịch và chuyển giao tương đối đơn giản, chẳng hạn như zkSync Lite, Loopring, v.v. Nhưng một khi biển quá khó, người ta quen sử dụng EVM Turing-Complete trên Ethereum, khi không thể tạo các ứng dụng đa dạng thông qua lập trình, người ta bắt đầu kêu gọi máy ảo trên L2. Nhu cầu viết hợp đồng thông minh là một.
Vì một số thiết kế trong EVM không thân thiện với việc tạo bằng chứng xác thực/bằng chứng không có kiến thức, nên một số người chơi chọn sử dụng bộ hướng dẫn thân thiện với bằng chứng xác thực/bằng chứng không có kiến thức ở lớp dưới cùng, chẳng hạn như Hội đồng Cairo của Starknet và zkSync của Hướng dẫn kẽm Nhưng đồng thời, mọi người đều không muốn từ bỏ hệ sinh thái người dùng khổng lồ của EVM, vì vậy họ chọn tương thích với EVM ở lớp trên, đó là loại 3 và 4 zkEVM. Một số người chơi vẫn khăng khăng sử dụng Opcode của tập lệnh EVM truyền thống và tập trung vào việc tạo ra các bằng chứng hiệu quả hơn cho Opcode, đó là zkEVM Loại 1 và Loại 2. Hệ sinh thái khổng lồ của EVM được chia thành hai.
Kakarot: Máy ảo trên máy ảo?
Tại sao máy ảo khác có thể được thực hiện trên máy ảo? Điều này là phổ biến đối với những người sử dụng máy tính, nhưng nó có thể không quá rõ ràng đối với những người dùng không hiểu về máy tính. Thực ra rất dễ hiểu, điều này giống như các khối xây dựng, chỉ cần tầng dưới đủ mạnh (với môi trường thực thi hoàn chỉnh Turing), các khối xây dựng có thể được xếp chồng lên tầng trên mà không có giới hạn. Nhưng cho dù có bao nhiêu lớp được xây dựng, thì phần thực thi cuối cùng vẫn phải được xử lý bởi phần cứng vật lý cấp thấp nhất, vì vậy việc tăng số lượng lớp sẽ dẫn đến giảm hiệu quả. Đồng thời, do các thiết kế khác nhau của các khối xây dựng khác nhau (thiết kế máy ảo khác nhau), khi các khối xây dựng được xây dựng càng cao, khả năng khối xây dựng bị sập (lỗi chạy) càng lớn, đòi hỏi cấp độ càng cao. của hỗ trợ kỹ thuật.
Kakarot là một EVM được triển khai bằng ngôn ngữ Cairo trên Starknet. Nó sử dụng hợp đồng thông minh Cairo để mô phỏng ngăn xếp, bộ nhớ, thực thi, v.v. trong EVM. Nói một cách tương đối, triển khai EVM không khó, ngoài EVM được viết bằng Golang trong Go-Ethereum có tỷ lệ sử dụng cao nhất, còn có các EVM hiện có được viết bằng Python, Java, Java và Rust.
Khó khăn kỹ thuật của Kakarot zkEVM là giao thức tồn tại dưới dạng hợp đồng trên chuỗi Starknet, điều này dẫn đến hai vấn đề chính.
Giao thức kakarot bao gồm năm thành phần chính (bốn thành phần được viết trong tài liệu GitHub, không bao gồm EOA, bài viết này đã được điều chỉnh để thuận tiện cho người đọc):
Theo phản hồi từ Giám đốc điều hành kakarot Elias Tazartes, trong phiên bản mới nhất của nhóm, thiết kế của Account Resister đã bị loại bỏ và thay vào đó, ánh xạ từ địa chỉ Starknet 31 byte sang địa chỉ EVM 20 bit được sử dụng trực tiếp để lưu mối quan hệ tương ứng . Trong tương lai, để cải thiện khả năng tương tác và cho phép các hợp đồng Starknet đăng ký địa chỉ EVM của riêng họ, thiết kế Đăng ký tài khoản có thể được sử dụng lại.
Tương thích với EVM trên Starknet: Sự khác biệt giữa Warp và kakarot là gì
Theo loại zkEVM do Vitalik xác định, Warp thuộc Loại-4, trong khi kakarot hiện thuộc Loại-2.5.
Warp là một trình dịch chuyển mã Solidity sang mã Cairo, lý do tại sao nó không được gọi là trình biên dịch có lẽ vì Cairo đầu ra vẫn là một ngôn ngữ cấp cao. Thông qua Warp, các nhà phát triển Solidity có thể duy trì trạng thái phát triển ban đầu mà không cần phải học ngôn ngữ Cairo mới. Đối với nhiều bên dự án, Warp hạ thấp ngưỡng tham gia hệ sinh thái Starknet và không cần sử dụng Cairo để viết lại một lượng lớn mã kỹ thuật.
Mặc dù ý tưởng dịch đơn giản nhưng khả năng tương thích cũng kém nhất, một số mã Solidity không thể dịch tốt sang Cairo, logic mã liên quan đến hệ thống tài khoản, thuật toán mật mã, v.v. cần sửa đổi mã nguồn để hoàn tất quá trình di chuyển. Bạn có thể xem tài liệu về các tính năng cụ thể không được hỗ trợ. Ví dụ: nhiều dự án sẽ phân biệt logic thực thi của tài khoản EOA và tài khoản hợp đồng, nhưng tất cả các tài khoản trong Starknet đều là tài khoản hợp đồng và phần mã này cần được sửa đổi trước khi dịch.
Warp tương thích ở cấp độ ngôn ngữ cấp cao và kakarot tương thích ở cấp độ EVM.
Việc viết lại hoàn toàn EVM và triển khai từng cái một Opcode và Pre-compile cho phép kakarot có khả năng tương thích gốc cao hơn. Xét cho cùng, việc thực thi trong cùng một máy ảo (EVM) luôn tương thích hơn so với thực thi trong một máy ảo khác (Cairo VM). Cơ quan đăng ký tài khoản và Cơ quan đăng ký Blockhash khéo léo che chắn sự khác biệt trong các hệ thống khác nhau và giảm thiểu trở ngại trong quá trình di chuyển của người dùng.
Nhóm Kakarot
Cảm ơn nhóm kakarot vì những nhận xét quý giá của họ về bài viết này, đặc biệt là Elias Tazartes. Cảm ơn ngài!