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
PILL (v2 simplified)op1sqrhg6h6kc62tfxv5m0p7ek5axlzh0yj295uug9kr0x992c64896d845c5b5c3b77160e81f696b649af197a5272804d02e6fc85676b26
MCHAD (v2 simplified)op1sqrkhh27y5j86te465a95ngyaa6l4xafdtv6r3qra0x9981cfa44f63f195f569454110b81564b9cba289c4d6266ae74351e3b7b4f6cb
OrangePill MOTO (v2 simplified)op1sqq8kcm93ze2y0xaf05uca8nmkp7mzf05lg3klvnt0xf8e6b1e211d749830975ba403d5967e575e423ba66d9dbecfb52cff27667a677
OrangePill MOTO/PILL LP (v2 simplified)op1sqqtk705df5ev5nzcdw8dzaral3yxd6ldky7p0ne80x2acb6853ff1a71c3ee3ec1757038ae48382566723d16bf2d6c6307ce95d0ab5c

The four v2 vaults above replace the tier/NFT/surcharge v1 versions deployed through March 2026. V1 addresses are retained in decommissioned-contracts.md for historical reference; all v1 user balances have been migrated or withdrawn. The v2 design is a flat 10% protocol fee on compound rewards — no NFT tier system, no whale-detection surcharge, no compounder ACL. Simpler math, no overflow risk.

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.