From 0256e606120c74f4cc73fdc52344c962f3724fbe Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Wed, 5 Feb 2025 12:42:29 +1000 Subject: [PATCH 1/8] Minimal restructure to demo Concept/How To/Reference/Tutorial approach --- docs/developers/Concepts/_category_.json | 4 ++++ docs/developers/{ => Concepts}/avs-developer-guide.md | 0 docs/developers/Concepts/security/_category_.json | 4 ++++ .../security}/avs-developer-best-practices.md | 0 docs/developers/HowTo/_category_.json | 4 ++++ docs/developers/{ => HowTo}/avs-opset-slashing.md | 4 ++-- docs/developers/{ => HowTo}/avs-permissionlesss.md | 4 ++-- docs/developers/{ => HowTo}/deployment-testnet-mainnet.md | 8 ++++---- docs/developers/{ => HowTo}/how-to-build-an-avs.md | 4 ++-- .../implement-avs-marketplace-interfaces.md} | 4 ++-- docs/developers/{ => HowTo}/rewards.md | 4 ++-- docs/developers/{ => HowTo}/support.md | 4 ++-- docs/developers/Reference/_category_.json | 4 ++++ docs/developers/{ => Reference}/resources.md | 0 docs/developers/{ => Tutorials}/quickstart.md | 2 +- docs/eigenlayer/resources/learning-resources.md | 2 +- docs/eigenlayer/restaking-guides/overview.md | 2 +- .../rewards-claiming/rewards-claiming-overview.md | 2 +- src/pages/index.js | 2 +- 19 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 docs/developers/Concepts/_category_.json rename docs/developers/{ => Concepts}/avs-developer-guide.md (100%) create mode 100644 docs/developers/Concepts/security/_category_.json rename docs/developers/{ => Concepts/security}/avs-developer-best-practices.md (100%) create mode 100644 docs/developers/HowTo/_category_.json rename docs/developers/{ => HowTo}/avs-opset-slashing.md (99%) rename docs/developers/{ => HowTo}/avs-permissionlesss.md (94%) rename docs/developers/{ => HowTo}/deployment-testnet-mainnet.md (76%) rename docs/developers/{ => HowTo}/how-to-build-an-avs.md (96%) rename docs/developers/{avs-dashboard-onboarding.md => HowTo/implement-avs-marketplace-interfaces.md} (99%) rename docs/developers/{ => HowTo}/rewards.md (98%) rename docs/developers/{ => HowTo}/support.md (87%) create mode 100644 docs/developers/Reference/_category_.json rename docs/developers/{ => Reference}/resources.md (100%) rename docs/developers/{ => Tutorials}/quickstart.md (98%) diff --git a/docs/developers/Concepts/_category_.json b/docs/developers/Concepts/_category_.json new file mode 100644 index 00000000..4f6616f2 --- /dev/null +++ b/docs/developers/Concepts/_category_.json @@ -0,0 +1,4 @@ +{ + "position": 1, + "label": "Concepts" +} \ No newline at end of file diff --git a/docs/developers/avs-developer-guide.md b/docs/developers/Concepts/avs-developer-guide.md similarity index 100% rename from docs/developers/avs-developer-guide.md rename to docs/developers/Concepts/avs-developer-guide.md diff --git a/docs/developers/Concepts/security/_category_.json b/docs/developers/Concepts/security/_category_.json new file mode 100644 index 00000000..535d2317 --- /dev/null +++ b/docs/developers/Concepts/security/_category_.json @@ -0,0 +1,4 @@ +{ + "position": 1, + "label": "Security" +} \ No newline at end of file diff --git a/docs/developers/avs-developer-best-practices.md b/docs/developers/Concepts/security/avs-developer-best-practices.md similarity index 100% rename from docs/developers/avs-developer-best-practices.md rename to docs/developers/Concepts/security/avs-developer-best-practices.md diff --git a/docs/developers/HowTo/_category_.json b/docs/developers/HowTo/_category_.json new file mode 100644 index 00000000..40c82b3b --- /dev/null +++ b/docs/developers/HowTo/_category_.json @@ -0,0 +1,4 @@ +{ + "position": 1, + "label": "How To" +} \ No newline at end of file diff --git a/docs/developers/avs-opset-slashing.md b/docs/developers/HowTo/avs-opset-slashing.md similarity index 99% rename from docs/developers/avs-opset-slashing.md rename to docs/developers/HowTo/avs-opset-slashing.md index e4f3f767..da5c5622 100644 --- a/docs/developers/avs-opset-slashing.md +++ b/docs/developers/HowTo/avs-opset-slashing.md @@ -1,6 +1,6 @@ --- -sidebar_position: 4 -title: AVS Operator Set and Slashing of Unique Stake +sidebar_position: 3 +title: Implement Slashing of Unique Stake --- diff --git a/docs/developers/avs-permissionlesss.md b/docs/developers/HowTo/avs-permissionlesss.md similarity index 94% rename from docs/developers/avs-permissionlesss.md rename to docs/developers/HowTo/avs-permissionlesss.md index d6cc784f..3259aaae 100644 --- a/docs/developers/avs-permissionlesss.md +++ b/docs/developers/HowTo/avs-permissionlesss.md @@ -1,6 +1,6 @@ --- -sidebar_position: 8 -title: Permissionless Token Strategies +sidebar_position: 6 +title: Add ERC-20 Tokens as Restakable Asset --- # Permissionless Token Strategies diff --git a/docs/developers/deployment-testnet-mainnet.md b/docs/developers/HowTo/deployment-testnet-mainnet.md similarity index 76% rename from docs/developers/deployment-testnet-mainnet.md rename to docs/developers/HowTo/deployment-testnet-mainnet.md index 5fa70ea9..863c27cf 100644 --- a/docs/developers/deployment-testnet-mainnet.md +++ b/docs/developers/HowTo/deployment-testnet-mainnet.md @@ -1,6 +1,6 @@ --- -sidebar_position: 9 -title: Preparing for Testnet and Mainnet Deployment +sidebar_position: 5 +title: Prepare for and Deploy to Testnet and Mainnet --- @@ -15,13 +15,13 @@ title: Preparing for Testnet and Mainnet Deployment - Communication channels that will be utilized for AVS upgrades. - Describe Operator monitoring tooling available, such as GraFana dashboards, log files or similar. -3. Follow the [AVS Developer Security Best Practices](./avs-developer-best-practices.md) and [Key Manage Considerations for Developers](./avs-developer-best-practices.md#key-management-recommendation-for-developers). +3. Follow the [AVS Developer Security Best Practices](../Concepts/security/avs-developer-best-practices.md) and [Key Manage Considerations for Developers](../Concepts/security/avs-developer-best-practices.md#key-management-recommendation-for-developers). 4. Implement the [Node Specification](https://docs.eigenlayer.xyz/eigenlayer/avs-guides/spec/intro) for your Operator executable package. 5. Follow the [Testnet Dashboard Onboarding instructions](https://docs.eigenlayer.xyz/eigenlayer/avs-guides/avs-dashboard-onboarding). -6. Implement Rewards distributions per the instructions [here](./rewards.md). +6. Implement Rewards distributions per the instructions [here](rewards.md). ## Preparing and Deploying to Mainnet diff --git a/docs/developers/how-to-build-an-avs.md b/docs/developers/HowTo/how-to-build-an-avs.md similarity index 96% rename from docs/developers/how-to-build-an-avs.md rename to docs/developers/HowTo/how-to-build-an-avs.md index e2541425..bf6cb755 100644 --- a/docs/developers/how-to-build-an-avs.md +++ b/docs/developers/HowTo/how-to-build-an-avs.md @@ -1,11 +1,11 @@ --- -sidebar_position: 3 +sidebar_position: 1 title: Build Your Own AVS --- This section will walk you through the process of designing and building your own AVS from scratch. It is intended to take you from an idea to a working local prototype. -Before proceeding, please review the previous sections on [AVS Overview](./avs-developer-guide.md), [EigenLayer Overview](/docs/eigenlayer/overview/README.md) and the [Quick Start example](./quickstart.md) to become familiar with the basic concepts. +Before proceeding, please review the previous sections on [AVS Overview](../Concepts/avs-developer-guide.md), [EigenLayer Overview](/docs/eigenlayer/overview/README.md) and the [Quick Start example](../Tutorials/quickstart.md) to become familiar with the basic concepts. ## Step 1: AVS Design diff --git a/docs/developers/avs-dashboard-onboarding.md b/docs/developers/HowTo/implement-avs-marketplace-interfaces.md similarity index 99% rename from docs/developers/avs-dashboard-onboarding.md rename to docs/developers/HowTo/implement-avs-marketplace-interfaces.md index ad42b905..bb403712 100644 --- a/docs/developers/avs-dashboard-onboarding.md +++ b/docs/developers/HowTo/implement-avs-marketplace-interfaces.md @@ -1,6 +1,6 @@ --- -sidebar_position: 7 -title: AVS Dashboard Onboarding +sidebar_position: 4 +title: Implement AVS Marketplace Interfaces --- diff --git a/docs/developers/rewards.md b/docs/developers/HowTo/rewards.md similarity index 98% rename from docs/developers/rewards.md rename to docs/developers/HowTo/rewards.md index 3b226f55..116f49b5 100644 --- a/docs/developers/rewards.md +++ b/docs/developers/HowTo/rewards.md @@ -1,6 +1,6 @@ --- -sidebar_position: 8 -title: AVS Rewards +sidebar_position: 2 +title: Implement Rewards --- ## Overview diff --git a/docs/developers/support.md b/docs/developers/HowTo/support.md similarity index 87% rename from docs/developers/support.md rename to docs/developers/HowTo/support.md index 0b481536..86aef675 100644 --- a/docs/developers/support.md +++ b/docs/developers/HowTo/support.md @@ -1,6 +1,6 @@ --- -sidebar_position: 4 -title: Developer Support +sidebar_position: 7 +title: Get Support --- If you have any questions or comments throughout the AVS development process, you can get support by reaching out to us using the Intercom button on the bottom right side of this page or clicking here. We will promptly follow up with support! \ No newline at end of file diff --git a/docs/developers/Reference/_category_.json b/docs/developers/Reference/_category_.json new file mode 100644 index 00000000..953bad76 --- /dev/null +++ b/docs/developers/Reference/_category_.json @@ -0,0 +1,4 @@ +{ + "position": 1, + "label": "Reference" +} \ No newline at end of file diff --git a/docs/developers/resources.md b/docs/developers/Reference/resources.md similarity index 100% rename from docs/developers/resources.md rename to docs/developers/Reference/resources.md diff --git a/docs/developers/quickstart.md b/docs/developers/Tutorials/quickstart.md similarity index 98% rename from docs/developers/quickstart.md rename to docs/developers/Tutorials/quickstart.md index 1a05d61e..9b392dae 100644 --- a/docs/developers/quickstart.md +++ b/docs/developers/Tutorials/quickstart.md @@ -84,7 +84,7 @@ function respondToTask( } ``` -Please find a complete list of the requirements to implement an AVS at [Build Your Own AVS: Step 2 Idea to Code](/docs/developers/how-to-build-an-avs.md#step-2-idea-to-code-building-and-deploying-your-avs-locally). +Please find a complete list of the requirements to implement an AVS at [Build Your Own AVS: Step 2 Idea to Code](/docs/developers/HowTo/how-to-build-an-avs.md#step-2-idea-to-code-building-and-deploying-your-avs-locally). ### Contract Deployment Scripts diff --git a/docs/eigenlayer/resources/learning-resources.md b/docs/eigenlayer/resources/learning-resources.md index 949abd30..4f773c0d 100644 --- a/docs/eigenlayer/resources/learning-resources.md +++ b/docs/eigenlayer/resources/learning-resources.md @@ -31,7 +31,7 @@ title: Learning Resources ### Developer resources -Please see Developer Learning Resources [here](/docs/developers/resources.md). +Please see Developer Learning Resources [here](/docs/developers/Reference/resources.md). ### Community diff --git a/docs/eigenlayer/restaking-guides/overview.md b/docs/eigenlayer/restaking-guides/overview.md index 50d3be86..9a38ba5c 100644 --- a/docs/eigenlayer/restaking-guides/overview.md +++ b/docs/eigenlayer/restaking-guides/overview.md @@ -6,7 +6,7 @@ title: Restaking Overview ## **Liquid & Native Restaking** -**Liquid restaking** is the process of depositing "liquid" tokens, including LSTs, EIGEN token, and any ERC20 token into the EigenLayer smart contracts. For more information about adding new ERC20 tokens, please see [Permissionless Token Strategies](/docs/developers/avs-permissionlesss.md). +**Liquid restaking** is the process of depositing "liquid" tokens, including LSTs, EIGEN token, and any ERC20 token into the EigenLayer smart contracts. For more information about adding new ERC20 tokens, please see [Permissionless Token Strategies](/docs/developers/HowTo/avs-permissionlesss.md). **Native restaking** is the process of changing an Ethereum validator's[ withdrawal credentials](https://notes.ethereum.org/@launchpad/withdrawals-faq#Q-What-are-withdrawals) to EigenLayer's smart contracts. You must operate an Ethereum Validator node in order to participate in Native Restaking. To learn more or set up your Ethereum Validator please follow this link from the[ Ethereum Foundation](https://launchpad.ethereum.org/). diff --git a/docs/eigenlayer/rewards-claiming/rewards-claiming-overview.md b/docs/eigenlayer/rewards-claiming/rewards-claiming-overview.md index 81477d93..b2133e89 100644 --- a/docs/eigenlayer/rewards-claiming/rewards-claiming-overview.md +++ b/docs/eigenlayer/rewards-claiming/rewards-claiming-overview.md @@ -45,4 +45,4 @@ Rewards are calculated via an off-chain process. A Merkle root is posted which r ## AVS Integrations -Please refer to [AVS Guide: AVS Rewards](/docs/developers/rewards.md) for complete instructions. +Please refer to [AVS Guide: AVS Rewards](/docs/developers/HowTo/rewards.md) for complete instructions. diff --git a/src/pages/index.js b/src/pages/index.js index 52af0ce1..d90fb9ae 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -52,7 +52,7 @@ function Home() { Date: Wed, 5 Feb 2025 12:31:45 -0500 Subject: [PATCH 2/8] fixed redirects and urls --- docs/eigenlayer/overview/README.md | 2 +- docusaurus.config.js | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/eigenlayer/overview/README.md b/docs/eigenlayer/overview/README.md index c49ce3e6..a1b878b0 100644 --- a/docs/eigenlayer/overview/README.md +++ b/docs/eigenlayer/overview/README.md @@ -48,6 +48,6 @@ To learn more about EigenLayer please read the [**Whitepaper**](/pdf/EigenLayer_ Get started with EigenLayer: - [Restake on EigenLayer](/eigenlayer/restaking-guides/overview) - [Register as an Operator](/eigenlayer/operator-guides/operator-installation) -- [Build an AVS](/developers/avs-developer-guide) +- [Build an AVS](/developers/Concepts/avs-developer-guide) - Join our Ecosystem: [Discord](https://discord.com/invite/eigenlayer), [Twitter](https://twitter.com/eigenlayer) diff --git a/docusaurus.config.js b/docusaurus.config.js index 804976ed..c1318edc 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -75,10 +75,7 @@ const config = { to: "/eigenlayer/operator-guides/operator-faq", }, - { - from: "/eigenlayer/avs-guides/avs-development-guide", - to: "/developers/how-to-build-an-avs", - }, + { from: "/eigenlayer/restaking-guides/restaking-user-guide/testnet/rewards-claiming/rewards-claiming-instructions", @@ -209,7 +206,7 @@ const config = { activeBasePath: 'eigenlayer/', }, { - to: "developers/avs-developer-guide", + to: "developers/Concepts/avs-developer-guide", label: "Developers", position: "left", activeBasePath: 'developer/', From bd627ef1cf52b5c748f8fdec7c0ae4a4d5bcd39a Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Thu, 6 Feb 2025 14:55:28 +1000 Subject: [PATCH 3/8] Addressing review comments --- docs/developers/Concepts/security/_category_.json | 4 ---- docs/developers/HowTo/avs-opset-slashing.md | 2 +- docs/developers/HowTo/avs-permissionlesss.md | 2 +- docs/developers/HowTo/deployment-testnet-mainnet.md | 4 ++-- docs/developers/HowTo/how-to-build-an-avs.md | 4 ++-- ...avs-marketplace-interfaces.md => onboard-avs-dashboard.md} | 4 ++-- docs/developers/{Tutorials => HowTo}/quickstart.md | 4 ++-- docs/developers/HowTo/rewards.md | 2 +- docs/developers/HowTo/support.md | 2 +- .../security => Reference}/avs-developer-best-practices.md | 0 docusaurus.config.js | 4 ++++ 11 files changed, 16 insertions(+), 16 deletions(-) delete mode 100644 docs/developers/Concepts/security/_category_.json rename docs/developers/HowTo/{implement-avs-marketplace-interfaces.md => onboard-avs-dashboard.md} (99%) rename docs/developers/{Tutorials => HowTo}/quickstart.md (99%) rename docs/developers/{Concepts/security => Reference}/avs-developer-best-practices.md (100%) diff --git a/docs/developers/Concepts/security/_category_.json b/docs/developers/Concepts/security/_category_.json deleted file mode 100644 index 535d2317..00000000 --- a/docs/developers/Concepts/security/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 1, - "label": "Security" -} \ No newline at end of file diff --git a/docs/developers/HowTo/avs-opset-slashing.md b/docs/developers/HowTo/avs-opset-slashing.md index da5c5622..48918b35 100644 --- a/docs/developers/HowTo/avs-opset-slashing.md +++ b/docs/developers/HowTo/avs-opset-slashing.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 4 title: Implement Slashing of Unique Stake --- diff --git a/docs/developers/HowTo/avs-permissionlesss.md b/docs/developers/HowTo/avs-permissionlesss.md index 3259aaae..5f4fdf4f 100644 --- a/docs/developers/HowTo/avs-permissionlesss.md +++ b/docs/developers/HowTo/avs-permissionlesss.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 7 title: Add ERC-20 Tokens as Restakable Asset --- diff --git a/docs/developers/HowTo/deployment-testnet-mainnet.md b/docs/developers/HowTo/deployment-testnet-mainnet.md index 863c27cf..6c4655bd 100644 --- a/docs/developers/HowTo/deployment-testnet-mainnet.md +++ b/docs/developers/HowTo/deployment-testnet-mainnet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 6 title: Prepare for and Deploy to Testnet and Mainnet --- @@ -15,7 +15,7 @@ title: Prepare for and Deploy to Testnet and Mainnet - Communication channels that will be utilized for AVS upgrades. - Describe Operator monitoring tooling available, such as GraFana dashboards, log files or similar. -3. Follow the [AVS Developer Security Best Practices](../Concepts/security/avs-developer-best-practices.md) and [Key Manage Considerations for Developers](../Concepts/security/avs-developer-best-practices.md#key-management-recommendation-for-developers). +3. Follow the [AVS Developer Security Best Practices](../Reference/avs-developer-best-practices.md) and [Key Manage Considerations for Developers](../Reference/avs-developer-best-practices.md#key-management-recommendation-for-developers). 4. Implement the [Node Specification](https://docs.eigenlayer.xyz/eigenlayer/avs-guides/spec/intro) for your Operator executable package. diff --git a/docs/developers/HowTo/how-to-build-an-avs.md b/docs/developers/HowTo/how-to-build-an-avs.md index bf6cb755..e180eca9 100644 --- a/docs/developers/HowTo/how-to-build-an-avs.md +++ b/docs/developers/HowTo/how-to-build-an-avs.md @@ -1,11 +1,11 @@ --- -sidebar_position: 1 +sidebar_position: 2 title: Build Your Own AVS --- This section will walk you through the process of designing and building your own AVS from scratch. It is intended to take you from an idea to a working local prototype. -Before proceeding, please review the previous sections on [AVS Overview](../Concepts/avs-developer-guide.md), [EigenLayer Overview](/docs/eigenlayer/overview/README.md) and the [Quick Start example](../Tutorials/quickstart.md) to become familiar with the basic concepts. +Before proceeding, please review the previous sections on [AVS Overview](../Concepts/avs-developer-guide.md), [EigenLayer Overview](/docs/eigenlayer/overview/README.md) and the [Quick Start example](quickstart.md) to become familiar with the basic concepts. ## Step 1: AVS Design diff --git a/docs/developers/HowTo/implement-avs-marketplace-interfaces.md b/docs/developers/HowTo/onboard-avs-dashboard.md similarity index 99% rename from docs/developers/HowTo/implement-avs-marketplace-interfaces.md rename to docs/developers/HowTo/onboard-avs-dashboard.md index bb403712..7f3953ea 100644 --- a/docs/developers/HowTo/implement-avs-marketplace-interfaces.md +++ b/docs/developers/HowTo/onboard-avs-dashboard.md @@ -1,6 +1,6 @@ --- -sidebar_position: 4 -title: Implement AVS Marketplace Interfaces +sidebar_position: 5 +title: Onboard to AVS Dashboard --- diff --git a/docs/developers/Tutorials/quickstart.md b/docs/developers/HowTo/quickstart.md similarity index 99% rename from docs/developers/Tutorials/quickstart.md rename to docs/developers/HowTo/quickstart.md index 9b392dae..6539492d 100644 --- a/docs/developers/Tutorials/quickstart.md +++ b/docs/developers/HowTo/quickstart.md @@ -1,6 +1,6 @@ --- -sidebar_position: 2 -title: Quick Start Example +sidebar_position: 1 +title: Get started --- ## Hello World AVS: Local Deployment diff --git a/docs/developers/HowTo/rewards.md b/docs/developers/HowTo/rewards.md index 116f49b5..f2e9948d 100644 --- a/docs/developers/HowTo/rewards.md +++ b/docs/developers/HowTo/rewards.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 3 title: Implement Rewards --- diff --git a/docs/developers/HowTo/support.md b/docs/developers/HowTo/support.md index 86aef675..624c57f2 100644 --- a/docs/developers/HowTo/support.md +++ b/docs/developers/HowTo/support.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 8 title: Get Support --- diff --git a/docs/developers/Concepts/security/avs-developer-best-practices.md b/docs/developers/Reference/avs-developer-best-practices.md similarity index 100% rename from docs/developers/Concepts/security/avs-developer-best-practices.md rename to docs/developers/Reference/avs-developer-best-practices.md diff --git a/docusaurus.config.js b/docusaurus.config.js index 804976ed..b39dcfcd 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -131,6 +131,10 @@ const config = { from: "/eigenlayer/restaking-guides/restaking-user-guide/testnet/obtaining-testnet-eth-and-liquid-staking-tokens-lsts", to: "/eigenlayer/restaking-guides/testnet/obtaining-testnet-eth-and-liquid-staking-tokens-lsts", }, + { + from: "/developers", + to: "/developers/Concepts/avs-developer-guide", + }, { from: "/eigenlayer/economy/economy-overview", to: "/eigenlayer/economy/economy-calculation-and-formulas", From 96bbf96136e1c86c14c513d8ed530ea9e52d0f50 Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Thu, 6 Feb 2025 15:45:06 +1000 Subject: [PATCH 4/8] Added redirects --- docusaurus.config.js | 45 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index d87f512c..a0cc5d77 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -136,7 +136,50 @@ const config = { from: "/eigenlayer/economy/economy-overview", to: "/eigenlayer/economy/economy-calculation-and-formulas", }, - + { + from: "/developers/avs-developer-guide.md", + to: "/developers/Concepts/avs-developer-guide.md", + }, + { + from: "/developers/avs-developer-best-practices.md", + to: "/developers/Reference/avs-developer-best-practices.md", + }, + { + from: "/developers/avs-opset-slashing.md", + to: "/developers/HowTo/avs-opset-slashing.md", + }, + { + from: "/developers/avs-permissionlesss.md", + to: "/developers/HowTo/avs-permissionlesss.md.md", + }, + { + from: "/developers/deployment-testnet-mainnet.md", + to: "/developers/HowTo/deployment-testnet-mainnet.md", + }, + { + from: "/developers/how-to-build-an-avs.md", + to: "/developers/HowTo/how-to-build-an-avs.md", + }, + { + from: "/developers/avs-dashboard-onboarding.md", + to: "/developers/HowTo/onboard-avs-dashboard.md", + }, + { + from: "/developers/rewards.md", + to: "/developers/HowTo/rewards.md", + }, + { + from: "/developers/support.md", + to: "/developers/HowTo/support.md", + }, + { + from: "/developers/resources.md", + to: "/developers/Reference/resources.md", + }, + { + from: "/developers/quickstart.md", + to: "/developers/Tutorials/quickstart.md", + }, ], createRedirects(existingPath) { From 52643299099a922db2671a9cd997850e9ff11f6e Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Thu, 6 Feb 2025 16:02:15 +1000 Subject: [PATCH 5/8] fixed redirects --- docusaurus.config.js | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index a0cc5d77..ab74d7c9 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -137,48 +137,48 @@ const config = { to: "/eigenlayer/economy/economy-calculation-and-formulas", }, { - from: "/developers/avs-developer-guide.md", - to: "/developers/Concepts/avs-developer-guide.md", + from: "/developers/avs-developer-guide", + to: "/developers/Concepts/avs-developer-guide", }, { - from: "/developers/avs-developer-best-practices.md", - to: "/developers/Reference/avs-developer-best-practices.md", + from: "/developers/avs-developer-best-practices", + to: "/developers/Reference/avs-developer-best-practices", }, { - from: "/developers/avs-opset-slashing.md", - to: "/developers/HowTo/avs-opset-slashing.md", + from: "/developers/avs-opset-slashing", + to: "/developers/HowTo/avs-opset-slashing", }, { - from: "/developers/avs-permissionlesss.md", - to: "/developers/HowTo/avs-permissionlesss.md.md", + from: "/developers/avs-permissionlesss", + to: "/developers/HowTo/avs-permissionlesss", }, { - from: "/developers/deployment-testnet-mainnet.md", - to: "/developers/HowTo/deployment-testnet-mainnet.md", + from: "/developers/deployment-testnet-mainnet", + to: "/developers/HowTo/deployment-testnet-mainnet", }, { - from: "/developers/how-to-build-an-avs.md", - to: "/developers/HowTo/how-to-build-an-avs.md", + from: "/developers/how-to-build-an-avs", + to: "/developers/HowTo/how-to-build-an-avs", }, { - from: "/developers/avs-dashboard-onboarding.md", - to: "/developers/HowTo/onboard-avs-dashboard.md", + from: "/developers/avs-dashboard-onboarding", + to: "/developers/HowTo/onboard-avs-dashboard", }, { - from: "/developers/rewards.md", - to: "/developers/HowTo/rewards.md", + from: "/developers/rewards", + to: "/developers/HowTo/rewards", }, { - from: "/developers/support.md", - to: "/developers/HowTo/support.md", + from: "/developers/support", + to: "/developers/HowTo/support", }, { - from: "/developers/resources.md", - to: "/developers/Reference/resources.md", + from: "/developers/resources", + to: "/developers/Reference/resources", }, { - from: "/developers/quickstart.md", - to: "/developers/Tutorials/quickstart.md", + from: "/developers/quickstart", + to: "/developers/Tutorials/quickstart", }, ], createRedirects(existingPath) { From 4e5b0bdc95527fb0a6af7a3b6f203fb5c10cc035 Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Thu, 6 Feb 2025 16:10:06 +1000 Subject: [PATCH 6/8] more redirect fixing --- docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index ab74d7c9..cef5e2dc 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -178,7 +178,7 @@ const config = { }, { from: "/developers/quickstart", - to: "/developers/Tutorials/quickstart", + to: "/developers/HowTo/quickstart", }, ], createRedirects(existingPath) { From 0ed8b3ff15951607cdc653dece183c4294e30e04 Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Tue, 1 Apr 2025 12:57:26 +1000 Subject: [PATCH 7/8] Added testnets topic --- .../test/{test-avs.md => test-locally.md} | 4 ++-- docs/developers/HowTo/test/testnets.md | 18 ++++++++++++++++++ static/img/testnets.png | Bin 0 -> 97751 bytes 3 files changed, 20 insertions(+), 2 deletions(-) rename docs/developers/HowTo/test/{test-avs.md => test-locally.md} (96%) create mode 100644 docs/developers/HowTo/test/testnets.md create mode 100644 static/img/testnets.png diff --git a/docs/developers/HowTo/test/test-avs.md b/docs/developers/HowTo/test/test-locally.md similarity index 96% rename from docs/developers/HowTo/test/test-avs.md rename to docs/developers/HowTo/test/test-locally.md index 9ac36ddd..5be9ae79 100644 --- a/docs/developers/HowTo/test/test-avs.md +++ b/docs/developers/HowTo/test/test-locally.md @@ -1,6 +1,6 @@ --- -sidebar_position: 4 -title: Test AVS +sidebar_position: 1 +title: Locally --- :::note AVS Devnet is currently in Public Alpha and is rapidly being upgraded. Features may be added, removed or otherwise improved or modified, diff --git a/docs/developers/HowTo/test/testnets.md b/docs/developers/HowTo/test/testnets.md new file mode 100644 index 00000000..5bb18584 --- /dev/null +++ b/docs/developers/HowTo/test/testnets.md @@ -0,0 +1,18 @@ +--- +sidebar_position: 2 +title: Testnets +--- + +To support diverse testing needs, EigenLayer is available on multiple testnets. + + + + +| **Testnet / Environment** | **Namespace** | **Enables** | **Benefits** | +|-------------------------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Sepolia testnet** | `testnet-sepolia` | Rapid development iterations, and integration testing for AVS customers. | Streamlined environment for quick testing cycles, efficient troubleshooting, and accelerated development. Sepolia hosts many existing apps and rollups. | +| **Hoodi testnet** | `testnet-hoodi` | AVS developers, LRTs, Operators, and integrators to test upcoming EigenLayer features and end to end interactions. For example, Rewards, EigenPods. | Early access to new functionality, proactive issue identification, and a collaborative development environment. | +| **Hoodi staging environment** | `staging-hoodi` | AVSs to signal code readiness, Operators and AVSs to test production interactions, and Operators to evaluate new AVSs before mainnet. | Mirrors mainnet conditions for accurate and reliable deployment testing. | +| **Holesky testnet** | `testnet-holesky` | Smooth transition for users to newer testnets. | Maintains compatibility and transition support. Holesky will be sunset in Q3 2025. | + +For contract addresses, refer to the [eigenlayer-contracts-metadata](https://github.com/Layr-Labs/eigenlayer-contracts-zeus-metadata) repository. \ No newline at end of file diff --git a/static/img/testnets.png b/static/img/testnets.png new file mode 100644 index 0000000000000000000000000000000000000000..b442dbfa9092745a8ae3b97c69b98220cd7d431a GIT binary patch literal 97751 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

