Skip to Content
StagenetsPushing Contracts

Pushing Contracts

Pushing contracts is how your Stagenet learns about your smart contracts.

A push does not deploy anything. It uploads your project’s compiled contract information — name, ABI, bytecode, storage layout, and source — so the Stagenet can match your deployed contracts by bytecode and attach the right name and ABI to each one automatically. That fully activates their contract dashboards — decoded calls, events, and storage — without adding ABIs by hand per contract.

How to push

From your Hardhat or Foundry project:

# Compile first forge build # Foundry npx hardhat compile # Hardhat # Then push contract.dev push-contracts
Detected Foundry project 2 contracts pushed: - Token - Vault ABI added to 2 contracts on your Stagenet: - Token @ 0x5FbDB2315678afecb367f032d93F642f64180aa3 - Vault @ 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512

Re-run after contract changes to keep ABIs in sync — unchanged contracts are no-ops. See the push-contracts reference for path overrides and edge cases.

What gets pushed

DataUsed for
Contract nameHuman-readable names instead of raw addresses
ABIDecoding function calls, events, and the interact panel
Deployed bytecodeMatching deployments to pushed contracts
Storage layoutDecoding storage variables
Source codeLinking back to the original Solidity

Matching deployments

You may deploy the same code more than once — each deployment is matched independently:

  • Contracts already deployed on the Stagenet get the pushed name and ABI attached immediately, with their past calls backfilled and decoded.
  • Contracts you deploy later are matched the same way at deploy time.
  • Every matched address gets its own dashboard.
  • Names and ABIs you’ve already set on an address by hand are never overwritten.

Matching is by deployed bytecode, so a whitespace- or comment-only change still matches — push again after logic changes so new deployments match the new bytecode.

Last updated on