Developing on PulseChain

PulseChain is an EVM-compatible Layer 1. Most Ethereum tooling works with small configuration changes.

Network configuration


# foundry.toml
[rpc_endpoints]
pulsechain = "https://rpc-pulsechain.g4mm4.io"
pulsechain_testnet = "https://rpc-testnet-pulsechain.g4mm4.io"

[profile.default]
solc = "0.8.24"
evm_version = "shanghai"  # PulseChain supports Shanghai, not Cancun
optimizer = true
optimizer_runs = 200
      

Hardhat configuration


// hardhat.config.js
module.exports = {
  solidity: {
    version: "0.8.24",
    settings: {
      evmVersion: "shanghai",
      optimizer: { enabled: true, runs: 200 },
    },
  },
  networks: {
    pulsechain: {
      url: "https://rpc-pulsechain.g4mm4.io",
      chainId: 369,
    },
    pulsechainTestnet: {
      url: "https://rpc-testnet-pulsechain.g4mm4.io",
      chainId: 943,
    },
  },
};
      

Why Shanghai matters

PulseChain currently supports the Shanghai hardfork. Compiling with a newer EVM target (for example, cancun) can produce bytecode that does not match what is deployed, causing verification to fail. It can also introduce opcodes or behaviors that are not yet active on PulseChain. Always set evm_version = "shanghai" when targeting PulseChain mainnet or testnet.

How to verify a contract on PulseChain

  1. Deploy your contract on PulseChain mainnet (chain 369) or testnet v4 (chain 943).
  2. Copy the deployed contract address.
  3. Go to Verify Contract and select your verification method.
  4. Match the compiler version and EVM version used during compilation. PulseChain currently uses shanghai.
  5. Submit and wait for Sourcify to confirm the match.

How to read a verified contract

Use the Verified Contracts page or search for an address. The contract page shows source code, ABI, and read/write functions.

Proxy patterns

ContractLab detects common proxy standards automatically: EIP-1167 minimal proxies, EIP-1967 transparent proxies, and EIP-1822 UUPS proxies.

PulseChain-specific gotchas