Jimmy Liao, a core developer and founder of R3E Network, has revealed that he is working on a Neo Solidity Compiler, a tool that compiles Solidity 0.8.x smart contracts into Neo N3 bytecode. The project allows developers to write contracts in Solidity and deploy them on the Neo N3 blockchain.
What is Neo-solidity?
The Neo Solidity Compiler translates Solidity smart contracts into Neo N3-compatible bytecode and manifest files. The compiler is written primarily in Rust and includes testing infrastructure for both basic and advanced Solidity features. The project documentation states that the goal is to enable Ethereum developers to build on Neo N3 using their existing Solidity knowledge, rather than learning Neo’s native smart contract languages.
The compiler accepts Solidity 0.8.x source code and runs Neo N3s .nef bytecode files and .manifest.json files. It detects ERC token standard patterns (ERC-20, ERC-721) in Solidity contracts and maps them to Neo’s equivalent standards (NEP-17, NEP-11).
Developers can choose from four optimization levels (0-3) when putting together contracts. The tool works via a command-line interface and includes scaffolding for integration with Hardhat and Foundry, two development frameworks commonly used in Ethereum development.
Neo Solidity differs from the Neo Neo Solidity, on the other hand, compiles Solidity’s source code into Neo N3-compatible bytecode, allowing contracts to be deployed natively on the main Neo N3 network rather than on a separate EVM-compatible chain.
Technical architecture
The compilation process converts the Solidity source code to an intermediate Yul representation and then performs semantic analysis for type checking and validation. A multi-level optimizer applies Neo-specific transformations before the code generator produces NeoVM bytecode and manifest files.
The compiler includes a runtime library that provides memory management, save operations, ABI encryption, and cryptographic functions designed to emulate EVM behavior within Neo’s execution environment.
A detailed technical design specification is available in the project repository for developers interested in the compiler’s internal architecture and implementation decisions.
Example contracts
The repository contains several sample contracts that demonstrate the compiler’s functionality. WGAS is a packaged GAS token implementation that follows the WETH9 pattern and is NEP-17 compliant. FlashLoan implements an Aave V2 style flash loan pool with fees of 0.09%. SimpleAMM is an automated market maker with constant products, based on the design of Uniswap V2.
Additional examples include TokenVesting, which offers linear vesting schedules similar to OpenZeppelin’s VestingWallet; SimpleLending, which customizes the mechanics of Compound’s single-asset lending pool; and SimpleDAO, which implements MolochDAO-style governance with staking and proposals.
According to the project documentation, all sample contracts have been implemented and tested with state-changing operations on Neo Express, Neo’s local development environment.
Development status
The project documentation shows that the core compiler is approximately 85% complete and is described as production ready. The runtime library is listed at 75% completion, developer tools at 70% with a fully functional CLI, and documentation at 80% completion.
The project documentation lists several current limitations. Function overloading is partially supported: functions can be overloaded with different argument numbers using signature mangled names, but overloading with the same number of arguments is rejected. EVM calling options such as {gas: ...} And {value: 0} are accepted but ignored; Non-zero value transfers require the use of NEP-17 native calls. Gas accounting is accessed via per-syscall gas hints, with reimbursements at the opcode level being approximately 80% accurate.
The documentation recommends TestNet validation before MainNet deployment.
The technical design specification can be found here, while the pull project repository can be found below:
https://github.com/r3e-network/neo-solidity/tree/main
