Skip to Content
CLIImpersonate Accounts

Impersonate Accounts

Add an address to your Stagenet’s impersonation allowlist from the command line. Once impersonated, your Stagenet will accept eth_sendTransaction requests where from is the impersonated address — no private key required.

Targets your active stagenet — see Target a Stagenet.

Start impersonating

contract-dev impersonate 0x28C6c06298d514Db089934071355E5743bf21d60
ArgumentDescription
<address>The address to impersonate
--fund <amount>Optional. Top up the impersonated address with native tokens (e.g. for gas). Accepts decimal, 0x-hex, or "1 ether" / "1000000 wei".

Funding in one shot:

contract-dev impersonate 0x28C6... --fund "1 ether"
Impersonating 0x28c6c06298d514db089934071355e5743bf21d60 funded with +1000000000000000000 wei (new balance: 1000000000000000000)

impersonate stop

Remove an address from the allowlist. After this, unsigned transactions from that address are rejected unless you impersonate it again.

contract-dev impersonate stop 0x28C6...

impersonate list

Print every address currently on the allowlist (lowercased), one per line.

contract-dev impersonate list

Notes

  • Impersonation only works for transactions sent through eth_sendTransaction. If your wallet signs locally with a private key, it will use eth_sendRawTransaction and impersonation will not apply. Use a JSON-RPC signer (e.g. provider.getSigner(address) in ethers, or createWalletClient({ account, transport: http(url) }) in viem).
  • Impersonated accounts still pay gas. The --fund flag is a shortcut for topping them up; you can also fund them with balance add.
Last updated on