Welcome to the Course
Master access control patterns using transaction and contract deployer allowlists with hands-on precompile implementation
Access Restriction
Access restriction is a core requirement for many real-world networks: you may need to control who can submit transactions and who can deploy contracts to meet operational, institutional, and compliance needs.
In Avalanche L1s, these controls are implemented as precompiles (native EVM features) that follow a shared, audited permission model: the AllowList interface.
Course Content
Introduction
Precompiles refresher, the AllowList permission model (Admin/Manager/Enabled), and why this pattern is reused across multiple L1 precompiles.
Genesis Activation
Configure and launch an L1 with Transaction AllowList and Contract Deployer AllowList enabled from genesis (self-hosted node via Docker).
Everyone Makes Mistakes
Intentionally lock yourself out, observe failures, and learn the recovery path (network upgrade sections come next).
Prerequisites
Before starting this course, we recommend completing:
- Customizing the EVM — especially the Precompiles section
- Comfort using Core Wallet, Docker, and reading a genesis JSON
Learning Outcomes
By the end of this course, you will be able to:
- Explain what precompiles are and why they’re used for privileged network features
- Describe the AllowList interface roles (Admin, Manager, Enabled) and how they apply across multiple precompiles
- Enable Transaction AllowList and Contract Deployer AllowList in genesis
- Validate access restrictions by testing transaction sending and contract deployment
Is this guide helpful?