Cơ bản
Giao ngay
Giao dịch tiền điện tử một cách tự do
Giao dịch ký quỹ
Tăng lợi nhuận của bạn với đòn bẩy
Chuyển đổi và Đầu tư định kỳ
0 Fees
Giao dịch bất kể khối lượng không mất phí không trượt giá
ETF
Sản phẩm ETF có thuộc tính đòn bẩy giao dịch giao ngay không cần vay không cháy tải khoản
Giao dịch trước giờ mở cửa
Giao dịch token mới trước niêm yết
Futures
Truy cập hàng trăm hợp đồng vĩnh cửu
TradFi
Vàng
Một nền tảng cho tài sản truyền thống
Quyền chọn
Hot
Giao dịch với các quyền chọn kiểu Châu Âu
Tài khoản hợp nhất
Tối đa hóa hiệu quả sử dụng vốn của bạn
Giao dịch demo
Giới thiệu về Giao dịch hợp đồng tương lai
Nắm vững kỹ năng giao dịch hợp đồng từ đầu
Sự kiện tương lai
Tham gia sự kiện để nhận phần thưởng
Giao dịch demo
Sử dụng tiền ảo để trải nghiệm giao dịch không rủi ro
Launch
CandyDrop
Sưu tập kẹo để kiếm airdrop
Launchpool
Thế chấp nhanh, kiếm token mới tiềm năng
HODLer Airdrop
Nắm giữ GT và nhận được airdrop lớn miễn phí
Launchpad
Đăng ký sớm dự án token lớn tiếp theo
Điểm Alpha
Giao dịch trên chuỗi và nhận airdrop
Điểm Futures
Kiếm điểm futures và nhận phần thưởng airdrop
Đầu tư
Simple Earn
Kiếm lãi từ các token nhàn rỗi
Đầu tư tự động
Đầu tư tự động một cách thường xuyên.
Sản phẩm tiền kép
Kiếm lợi nhuận từ biến động thị trường
Soft Staking
Kiếm phần thưởng với staking linh hoạt
Vay Crypto
0 Fees
Thế chấp một loại tiền điện tử để vay một loại khác
Trung tâm cho vay
Trung tâm cho vay một cửa
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!