Mock & Dependency Contracts

Mock and infrastructure contracts deployed on the BattleChain testnet

BattleChain testnet includes mock versions of common mainnet dependencies and real infrastructure contracts so you can deploy your exact production bytecode — only swapping constructor parameters like oracle addresses.

These MockV3Aggregator contracts implement the same interface as Chainlink price feeds. Contracts that consume latestRoundData() or getRoundData() on mainnet can point at these addresses on testnet without code changes.

All feeds use 8 decimals, matching Chainlink's standard for USD pairs.

Deployed Addresses

PairAddress
ETH/USD0xAA72F0168eE17aA93098eC6ECf2EEe72B46aca19
BTC/USD0xd87f56De7Fe8d2913B3B8e45C5fd983185286b66
LINK/USD0xEa8789e4f6a1d101AfF3093543FC8133c27987FD
USDC/USD0x469be0Db9E0E884a2D9E64a186008C684423B79C

Interface

Updating Prices

To set ETH/USD to $2,000:

cast send 0xAA72F0168eE17aA93098eC6ECf2EEe72B46aca19 \
  "updateAnswer(int256)" 200000000000 \
  --rpc-url $BATTLECHAIN_RPC_URL \
  --private-key $PRIVATE_KEY \
  --legacy

The value 200000000000 is 2000 * 1e8 (8 decimals).


Test Tokens

Mintable ERC-20 tokens for protocols that need token dependencies (stablecoins, WBTC, LINK, etc.). Anyone can mint — no faucet required.

Deployed Addresses

TokenSymbolDecimalsAddress
Wrapped EtherWETH180x4CAc28Fc96bb8fa0e6F94ef0E579384902142f42
USD CoinUSDC60xb9bEab76Db81BdF8c863f2cA648dA8d3bB5CB1EE
Tether USDUSDT60x0d414B0CCef51a25cd32c93b869A9fF2e883a27E
Dai StablecoinDAI180x393cBd865554a543D992218d190EA9dcE47d9bC2
Wrapped BTCWBTC80xB90cb0F537F2E7D11b165a8C5C79B7a593aBE4f0
Chainlink TokenLINK180xDBCaD9c8f2757f1b7Fe7fC394bEB035018aEA9DC
My TokenMTK180xA55C81615ea60e870d7a4Dff8C662B4C39c56C80

Interface

Minting Tokens

To mint 1,000,000 USDC to yourself:

cast send 0xb9bEab76Db81BdF8c863f2cA648dA8d3bB5CB1EE \
  "mint()" \
  --rpc-url $BATTLECHAIN_RPC_URL \
  --private-key $PRIVATE_KEY \
  --legacy

To mint a specific amount to any address:

cast send 0xb9bEab76Db81BdF8c863f2cA648dA8d3bB5CB1EE \
  "mint(address,uint256)" 0xYOUR_ADDRESS 5000000000 \
  --rpc-url $BATTLECHAIN_RPC_URL \
  --private-key $PRIVATE_KEY \
  --legacy

The value 5000000000 is 5000 * 1e6 (USDC has 6 decimals).


Mock Venus Protocol

A mock Venus lending protocol deployment with a Comptroller and five vToken markets. Implements the same Compound-style interface (supply, borrow, redeem, repay) so contracts that integrate with Venus on mainnet work on testnet without code changes.

All markets are listed with a 0.75 collateral factor. The mock Comptroller always reports accounts as healthy with 1M liquidity — it does not enforce real collateral checks.

Deployed Addresses

ContractAddress
Comptroller0xc75734fFd650286269EE8bC049424Cb08F9175ee
vUSDC0x5982EC7f7B42F5490695EE14991aA35E6F6258bD
vWETH0xB6694A4678F4a548486376Ed8C4e51C83Ce35d8a
vWBTC0xcA867A99a2a7586209C662F4060f27c3E734f947
vDAI0xb1E00Ef2B0BBb2d3d4A899A4f31F0F6853359737
vBNB0x96360B56BC70B09eb6F3870B3f48AFeA32e60EeE

