Skip to content

Contract Addresses

Mainnet — Avalanche C-Chain (43114)

Version 10c (latest)

Protocol version 0x10c1, deployed as version 10.2.0.

ContractAliasAddressVersion
XPowermoe0xa2Ecb675Ad2A2E199c98F5206C5C3fFE5a8D575310c
XPowerNftnft0x659875b46B2f8ed94f1A40a8F2D2A92a2eBCaedf10c
APowerNftppt0x7352CbB7264Aaf9CA076fb5384839Af995b9B5FE10c
APowersov0x96178A1443039E806F8Ffd56dCE7A80f2161aaA210c
MoeTreasurymty0x398F6c2AC2daCaBd2F4776AF39c6fBeD8777984010c
NftTreasurynty0xF113c3fb6b557d84B5A96E19b7918ba8fc21a74110c

Version 10b

ContractAliasAddressVersion
XPowermoe0xecCB564C288010eC3F437F2d9A7a836BD30DA16510b
XPowerNftnft0xfB220D8A1Dea451B6613Acb3EE9836211c1c58eB10b
APowerNftppt0x4b9A3F6048852fe1E78aFab8C76fa6C91dc9c6B410b
APowersov0xbde79B2a371eA759a85901e4a185D03399C089C110b
MoeTreasurymty0xc860D6446DB7E9241419ca7106B3053e1e06858010b
NftTreasurynty0xC8c2229cA0A3c08b3cf50b9F0f973DD1474D3d2010b

Version 10a

ContractAliasAddressVersion
XPowermoe0x8f0A35CaBD10E830C8c10629CF539c2e0f1f348110a
XPowerNftnft0x2a693BC2C1F25168b4E9640185Ca24184c2a796910a
APowerNftppt0x6189CFd507Bbd11897bB061254873FC03e2a1fda10a
APowersov0xf3dd4E0a1dB7C5DCbf3b225698Cb6A916AEB24d910a
MoeTreasurymty0x6e6682b9001E13A8665b8C8D6a57391d88F0759f10a
NftTreasurynty0x2d370cA0B391D77dE09C7C3E1eDe327718ef16d910a

Earlier Versions (v9.x selected)

Earlier version contracts (01a through 09c) exist for migration purposes. Each version has entries in the .env.mainnet file with keys like XPOW_MOE_09c, XPOW_NFT_09c, etc. The full history spans:

Version RangeTypeContract Count
01a–09cmoe (XPower)24 contracts
02a–09cnft (XPowerNft)24 contracts
04a–09cppt (APowerNft)18 contracts
05a–09csov (APower)15 contracts
04a–09cmty (MoeTreasury)18 contracts
04a–09cnty (NftTreasury)18 contracts

For full historical addresses, see the .env.mainnet file in the xpower-fy.git repository.


Testnet — Avalanche Fuji (43113)

Version 10c (latest)

ContractAliasAddressVersion
XPowermoe0x26C02a01a6a26BeAcbE2993BcFdAdC7b29267DE610c
XPowerNftnft0xEF14Ac9D1Eb9fdFbfBF73460bA04eCC58dbda7b710c
APowerNftppt0x6dC31A9De98Bd5270130Ed98294cb6b8C01DBcF510c
APowersov0xEA1970aBbE7a2B2A8d519b24fa0fb7f5fc0f770510c
MoeTreasurymty0x22bB569597C63ec60F098fe6D27E4F437DA96FB110c
NftTreasurynty0x00Aaf7ec13DbeB91B6f103045972bD4cDAAE9E4A10c

Version 10b

ContractAliasAddressVersion
XPowermoe0x9aB4c0A3E53F48f6c949a0E6106819bFC40c45f010b
XPowerNftnft0x62f833DbEa15BefF71F17aED923ae8D217c507ed10b
APowerNftppt0x0b6573e9f0DE7A81Df8eF713D7A26e779c5321E510b
APowersov0x0A2cD167e3F60f33b255e8fA427cF1F6e63fB12910b
MoeTreasurymty0xb5e0603f993a32C2419Bb5d09dD18a184Da14f7210b
NftTreasurynty0x3Af55bA649A3a2Fc0ef3BD8Bf115137C3fb033a210b

Version 10a

ContractAliasAddressVersion
XPowermoe0xa57C5a81Aa3A1A6d13c3D9a0a0fB68d7BE049E7e10a
XPowerNftnft0xC0BB792CC0509c3a0516388EFD4026d778bdBf0d10a
APowerNftppt0x3B89488B7bd797eece629bbc7e660B6be3EEdB0310a
APowersov0xbecD759dd9C2192067c6e798a0eEc2D5111DEf5610a
MoeTreasurymty0xdB82c51380bC013c2A3CE9bDedF5216Db06df7f910a
NftTreasurynty0xEAc90a1070E60E09B642c12f38dF774f340137D610a

Version Schema

Versions follow the pattern {major}{minor}{patch} where:

  • Major (10): Protocol generation (v10.x = Foundry-based, v9.x = Hardhat-based)
  • Minor (a, b, c): Deployment iteration within the same protocol
  • Patch (1): Protocol sub-version encoded in Constant.VERSION = 0x10c1

