Skip to main content

Contract Addresses

Canonical on-chain addresses for every Catpound vault and the supporting contracts they interact with. Verify any contract on-chain via the OPNet JSON-RPC method btc_getCode.

OPNet uses two parallel address encodings — bech32m (starts with op1 on mainnet, opt1 on testnet) and 0x-prefixed hex (32-byte ML-DSA key hash). Both refer to the same contract. Wallets, explorers, and the Catpound UI handle the translation.

Mainnet

Vaults

VaultBech32 addressHex address
cpMOTOop1sqz2tfud8mg0fqy3sx2kxezsarzqm8mx2rs6rmlc00x88a647a8989a0bf3ab9f91459fd04771fb9678efd7ac4359c33ff48759877ee6
PILLop1sqz2jya5t800s0k9fcr8zd2v4a2h2usgwt5phq9t00x5cc490a4c20b3abf85f7f82db725692e6a675a4e7a388bcfd726267e74c0fd9c
MCHADop1sqqggx47yzjdzuc98xv0tu2lv2dtke0g4ncs6xnvx0xb39d8eefa7dbfaa109d34c7b3a98424903d5dd61d8b75c4b899e8747ee80828b
OrangePill MOTOop1sqq5mn9p6ma3ykmpncpaj04snks9dpefxrgpj7mem0x6635ebefa2411b983c539ede7614575e304331f22b8e680bc0b78af1a5bdcfc8
OrangePill MOTO/PILL LPop1sqz6z6m6yq2j4lt634emj0td22glzu94vdvafw5540x8486406d47d40ce10af837ffaf63b14f42810ac2d2e66a117156974ceab6f2ff

Underlying tokens

TokenHex addressDecimals
MOTO0xc3d18f9d7db3f26ed107a9f4a4c65eef14c1ca73db5684ef9789fdd4fbb3ea9a18
PILL0xc6c3674b1c6c4ca3d4b3652d1d6fc2b197f45c4ad1eda90d37952472719d1c0518
MCHAD0x8d325ab5516f23dce15d650f58a160a2c1c2515bda3f0212ca0b8b2b5705b4ab8
MOTO/PILL LP0xf8bf27905acd0d440048d78c1512b468d3139495f6e72c14733813a06530203118

Supporting infrastructure

ContractHex address
MotoChef0xab99e31ebb30b8e596d5be1bd1e501ee8e7b7e5ec9dc7ee880f4937b0c929dcb
Catpound NFTop1sqqfa70lnq5ysufna060pp02uaurxslpq05kfp2pw

Testnet (OPNet Testnet — bech32 HRP opt)

VaultBech32 address
cpMOTOopt1sqplm4d7sh08vllp99fmmsytcn264uuznuu2a9cqr
PILLopt1sqphgq2zjumvsrstqtfsncgmhfp97zdy43yycmely
MCHADopt1sqzqxhc9q0f3rkjjdhfjccanvvyf4gae8scnm3slg
OrangePill MOTOopt1sqqftzu0ykfmzeksx720rklxcylew5wrpgvg6uv7n
OrangePill MOTO/PILL LPopt1sqzkn5nvcuhqg3057a32h9rz0rq73cv0cwgfpgfhn
Catpound NFTopt1sqz853ql5jnh58a957hdjw00x3a8lq3clhg2mzuen
SupportingHex
MOTO0xfd4473840751d58d9f8b73bdd57d6c5260453d5518bd7cd02d0a4cf3df9bf4dd
MotoChef0x831ca1f8ebcc1925be9aa3a22fd3c5c4bf7d03a86c66c39194fef698acb886ae
MotoSwap Router0x0e6ff1f2d7db7556cb37729e3738f4dae82659b984b2621fab08e1111b1b937a

RPC endpoints

NetworkURLNetwork constant (@btc-vision/bitcoin)
Mainnethttps://mainnet.opnet.orgnetworks.bitcoin
Testnethttps://testnet.opnet.orgnetworks.opnetTestnet

Do not use networks.testnet — that's Testnet4, which OPNet does not support.

Address format notes

  • op1... / opt1... are bech32m-encoded witness-v16 addresses (OP-NET contract addresses).
  • 0x... is the 32-byte ML-DSA key hash used internally by the VM.
  • Wallets display bech32; on-chain calldata uses the hex form. Converting between them requires provider.getPublicKeyInfo(bech32Addr, true) — simple fromBech32(addr).data gives the wrong 20-byte witness hash and should not be used for cross-contract lookups.

Verification

curl -s -X POST https://mainnet.opnet.org \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"btc_getCode","params":["0x88a647a8989a0bf3ab9f91459fd04771fb9678efd7ac4359c33ff48759877ee6"]}'

Returns the deployed WASM bytecode for the cpMOTO vault. Every vault is a single canonical deployment — no proxies, no upgradeable-contract shims.