The vToken markets use the test tokens as their underlying assets. vBNB uses native ETH.

Interface

Supplying and Borrowing

To supply 1,000 USDC to vUSDC (approve first, then mint):

cast send 0xb9bEab76Db81BdF8c863f2cA648dA8d3bB5CB1EE \
  "approve(address,uint256)" \
  0x5982EC7f7B42F5490695EE14991aA35E6F6258bD 1000000000 \
  --rpc-url $BATTLECHAIN_RPC_URL \
  --private-key $PRIVATE_KEY \
  --legacy

cast send 0x5982EC7f7B42F5490695EE14991aA35E6F6258bD \
  "mint(uint256)" 1000000000 \
  --rpc-url $BATTLECHAIN_RPC_URL \
  --private-key $PRIVATE_KEY \
  --legacy

To supply native ETH to vBNB:

cast send 0x96360B56BC70B09eb6F3870B3f48AFeA32e60EeE \
  "mint()" \
  --value 1ether \
  --rpc-url $BATTLECHAIN_RPC_URL \
  --private-key $PRIVATE_KEY \
  --legacy

Mock Uniswap V3

A mock Uniswap V3 deployment with the core factory, swap router, and position manager. Contracts that integrate with Uniswap V3 on mainnet can point at these addresses on testnet without code changes.

Deployed Addresses

ContractAddress
UniswapV3Factory0xd5DCFCab1B60C70F45D61597b351674b4b3C8CDc
SwapRouter0xCD1D61957236565679b27e14d7c7A5198b052edb
NonfungiblePositionManager0xE357f3D536b2c0a21c0256cAB027CE962D0483bF

Use with the test tokens above (WETH, USDC, DAI, etc.) to create pools and test swap logic.


Mock Uniswap V4

A mock Uniswap V4 PoolManager deployment.

Deployed Addresses

ContractAddress
PoolManager0xB4CB4B877FcF85Db498B81EEa8F3A1136797F7

Mock Euler V2

A mock Euler V2 deployment with the Ethereum Vault Connector (EVC) and two lending vaults.

Deployed Addresses

ContractAddress
EVC0xB5D56dECA76e65cC9332Af01971bC8ad018a1Fc1
eUSDC Vault0x9a6fb480a74e6BAEE31EAbe297384ceA1EBb4d81
eWETH Vault0x38aF9d1C638C43d4340a700A854721dD5cdCf974

The vaults use the test tokens as their underlying assets (USDC and WETH respectively).


A mock Chainlink CCIP router for testing cross-chain messaging and token transfers.

Deployed Addresses

ContractAddress
MockCCIPRouter0xFA553888e385ECd9ab294e295C206b912a0F402E

Safe (Gnosis Safe)

The full Safe smart account infrastructure is deployed on BattleChain testnet. These are real Safe contracts (not mocks) — protocols that use Safe multisigs for governance, treasury, or access control can use the same addresses and deployment patterns as on mainnet.

Deployed Addresses

ContractAddress
Safe0x52AbFB25E19C3625178D885D5C75EFB9a99203EB
SafeL20x71314F3E6B1D9386A1de784B644Cf5D0Dde3bB97
SafeProxyFactory0x80DbD037C59521F393fDfE15504c6b6b7969F1a1
CreateCall0x670D1c4c5cc72193b352562Ed75B9ae8224E98b3
MultiSend0x69BEaBc6824ba1461F53800d9C3F29FFeC7cf408
MultiSendCallOnly0xa6a3C9103C062429e459D263bF5EcCd31Effd56C
SignMessageLib0x930833004d88b8bF3208a216323aFfdf9D40C14C
SafeToL2Setup0xeCd943c75D2344Fb0AC29D781EFE602E7d87f82B
TokenCallbackHandler0x232898253fABB3a1EB585bdEE4bE2a36f6D6fd64
CompatibilityFallbackHandler0xc6B2C6982A5643b7702894D4A0901b9371dd1283
ExtensibleFallbackHandler0x745c41Ae7AC9C23f173B45f5B47E692dC57c2ae2