Jimmy Liao, a core developer and founder of R3E Network, has revealed he is working on a Neo Solidity Compiler, a tool that compiles Solidity 0.8.x smart contracts to Neo N3 bytecode. The project allows developers to write contracts in Solidity and deploy them to 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 its 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 outputs Neo N3’s .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 compiling contracts. The tool operates through 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 X project in that Neo X is an EVM sidechain where developers deploy Solidity contracts directly to that network without modification. In contrast, Neo Solidity compiles Solidity source code into Neo N3-compatible bytecode, allowing contracts to be deployed natively on the Neo N3 main network rather than a separate EVM-compatible chain.
Technical architecture
The compilation process converts Solidity source code to Yul intermediate representation, 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, storage operations, ABI encoding, and cryptographic functions designed to match 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 includes several example contracts that demonstrate the compiler’s functionality. WGAS is a wrapped GAS token implementation that follows the WETH9 pattern and complies with NEP-17. FlashLoan implements an Aave V2-style flash loan pool with 0.09% fees. SimpleAMM is a constant-product automated market maker based on Uniswap V2’s design.
Additional examples include TokenVesting, which provides linear vesting schedules similar to OpenZeppelin’s VestingWallet; SimpleLending, which adapts Compound’s single-asset lending pool mechanics; and SimpleDAO, which implements MolochDAO-style governance with staking and proposals.
According to the project documentation, all example contracts have been deployed and tested with state-changing operations on Neo Express, Neo’s local development environment.
Development status
The project documentation indicates the core compiler is approximately 85% complete and described as production-ready. The runtime library is listed at 75% completion, developer tooling 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 counts using signature-mangled names, but overloading with the same argument count is rejected. EVM call options like {gas: ...} and {value: 0} are accepted but ignored; non-zero value transfers require using NEP-17 native calls. Gas accounting is approximated through per-syscall gas hints, with opcode-level fees approximately 80% accurate.
The documentation recommends TestNet validation before MainNet deployment.
The technical design specification can be found at here, while the pull project repo can be found below:
https://github.com/r3e-network/neo-solidity/tree/main