Skip to content

Commit

Permalink
validatormanager overview, remove index for evm-l1s
Browse files Browse the repository at this point in the history
  • Loading branch information
owenwahlgren committed Nov 7, 2024
1 parent 6e4aea6 commit f27b3f9
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
1 change: 0 additions & 1 deletion content/docs/evm-l1s/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"title": "evm-l1s",
"root": true,
"pages": [
"index",
"---Validator Manager---",
"validator-manager/contract",
"validator-manager/add-validator",
Expand Down
6 changes: 6 additions & 0 deletions content/docs/evm-l1s/validator-manager/contract.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ PoSValidatorManager <|-- NativeTokenStakingManager
<Callout>
The contracts for ValidatorManager can be found in the Teleporter repository [here](https://github.com/ava-labs/teleporter/tree/main/contracts/validator-manager)
</Callout>

## Overview
The `ValidatorManager` contract is used to create and operate a soverign L1. When converting to a soverign L1, the address of the `ValidatorManager` contract is specified in the `ConvertSubnetToL1Tx` transaction to the P-Chain. The `ValidatorManager` contract is then initialized with the initial validator set, and the subnet is converted to an L1 with the initial validators registered to the P-Chain.

All operations to adding and removing validators after `ConvertSubnetToL1Tx` must be processed through the `ValidatorManager` contract. If the `ValidatorManager` contract is upgradeable, and can be replaced with a new implementation contract if necessary.

## Deploying

Three concrete `ValidatorManager` contracts are provided - `PoAValidatorManager`, `NativeTokenStakingManager`, and `ERC20TokenStakingManager`. `NativeTokenStakingManager` and `ERC20TokenStakingManager` implement `PoSValidatorManager`, which itself implements `ValidatorManager`. These are implemented as [upgradeable](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/master/contracts/proxy/utils/Initializable.sol) contracts. There are numerous [guides](https://blog.chain.link/upgradable-smart-contracts/) for deploying upgradeable smart contracts, but the general steps are as follows:
Expand Down

0 comments on commit f27b3f9

Please sign in to comment.