{NEO_DEVPACK_SOLIDITY}Compile Solidity to Neo N3
A statically-typed curly-braces programming language compiler designed for developing smart contracts that run on the Neo N3 blockchain.
A statically-typed curly-braces programming language compiler designed for developing smart contracts that run on the Neo N3 blockchain.

pragma contract function modifier event struct enum require addressVersion 0.18.0 is the current compiler line reflected by the checked-in Rust package metadata. It continues the stability work with expanded runtime/property coverage, stricter manifest and permission handling, Standard JSON support, and clearer diagnostics for Neo-specific behavior such as blocked delegatecall/callcode and source-compatible new Contract(...) lowering. See the support matrix and fuzz guide for the current validation surface.
Our release cycle prioritizes both stability for production and rapid innovation for developers transitioning from EVM to Neo N3. We regularly ship non-breaking minor releases with enhanced mappings, deeper standard support (like NEP-17/NEP-11), and expanded diagnostic intelligence.
Every meaningful Ethereum standard, mapped to its Neo N3 counterpart. 129 mirror pages across five categories with side-by-side Solidity and Neo C# implementations; 47 ERC ↔ Neo pairs deployed live on TestNet with assertion results.
NEP-17 / NEP-11 / NEP-24 — fungible, non-fungible, multi-token, royalty, RWA, SBT, multi-privilege.
Explore tokens →EIP-712, ERC-1271, ERC-2612 (permit), ERC-4337 (account abstraction), SIWE, paymasters.
Explore auth →EIP-165, ERC-1167 (clones), ERC-1967 (proxies), ERC-2535 (diamond), ERC-2771 (meta-tx), multicall.
Explore infra →ERC-4626 vaults (sync, async, cancellable), ERC-3156 flash loans, ERC-5805 governance, bonds.
Explore DeFi →EIP-1559, EIP-4844, transaction-format EIPs, opcode-only EIPs — what Neo already does natively.
Explore protocol →Live deploy status, EIP status, Neo mapping, and gap report for every catalog entry.
View matrix →Neo DevPack for Solidity is an open-source project. We welcome developers, auditors, and technical writers to shape the future of smart contract development on Neo N3.
Found a bug or an EVM feature that doesn't map correctly? Let us know on GitHub so we can fix it.
Report an issue →Help us write tutorials, translate pages, or expand our EVM-to-NeoVM mapping guides.
Edit Docs →Looking for a place to start? Check our repository for issues tagged with good first issue.
Propose new intrinsics or discuss how EVM paradigms should translate to NeoVM.
Join Discussions →Try Neo DevPack for Solidity for yourself. See how standard Ethereum paradigms translate effortlessly to Neo N3 artifacts.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.34;
import {Runtime} from "@neo/Runtime.sol";
contract SimpleStorage {
uint256 private storedData;
address public owner;
constructor() {
owner = Runtime.getCallingScriptHash();
}
function set(uint256 x) public {
require(Runtime.checkWitness(owner), "Unauthorized");
storedData = x;
}
function get() public view returns (uint256) {
return storedData;
}
}<div class="output-content">
<strong>Compiler version:</strong> neo-solc 0.18.0<br/><br/>
✅ Compilation successful.<br/><br/>
<strong>Methods:</strong><br/>
- _deploy(any, bool)<br/>
- set(uint256)<br/>
- get() (safe)<br/><br/>
<strong>Permissions:</strong> Restricted (No wildcards)
</div>
No upcoming events currently scheduled. Check back later!