Skip to main content

Contract addresses

Ethereum mainnet​

Onchain configuration checked at block 26,301,797, 2026-10-29 23:50:35 UTC. This is a dated snapshot; read current settings before submitting transactions.

ItemValue
Network and chain IDEthereum mainnet · 1
Protocol version1.0.0
DollarStore proxy and approval spender0x825e1e13D804816b8ccdA405F1a7B7915461dDc4
Implementation reference0x921b754eeD24a38834ee2AddC96FdD60F500B2d9
DLRS hub receipt token0x79E593F533Fb502d8AdFD66980d49f1264B38eB3
Recorded event indexing start26294486
Source and interface referenceb1668d0

Call and approve the proxy; the implementation is a reference for verification, not a user entrypoint. The indexing start is the recorded scan boundary, rather than a deployment transaction receipt.

Listed assets and pools​

AssetToken addressNative decimalsPool
USDC0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB486Core 0
USDS0xdC035D45d973E3EC169d2276DDab16f1e407384F18Core 0
USDG0xe343167631d89B6Ffc58B88d6b7fB0228795491D6Spoke 1

USDT is not part of this verified listing snapshot. Other token names in conceptual examples do not establish a live listing; discover the governed registry onchain.

Pool settingCore 0USDG spoke 1
Launch cap$10,000,000$5,000,000
Status at snapshotActive; unpausedActive; unpaused
Minimum hub backing for spoke-to-hub swapsNot applicable$1

Both pools and the global protocol were unpaused; deposit pauses for USDC, USDS and USDG were off. The spoke can be funded with its own token or a listed hub asset. Global or pool pauses block new inflows while withdrawals and queue cancellation remain available under their normal token controls.

Oracle configuration​

AssetPrice feed
USDC0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6
USDS0xfF30586cD0F29eD462364C7e81375FC0C71219b1
USDG0x14f0737d6b705259e521EA6E9E3506AC78dBd311

The inflow guard uses pegTolerance() = 50 basis points (±0.5%) and maxStaleness() = 90000 seconds (25 hours). These checks reject unhealthy inflows; they do not set a persistent pause flag.

Roles and timelocks​

AuthorityObserved holderConfiguration at snapshot
Governor0xa50E2Fc91964CD4aE0f63fCae8AdD4DB75485906Timelock; 10,800 seconds / 3 hours
Upgrader0x9240F61f843276cF9d269eDB2C846DdE96184712Timelock; 21,600 seconds / 6 hours
Guardian0x5F5A42097F82858EFa28612ecA60200F65344598Safe; threshold 2 of 2 owners
Unpauser0x8165e519a89209dA4264e876A81ad040388401bcSafe; threshold 2 of 2 owners

The script defaults of 7 days for governance and 14 days for upgrades are not the observed delays. Final intended Safe ownership/thresholds and timelock proposer, canceller and executor permissions remain unverified here. Read pauser permissions through isPauser(address) and PauserSet events.

Verification status​

The proxy version, addresses, listed assets and configuration above were read from Ethereum mainnet. An earlier comparison matched the implementation, SpokeAdminLib and SwapRouteLib to the release reference, but the exact deployed build of SpokeLifecycleLib remains unresolved; see Mainnet verification status. This snapshot does not establish complete source/build equivalence or final governance readiness.

Historical Sepolia rehearsal​

The earlier 0.10.0 Sepolia rehearsal at block 11823702 is historical; its deployment record does not establish current mainnet addresses, roles or asset listings. Do not use rehearsal addresses with the mainnet ABI.

Discover current listings​

uint256 pools = dollarStore.poolCount(); // Includes retired pool IDs
address[] memory hubAssets = dollarStore.getPoolAssets(0);
bool listed = dollarStore.isAssetListed(token);
if (listed) {
uint16 pool = dollarStore.assetPoolId(token);
}

Pool 0 is the hub. Relisting a removed spoke asset creates a fresh pool ID; an older queue position retains its original pool ID.

Verification before integrating​

  • Verify Ethereum chain ID 1, then read version() on the proxy.
  • Use the matching ABI; swap and deposit amounts use token-native units, while internal reserve accounting and receipt shares use six decimals.
  • Read live listings, feeds, caps, reserve floors and pauses.
  • Check role holders, pending role transfers, each timelock’s permissions and delay, and Safe owners and thresholds; a reported version alone does not verify deployed bytecode.
  • Simulate with the actual caller and recipient before requesting a wallet transaction.
export PROXY=0x825e1e13D804816b8ccdA405F1a7B7915461dDc4
cast call "$PROXY" "version()(string)" --rpc-url "$RPC"
cast call "$PROXY" "governor()(address)" --rpc-url "$RPC"
cast call "$PROXY" "upgrader()(address)" --rpc-url "$RPC"
cast call "$PROXY" "guardian()(address)" --rpc-url "$RPC"
cast call "$PROXY" "unpauser()(address)" --rpc-url "$RPC"

Interface​

The interface reference is IDollarStore.sol at b1668d0. See Functions, Events and Errors for signatures and units.