ONINO Docs
  • Introduction to ONINO
    • Welcome to ONINO
    • The Tokenization Opportunity
    • ONINO Blockchain
  • ONINO Tokenization Platform
  • ONINO Developer Platform
  • Tokenomics
    • Incentive and Mechanism Design
    • Token Distribution & Emission Schedules
  • For Developers
    • Building on ONINO
    • Mainnet Configuration
    • Testnet Configuration
    • Solidity Compiler Versions
    • Nodes & Validators
      • For Validators & Node Operators
      • Validator Ramp-Up Phases
    • Developer Platform Overview
      • Quickstart Guide
      • Overview
      • Templates
      • Brainstorming AI
      • Code Generator AI
      • Contract Import
      • Development Studio
      • Deployment Suite
      • Smart Contract API
      • Integration AI
      • Contract Manager
      • How-To: Using AWS KMS wallets with the ONINO Smart Contract API
      • Smart Contract Templates
        • Template Overview
        • Creating Tokens
          • Token with Fixed Supply
          • Token with Mintable Supply
        • Creating NFTs
          • Standard NFT
          • NFT with fixed Supply
        • Create your Custom Project
  • For Users
    • Welcome to ONINO
    • Staking Guide
    • Token Upgrade Process
    • Getting Started with ONINO
      • How to add the ONINO Network to your Wallet
      • How to create a Wallet
    • The ONINO Tokenization Platform
      • Walkthrough & Guide
  • FAQs
    • General Blockchain FAQs
    • What is tokenization?
    • ONINO General FAQs
    • Learn more about blockchain
      • How to use different blockchain networks?
      • What is the Ethereum Virtual Machine (EVM)?
      • What is a Smart Contract?
    • What are Crypto Tokens & Coins
Powered by GitBook
On this page

Was this helpful?

  1. For Developers

Solidity Compiler Versions

PreviousTestnet ConfigurationNextNodes & Validators

Last updated 1 month ago

Was this helpful?

When developing for ONINO, one important consideration is the EVM version compatibility of the Solidity compiler. The ONINO chain’s EVM does not yet support the new PUSH0 opcode introduced in Ethereum’s Shanghai upgrade. In Solidity 0.8.20 and above, the compiler by default targets the Shanghai EVM, which means it may produce bytecode containing the PUSH0 instruction. ONINO’s current EVM (as of 2025) is based on a pre-Shanghai fork, so it cannot execute contracts containing PUSH0().

What is PUSH0? PUSH0 is a new Ethereum Virtual Machine opcode (introduced via EIP-3855) that pushes the constant value 0 onto the stack. This opcode was added to make smart contract bytecode more efficient – previously, pushing a zero value required a PUSH1 0x00which uses slightly more gas and bytecode space. By having a dedicated instruction for zero, contracts can be a bit smaller and cheaper to deploy and run. However, because this opcode was only added in the Shanghai upgrade, networks that haven’t adopted Shanghai (like ONINO, among many others) will not recognize it.

Recommendation: Until ONINO implements support for Shanghai opcodes, developers should compile their smart contracts with the Paris EVM version target (the last Ethereum version before Shanghai) or use Solidity 0.8.19 or lower. In practice, this means adjusting your compiler settings. For example, in Hardhat you can set:

solidity: {
  version: "0.8.19",
  settings: { optimizer: {...}, evmVersion: "paris" }
}

This ensures the generated bytecode stays compatible with ONINO’s current EVM. If you are using Solidity 0.8.20+ explicitly, configure the compiler’s evmVersion to "paris" (which corresponds to the Merge upgrade, pre-Shanghai). This way, no PUSH0 opcodes will appear in your contract bytecode, and your deployments and transactions will run smoothly on ONINO.

In summary, as a developer on ONINO you have an Ethereum-like environment: you can use familiar tools (ethers.js, web3.js, wagmi, Hardhat, etc.), the network configuration (RPC, chain IDs) is straightforward for Mainnet and Testnet, and the main thing to watch out for is the current lack of Shanghai features like PUSH0. By using the appropriate compiler settings and network parameters detailed above, you can build, test, and deploy on ONINO with confidence. Happy building on ONINO!

it would result in an invalid opcode error