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?