Skip to content

Wallets

Wallets (Pro) support suites that send transactions, deploy contracts, or require on-chain state mutation.

Wallets are configured per chain and scoped to test usage.

OnchainProbe supports three wallet types for different key management strategies:

  • managed: keys generated and stored by OnchainProbe (currently the only type available)
  • imported: user-provided private keys stored encrypted
  • external_signer: delegated signing via external service

Wallets are currently created automatically when a suite requires them. Manual wallet creation from the dashboard is not yet available.

System-level wallet roles (the WalletRole enum):

  • faucet: source of funds for auto-funding test wallets
  • test: general-purpose wallet for transaction execution

Suite templates may define named roles (e.g. “deployer”) that map to wallets with these system roles at runtime.

Before a suite run, the worker claims wallets from the pool. After the run completes, wallets are released back. Pool statuses:

  • available: wallet is idle and can be claimed
  • claimed: wallet is in use by an active run
  • funding: wallet is being topped up by the faucet

This prevents nonce collisions between concurrent runs.

Using dedicated test wallets prevents:

  • cross-suite nonce collisions
  • accidental spend from operational wallets
  • hard-to-debug shared-state interference

The faucet wallet is the source of funds for all test wallets. Before running transaction-based suites, you need to send native tokens to the faucet address.

  1. Open Wallets (/chains/:chainId/wallets) for your chain.
  2. Copy the faucet wallet address (displayed at the top of the page).
  3. Send native tokens from an external wallet (MetaMask, hardware wallet, exchange, etc.) to that address.
  4. Wait for the transaction to confirm on-chain.
  5. Click the refresh button on the faucet card to update the displayed balance.

Start with a small amount. A reasonable starting balance depends on the chain’s gas costs:

  • Testnets with free faucets: 1-5 native tokens is plenty.
  • Low-gas L2s (Arbitrum, Base, Optimism): 0.01-0.1 ETH covers many test runs.
  • Mainnet Ethereum: keep it minimal. Even 0.005 ETH goes a long way for read-heavy suites.

The faucet auto-funds test wallets when their balance drops below the configured threshold, so keep the faucet balance above the sum of all test wallet funding targets.

If configured, wallet balances can be topped up when they drop below threshold.

Typical flow:

  1. Suite run starts.
  2. Wallet health/balance check runs.
  3. If below threshold, faucet transfer is initiated.
  4. Suite continues once funded.

Keep wallet infrastructure healthy with these practices:

  • separate wallet pools by environment (staging, prod-sim)
  • rotate test wallets on regular cadence
  • keep on-chain permissions minimal
  • sweep residual balances periodically

Watch for these common wallet-related failures:

  • insufficient faucet balance
  • nonce gaps from out-of-band transactions
  • gas price spikes causing budget errors
  • unexpected chain congestion affecting timing assertions
  1. Define per-suite wallet role requirements.
  2. Provision wallets on the target chain.
  3. Assign minimum balance thresholds.
  4. Configure faucet source and refill policy.
  5. Run a manual suite execution to validate funding path.

Set funding thresholds that prevent mid-run failures:

  • Keep faucet wallets well-funded above operational floor.
  • Use smaller thresholds on high-frequency suites.
  • Alert when faucet wallet falls below operational floor.

Separate wallet pools by workload to prevent interference:

  • one pool for upgrade tests
  • one pool for continuous smoke checks
  • separate pools across staging and production-like environments

This reduces unexpected nonce and balance interactions across workflows.

Use sweep operations during maintenance windows:

  1. disable impacted suites
  2. sweep residual balances to treasury wallet
  3. re-fund and re-enable suites
  • avoid reusing operational treasury keys
  • rotate wallet credentials if exposure is suspected
  • use least-privilege key access for automation
  • log all funding and sweep actions in your change process