Intro
Use a network upgrade (upgrade.json) to disable allowlist precompiles after genesis.
Overview
So far, you enabled Transaction AllowList and Contract Deployer AllowList in genesis. In a real network, you won’t always get the genesis config “perfect” on day one, and you may need to turn precompiles on/off (or change their parameters) later.
Subnet-EVM supports doing this via network upgrades using an upgrade.json file. In this section, you’ll disable both allowlist precompiles by updating your Docker validator node configuration, restarting the node, and then verifying (in the Builder Console) that the precompiles are no longer available.
Important warning (read this)
- Network upgrades change the rules for how blocks are processed. If validators don’t upgrade consistently, the chain can halt or validators can fall out of sync.
- The upgrade file uses timestamps. If you set a timestamp in the past (relative to the chain head), the node can fail on startup.
You’ll follow the official guide here:
/docs/avalanche-l1s/upgrade/precompile-upgrades
Summary
Key points:
- Precompile enable/disable is done via
{chain-config-dir}/{blockchainID}/upgrade.json. - Disabling a precompile prevents calls and clears its storage, so it can be re-enabled later with fresh config.
- Timestamps must be in the future, and upgrade lists should be treated as append-only.
Is this guide helpful?