Deployment Flow Overview

Quick summary of what we will be doing

For this course, we will be implementing the NativeTokenStakingManager deployed on your L1, using the native token as the staking token.

Reminder that you could alternatively use an ERC20 as your chains staking token (via ERC20TokenStakingManager) and the Validator Manager deployed on another L1.

The following steps will guide you through deploying and configuring a NativeTokenStakingManager:

Deploy Staking Manager

Deploy the NativeTokenStakingManager implementation contract to your L1.

Deploy Reward Calculator

Deploy the ExampleRewardCalculator contract that will determine how staking rewards are distributed based on validator uptime.

Initialize Staking Manager

Call the initialize function with PoSValidatorManagerSettings to configure staking parameters (minimum stake, duration, delegation fees, etc.).

Enable in Native Minter

Add the Staking Manager address as an Enabled address on the Native Minter precompile so it can mint reward tokens.

Transfer Ownership

Transfer ownership of the Reward Manager precompile to the Staking Manager so it can distribute rewards to validators and delegators.

Verify Configuration

Read the contract state to verify all configuration parameters are set correctly.

Happy Building!

Is this guide helpful?