Skip to main content
Paxeer Network is fully compatible with Ethereum smart contracts and tooling.

Overview

Deploy and interact with smart contracts on Paxeer Network. Fully EVM-compatible with Ethereum tooling including Hardhat, Foundry, and Remix.

Deployment Options

Deploy with Hardhat

Configure Hardhat to deploy on Paxeer Network.

1. Install dependencies

npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox

2. Configure hardhat.config.js

hardhat.config.js
require("@nomicfoundation/hardhat-toolbox");

module.exports = {
  solidity: "0.8.20",
  networks: {
    paxeer: {
      url: "https://public-rpc.paxeer.app/rpc",
      chainId: 229,
      accounts: [process.env.PRIVATE_KEY]
    }
  },
  etherscan: {
    apiKey: {
      paxeer: "YOUR_API_KEY"
    },
    customChains: [
      {
        network: "paxeer",
        chainId: 229,
        urls: {
          apiURL: "https://scan.paxeer.app/api",
          browserURL: "https://scan.paxeer.app"
        }
      }
    ]
  }
};

3. Deploy

npx hardhat run scripts/deploy.js --network paxeer
Store your private key in a .env file and never commit it to version control.

Example Contract

Here’s a simple ERC-20 token contract example:
MyToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}

Deploying the Example

scripts/deploy.js
const hre = require("hardhat");

async function main() {
  const MyToken = await hre.ethers.getContractFactory("MyToken");
  const token = await MyToken.deploy();
  await token.waitForDeployment();

  console.log("MyToken deployed to:", await token.getAddress());
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
Run the deployment:
npx hardhat run scripts/deploy.js --network paxeer

Verifying Contracts

After deployment, verify your contract on PaxeerScan for transparency and easier interaction.

Using Hardhat

npx hardhat verify --network paxeer DEPLOYED_CONTRACT_ADDRESS

Using Foundry

forge verify-contract \
  --chain-id 229 \
  --compiler-version v0.8.20 \
  DEPLOYED_CONTRACT_ADDRESS \
  src/MyToken.sol:MyToken \
  --etherscan-api-key YOUR_API_KEY

Interacting with Contracts

Using ethers.js

import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider(
  'https://public-rpc.paxeer.app/rpc'
);

const contract = new ethers.Contract(
  contractAddress,
  contractABI,
  provider
);

// Read contract data
const balance = await contract.balanceOf(address);

// Write contract data (requires signer)
const signer = await provider.getSigner();
const contractWithSigner = contract.connect(signer);
await contractWithSigner.transfer(recipientAddress, amount);

Using wagmi

import { useReadContract, useWriteContract } from 'wagmi';

// Read contract
const { data: balance } = useReadContract({
  address: '0x...',
  abi: tokenABI,
  functionName: 'balanceOf',
  args: [userAddress],
});

// Write contract
const { writeContract } = useWriteContract();

function transfer() {
  writeContract({
    address: '0x...',
    abi: tokenABI,
    functionName: 'transfer',
    args: [recipientAddress, amount],
  });
}

Best Practices

  • Use appropriate data types (uint256 vs uint8)
  • Minimize storage writes
  • Use events for logging instead of storage
  • Batch operations when possible
  • Use OpenZeppelin contracts for standards
  • Implement access control
  • Validate all inputs
  • Test thoroughly before mainnet deployment
  • Consider getting an audit for critical contracts
  • Write comprehensive unit tests
  • Test on testnet before mainnet
  • Test edge cases and failure scenarios
  • Use fuzzing for complex contracts

Network Information

ParameterValue
Network NamePaxeer Network
RPC URLhttps://public-rpc.paxeer.app/rpc
Chain ID229
CurrencyPAX
Block Explorerhttps://scan.paxeer.app

Next Steps