The c suffix indicates the third (and typically final) deployment for a version. Migration from earlier versions (e.g., 10a → 10b → 10c) is supported via the Migratable/NftMigratable base contracts with a ~4-year deadline (126,230,400 seconds).

What Changed Between Versions

VersionProtocolKey Changes
08a–09c0x1000v9.x (Hardhat) — legacy contracts
10a0x10a0v10.x (Foundry) — initial rewrite, transient storage, Banq system
10b0x10b0Parameter refinements, migration path hardening
10c0x10c1Current: polynomial rates, integrator mechanism, RPP guardrails

Selected v9.x Addresses for Migration (Mainnet)

These are the most recent v9.x contracts that users migrate from:

ContractAliasVersion 09c Address
XPowermoe0x735D8f3B6A5d2c96D0405230c50Eaf96794FbB88
XPowerNftnft0x871832d8c04deCE15E87F1b04aCCA01DC1066Ec7
APowerNftppt0x0d7b30580A94E293BD29A9d33798617a384fCB0C
APowersov0x7F9C841FEAdDdB4bdBB2A161cA40bEbc4F215a9A
MoeTreasurymty0x6C48c9d2A3eD1153DB507Dc1D6e1ed0FCb39f909
NftTreasurynty0x2a7faFdAb55458429EbB92f59598ED5762754Ab4

Network Details

PropertyMainnet (C-Chain)Testnet (Fuji)
Chain ID4311443113
RPC URLhttps://api.avax.network/ext/bc/C/rpchttps://api.avax-test.network/ext/bc/C/rpc
Explorersnowtrace.iotestnet.snowtrace.io
CurrencyAVAXAVAX
Block Time~2s~2s
Gas TokenAVAX (18 decimals)AVAX (18 decimals)

Reading Addresses Programmatically

From .env Files (Foundry Deployment)

bash
# Load mainnet addresses
source xpower-fy.git/.env.mainnet

echo "XPower 10c: $XPOW_MOE_10c"
echo "XPowerNft 10c: $XPOW_NFT_10c"
echo "APower 10c: $APOW_SOV_10c"

Latest Address per Contract (TypeScript)

typescript
const CONTRACTS = {
  mainnet: {
    moe: "0xa2Ecb675Ad2A2E199c98F5206C5C3fFE5a8D5753",
    nft: "0x659875b46B2f8ed94f1A40a8F2D2A92a2eBCaedf",
    ppt: "0x7352CbB7264Aaf9CA076fb5384839Af995b9B5FE",
    sov: "0x96178A1443039E806F8Ffd56dCE7A80f2161aaA2",
    mty: "0x398F6c2AC2daCaBd2F4776AF39c6fBeD87779840",
    nty: "0xF113c3fb6b557d84B5A96E19b7918ba8fc21a741",
  },
  testnet: {
    moe: "0x26C02a01a6a26BeAcbE2993BcFdAdC7b29267DE6",
    nft: "0xEF14Ac9D1Eb9fdFbfBF73460bA04eCC58dbda7b7",
    ppt: "0x6dC31A9De98Bd5270130Ed98294cb6b8C01DBcF5",
    sov: "0xEA1970aBbE7a2B2A8d519b24fa0fb7f5fc0f7705",
    mty: "0x22bB569597C63ec60F098fe6D27E4F437DA96FB1",
    nty: "0x00Aaf7ec13DbeB91B6f103045972bD4cDAAE9E4A",
  },
} as const;

// Verify version on-chain
// All contracts expose: uint256 public constant VERSION = Constant.VERSION;
// Expected: 0x10c1 (decimal: 4289)

On-Chain Version Check

solidity
// Verify you're interacting with the correct version
uint256 version = XPower(moeAddress).VERSION();
require(version == 0x10c1, "Wrong contract version");

NFT Metadata URIs

ContractURI
XPowerNft (XPOWNFT)https://ipfs.xpowermine.com/ipfs/QmYLeF7MaWkb5mvvLLxsokEw8TrCvgX9ENgkVYKV9YHsxa/320x427/{id}.json
APowerNft (APOWNFT)https://ipfs.xpowermine.com/ipfs/QmUgpAqFDfqxPVmarPG1X2G96onUFSvK9bZBimZXXy6FFq/320x427/{id}.json

Verification

All contract source code is verified on Snowtrace. ABI and source can be accessed via:

  • Snowtrace API: https://api.snowtrace.io/api?module=contract&action=getabi&address=<ADDRESS>
  • Foundry build output: out/<ContractName>.sol/<ContractName>.json in xpower-fy.git/
  • GitHub: https://github.com/blackhan-software/xpower-fy/tree/main/source/contracts

Deployment Order

All versions follow the same deployment sequence:

  1. moe — XPower (ERC20)
  2. nft — XPowerNft (ERC1155)
  3. ppt — APowerNft (ERC1155)
  4. sov — APower (ERC20)
  5. mty — MoeTreasury
  6. nty — NftTreasury
  7. Role transfer scripts (*.role.s.sol)

Post-deployment, ownership is transferred: mty owner → nty; sov owner → mty; ppt owner → nty. This is done in constructors where possible or via role scripts.