Jimmy Liao, một nhà phát triển cốt lõi và người sáng lập của R3E Network, đã tiết lộ rằng anh ấy đang làm việc trên Neo Solidity Compiler, một công cụ biên dịch các hợp đồng thông minh Solidity 0.8.x thành mã bytecode Neo N3. Dự án này cho phép các nhà phát triển viết hợp đồng bằng Solidity và triển khai chúng lên blockchain Neo N3.
Neo Solidity là gì?
Trình biên dịch Neo Solidity dịch các hợp đồng thông minh Solidity thành mã bytecode và tệp manifest tương thích với Neo N3. Trình biên dịch được viết chủ yếu bằng Rust và bao gồm cơ sở hạ tầng kiểm thử cho cả các tính năng Solidity cơ bản và nâng cao. Tài liệu dự án nêu rõ mục tiêu là cho phép các nhà phát triển Ethereum xây dựng trên Neo N3 bằng kiến thức Solidity hiện có của họ, thay vì phải học ngôn ngữ hợp đồng thông minh gốc của Neo.
Trình biên dịch chấp nhận mã nguồn Solidity 0.8.x và xuất ra các tệp bytecode .nef và tệp .manifest.json của Neo N3. Nó phát hiện các mẫu Tiêu chuẩn token Yêu cầu bình luận Ethereum (ERC) ( ERC-20, Yêu cầu bình luận Ethereum (ERC)-721) trong các hợp đồng Solidity và ánh xạ chúng sang các tiêu chuẩn tương đương của Neo (NEP-17, NEP-11).
Các nhà phát triển có thể lựa chọn từ bốn cấp độ tối ưu hóa (0-3) khi biên dịch hợp đồng. Công cụ này hoạt động thông qua giao diện dòng lệnh và bao gồm khung sườn để tích hợp với Hardhat và Foundry, hai khung phát triển thường được sử dụng trong phát triển Ethereum.
Neo Solidity khác với dự án Neo X ở chỗ Neo X là một sidechain Máy ảo Ethereum (EVM) , nơi các nhà phát triển triển khai các hợp đồng Solidity trực tiếp lên mạng đó mà không cần sửa đổi. Ngược lại, Neo Solidity biên dịch mã nguồn Solidity thành mã bytecode tương thích với Neo N3, cho phép các hợp đồng được triển khai nguyên bản trên mạng chính Neo N3 thay vì một chuỗi EVM riêng biệt.
Kiến trúc kỹ thuật
Quá trình biên dịch chuyển đổi mã nguồn Solidity thành dạng biểu diễn trung gian Yul, sau đó thực hiện phân tích ngữ nghĩa để Type Checking và xác thực. Trình tối ưu hóa đa cấp áp dụng các phép biến đổi dành riêng cho Neo trước khi trình tạo mã tạo ra mã bytecode NeoVM và các tệp kê khai.
Trình biên dịch bao gồm một thư viện thời gian chạy cung cấp các chức năng quản lý bộ nhớ, thao tác lưu trữ, mã hóa ABI và các chức năng mật mã được thiết kế để phù hợp với hành vi Máy ảo Ethereum (EVM) trong môi trường thực thi của Neo.
Bản đặc tả thiết kế kỹ thuật chi tiết có sẵn trong kho lưu trữ dự án dành cho các nhà phát triển quan tâm đến kiến trúc nội bộ và các quyết định triển khai của trình biên dịch.
Ví dụ về hợp đồng
Kho lưu trữ này bao gồm một số hợp đồng ví dụ minh họa chức năng của trình biên dịch. WGAS là một triển khai Token GAS được đóng gói tuân theo mô hình WETH9 và tuân thủ NEP-17. FlashLoan triển khai một nhóm Khoản vay nhanh kiểu AAVE V2 với phí 0,09%. SimpleAMM là một Công cụ tạo lập thị trường tự động sản phẩm cố định dựa trên thiết kế của Uniswap V2.
Các ví dụ khác bao gồm TokenVesting, cung cấp lịch trình phân bổ tuyến tính tương tự như VestingWallet của OpenZeppelin; SimpleLending, điều chỉnh cơ chế nhóm cho vay tài sản đơn lẻ của Compound; và SimpleDAO, triển khai quản trị theo kiểu MolochDAO với Staking và đề xuất.
Theo tài liệu dự án, tất cả các hợp đồng mẫu đã được triển khai và kiểm thử với các thao tác thay đổi trạng thái trên Neo Express, môi trường phát triển cục bộ của Neo.
Tình trạng phát triển
Tài liệu dự án cho thấy trình biên dịch lõi đã hoàn thành khoảng 85% và được mô tả là sẵn sàng cho môi trường sản xuất. Thư viện thời gian chạy được liệt kê ở mức hoàn thành 75%, công cụ dành cho nhà phát triển ở mức 70% với giao diện dòng lệnh (CLI) hoạt động đầy đủ, và tài liệu ở mức hoàn thành 80%.
Tài liệu dự án liệt kê một số hạn chế hiện tại. Việc nạp chồng hàm được hỗ trợ một phần: các hàm có thể được nạp chồng với số lượng tham số khác nhau bằng cách sử dụng tên được mã hóa chữ ký, nhưng việc nạp chồng với cùng số lượng tham số sẽ bị từ chối. Các tùy chọn gọi Máy ảo Ethereum (EVM) như {gas: ...} và {value: 0} được chấp nhận nhưng bị bỏ qua; việc truyền giá trị khác 0 yêu cầu sử dụng các lệnh gọi gốc NEP-17. Việc tính toán phí gas được ước tính thông qua các gợi ý gas cho mỗi lệnh gọi hệ thống, với độ chính xác khoảng 80% đối với phí ở cấp mã lệnh.
Tài liệu hướng dẫn khuyến nghị xác thực trên TestNet trước khi triển khai trên MainNet.
Bạn có thể tìm thấy thông số kỹ thuật thiết kế tại đây, trong khi kho lưu trữ dự án (pull project repo) có thể được tìm thấy bên dưới:
https://github.com/r3e-network/neo-solidity/tree/main





