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