From 3e49fcae62071b1f18a9ae5c510ad5b797e34f5e Mon Sep 17 00:00:00 2001 From: navillanueva Date: Wed, 29 Oct 2025 19:39:04 +0100 Subject: [PATCH 1/7] content --- .../03-transformation-requirements/02-native-minter.mdx | 4 +--- .../04-optional-l1-setup/01-vmc-deployment-options.mdx | 8 ++++++++ .../02-create-l1-with-precompiles.mdx | 8 ++++++++ .../04-optional-l1-setup/03-deploy-validator-manager.mdx | 8 ++++++++ .../04-optional-l1-setup/04-upgrade-proxy.mdx | 8 ++++++++ .../04-optional-l1-setup/05-init-validator-config.mdx | 8 ++++++++ .../04-optional-l1-setup/06-initialize-validator-set.mdx | 8 ++++++++ .../04-optional-l1-setup/07-add-nodes.mdx | 8 ++++++++ .../04-optional-l1-setup/08-test-native-minter.mdx | 8 ++++++++ .../04-optional-l1-setup/09-test-reward-manager.mdx | 8 ++++++++ content/academy/permissionless-l1s/meta.json | 2 ++ 11 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx diff --git a/content/academy/permissionless-l1s/03-transformation-requirements/02-native-minter.mdx b/content/academy/permissionless-l1s/03-transformation-requirements/02-native-minter.mdx index 9eb67ae0e17..1ba3cf19a3b 100644 --- a/content/academy/permissionless-l1s/03-transformation-requirements/02-native-minter.mdx +++ b/content/academy/permissionless-l1s/03-transformation-requirements/02-native-minter.mdx @@ -46,9 +46,7 @@ The reward minting flow involves multiple contracts working together to distribu note over SM: Calculate rewards minus
delegation fees SM->>NTSM: _reward(recipient, delegatorRewards) NTSM->>NM: mintNativeCoin(recipient, amount) - NM->>RR: Native tokens minted - - + NM->>RR: Native tokens minted " /> diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx new file mode 100644 index 00000000000..e81973b58e5 --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx @@ -0,0 +1,8 @@ +--- +title: VMC Deployment Options +description: Understanding where to deploy the Validator Manager Contract +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: Book +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx new file mode 100644 index 00000000000..b0c6c3c39da --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx @@ -0,0 +1,8 @@ +--- +title: Create L1 with Native Minter & Reward Manager Precompiles +description: Configure your L1 genesis with required precompiles for native token staking +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx new file mode 100644 index 00000000000..98d1c5bd46a --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx @@ -0,0 +1,8 @@ +--- +title: Deploy Validator Manager on Your L1 +description: Deploy the Validator Manager Contract to your L1 +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx new file mode 100644 index 00000000000..4ad05d6f502 --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx @@ -0,0 +1,8 @@ +--- +title: Upgrade Proxy +description: Upgrade the Validator Manager proxy contract +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx new file mode 100644 index 00000000000..a20e5d51877 --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx @@ -0,0 +1,8 @@ +--- +title: Initialize Validator Config +description: Configure the initial validator parameters for your L1 +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx new file mode 100644 index 00000000000..6ff9cf9ae06 --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx @@ -0,0 +1,8 @@ +--- +title: Initialize Validator Set +description: Set up the initial validator set for your L1 +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx new file mode 100644 index 00000000000..5eb7a6a944c --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx @@ -0,0 +1,8 @@ +--- +title: Add Nodes +description: Add validator nodes to your L1 network +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx new file mode 100644 index 00000000000..6ee7df181b0 --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx @@ -0,0 +1,8 @@ +--- +title: Test Native Minter +description: Verify the Native Minter precompile functionality +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx new file mode 100644 index 00000000000..7ac1edceb0a --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx @@ -0,0 +1,8 @@ +--- +title: Test Reward Manager +description: Verify the Reward Manager precompile functionality +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: BookOpen +--- + diff --git a/content/academy/permissionless-l1s/meta.json b/content/academy/permissionless-l1s/meta.json index f8e09d0b0e7..98b1e919c6b 100644 --- a/content/academy/permissionless-l1s/meta.json +++ b/content/academy/permissionless-l1s/meta.json @@ -10,6 +10,8 @@ "...02-proof-of-stake", "---Trasnformation Requirements---", "...03-transformation-requirements", + "---Optional: Base L1 Setup---", + "...04-optional-l1-setup", "---More coming soon...---" ] } \ No newline at end of file From 40b63c3fb295371ee63a5fd12c952cf018bcd25d Mon Sep 17 00:00:00 2001 From: navillanueva Date: Wed, 29 Oct 2025 19:55:35 +0100 Subject: [PATCH 2/7] extendable content --- .../04-optional-l1-setup/index.mdx | 42 +++++++++++++++++++ .../04-optional-l1-setup/meta.json | 16 +++++++ content/academy/permissionless-l1s/meta.json | 3 +- 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx create mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/meta.json diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx new file mode 100644 index 00000000000..ee0d90a32b2 --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx @@ -0,0 +1,42 @@ +--- +title: Optional - Base L1 Setup +description: Step-by-step guide to set up your L1 with native token staking +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: Settings +--- + +This optional section provides a practical, hands-on guide to setting up a base L1 with native token staking capabilities. While the previous sections covered the theoretical requirements, this section walks you through the actual deployment and configuration steps. + +## What You'll Learn + +In this section, you'll learn how to: + +- Choose where to deploy your Validator Manager Contract +- Create an L1 with Native Minter and Reward Manager precompiles enabled +- Deploy and configure the Validator Manager +- Initialize your validator set +- Test that everything works correctly + +## Prerequisites + +Before starting this section, you should have: + +- Completed the [Transformation Requirements](/academy/permissionless-l1s/transformation-requirements/introduction) section +- A basic understanding of the Native Minter and Reward Manager precompiles +- Access to a development environment with the necessary tools installed + +## Is This Section For You? + +This section is **optional** because: + +- You may already have an L1 set up from previous courses +- You might want to focus on understanding the concepts before implementing +- You could be planning to use a different setup approach + +However, if you want hands-on practice deploying a permissionless L1, this section provides a complete walkthrough. + +## Getting Started + +Select a topic from the navigation menu to begin your L1 setup journey. + diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/meta.json b/content/academy/permissionless-l1s/04-optional-l1-setup/meta.json new file mode 100644 index 00000000000..d893f6d07ed --- /dev/null +++ b/content/academy/permissionless-l1s/04-optional-l1-setup/meta.json @@ -0,0 +1,16 @@ +{ + "title": "Optional: Base L1 Setup", + "pages": [ + "index", + "01-vmc-deployment-options", + "02-create-l1-with-precompiles", + "03-deploy-validator-manager", + "04-upgrade-proxy", + "05-init-validator-config", + "06-initialize-validator-set", + "07-add-nodes", + "08-test-native-minter", + "09-test-reward-manager" + ] +} + diff --git a/content/academy/permissionless-l1s/meta.json b/content/academy/permissionless-l1s/meta.json index 98b1e919c6b..7ad5d51e437 100644 --- a/content/academy/permissionless-l1s/meta.json +++ b/content/academy/permissionless-l1s/meta.json @@ -10,8 +10,7 @@ "...02-proof-of-stake", "---Trasnformation Requirements---", "...03-transformation-requirements", - "---Optional: Base L1 Setup---", - "...04-optional-l1-setup", + "04-optional-l1-setup", "---More coming soon...---" ] } \ No newline at end of file From db1619a7f718de375e0e4f30d9d8859ac8aeda28 Mon Sep 17 00:00:00 2001 From: navillanueva Date: Tue, 18 Nov 2025 15:51:51 -0500 Subject: [PATCH 3/7] create speedrun base --- .../01-vmc-deployment-options.mdx | 8 -- .../02-create-l1-with-precompiles.mdx | 8 -- .../03-deploy-validator-manager.mdx | 8 -- .../04-optional-l1-setup/04-upgrade-proxy.mdx | 8 -- .../05-init-validator-config.mdx | 8 -- .../06-initialize-validator-set.mdx | 8 -- .../04-optional-l1-setup/07-add-nodes.mdx | 8 -- .../08-test-native-minter.mdx | 8 -- .../09-test-reward-manager.mdx | 8 -- .../04-optional-l1-setup/index.mdx | 42 -------- .../04-optional-l1-setup/meta.json | 16 --- .../04-speedrun-base-l1/01-create-l1.mdx | 61 ++++++++++++ .../02-deploy-and-configure-vmc.mdx | 98 +++++++++++++++++++ .../04-speedrun-base-l1/meta.json | 7 ++ content/academy/permissionless-l1s/meta.json | 4 +- scripts/versions.json | 8 +- 16 files changed, 173 insertions(+), 135 deletions(-) delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx delete mode 100644 content/academy/permissionless-l1s/04-optional-l1-setup/meta.json create mode 100644 content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx create mode 100644 content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx create mode 100644 content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx deleted file mode 100644 index e81973b58e5..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/01-vmc-deployment-options.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: VMC Deployment Options -description: Understanding where to deploy the Validator Manager Contract -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: Book ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx deleted file mode 100644 index b0c6c3c39da..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/02-create-l1-with-precompiles.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Create L1 with Native Minter & Reward Manager Precompiles -description: Configure your L1 genesis with required precompiles for native token staking -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx deleted file mode 100644 index 98d1c5bd46a..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/03-deploy-validator-manager.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Deploy Validator Manager on Your L1 -description: Deploy the Validator Manager Contract to your L1 -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx deleted file mode 100644 index 4ad05d6f502..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/04-upgrade-proxy.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Upgrade Proxy -description: Upgrade the Validator Manager proxy contract -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx deleted file mode 100644 index a20e5d51877..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/05-init-validator-config.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Initialize Validator Config -description: Configure the initial validator parameters for your L1 -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx deleted file mode 100644 index 6ff9cf9ae06..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/06-initialize-validator-set.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Initialize Validator Set -description: Set up the initial validator set for your L1 -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx deleted file mode 100644 index 5eb7a6a944c..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/07-add-nodes.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Add Nodes -description: Add validator nodes to your L1 network -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx deleted file mode 100644 index 6ee7df181b0..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/08-test-native-minter.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Test Native Minter -description: Verify the Native Minter precompile functionality -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx deleted file mode 100644 index 7ac1edceb0a..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/09-test-reward-manager.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Test Reward Manager -description: Verify the Reward Manager precompile functionality -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: BookOpen ---- - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx b/content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx deleted file mode 100644 index ee0d90a32b2..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/index.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Optional - Base L1 Setup -description: Step-by-step guide to set up your L1 with native token staking -updated: 2025-03-13 -authors: [nicolasarnedo] -icon: Settings ---- - -This optional section provides a practical, hands-on guide to setting up a base L1 with native token staking capabilities. While the previous sections covered the theoretical requirements, this section walks you through the actual deployment and configuration steps. - -## What You'll Learn - -In this section, you'll learn how to: - -- Choose where to deploy your Validator Manager Contract -- Create an L1 with Native Minter and Reward Manager precompiles enabled -- Deploy and configure the Validator Manager -- Initialize your validator set -- Test that everything works correctly - -## Prerequisites - -Before starting this section, you should have: - -- Completed the [Transformation Requirements](/academy/permissionless-l1s/transformation-requirements/introduction) section -- A basic understanding of the Native Minter and Reward Manager precompiles -- Access to a development environment with the necessary tools installed - -## Is This Section For You? - -This section is **optional** because: - -- You may already have an L1 set up from previous courses -- You might want to focus on understanding the concepts before implementing -- You could be planning to use a different setup approach - -However, if you want hands-on practice deploying a permissionless L1, this section provides a complete walkthrough. - -## Getting Started - -Select a topic from the navigation menu to begin your L1 setup journey. - diff --git a/content/academy/permissionless-l1s/04-optional-l1-setup/meta.json b/content/academy/permissionless-l1s/04-optional-l1-setup/meta.json deleted file mode 100644 index d893f6d07ed..00000000000 --- a/content/academy/permissionless-l1s/04-optional-l1-setup/meta.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "title": "Optional: Base L1 Setup", - "pages": [ - "index", - "01-vmc-deployment-options", - "02-create-l1-with-precompiles", - "03-deploy-validator-manager", - "04-upgrade-proxy", - "05-init-validator-config", - "06-initialize-validator-set", - "07-add-nodes", - "08-test-native-minter", - "09-test-reward-manager" - ] -} - diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx b/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx new file mode 100644 index 00000000000..26d9309bfce --- /dev/null +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx @@ -0,0 +1,61 @@ +--- +title: Create Your L1 +description: Quick guide to creating a subnet and converting it to an L1 with required precompiles +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: Terminal +--- + +import ToolboxMdxWrapper from "@/components/toolbox/academy/wrapper/ToolboxMdxWrapper.tsx" +import ConvertSubnetToL1 from "@/components/toolbox/console/layer-1/create/ConvertSubnetToL1.tsx" + +This section provides a streamlined walkthrough for creating a new L1 from scratch. + +You should already have a created L1 from the [Permissioned L1 course] with the Validator Manager Contract correctly set up that you can use to transform into a Permissionless L1. + +## Step 1: Create Subnet with correct Precompiles + +When creating your subnet, you **must** enable the Native Minter and Reward Manager precompiles in your genesis configuration. These are essential for native token staking: + +- **Native Minter**: Allows the staking manager to mint reward tokens +- **Reward Manager**: Automates reward distribution to validators + + +Make sure to enable both precompiles during subnet creation. You can use the Developer Console to configure these settings. + + +## Step 2: Add Initial Validator + +Your subnet needs at least one validator to operate. You can either: +- Use a BuilderHub hosted node (recommended for testing) +- Run your own validator node + +The validator you add here will become part of your L1's initial validator set after conversion. + +## Step 3: Convert Subnet to L1 + +Once your subnet is running with a validator, convert it to a sovereign L1. This process: + +- **Establishes Sovereignty**: Your blockchain becomes independent +- **Transfers Authority**: Validator management shifts from P-Chain to your Validator Manager Contract +- **Is Irreversible**: Once converted, you cannot revert to subnet status + +### Key Conversion Parameters + +1. **Subnet ID**: Your subnet's unique identifier +2. **Validator Manager Blockchain ID**: Where your VMC will be deployed (typically your L1) +3. **Validator Manager Address**: The proxy address (usually `0xfacade0000000000000000000000000000000000`) +4. **Initial Validators**: The validator(s) from your subnet + + + + + +## Next Steps + +Now that your L1 is created with the required precompiles, you're ready to deploy and configure your Validator Manager Contract. + + +For detailed information about subnet creation, see the [Permissioned L1s course](/academy/permissioned-l1s). + + diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx b/content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx new file mode 100644 index 00000000000..7992956239c --- /dev/null +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx @@ -0,0 +1,98 @@ +--- +title: Deploy & Configure Validator Manager +description: Deploy and set up your Validator Manager Contract for permissionless staking +updated: 2025-03-13 +authors: [nicolasarnedo] +icon: Terminal +--- + +import ToolboxMdxWrapper from "@/components/toolbox/academy/wrapper/ToolboxMdxWrapper.tsx" +import DeployValidatorManager from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/DeployValidatorManager.tsx" +import UpgradeProxy from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/UpgradeProxy.tsx" +import Initialize from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/Initialize.tsx" +import InitValidatorSet from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/InitValidatorSet.tsx" + +This section walks through deploying and configuring your Validator Manager Contract (VMC). This is a multi-step process that establishes the foundation for your permissionless L1. + +## Overview + +The VMC setup involves four key steps: +1. Deploy the ValidatorManager implementation +2. Upgrade the proxy to point to the implementation +3. Initialize the contract with configuration parameters +4. Initialize the validator set from your L1 conversion + +## Step 1: Deploy Validator Manager + +First, deploy the ValidatorManager implementation contract and its required ValidatorMessages library. + + +The ValidatorMessages library handles all message encoding/decoding for P-Chain communication. It's deployed once and can be shared across multiple validator managers. + + + + + + +## Step 2: Upgrade Proxy + +Link your proxy to the ValidatorManager implementation by upgrading the TransparentUpgradeableProxy at `0xfacade...` to point to your newly deployed contract. + + +Make sure you have your L1 selected in the wallet component + + + + + + +## Step 3: Set Initial Configuration + +Configure your ValidatorManager with essential parameters through the `initialize()` function: + +- **Admin Address**: Your wallet address (controls validator operations) +- **Subnet ID**: Your L1's subnet identifier +- **Churn Period**: Time window for validator changes (≤ 86400 seconds) +- **Maximum Churn Percentage**: Weight change limit per period (1-20%) + + +The `initialize()` function can only be called once. Double-check your parameters before proceeding. + + + + + + +## Step 4: Initialize Validator Set + +Finally, initialize your ValidatorManager with the current validator set from your L1 conversion. This bridges P-Chain subnet creation with L1 validator management using cryptographically verified conversion data. + +### How It Works + +The initialization: +1. Verifies P-Chain signed conversion data via Avalanche Warp Messaging +2. Registers each validator with their weight and node ID +3. Marks the validator set as initialized (permanent, one-time operation) + +### Required Information + +You'll need: +- **Conversion Data**: Validator information from your subnet-to-L1 conversion +- **Message Index**: Position in the Warp message queue + + +Initialization can only be done once! Ensure you have the correct validator data. + + + + + + +## Next Steps + +Congratulations! Your Validator Manager is now fully configured. In the next section, you'll deploy and configure a Staking Manager to enable permissionless participation. + + +For detailed information about each step, see the [Permissioned L1s course](/academy/permissioned-l1s/validator-manager-deployment). + + diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json b/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json new file mode 100644 index 00000000000..9571f47f12d --- /dev/null +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json @@ -0,0 +1,7 @@ +{ + "title": "Speedrun Base L1 Setup", + "pages": [ + "01-create-l1", + "02-deploy-and-configure-vmc" + ] +} diff --git a/content/academy/permissionless-l1s/meta.json b/content/academy/permissionless-l1s/meta.json index 48a0a8b0e57..0ae276fade4 100644 --- a/content/academy/permissionless-l1s/meta.json +++ b/content/academy/permissionless-l1s/meta.json @@ -10,7 +10,9 @@ "...02-proof-of-stake", "---Transformation Requirements---", "...03-transformation-requirements", - "04-optional-l1-setup", + "---Staking Manager Setup---", + "04-speedrun-base-l1", + "...05-staking-manager-setup", "---More coming soon...---" ] } \ No newline at end of file diff --git a/scripts/versions.json b/scripts/versions.json index 3a8c31fe351..244fc147c36 100644 --- a/scripts/versions.json +++ b/scripts/versions.json @@ -5,9 +5,9 @@ "avaplatform/icm-relayer": "v1.7.4" }, "testnet": { - "avaplatform/avalanchego": "v1.14.0", - "avaplatform/subnet-evm_avalanchego": "v0.8.0_v1.14.0", - "avaplatform/icm-relayer": "v1.7.4" + "avaplatform/avalanchego": "v1.14.0-fuji", + "avaplatform/subnet-evm_avalanchego": "v0.8.0-fuji_v1.14.0-fuji", + "avaplatform/icm-relayer": "v1.7.2-fuji" }, "ava-labs/icm-contracts": "4d5ab0b6dbc653770cfe9709878c9406eb28b71c" -} +} \ No newline at end of file From ff8a52af69be91a6c96b75c06eb776b7cdde020a Mon Sep 17 00:00:00 2001 From: navillanueva Date: Tue, 18 Nov 2025 16:47:01 -0500 Subject: [PATCH 4/7] teesting push --- .../04-speedrun-base-l1/01-create-l1.mdx | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx b/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx index 26d9309bfce..c29e9cd2c92 100644 --- a/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx @@ -6,6 +6,7 @@ authors: [nicolasarnedo] icon: Terminal --- +import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import ToolboxMdxWrapper from "@/components/toolbox/academy/wrapper/ToolboxMdxWrapper.tsx" import ConvertSubnetToL1 from "@/components/toolbox/console/layer-1/create/ConvertSubnetToL1.tsx" @@ -13,24 +14,54 @@ This section provides a streamlined walkthrough for creating a new L1 from scrat You should already have a created L1 from the [Permissioned L1 course] with the Validator Manager Contract correctly set up that you can use to transform into a Permissionless L1. -## Step 1: Create Subnet with correct Precompiles +## Step 1: Create Subnet with necessary Precompiles When creating your subnet, you **must** enable the Native Minter and Reward Manager precompiles in your genesis configuration. These are essential for native token staking: - **Native Minter**: Allows the staking manager to mint reward tokens - **Reward Manager**: Automates reward distribution to validators + + + + +## Step 2: Add Initial Validator + + + +### Set Up Validator Node + +Launch a node to track your Subnet. This node will become a validator for your Subnet, and later will be managed by the Validator Manager contract when we convert to L1. + +Use our *free managed testnet infrastructure* - no Docker installation or AWS account required: + + + + + +**Managing Your Nodes** + +After creating nodes, you can view and manage them at the [Testnet Infrastructure Console](/console/testnet-infra/nodes). + -Make sure to enable both precompiles during subnet creation. You can use the Developer Console to configure these settings. +Managed nodes automatically shut down after 3 days. For production or extended testing, see the self-hosted option below. -## Step 2: Add Initial Validator +### Production & Extended Testing Environments + +For production environments or extended testing periods, you should use Docker to run your nodes. + + + + + + + -Your subnet needs at least one validator to operate. You can either: -- Use a BuilderHub hosted node (recommended for testing) -- Run your own validator node + + -The validator you add here will become part of your L1's initial validator set after conversion. + ## Step 3: Convert Subnet to L1 From 36ef66f2cfa80a114cd59ea0323eaa450ae26931 Mon Sep 17 00:00:00 2001 From: navillanueva Date: Tue, 18 Nov 2025 17:19:34 -0500 Subject: [PATCH 5/7] testing quick creation --- ...reate-l1.mdx => 01-create-l1-speedrun.mdx} | 45 +++++++------ ...mc.mdx => 02-permissioned-l1-speedrun.mdx} | 63 ++++++++----------- .../04-speedrun-base-l1/meta.json | 6 +- 3 files changed, 51 insertions(+), 63 deletions(-) rename content/academy/permissionless-l1s/04-speedrun-base-l1/{01-create-l1.mdx => 01-create-l1-speedrun.mdx} (64%) rename content/academy/permissionless-l1s/04-speedrun-base-l1/{02-deploy-and-configure-vmc.mdx => 02-permissioned-l1-speedrun.mdx} (56%) diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx b/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1-speedrun.mdx similarity index 64% rename from content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx rename to content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1-speedrun.mdx index c29e9cd2c92..f6fcbe9906f 100644 --- a/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1.mdx +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/01-create-l1-speedrun.mdx @@ -6,15 +6,22 @@ authors: [nicolasarnedo] icon: Terminal --- +import { Step, Steps } from 'fumadocs-ui/components/steps'; import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import ToolboxMdxWrapper from "@/components/toolbox/academy/wrapper/ToolboxMdxWrapper.tsx" import ConvertSubnetToL1 from "@/components/toolbox/console/layer-1/create/ConvertSubnetToL1.tsx" +import CreateChain from "@/components/toolbox/console/layer-1/create/CreateChain"; +import CreateManagedTestnetNode from "@/components/toolbox/console/testnet-infra/ManagedTestnetNodes/CreateManagedTestnetNode"; +import AvalancheGoDocker from "@/components/toolbox/console/layer-1/AvalancheGoDockerL1"; This section provides a streamlined walkthrough for creating a new L1 from scratch. -You should already have a created L1 from the [Permissioned L1 course] with the Validator Manager Contract correctly set up that you can use to transform into a Permissionless L1. +You should already have a created L1 from the [Permissioned L1 course](/academy/permissioned-l1s) with the Validator Manager Contract correctly set up that you can use to transform into a Permissionless L1. But just in case you lost access to that one or want to start fresh, this guide is for you! -## Step 1: Create Subnet with necessary Precompiles + + + +### Create Subnet with necessary Precompiles When creating your subnet, you **must** enable the Native Minter and Reward Manager precompiles in your genesis configuration. These are essential for native token staking: @@ -25,30 +32,21 @@ When creating your subnet, you **must** enable the Native Minter and Reward Mana -## Step 2: Add Initial Validator - + ### Set Up Validator Node -Launch a node to track your Subnet. This node will become a validator for your Subnet, and later will be managed by the Validator Manager contract when we convert to L1. - -Use our *free managed testnet infrastructure* - no Docker installation or AWS account required: +Launch a validator node for your subnet using our free managed testnet infrastructure (no Docker required): -**Managing Your Nodes** - -After creating nodes, you can view and manage them at the [Testnet Infrastructure Console](/console/testnet-infra/nodes). - - -Managed nodes automatically shut down after 3 days. For production or extended testing, see the self-hosted option below. - - ### Production & Extended Testing Environments +After creating nodes, you can view and manage them at the [Testnet Infrastructure Console](/console/testnet-infra/nodes). **Managed nodes automatically shut down after 3 days**. For production or extended testing, see the self-hosted option below. + For production environments or extended testing periods, you should use Docker to run your nodes. @@ -62,8 +60,9 @@ For production environments or extended testing periods, you should use Docker t + -## Step 3: Convert Subnet to L1 +### Convert Subnet to L1 Once your subnet is running with a validator, convert it to a sovereign L1. This process: @@ -71,22 +70,20 @@ Once your subnet is running with a validator, convert it to a sovereign L1. This - **Transfers Authority**: Validator management shifts from P-Chain to your Validator Manager Contract - **Is Irreversible**: Once converted, you cannot revert to subnet status -### Key Conversion Parameters +#### Key Conversion Parameters 1. **Subnet ID**: Your subnet's unique identifier 2. **Validator Manager Blockchain ID**: Where your VMC will be deployed (typically your L1) -3. **Validator Manager Address**: The proxy address (usually `0xfacade0000000000000000000000000000000000`) +3. **Validator Manager Address**: The proxy address (pre-deployed to `0xfacade0000000000000000000000000000000000`) 4. **Initial Validators**: The validator(s) from your subnet -## Next Steps - -Now that your L1 is created with the required precompiles, you're ready to deploy and configure your Validator Manager Contract. + + - -For detailed information about subnet creation, see the [Permissioned L1s course](/academy/permissioned-l1s). - +## Next Steps +Now that your L1 is created with the required precompiles, you're ready to deploy and configure your Validator Manager Contract so that it **becomes a Permissioned L1**. diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx b/content/academy/permissionless-l1s/04-speedrun-base-l1/02-permissioned-l1-speedrun.mdx similarity index 56% rename from content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx rename to content/academy/permissionless-l1s/04-speedrun-base-l1/02-permissioned-l1-speedrun.mdx index 7992956239c..f5d8e19935f 100644 --- a/content/academy/permissionless-l1s/04-speedrun-base-l1/02-deploy-and-configure-vmc.mdx +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/02-permissioned-l1-speedrun.mdx @@ -1,40 +1,35 @@ --- -title: Deploy & Configure Validator Manager -description: Deploy and set up your Validator Manager Contract for permissionless staking +title: Setup Permissioned L1 +description: Deploy and set up your Validator Manager Contract to create a Proof of Authority blockchain updated: 2025-03-13 authors: [nicolasarnedo] icon: Terminal --- +import { Step, Steps } from 'fumadocs-ui/components/steps'; import ToolboxMdxWrapper from "@/components/toolbox/academy/wrapper/ToolboxMdxWrapper.tsx" import DeployValidatorManager from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/DeployValidatorManager.tsx" import UpgradeProxy from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/UpgradeProxy.tsx" import Initialize from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/Initialize.tsx" import InitValidatorSet from "@/components/toolbox/console/permissioned-l1s/validator-manager-setup/InitValidatorSet.tsx" -This section walks through deploying and configuring your Validator Manager Contract (VMC). This is a multi-step process that establishes the foundation for your permissionless L1. +This section walks through deploying and configuring your Validator Manager Contract (VMC) on your new L1. -## Overview +This is a multi-step process that establishes the necessary infrastructure to run a Permissioned L1 chain. This process is made (we hope) simple through the console, but in order to run and maintain this in a Production environment please be sure to complete the [Permissioned L1](/academy/permissioned-l1s) course. -The VMC setup involves four key steps: -1. Deploy the ValidatorManager implementation -2. Upgrade the proxy to point to the implementation -3. Initialize the contract with configuration parameters -4. Initialize the validator set from your L1 conversion + + -## Step 1: Deploy Validator Manager - -First, deploy the ValidatorManager implementation contract and its required ValidatorMessages library. - - -The ValidatorMessages library handles all message encoding/decoding for P-Chain communication. It's deployed once and can be shared across multiple validator managers. - +### Deploy most recent implementation of the Validator Manager Contract -## Step 2: Upgrade Proxy + + + +### Upgrade Proxy Link your proxy to the ValidatorManager implementation by upgrading the TransparentUpgradeableProxy at `0xfacade...` to point to your newly deployed contract. @@ -46,7 +41,10 @@ Make sure you have your L1 selected in the wallet component -## Step 3: Set Initial Configuration + + + +### Set Initial Configuration Configure your ValidatorManager with essential parameters through the `initialize()` function: @@ -55,44 +53,37 @@ Configure your ValidatorManager with essential parameters through the `initializ - **Churn Period**: Time window for validator changes (≤ 86400 seconds) - **Maximum Churn Percentage**: Weight change limit per period (1-20%) - -The `initialize()` function can only be called once. Double-check your parameters before proceeding. - - -## Step 4: Initialize Validator Set + + -Finally, initialize your ValidatorManager with the current validator set from your L1 conversion. This bridges P-Chain subnet creation with L1 validator management using cryptographically verified conversion data. +### Initialize Validator Set -### How It Works +Bridge P-Chain subnet creation with L1 validator management using cryptographically verified conversion data. + +#### How It Works The initialization: 1. Verifies P-Chain signed conversion data via Avalanche Warp Messaging 2. Registers each validator with their weight and node ID 3. Marks the validator set as initialized (permanent, one-time operation) -### Required Information +#### Required Information You'll need: - **Conversion Data**: Validator information from your subnet-to-L1 conversion - **Message Index**: Position in the Warp message queue - -Initialization can only be done once! Ensure you have the correct validator data. - - -## Next Steps - -Congratulations! Your Validator Manager is now fully configured. In the next section, you'll deploy and configure a Staking Manager to enable permissionless participation. + + - -For detailed information about each step, see the [Permissioned L1s course](/academy/permissioned-l1s/validator-manager-deployment). - +## Next Steps +Congratulations! Your Validator Manager is now fully configured. In the next section, you'll deploy and configure a Staking Manager to enable permissionless participation, which we will be transitioning to a Permissionless L1. diff --git a/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json b/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json index 9571f47f12d..6f3f4227c85 100644 --- a/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json +++ b/content/academy/permissionless-l1s/04-speedrun-base-l1/meta.json @@ -1,7 +1,7 @@ { - "title": "Speedrun Base L1 Setup", + "title": "Permissioned L1 Setup Speedrun", "pages": [ - "01-create-l1", - "02-deploy-and-configure-vmc" + "01-create-l1-speedrun", + "02-permissioned-l1-speedrun" ] } From 1d496bb446156429fff7c90268a45aaaa6944874 Mon Sep 17 00:00:00 2001 From: navillanueva Date: Wed, 19 Nov 2025 08:52:46 -0500 Subject: [PATCH 6/7] fixed versions --- scripts/versions.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/versions.json b/scripts/versions.json index 244fc147c36..164e940ccc8 100644 --- a/scripts/versions.json +++ b/scripts/versions.json @@ -5,9 +5,9 @@ "avaplatform/icm-relayer": "v1.7.4" }, "testnet": { - "avaplatform/avalanchego": "v1.14.0-fuji", - "avaplatform/subnet-evm_avalanchego": "v0.8.0-fuji_v1.14.0-fuji", - "avaplatform/icm-relayer": "v1.7.2-fuji" + "avaplatform/avalanchego": "v1.14.0", + "avaplatform/subnet-evm_avalanchego": "v0.8.0_v1.14.0", + "avaplatform/icm-relayer": "v1.7.4" }, "ava-labs/icm-contracts": "4d5ab0b6dbc653770cfe9709878c9406eb28b71c" } \ No newline at end of file From e79d8dd84624411982d9fe2283cc7f1b5612d550 Mon Sep 17 00:00:00 2001 From: navillanueva Date: Wed, 19 Nov 2025 09:24:05 -0500 Subject: [PATCH 7/7] fixed versions --- .../permissionless-l1s/02-proof-of-stake/01-introduction.mdx | 2 +- content/blog/durango-avalanche-warp-messaging.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/academy/permissionless-l1s/02-proof-of-stake/01-introduction.mdx b/content/academy/permissionless-l1s/02-proof-of-stake/01-introduction.mdx index f8d3984b73b..99894c53507 100644 --- a/content/academy/permissionless-l1s/02-proof-of-stake/01-introduction.mdx +++ b/content/academy/permissionless-l1s/02-proof-of-stake/01-introduction.mdx @@ -10,7 +10,7 @@ icon: Book Converting from PoA to PoS isn't about replacing your entire blockchain—it's about strategically combining two concepts you may have already learned in separate courses: -![Proof of Stake Architecture](https://qizat5l3bwvomkny.public.blob.vercel-storage.com/PoS.png) +Proof of Stake Architecture ## Proof of Stake as Sybil Protection diff --git a/content/blog/durango-avalanche-warp-messaging.mdx b/content/blog/durango-avalanche-warp-messaging.mdx index fec65d46a9d..ed218c9a1b6 100644 --- a/content/blog/durango-avalanche-warp-messaging.mdx +++ b/content/blog/durango-avalanche-warp-messaging.mdx @@ -7,7 +7,7 @@ topics: [Network Updates, Durango Upgrade, Avalanche Warp Messaging, EVM, Intero comments: true --- -![Durango: Avalanche Warp Messaging Comes to the EVM](https://www.avax.network/_astro/65bc11f33d8a959ccaee46f2_durango_20test4_GXxOE.webp) +Durango: Avalanche Warp Messaging Comes to the EVM The publishing of the pre-release code for a proposed upgrade to the Avalanche Network, codenamed Durango @@ -35,7 +35,7 @@ To send a message, an [untrusted relayer](https://github.com/ava-labs/awm-relaye **Note, no transactions/messages are included in the P-Chain to send an Avalanche Warp Message. Messages are passed directly between communicating Subnets or between a Subnet and the C-Chain.** -![AWM Architecture Diagram](https://images.ctfassets.net/voq4a5ue459o/4f048dc2a414c1a60bb67c7b299581b3/fe273d73529d1bbff8a3390e37f4eb7c/65bc12b118fad82932fc4693_KLrCXnfqjgHu9ltWr39vbTzOEfiYVFWu4O6GUGiVXll3XMCnAFVROeKf2q625pV0h0YSo7G2UywgsS9cocU3V6gRsoIOrdxoIC3.png?w=1600&q=80&fm=webp) +AWM Architecture Diagram This lightweight protocol replaces the management of point-to-point connections with the simplicity of one unified registry: the Avalanche P-Chain. For the full details on how this is integrated into the EVM, see [ACP-30](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/30-avalanche-warp-x-evm/README.md).