Loadtest EOA Runbook
Purpose
The loadtest service uses a dedicated testnet EOA that is separate from the deployer. This limits blast radius: if the key leaks, only loadtest funds are compromised.
Initial Setup
1. Generate EOA
cast wallet new
# Record address and private key
2. Fund with testnet assets
# ETH for gas (from faucet or existing wallet)
cast send --rpc-url https://arbitrum-sepolia.publicnode.com \
--private-key $FUNDER_KEY \
$LOADTEST_ADDRESS \
--value 0.5ether
# Testnet USDC (mint from faucet contract if available)
cast send --rpc-url https://arbitrum-sepolia.publicnode.com \
--private-key $FUNDER_KEY \
$USDC_ADDRESS \
"mint(address,uint256)" \
$LOADTEST_ADDRESS \
1000000000 # 1000 USDC (6 decimals)
3. Configure in Doppler
doppler secrets set LOADTEST_EOA_KEY=0x<private-key> \
--project atrium --config staging --group loadtest
Rotation
- Generate new EOA:
cast wallet new - Fund new EOA with testnet ETH + USDC
- Update Doppler:
doppler secrets set LOADTEST_EOA_KEY=0x<new-key> - (Optional) Drain old EOA back to funder
Security Notes
- NEVER use the deployer key (
DEPLOYER_PRIVATE_KEY) for load testing - The loadtest wallet.ts will refuse to start if
LOADTEST_EOA_KEYequalsDEPLOYER_PRIVATE_KEY - Keep loadtest funds minimal, just enough for a test run
- Rotate after any suspected exposure