Z0!U4l&HLS7q^Tud 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 literal 0 HcmV?d00001 From 321e40de05f3db36fb8be8eef1fa7080d6ca2a09 Mon Sep 17 00:00:00 2001 From: Madeline Murray Date: Tue, 1 Apr 2025 13:41:59 +1000 Subject: [PATCH 8/8] Updated references to Holesky --- .../eigenlayer-contracts/core-contracts.md | 20 +++++++++---------- .../operator-sets/operator-sets-concept.md | 2 +- .../strategies-and-magnitudes.md | 2 +- .../concepts/slashing/slashing-concept.md | 2 +- .../concepts/slashing/unique-stake.md | 2 +- docs/eigenlayer/releases.md | 10 +++++----- .../howto/claimrewards/claim-rewards-cli.mdx | 10 +++++----- docs/operators/howto/operator-sets.md | 4 ++-- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/developers/Concepts/eigenlayer-contracts/core-contracts.md b/docs/developers/Concepts/eigenlayer-contracts/core-contracts.md index 1f5c07fa..c19e6cb1 100644 --- a/docs/developers/Concepts/eigenlayer-contracts/core-contracts.md +++ b/docs/developers/Concepts/eigenlayer-contracts/core-contracts.md @@ -10,17 +10,17 @@ The [EigenLayer middleware contracts](middleware-contracts.md) are the higher le The EigenLayer core contracts are documented in the [eigenlayer-contracts](https://github.com/Layr-Labs/eigenlayer-contracts) repository. The core contracts include: -| Core contract | Description | -|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [StrategyManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#strategymanager) | Responsible for handling the accounting for Restakers as they deposit and withdraw ERC20 tokens from their corresponding strategies. The StrategyManager tracks the amount of restaked assets each Restaker has within Eigenlayer. | -| [DelegationManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#delegationmanager) | Responsible for enabling Restakers to delegate assets to Operators, and withdraw assets. The DelegationManager tracks the amount of assets from each Strategy that have been delegated to each Operator, and tracks accounting for slashing. | -| [EigenPodManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#eigenpodmanager) | Enables native ETH restaking | -| [AllocationManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#allocationmanager) | Responsible for creating Operator Sets, and Operator registrations to Operator Sets. The Allocation Manager also tracks allocation of stake to a Operator Set, and enables AVSs to slash that stake. -| [RewardsCoordinator](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#allocationmanager) | Enables AVSs to distribute ERC20 tokens to Operators and Restakers who delegated assets to Operators. The RewardsCoordinator tracks the rewards and enables Operators and Restakers to claim them. -| [PermissionController](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#permissioncontroller) | Enables AVSs and operators to delegate the ability to call certain core contract functions to other addresses. For more information, refer to [User Access Management](../../../eigenlayer/concepts/uam/user-access-management.md). | -| [AVSDirectory](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-holesky/docs#avsdirectory) | Has been replaced by AllocationManager and will be deprecated in a future release. | +| Core contract | Description | +|------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [StrategyManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#strategymanager) | Responsible for handling the accounting for Restakers as they deposit and withdraw ERC20 tokens from their corresponding strategies. The StrategyManager tracks the amount of restaked assets each Restaker has within Eigenlayer. | +| [DelegationManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#delegationmanager) | Responsible for enabling Restakers to delegate assets to Operators, and withdraw assets. The DelegationManager tracks the amount of assets from each Strategy that have been delegated to each Operator, and tracks accounting for slashing. | +| [EigenPodManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#eigenpodmanager) | Enables native ETH restaking | +| [AllocationManager](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#allocationmanager) | Responsible for creating Operator Sets, and Operator registrations to Operator Sets. The Allocation Manager also tracks allocation of stake to a Operator Set, and enables AVSs to slash that stake. +| [RewardsCoordinator](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#allocationmanager) | Enables AVSs to distribute ERC20 tokens to Operators and Restakers who delegated assets to Operators. The RewardsCoordinator tracks the rewards and enables Operators and Restakers to claim them. +| [PermissionController](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#permissioncontroller) | Enables AVSs and operators to delegate the ability to call certain core contract functions to other addresses. For more information, refer to [User Access Management](../../../eigenlayer/concepts/uam/user-access-management.md). | +| [AVSDirectory](https://github.com/Layr-Labs/eigenlayer-contracts/tree/testnet-hoodi/docs#avsdirectory) | Has been replaced by AllocationManager and will be deprecated in a future release. | -This documentation matches the functionality available on the Holesky testnet. For mainnet +This documentation matches the functionality available on the [Hoodi testnet](../../HowTo/test/testnets.md). For mainnet specific documentation, refer to the `/docs` repository on the `mainnet` branch in the [eigenlayer-contracts](https://github.com/Layr-Labs/eigenlayer-contracts) repository. diff --git a/docs/eigenlayer/concepts/operator-sets/operator-sets-concept.md b/docs/eigenlayer/concepts/operator-sets/operator-sets-concept.md index f3145d78..f1a38323 100644 --- a/docs/eigenlayer/concepts/operator-sets/operator-sets-concept.md +++ b/docs/eigenlayer/concepts/operator-sets/operator-sets-concept.md @@ -4,7 +4,7 @@ title: Operator Sets Overview --- :::note -Operator Sets are currently available on the Holesky testnet. [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) +Operator Sets are currently available on [testnets](../../../developers/HowTo/test/testnets.md). [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) introduced Operator Sets. Currently, Operators register to an AVS to earn rewards in the AVSDirectory. We recommend existing AVSs [migrate to Operator Sets on testnet](../../../developers/HowTo/build/slashing/migrate-to-operatorsets.md). diff --git a/docs/eigenlayer/concepts/operator-sets/strategies-and-magnitudes.md b/docs/eigenlayer/concepts/operator-sets/strategies-and-magnitudes.md index 447e284f..891bbd26 100644 --- a/docs/eigenlayer/concepts/operator-sets/strategies-and-magnitudes.md +++ b/docs/eigenlayer/concepts/operator-sets/strategies-and-magnitudes.md @@ -4,7 +4,7 @@ title: Strategies and Magnitudes --- :::note -Operator Sets are currently available on the Holesky testnet. [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) +Operator Sets are currently available on [testnets](../../../developers/HowTo/test/testnets.md). [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) introduced Operator Sets. ::: diff --git a/docs/eigenlayer/concepts/slashing/slashing-concept.md b/docs/eigenlayer/concepts/slashing/slashing-concept.md index b3ad5496..5da52bfd 100644 --- a/docs/eigenlayer/concepts/slashing/slashing-concept.md +++ b/docs/eigenlayer/concepts/slashing/slashing-concept.md @@ -4,7 +4,7 @@ title: Slashing Overview --- :::note -Slashing is currently available on the Holesky testnet. The Slashing release implements [ELIP-002: Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md). +Slashing is currently available on the [testnets](../../../developers/HowTo/test/testnets.md). The Slashing release implements [ELIP-002: Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md). ::: Slashing is a type of penalty determined by an AVS as a deterrent for broken commitments by Operators. Broken commitments diff --git a/docs/eigenlayer/concepts/slashing/unique-stake.md b/docs/eigenlayer/concepts/slashing/unique-stake.md index 289c0097..f2b92205 100644 --- a/docs/eigenlayer/concepts/slashing/unique-stake.md +++ b/docs/eigenlayer/concepts/slashing/unique-stake.md @@ -4,7 +4,7 @@ title: Unique Stake --- :::note -Operator Sets and Slashing are currently available on the Holesky testnet. [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) +Operator Sets and Slashing are currently available on [testnets](../../../developers/HowTo/test/testnets.md). [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) introduced Operator Sets and Slashing. ::: diff --git a/docs/eigenlayer/releases.md b/docs/eigenlayer/releases.md index 887046a5..8191d39d 100644 --- a/docs/eigenlayer/releases.md +++ b/docs/eigenlayer/releases.md @@ -10,12 +10,12 @@ in each repository. # Testnet -The [Slashing](https://www.blog.eigenlayer.xyz/introducing-slashing/) and Rewards v2.1 releases are available on the Holesky testnet. +The [Slashing](https://www.blog.eigenlayer.xyz/introducing-slashing/) and Rewards v2.1 releases are available on [testnets](../developers/HowTo/test/testnets.md). The [eigenlayer-contracts](https://github.com/Layr-Labs/eigenlayer-contracts) and [eigenlayer-middleware](https://github.com/Layr-Labs/eigenlayer-middleware) -include the Slashing release on the `testnet-holesky` branch. +include the Slashing release on the `testnet-` branches. :::important -Unless specified otherwise, this documentation matches the functionality available on the Holesky testnet. For mainnet +Unless specified otherwise, this documentation matches the functionality available on [testnets](../developers/HowTo/test/testnets.md). For mainnet specific documentation, refer to the `/docs` repository on the `mainnet` branch in the [eigenlayer-contracts](https://github.com/Layr-Labs/eigenlayer-contracts) and [eigenlayer-middleware](https://github.com/Layr-Labs/eigenlayer-middleware) repositories. ::: @@ -24,12 +24,12 @@ and [eigenlayer-middleware](https://github.com/Layr-Labs/eigenlayer-middleware) ### Operator Sets -The Slashing release on the Holesky testnet introduced Operator Sets. The AllocationManager core contract manages Operator Sets and replaces +The Slashing release on [testnets](../developers/HowTo/test/testnets.md) introduced Operator Sets. The AllocationManager core contract manages Operator Sets and replaces the AVSDirectory for registering Operators to an AVS. [The AVSDirectory will be deprecated in a future upgrade](https://docs.eigenlayer.xyz/developers/HowTo/slashing/migrate-to-operatorsets). ### Rewards v2.1 -Rewards v2.1 on the Holesky testnet introduced Operator directed rewards for Operator sets. For AVSs using Operator Sets, use `createOperatorDirectedOperatorSetRewardsSubmission`. +Rewards v2.1 on [testnets](../developers/HowTo/test/testnets.md) introduced Operator directed rewards for Operator sets. For AVSs using Operator Sets, use `createOperatorDirectedOperatorSetRewardsSubmission`. `createAVSRewardsSubmission` and `createOperatorDirectedAVSRewardsSubmission` remain available for use by AVSs that have not yet [migrated to Operator Sets](https://docs.eigenlayer.xyz/developers/HowTo/slashing/migrate-to-operatorsets). ### User Access Management diff --git a/docs/operators/howto/claimrewards/claim-rewards-cli.mdx b/docs/operators/howto/claimrewards/claim-rewards-cli.mdx index c92e1eee..452d4d4c 100644 --- a/docs/operators/howto/claimrewards/claim-rewards-cli.mdx +++ b/docs/operators/howto/claimrewards/claim-rewards-cli.mdx @@ -27,10 +27,10 @@ To claim rewards using the EigenLayer CLI as an [Earner](../../../eigenlayer/con ``` - + ```bash ./bin/eigenlayer rewards show \ - --network holesky \ + --network hoodi \ --earner-address \ --claim-type unclaimed ``` @@ -65,12 +65,12 @@ Token Address | Wei Amount ``` - + ```bash ./bin/eigenlayer rewards claim \ - --network holesky \ - --eth-rpc-url \ + --network hoodi \ + --eth-rpc-url \ --earner-address \ --recipient-address \ --path-to-key-store /path/to/key/store-json \ diff --git a/docs/operators/howto/operator-sets.md b/docs/operators/howto/operator-sets.md index 58ad1d4c..2171e690 100644 --- a/docs/operators/howto/operator-sets.md +++ b/docs/operators/howto/operator-sets.md @@ -19,7 +19,7 @@ Set Allocations per Operator Set and Strategy ``` eigenlayer operator allocations update - --network holesky + --network hoodi --operator-address --csv-file updates.csv --caller-address @@ -46,7 +46,7 @@ View all your allocations with show command as below ``` eigenlayer operator allocations show - --network holesky + --network hoodi --operator-address --strategy-addresses