├── .env.example ├── .eslintrc ├── .gitbook └── assets │ ├── Connect Wallet (1).jpeg │ ├── Connect Wallet.jpeg │ ├── EigenLayer_Roadmap-v5 (1).png │ ├── EigenLayer_WhitePaper.pdf │ ├── Goerli Step1.png │ ├── Liquid Step 1.jpeg │ ├── Liquid Step 2.jpeg │ ├── Liquid Step 3.jpeg │ ├── Liquid Step 4.jpeg │ ├── Liquid Step 5.jpeg │ ├── Native Restaking (1).mov │ ├── Screen Shot 2023-03-14 at 2.36.13 AM.png │ ├── Screen Shot 2023-03-22 at 2.21.44 PM (1).jpeg │ ├── Screen Shot 2023-03-22 at 2.21.44 PM (2).jpeg │ ├── Screen Shot 2023-03-22 at 2.21.44 PM.jpeg │ ├── Screen Shot 2023-03-22 at 2.28.47 AM (1).jpeg │ ├── Screen Shot 2023-03-22 at 2.28.47 AM.jpeg │ ├── Screen Shot 2023-03-22 at 2.38.25 AM.png │ ├── Screen Shot 2023-03-22 at 2.59.02 AM.jpeg │ ├── Screen Shot 2023-03-22 at 3.02.28 AM.jpeg │ ├── Screen Shot 2023-03-22 at 3.03.59 AM.jpeg │ ├── Screen Shot 2023-03-22 at 3.08.01 AM.jpeg │ ├── Screen Shot 2023-03-22 at 3.08.17 AM (1).jpeg │ ├── Screen Shot 2023-03-22 at 3.08.17 AM.jpeg │ ├── Screen Shot 2023-03-22 at 4.02.44 PM.png │ ├── Screen Shot 2023-03-23 at 10.59.46 AM.jpeg │ ├── Screen Shot 2023-06-14 at 11.34.09 AM.png │ ├── Screen Shot 2023-06-14 at 12.02.49 PM.jpeg │ ├── Screen Shot 2023-06-14 at 12.02.57 PM.jpeg │ ├── Screen Shot 2023-06-14 at 12.03.34 PM.jpeg │ ├── Screen Shot 2023-06-14 at 12.07.05 PM.jpeg │ ├── Screenshot 2023-03-21 at 5.43.55 PM.png │ ├── Screenshot 2023-03-21 at 6.06.01 PM.png │ ├── Screenshot 2023-03-23 at 2.08.11 PM.png │ ├── Screenshot 2023-03-23 at 2.09.26 PM (1).png │ ├── Screenshot 2023-03-23 at 2.40.58 PM (1).png │ ├── Screenshot 2023-03-23 at 2.40.58 PM (2).png │ ├── Screenshot 2023-03-23 at 2.40.58 PM.png │ ├── Screenshot 2023-03-23 at 2.43.15 PM.png │ ├── Screenshot 2023-03-23 at 2.43.26 PM (1).png │ ├── Screenshot 2023-03-23 at 2.43.26 PM.png │ ├── Screenshot 2023-03-23 at 2.43.33 PM.png │ ├── Screenshot 2023-03-23 at 3.34.32 PM.png │ ├── Screenshot 2023-03-23 at 3.35.25 PM.png │ ├── Screenshot 2023-03-23 at 6.27.36 PM.png │ ├── Screenshot 2023-03-23 at 6.35.29 PM.png │ ├── Screenshot 2023-03-23 at 6.41.58 PM.png │ ├── Screenshot 2023-03-23 at 6.43.12 PM.png │ ├── Screenshot 2023-03-23 at 6.46.09 PM.png │ ├── Screenshot 2023-03-23 at 6.47.35 PM.png │ ├── Screenshot 2023-03-23 at 6.48.05 PM.png │ ├── Screenshot 2023-03-23 at 7.28.03 PM.png │ ├── Screenshot 2023-03-23 at 7.30.00 PM (1).png │ ├── Screenshot 2023-03-23 at 7.30.00 PM (2).png │ ├── Screenshot 2023-03-23 at 7.30.00 PM.png │ ├── Screenshot 2023-03-24 at 2.24.38 PM (1).png │ ├── Screenshot 2023-03-24 at 2.24.38 PM.png │ ├── Screenshot 2023-03-24 at 2.36.03 PM.png │ ├── Screenshot 2023-03-24 at 2.45.59 PM.png │ ├── Screenshot 2023-03-24 at 2.50.31 PM.png │ ├── Screenshot 2023-03-24 at 2.59.32 PM.png │ ├── Wallet options.png │ ├── create pod (1).jpeg │ ├── create pod (2).jpeg │ ├── create pod (3).jpeg │ ├── create pod.jpeg │ ├── goerli s1.png │ ├── image (1).png │ ├── image (2).png │ ├── image (3).png │ ├── image (5).png │ ├── image (6).png │ ├── image.png │ ├── image_2023-12-12_17-38-36.png │ ├── liquid success.png │ ├── nC4nTjqQ0G3iT0wCK-D7Ka_wB1RfItUlDi05g8jcmgXCYxtXrGk8QC0n1R63DUQZ0CXMsTLoPByfo6f0fDq0ch3OBWEs1sWehBLQwU5kzER8l0clDJ-85czvqmURyCFgJvkgk-3hTDW95Zykra7QlQ (1).png │ ├── nC4nTjqQ0G3iT0wCK-D7Ka_wB1RfItUlDi05g8jcmgXCYxtXrGk8QC0n1R63DUQZ0CXMsTLoPByfo6f0fDq0ch3OBWEs1sWehBLQwU5kzER8l0clDJ-85czvqmURyCFgJvkgk-3hTDW95Zykra7QlQ.png │ ├── service_deployment.gif │ ├── unstake pending.jpeg │ ├── wallets.jpeg │ ├── withdraw final.jpeg │ ├── withdraw.jpeg │ ├── z98Us (1).png │ └── z98Us.png ├── .github └── CODEOWNERS ├── .gitignore ├── .yarn ├── install-state.gz └── releases │ └── yarn-1.22.22.cjs ├── .yarnrc ├── .yarnrc.yml ├── Makefile ├── README.md ├── archive └── incredible-squaring.md ├── babel.config.js ├── broken-links-report.csv ├── ci-scripts └── check-external-links.js ├── docs ├── developers │ ├── Concepts │ │ ├── _category_.json │ │ ├── avs-contracts.md │ │ ├── avs-developer-guide.md │ │ ├── avs-keys.md │ │ ├── avs-security-models.md │ │ ├── eigenlayer-contracts │ │ │ ├── _category_.json │ │ │ ├── core-contracts.md │ │ │ └── middleware-contracts.md │ │ ├── slashing │ │ │ ├── _category_.json │ │ │ └── slashing-concept-developers.md │ │ ├── task.md │ │ └── uam-for-avs.md │ ├── HowTo │ │ ├── _category_.json │ │ ├── build │ │ │ ├── _category_.json │ │ │ ├── avs-permissionlesss.md │ │ │ ├── manage-registered-operators.md │ │ │ ├── operator-sets │ │ │ │ ├── _category_.json │ │ │ │ ├── create-operator-sets.md │ │ │ │ ├── design-operator-set.md │ │ │ │ ├── migrate-to-operatorsets.md │ │ │ │ ├── modify-strategy-composition.md │ │ │ │ └── update-avs-metadata.md │ │ │ ├── register-avs-metadata.md │ │ │ ├── slashing │ │ │ │ ├── _category_.json │ │ │ │ ├── implement-slashing.md │ │ │ │ └── slashing-veto-committee-design.md │ │ │ ├── submit-rewards-submissions.md │ │ │ └── uam │ │ │ │ ├── _category_.json │ │ │ │ ├── dev-add-remove-admins.md │ │ │ │ └── dev-add-remove-appointees.md │ │ ├── deploy │ │ │ ├── _category_.json │ │ │ └── deployment-testnet-mainnet.md │ │ ├── get-started │ │ │ ├── _category_.json │ │ │ ├── implement-minimum-onchain-components.md │ │ │ ├── quickstart.md │ │ │ └── support.md │ │ ├── publish │ │ │ ├── _category_.json │ │ │ └── onboard-avs-dashboard.md │ │ └── test │ │ │ ├── _category_.json │ │ │ ├── obtain-testnet-eth.md │ │ │ └── test-avs.md │ ├── Reference │ │ ├── _category_.json │ │ ├── ai-resources.mdx │ │ ├── avs-developer-best-practices.md │ │ ├── eigenlayer-sdks.md │ │ └── resources.mdx │ ├── _category_.json │ └── archived │ │ ├── _category_.json │ │ └── archive-onboard-avs-dashboard.md ├── eigenlayer │ ├── _category_.json │ ├── concepts │ │ ├── _category_.json │ │ ├── keys-and-signatures.md │ │ ├── operator-sets │ │ │ ├── _category_.json │ │ │ ├── allocation-deallocation.md │ │ │ ├── operator-sets-concept.md │ │ │ └── strategies-and-magnitudes.md │ │ ├── rewards │ │ │ ├── _category_.json │ │ │ ├── earners-claimers-recipients.md │ │ │ ├── pi-split.md │ │ │ ├── rewards-claiming-faq.md │ │ │ ├── rewards-claiming.md │ │ │ ├── rewards-concept.md │ │ │ ├── rewards-split.md │ │ │ └── rewards-submission.md │ │ ├── slashing │ │ │ ├── _category_.json │ │ │ ├── magnitudes-when-slashed.md │ │ │ ├── redistribution.md │ │ │ ├── safety-delays-concept.md │ │ │ ├── slashable-stake-risks.md │ │ │ ├── slashing-concept.md │ │ │ └── unique-stake.md │ │ └── uam │ │ │ ├── _category_.json │ │ │ ├── uam-accounts.md │ │ │ ├── uam-admins.md │ │ │ ├── uam-appointees.md │ │ │ └── user-access-management.md │ ├── deployed-contracts │ │ ├── _category_.json │ │ └── deployed-contracts.md │ ├── economy │ │ ├── _category_.json │ │ ├── economy-calculation-and-formulas.md │ │ └── sidecar.md │ ├── information-and-transparency │ │ ├── _category_.json │ │ └── disclosures.md │ ├── legal │ │ ├── _category_.json │ │ ├── disclaimers.md │ │ ├── privacy-policy.md │ │ └── terms-of-service.md │ ├── overview │ │ ├── README.md │ │ ├── _category_.json │ │ ├── key-terms.md │ │ ├── support.md │ │ └── whitepaper.md │ ├── reference │ │ ├── _category_.json │ │ ├── allocation-manager-interface.md │ │ └── safety-delays-reference.md │ ├── releases.md │ ├── resources │ │ ├── _category_.json │ │ ├── apis-and-dashboards.md │ │ ├── infinite-hackathon.md │ │ └── learning-resources.md │ ├── roadmap.md │ └── security │ │ ├── _category_.json │ │ ├── audits.md │ │ ├── bug-bounty.md │ │ ├── guardrails.md │ │ ├── multisig-governance.md │ │ ├── slashing-delay.md │ │ └── withdrawal-delay.md ├── lib │ └── RenderMarkdown.tsx ├── operators │ ├── _category_.json │ ├── concepts │ │ ├── _category_.json │ │ ├── operator-introduction.md │ │ ├── operator-keys.md │ │ └── uam-for-operators.md │ ├── howto │ │ ├── _category_.json │ │ ├── avs-operator-risks-mitigations-bp.md │ │ ├── claimrewards │ │ │ ├── _category_.json │ │ │ ├── batch-claim-rewards.md │ │ │ ├── claim-rewards-cli.mdx │ │ │ └── claim-rewards-smart-contract.md │ │ ├── confirgurerewards │ │ │ ├── _category_.json │ │ │ ├── rewards-snapshot-data.md │ │ │ ├── set-pi-split.md │ │ │ ├── set-rewards-claimer.md │ │ │ └── set-rewards-split.md │ │ ├── managekeys │ │ │ ├── _category_.json │ │ │ ├── institutional-operators.md │ │ │ └── solo-operators.md │ │ ├── operator-content-guidelines.md │ │ ├── operator-installation.md │ │ ├── operator-sets.md │ │ ├── troubleshooting.md │ │ └── uam │ │ │ ├── _category_.json │ │ │ ├── op-add-remove-admins.md │ │ │ └── op-add-remove-appointees.md │ ├── operator-guides │ │ └── _category_.json │ └── reference │ │ ├── _category_.json │ │ └── operator-faq.md └── restakers │ ├── _category_.json │ ├── concepts │ ├── _category_.json │ ├── native-restaking-withdrawal-delays.md │ └── overview.md │ └── restaking-guides │ ├── 0-restaking-user-guide │ ├── _category_.json │ ├── liquid-restaking │ │ ├── _category_.json │ │ ├── restake-lsts.md │ │ └── withdraw-from-eigenlayer.md │ ├── native-restaking │ │ ├── README.md │ │ └── _category_.json │ └── restaker-delegation │ │ ├── _category_.json │ │ ├── delegate-to-an-operator.md │ │ ├── redelegation-process.md │ │ └── undelegate-from-an-operator-and-initiate-withdrawal.md │ ├── 1-restaking-developer-guide.md │ ├── _category_.json │ ├── claim-rewards-app.md │ └── testnet │ ├── 1-restaking-developer-guide.md │ ├── README.md │ └── obtaining-testnet-eth-and-liquid-staking-tokens-lsts.md ├── docusaurus.config.js ├── package.json ├── run-repomix.js ├── sidebars.js ├── src ├── components │ ├── Button.js │ ├── Card.js │ ├── CopyToClipboard.js │ ├── HomepageFeatures.js │ └── HomepageFeatures.module.css ├── css │ └── custom.css ├── pages │ ├── index.js │ └── index.module.css └── theme │ └── MDXComponents.js ├── static ├── .nojekyll ├── font │ └── ABCReproVariable.woff2 ├── html │ ├── EIGEN_Token_Whitepaper-converted-xodo.html │ └── EigenLayer_WhitePaper-converted-xodo.html ├── img │ ├── avs-marketplace.png │ ├── avs │ │ ├── avs-architecture-v1.png │ │ ├── avs-architecture-v2.png │ │ ├── avs-categories.png │ │ └── hello-world-diagram-v2.png │ ├── eigen-da-diagram.png │ ├── eigenlayer-logo-dark.png │ ├── eigenlayer-logo.png │ ├── favicon.ico │ ├── googleusercontentbackup │ │ ├── 6Amzdvc2bS1qnBHMezLS6iA7w3XNdyW6rKacGeVoY4TiIkvuoRfYp2tJ_xBHoQOYEKSMwcz_IDpbTgXrKV2kedxX30BOVoq3yFiAItv2O03T94CCrDuNGgidDhsKIxO5cv1_G_apMsHDnwzAD8zh3hE.png │ │ ├── A4J5a_mzQcqJiz7xeM2jRzsQv5slK98MANGAdtRS3B5rvOP5v6yyrmYubxbLzR_3uhgIxOmWfQIpDbQmNX2hhhX7-h4eB1dNmFCjKnGoBh6Toikh0G5hshCsyTmbeyEOs0RAdX_YLmyOqa-eg4DN2Ms.png │ │ ├── DStQhIFho5ga5_1h945XDiJGtnQvrEy_KzXm1jnhCCysFWJCV2JoOSnEY4xX35loBDGw-tjjoWq_vUAGICkyR9Gz0eUplNKsuDJkp73rFOFMwd2NQYE5Gs_cVZ7riCGsF7j86PARHtyhf14PH3sKb2Y.png │ │ ├── HNaZjUx0-Tp6xqPD7T6BVccmiXiwbTLD2g4jw4R87xpGw_XsTAqXXJ1eYIBOeYKZOaQ0RcYBsOr3OrZL0xUG8l6xumGHqAbByRFYHe6Qoe5zeUgHL2fYCWnCi1SNNgIkTIdj8db9t3LHVsAJi6qA5Ys.png │ │ ├── L-fGo8SfLFRL9eGuclFYLGu6Hcv-J1Hj_taTc-ba7ttThA6c_yiztPylvKgfABkM0v4henpfG4sIrVTWxPdAO_4dfHIk69xRxa9edZaRDjhugWR4O6uf3wwG0-PwBg_BzsSb157d4r4Z123e0mdxQZk.png │ │ ├── RLMOGvPSu2_BPRIu4o32LZIKFgSOySe8tatR67-pGsFPZxVmk1RSLvkNT_FHXcZUDtP8eINc2EQUG3y4X0yVM7l6Ly1q2iE8v1j6VDr7vI1wtR4GqKBsrLgc9pUwMvzu9UeXQbsumCSlGPNRiX9-1vA2.png │ │ ├── SzsWbRMQ-9NYYfah1kBT89hfCZSEvd04Rtk_G1J1en31FbZHEYalivDgIsH-E7sHrKtLQUEFIcq7CdmMvCrFXO3_qYpts5t__y3YMSuqH3GiQa95MrE-BRfHlFDkaqlAolLVXCiybmHm48TZdRLEQMI.png │ │ ├── UPnY4qM7MtBkzrwI0FZLTo5iAEVkEWUNS-pRCIg0LhL1djbF2NwPjAT4M_PDvgwIMGHOGvk0NwfjCYJUzHzKtY02Y9FZh_FXKpi_lULiNmYYdIUBJFj8MvMI3kT4lMumM470JiKMW_nt-dqPRMaggp8.png │ │ ├── VhvtrzfZkAPIVjAVGaGiQLuHcoX94IeuJIZKymOP8rl5SU6YPkLMRDfyoEKT22MJUwCZp3bj4g7RnkFZPrvNDq1FBRWt6wp6fd_W_qxmdDczCr63Md7v_dFGjMRlA_cPbxAF2vs4pwRk8Y3aIGI5ghY.png │ │ ├── fWBK0B7_n1MwCLVB7fMI5c75lRaFjLL_UGjSu3ZPxxxefoXl3qfln0UBislng7WoLq2ZXaxIepJJnzDbjWFBa3wv9XZZ-OcR3y10OvDaHzHOIPTH_-BVT3cVZXyOkGybaNCoBuW430fvzkqz5-QhdOE.png │ │ ├── gCiv9UYN6M4LTyyb78MXQJ9GeXCW-Sf-23FgWOw9JHs7wRvuSjMlfejOVgcc6ymUE0Lu98ojF-k6MZzdeV45KmYlnCM_jjdoecJcdozIacCGqd0cFNet-hdZdJ9iwVkL9-kg9suCQQhkYF9364PK_yQ.png │ │ ├── iLPD5MfrJT8krjQtly8sUUiqKtpTWXD58Ajp_jfKNTnNcV07s8TD-A2H0GLyPOmTHvFUWGho7qjICYzzhAvpyTwJh_Mpiq_k6lMWsNL7H5ns9OCVRa6MnjMpFpNDkNakfdTPVRcElFSfslcVJTHByN0.png │ │ └── tdLYguBq5wyfQbJRkyVo7pqT1tBasCLxXP-aA60GZGXlqKDkLtQIN9guogHXdSRObApuLHT3LpPfIxZWJruxaAJBH5skfRY3EQAPya0sxxUnj1EoDgkUCxItwETv-dpaVVAV86JCzpYduZcpLQlH9-0.png │ ├── infinite-hackathon.png │ ├── native-restaking-processes.png │ ├── op-stack-blob-disersal-seq.png │ ├── operator-guides │ │ ├── avs-installation-and-registration │ │ │ └── eigenda-operator-guide │ │ │ │ └── eigenda-correct-sign.png │ │ ├── eigenda-logs.png │ │ ├── operator-registration-allocation.png │ │ ├── operator-sets-figure-3.png │ │ ├── operator-sets-figure-4.png │ │ └── operator-sets-figure-5.png │ ├── overview │ │ ├── eigenlayer-arch-v2.png │ │ └── eigenlayer-arch.png │ ├── restake-guides │ │ ├── change-delegation-1.png │ │ ├── delegate-1.png │ │ ├── delegate-2.png │ │ ├── delegate-3.png │ │ ├── delegate-4.png │ │ ├── delegate-5.png │ │ ├── full-withdrawals-1.png │ │ ├── full-withdrawals-2.png │ │ ├── full-withdrawals-3.png │ │ ├── full-withdrawals-4.png │ │ ├── lst-restake-1.png │ │ ├── lst-restake-2.1.png │ │ ├── lst-restake-2.png │ │ ├── lst-restake-3.png │ │ ├── lst-unstake-1.png │ │ ├── lst-unstake-2.png │ │ ├── lst-unstake-3.png │ │ ├── lst-unstake-4.png │ │ ├── lst-withdraw-button.jpeg │ │ ├── lst-withdraw-confirm.png │ │ ├── lst-withdraw-modal.jpeg │ │ ├── native-cli-status.png │ │ ├── native-create-pod1.png │ │ ├── native-create-pod2.png │ │ ├── native-create-pod3.png │ │ ├── native-full-withdrawal1.png │ │ ├── native-full-withdrawal2.png │ │ ├── native-full-withdrawal3.png │ │ ├── native-partial-withdrawal1.png │ │ ├── native-partial-withdrawal2.png │ │ ├── native-partial-withdrawal3.png │ │ ├── native-stake-repoint-1.png │ │ ├── native-withdraw-1.jpg │ │ ├── optimized-withdrawal-flow.png │ │ ├── partial-withdrawals-1.png │ │ ├── partial-withdrawals-2.png │ │ ├── partial-withdrawals-3.png │ │ ├── partial-withdrawals-4.png │ │ ├── partial-withdrawals-5.png │ │ ├── restake-balance.jpeg │ │ ├── rewards-claim1.png │ │ ├── rewards-claim2.png │ │ ├── rewards-claim3.png │ │ ├── rewards-claim4.png │ │ ├── rewards-claim5.png │ │ ├── set-validator-withdrawal-credentials-1.png │ │ ├── set-validator-withdrawal-credentials.png │ │ ├── stake-eigen-four.png │ │ ├── stake-eigen-one.png │ │ ├── stake-eigen-three.png │ │ ├── stake-eigen-two.png │ │ └── withdrawal-flow.png │ ├── roadmap.png │ └── uam │ │ ├── admin-key-rotation.svg │ │ └── uam-rotate-appointees.svg ├── js │ ├── avs-guide-redirects.js │ ├── eigen-token-redirect.js │ ├── eigenda-redirects.js │ ├── intercom.js │ ├── operators-redirects.js │ ├── restakers-redirects.js │ └── userback.js └── pdf │ ├── EIGEN_Token_Whitepaper.pdf │ └── EigenLayer_WhitePaper.pdf ├── tsconfig.json ├── vercel.json └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | ALGOLIA_API_ID="id-here" 2 | ALGOLIA_API_KEY="key-here" -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:@docusaurus/recommended"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitbook/assets/Connect Wallet (1).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Connect Wallet (1).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Connect Wallet.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Connect Wallet.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/EigenLayer_Roadmap-v5 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/EigenLayer_Roadmap-v5 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/EigenLayer_WhitePaper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/EigenLayer_WhitePaper.pdf -------------------------------------------------------------------------------- /.gitbook/assets/Goerli Step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Goerli Step1.png -------------------------------------------------------------------------------- /.gitbook/assets/Liquid Step 1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Liquid Step 1.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Liquid Step 2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Liquid Step 2.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Liquid Step 3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Liquid Step 3.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Liquid Step 4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Liquid Step 4.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Liquid Step 5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Liquid Step 5.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Native Restaking (1).mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Native Restaking (1).mov -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-14 at 2.36.13 AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-14 at 2.36.13 AM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.21.44 PM (1).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.21.44 PM (1).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.21.44 PM (2).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.21.44 PM (2).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.21.44 PM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.21.44 PM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.28.47 AM (1).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.28.47 AM (1).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.28.47 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.28.47 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.38.25 AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.38.25 AM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 2.59.02 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 2.59.02 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 3.02.28 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 3.02.28 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 3.03.59 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 3.03.59 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 3.08.01 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 3.08.01 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 3.08.17 AM (1).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 3.08.17 AM (1).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 3.08.17 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 3.08.17 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-22 at 4.02.44 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-22 at 4.02.44 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-03-23 at 10.59.46 AM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-03-23 at 10.59.46 AM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-06-14 at 11.34.09 AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-06-14 at 11.34.09 AM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-06-14 at 12.02.49 PM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-06-14 at 12.02.49 PM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-06-14 at 12.02.57 PM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-06-14 at 12.02.57 PM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-06-14 at 12.03.34 PM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-06-14 at 12.03.34 PM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2023-06-14 at 12.07.05 PM.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screen Shot 2023-06-14 at 12.07.05 PM.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-21 at 5.43.55 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-21 at 5.43.55 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-21 at 6.06.01 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-21 at 6.06.01 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.08.11 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.08.11 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.09.26 PM (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.09.26 PM (1).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.40.58 PM (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.40.58 PM (1).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.40.58 PM (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.40.58 PM (2).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.40.58 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.40.58 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.43.15 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.43.15 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.43.26 PM (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.43.26 PM (1).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.43.26 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.43.26 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 2.43.33 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 2.43.33 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 3.34.32 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 3.34.32 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 3.35.25 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 3.35.25 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.27.36 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.27.36 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.35.29 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.35.29 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.41.58 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.41.58 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.43.12 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.43.12 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.46.09 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.46.09 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.47.35 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.47.35 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 6.48.05 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 6.48.05 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 7.28.03 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 7.28.03 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 7.30.00 PM (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 7.30.00 PM (1).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 7.30.00 PM (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 7.30.00 PM (2).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-23 at 7.30.00 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-23 at 7.30.00 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-24 at 2.24.38 PM (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-24 at 2.24.38 PM (1).png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-24 at 2.24.38 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-24 at 2.24.38 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-24 at 2.36.03 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-24 at 2.36.03 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-24 at 2.45.59 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-24 at 2.45.59 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-24 at 2.50.31 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-24 at 2.50.31 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screenshot 2023-03-24 at 2.59.32 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Screenshot 2023-03-24 at 2.59.32 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Wallet options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/Wallet options.png -------------------------------------------------------------------------------- /.gitbook/assets/create pod (1).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/create pod (1).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/create pod (2).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/create pod (2).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/create pod (3).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/create pod (3).jpeg -------------------------------------------------------------------------------- /.gitbook/assets/create pod.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/create pod.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/goerli s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/goerli s1.png -------------------------------------------------------------------------------- /.gitbook/assets/image (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image (3).png -------------------------------------------------------------------------------- /.gitbook/assets/image (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image (5).png -------------------------------------------------------------------------------- /.gitbook/assets/image (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image (6).png -------------------------------------------------------------------------------- /.gitbook/assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image.png -------------------------------------------------------------------------------- /.gitbook/assets/image_2023-12-12_17-38-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/image_2023-12-12_17-38-36.png -------------------------------------------------------------------------------- /.gitbook/assets/liquid success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/liquid success.png -------------------------------------------------------------------------------- /.gitbook/assets/nC4nTjqQ0G3iT0wCK-D7Ka_wB1RfItUlDi05g8jcmgXCYxtXrGk8QC0n1R63DUQZ0CXMsTLoPByfo6f0fDq0ch3OBWEs1sWehBLQwU5kzER8l0clDJ-85czvqmURyCFgJvkgk-3hTDW95Zykra7QlQ (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/nC4nTjqQ0G3iT0wCK-D7Ka_wB1RfItUlDi05g8jcmgXCYxtXrGk8QC0n1R63DUQZ0CXMsTLoPByfo6f0fDq0ch3OBWEs1sWehBLQwU5kzER8l0clDJ-85czvqmURyCFgJvkgk-3hTDW95Zykra7QlQ (1).png -------------------------------------------------------------------------------- /.gitbook/assets/nC4nTjqQ0G3iT0wCK-D7Ka_wB1RfItUlDi05g8jcmgXCYxtXrGk8QC0n1R63DUQZ0CXMsTLoPByfo6f0fDq0ch3OBWEs1sWehBLQwU5kzER8l0clDJ-85czvqmURyCFgJvkgk-3hTDW95Zykra7QlQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/nC4nTjqQ0G3iT0wCK-D7Ka_wB1RfItUlDi05g8jcmgXCYxtXrGk8QC0n1R63DUQZ0CXMsTLoPByfo6f0fDq0ch3OBWEs1sWehBLQwU5kzER8l0clDJ-85czvqmURyCFgJvkgk-3hTDW95Zykra7QlQ.png -------------------------------------------------------------------------------- /.gitbook/assets/service_deployment.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/service_deployment.gif -------------------------------------------------------------------------------- /.gitbook/assets/unstake pending.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/unstake pending.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/wallets.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/wallets.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/withdraw final.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/withdraw final.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/withdraw.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/withdraw.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/z98Us (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/z98Us (1).png -------------------------------------------------------------------------------- /.gitbook/assets/z98Us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.gitbook/assets/z98Us.png -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @dabit3 @wesfloyd @bryangreen @shrimalmadhur @antojoseph @NimaVaziri @scotthconner @MC1823315 @nelsonijih @QuinnLee @mmurrs @non-fungible-nelson @MadelineAu 2 | 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # IDE 12 | .idea 13 | 14 | # Misc 15 | .DS_Store 16 | .env 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | # CI Scripts output 23 | ci-scripts/broken-links-report.csv 24 | 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | yarn.lock 29 | .yarn/install-state.gz 30 | .yarnrc.yml -------------------------------------------------------------------------------- /.yarn/install-state.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/.yarn/install-state.gz -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | yarn-path ".yarn/releases/yarn-1.22.22.cjs" 6 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: test-redirects 2 | 3 | test-redirects: 4 | @./ci-scripts/test_redirects_local.sh 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚨 Repository Archived – Deprecated as of June 17 2025 2 | 3 | **Note:** This repository is no longer maintained and has been archived. 4 | 5 | As of June 17 2025, this project is considered **deprecated** and is no longer receiving updates. 6 | 7 | ## 📚 Documentation & Migration 8 | 9 | The EigenLayer documentation has been migrated to the EigenCloud documentation: 10 | 11 | 👉 [EigenCloud Docs repo](https://github.com/Layr-Labs/eigencloud-docs) 12 | or 13 | 👉 [EigenCloud Docs Website](https://docs.eigencloud.xyz/) 14 | 15 | For information on EigenCloud, refer to the [EigenCloud blog](https://blog.eigencloud.xyz/introducing-eigencloud/). 16 | 17 | This repository will remain publicly accessible in a **read-only** state. 18 | 19 | ### Website 20 | 21 | This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. 22 | 23 | ### Installation 24 | 25 | ``` 26 | yarn 27 | ``` 28 | 29 | ### Local Development 30 | 31 | ``` 32 | yarn start 33 | ``` 34 | 35 | This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. 36 | 37 | ### Build 38 | 39 | ``` 40 | yarn build 41 | // to test out the fully built site 42 | yarn serve 43 | ``` 44 | 45 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 46 | 47 | ### Deployment 48 | 49 | Using SSH: 50 | 51 | ``` 52 | USE_SSH=true yarn deploy 53 | ``` 54 | 55 | Not using SSH: 56 | 57 | ``` 58 | GIT_USER= yarn deploy 59 | ``` 60 | 61 | If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. 62 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /broken-links-report.csv: -------------------------------------------------------------------------------- 1 | Broken URL,File Path,Status Code 2 | 3 | -------------------------------------------------------------------------------- /docs/developers/Concepts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Concepts" 4 | } -------------------------------------------------------------------------------- /docs/developers/Concepts/avs-contracts.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 5 3 | title: AVS Contracts 4 | --- 5 | 6 | The AVS contracts are the contracts that call the [EigenLayer contacts](eigenlayer-contracts/core-contracts.md). An AVS can split onchain components across 7 | multiple contracts to enable a modular design. 8 | 9 | :::note 10 | Before the Slashing release introduced [User Access Management (UAM)](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-003.md), AVS contract calls to EigenLayer were routed through a 11 | single ServiceManager contract. With UAM, a modular approach to AVS contracts is possible. 12 | 13 | The [Hello World](https://github.com/Layr-Labs/hello-world-avs) and [Incredible Squaring](https://github.com/Layr-Labs/incredible-squaring-avs) examples are in the process of being updated to use UAM. 14 | ::: 15 | -------------------------------------------------------------------------------- /docs/developers/Concepts/avs-keys.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 6 3 | title: AVS Keys 4 | --- 5 | 6 | For information on AVS key types, refer to [Keys](../../eigenlayer/concepts/keys-and-signatures). 7 | 8 | :::important 9 | When using Redistribution, an attacker that gains access to AVS keys for the slasher and `redistributionRecipient` can drain 10 | the entirety of Operator and Staker allocated stake for a given Operator Set. 11 | ::: 12 | 13 | -------------------------------------------------------------------------------- /docs/developers/Concepts/avs-security-models.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 5 3 | title: AVS Security Models 4 | --- 5 | 6 | The security model of an AVS defines who or what is trusted in an AVS, and under what conditions that trust holds. AVSs may 7 | have different levels of decentralization, slashing risks, and trust assumptions. 8 | 9 | Security models available to AVSs in order of decentralization include: 10 | * Proof of Authority. An AVS maintains a whitelist of trusted Operators. 11 | * Permissionless Trusted Operation. An AVS trusts the top N Operators by delegated stake to run the service. 12 | The Permissionless Operator set can be managed by Operator ejection if SLAs are not met. 13 | * Unique Stake allocation. An AVS requires Operators to have a certain amount of Unique Stake (that is, Slashable Stake) allocated. 14 | Slashing conditions can be: 15 | * Objective. Attributable onchain faults. For example, rollup execution validity. 16 | * Subjective. Governance based. For example, token holders in a DAO vote to slash, or vote to veto slashing. 17 | * Intersubjective Slashing Conditions. Broad-based agreement among all reasonable active observers. For example, data 18 | withholding. 19 | 20 | :::note 21 | The list of security models is not exhaustive. The EigenLayer protocol provides a slashing function that is maximally flexible. 22 | AVSs have flexibility to design their protocols to slash for any reason. AVSs are encouraged to: 23 | * Create robust legibility and process around how their slashing is designed and individual slashing events. 24 | * Clearly communicate slashing design and individual slashing events to their Operator and Staker communities. 25 | * Make strong guarantees about how upstream contracts function for Redistributing Operator Sets to their Operator and Staker communities. 26 | ::: -------------------------------------------------------------------------------- /docs/developers/Concepts/eigenlayer-contracts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "EigenLayer Contracts" 4 | } -------------------------------------------------------------------------------- /docs/developers/Concepts/eigenlayer-contracts/middleware-contracts.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: EigenLayer Middleware Contracts 4 | --- 5 | 6 | The EigenLayer middleware contracts are higher level interfaces to the [EigenLayer core contracts](core-contracts.md). 7 | The middleware contracts can be: 8 | * Deployed as is. The exception is the ServiceManager contract used to register and deregister an AVS with EigenLayer. 9 | * Modified to implement logic specific to the AVS before deploying 10 | * Not used. In this case, the interfaces present in the middleware contracts must be implemented in the AVS contracts. 11 | 12 | We recommend new AVS developers use the middleware contracts as the higher level interface 13 | to the core contracts. 14 | 15 | The middleware contracts are documented in the [eigenlayer-middleware](https://github.com/Layr-Labs/eigenlayer-middleware) repository. 16 | The ServiceManagerBase contract is the reference implementation for the onchain registration and deregistration that each AVS must have. -------------------------------------------------------------------------------- /docs/developers/Concepts/slashing/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Slashing" 4 | } -------------------------------------------------------------------------------- /docs/developers/Concepts/slashing/slashing-concept-developers.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Slashing 4 | --- 5 | 6 | For information on how slashing works, refer to concept content on [Slashing](../../../eigenlayer/concepts/slashing/slashing-concept.md) and 7 | [Operator Sets](../../../eigenlayer/concepts/operator-sets/operator-sets-concept). 8 | 9 | ## Redistribution Recipient 10 | 11 | :::important 12 | When using Redistribution, an attacker that gains access to AVS keys for the slasher and `redistributionRecipient` can drain 13 | the entirety of Operator and Staker allocated stake for a given Operator Set. 14 | ::: 15 | 16 | When creating a redistributable Operator Set, an immutable `redistributionRecipient` is specified. The `redistributionRecipient` 17 | should be: 18 | * An AVS-controlled role and signing key. 19 | * A smart contract wallet or mulit-sig to ensure enhanced security and programmability. 20 | 21 | The `redistributionRecipient` address cannot be changed. While an AVS may use an upstream proxy or pass-through contract, 22 | the immutability of this address in EigenLayer means an AVS can layer additional guarantees by guarding the upgradability 23 | of the upstream contract via controls such as governance, and timelocks. 24 | 25 | For information on how to implement slashing, refer to: 26 | * [Implement Slashing](../../HowTo/build/slashing/implement-slashing) 27 | * [Design Operator Sets](../../HowTo/build/operator-sets/design-operator-set.md) 28 | * [Migrate to Operator Sets](../../HowTo/build/operator-sets/migrate-to-operatorsets.md) 29 | * [Veto Committee Design](../../HowTo/build/slashing/slashing-veto-committee-design.md) -------------------------------------------------------------------------------- /docs/developers/Concepts/task.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 8 3 | title: Tasks 4 | --- 5 | 6 | Tasks are a common design model used for AVS operations. The task design model is not required by the EigenLayer protocol but 7 | is a common mechanism used by AVSs. Use tasks to organize discrete units of work performed by Operators offchain that 8 | are later validated onchain. A Task can be any unit of work written in any language as needed by the AVS. 9 | 10 | Tasks can be submitted either: 11 | 1) Onchain by the Consumer (end user) to the AVS contracts. 12 | 2) Offchain by the Consumer directly to the Operators. -------------------------------------------------------------------------------- /docs/developers/Concepts/uam-for-avs.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: User Access Management 4 | --- 5 | 6 | :::note 7 | There is no support for setting appointees for AVSDirectory functions. The AVSDirectory method will be deprecated in a future upgrade. 8 | [All AVSs will need to migrate to Operator Sets before the upcoming deprecation of AVSDirectory](../HowTo/build/operator-sets/migrate-to-operatorsets.md). 9 | ::: 10 | 11 | For concept material on User Access Management (UAM) and roles, refer to: 12 | * [User Access Management](../../eigenlayer/concepts/uam/user-access-management.md) 13 | * [Accounts](../../eigenlayer/concepts/uam/uam-accounts.md) 14 | * [Admins](../../eigenlayer/concepts/uam/uam-admins.md) 15 | * [Appointees](../../eigenlayer/concepts/uam/uam-appointees.md) 16 | 17 | UAM enables an AVS to split onchain components across multiple contracts to enable a modular design. 18 | The protocol functions that an AVS can set appointees for are: 19 | * [`AllocationManager.slashOperator`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#slashoperator) 20 | * [`AllocationManager.deregisterFromOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#deregisterfromoperatorsets) 21 | * [`AllocationManager.setAVSRegistrar`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#setavsregistrar) 22 | * [`AllocationManager.updateAVSMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#updateavsmetadatauri) 23 | * [`AllocationManager.createOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#createoperatorsets) 24 | * `AllocationManager.createRedistributingOperatorSets` 25 | * [`AllocationManager.addStrategiesToOperatorSet`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#addstrategiestooperatorset) 26 | * [`AllocationManager.removeStrategiesFromOperatorSet`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#removestrategiesfromoperatorset) 27 | * [`RewardsCoordinator.createOperatorDirectedAVSRewardsSubmission`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#createoperatordirectedavsrewardssubmission) 28 | * [`RewardsCoordinator.createOperatorDirectedOperatorSetRewardsSubmission`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#createoperatordirectedoperatorsetrewardssubmission) 29 | * [`RewardsCoordinator.setClaimerFor`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#setclaimerfor) 30 | 31 | For information on how to set admins and appointees for an AVS, refer to: 32 | * [Add and Remove Admins](../HowTo/build/uam/dev-add-remove-admins.md) 33 | * [Add and Remove Appointees](../HowTo/build/uam/dev-add-remove-appointees.md) 34 | -------------------------------------------------------------------------------- /docs/developers/HowTo/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "How To" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/build/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Build" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/build/avs-permissionlesss.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 7 3 | title: Add ERC-20 Tokens as Restakable Asset 4 | --- 5 | 6 | # Permissionless Token Strategies 7 | 8 | Permissionless token support enables any ERC-20 token to be permissionlessly added as a restakable asset, significantly broadening 9 | the scope of assets that can contribute to the security of decentralized networks, and unlocking the cryptoeconomic security of 10 | ERC-20 tokens on EigenLayer. 11 | 12 | With permissionless token support, AVSs can choose to accept any ERC-20 token as a restaked asset to provide cryptoeconomic security for 13 | their AVS. This allows AVSs to evaluate the supply and utility of all available tokens to create cross-ecosystem partnerships 14 | while ensuring the safety and security of their services. This increases alignment and connectivity across the ecosystem. 15 | 16 | # Adding a New Strategy 17 | 18 | To add a new Strategy to the EigenLayer protocol: 19 | 20 | * Invoke `StrategyFactory.deployNewStrategy()`. 21 | * Your Strategy is now available to associate with your AVS. 22 | 23 | Please see the contract documentation [here](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/StrategyManager.md#strategyfactorydeploynewstrategy) for further detail. 24 | 25 | :::note 26 | Custom Strategies are strategies that are not deployed via `StrategyFactory.deployNewStrategy()` and require whitelisting via 27 | `StrategyFactory.whitelistStrategies` (see [here](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/StrategyManager.md#strategyfactorywhiteliststrategies)). Custom Strategies have custom bytecode and do not implement `StrategyBase`. 28 | 29 | Custom Strategies are not yet supported because the Strategies specification is still evolving alongside the EigenLayer 30 | protocol. AVS developers should build their AVS using the `StrategyBase` interface and functionality, which provides a 31 | stable and supported foundation for integration. 32 | ::: -------------------------------------------------------------------------------- /docs/developers/HowTo/build/manage-registered-operators.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 6 3 | title: Manage Registered Operators 4 | --- 5 | 6 | ## AVSRegistrar 7 | 8 | The [AVSRegistrar](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/src/contracts/interfaces/IAVSRegistrar.sol) is called when operators register for and deregister from [Operator Sets](../../../eigenlayer/concepts/operator-sets/operator-sets-concept.md). By default (if the stored address 9 | is 0), the call is made to the ServiceManager contract for the AVS. If the AVS has set a different contract as the AVSRegistrar, the specified contract is called. 10 | 11 | ### Setting AVSRegistrar 12 | 13 | To set a contract as the AVSRegistrar, call the [`setAVSRegistrar`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#setavsregistrar) function. The target contract must also implement 14 | [`supportsAVS(AVS)`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/src/contracts/interfaces/IAVSRegistrar.sol) returning TRUE or setting the contract as the AVSRegistrar fails. 15 | 16 | ## Respond to Operator Registrations to Operator Sets 17 | 18 | Operators use the [`registerForOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#registerforoperatorsets) function to register for AVS's operator sets. AVSs can reject ineligible 19 | Operators based on their own custom logic specified in the [AVSRegistrar](#avsregistrar). 20 | 21 | For an AVS to reject an Operator attempting to join an Operator Set, the call from [AllocationManager](../../Concepts/eigenlayer-contracts/core-contracts.md) to the 22 | [`IAVSRegistrar.registerOperator`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/src/contracts/interfaces/IAVSRegistrar.sol) function must revert. 23 | 24 | ## Deregister Operators from, or respond to Operator deregistrations, from Operator Sets 25 | 26 | Deregistration from an Operator Set can be triggered by either the Operator, or the AVS for the Operator Set, using the 27 | [`deregisterFromOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#deregisterfromoperatorsets) function. 28 | 29 | Similar to when an Operator registers for an Operator Set, if the call to [IAVSRegistrar.deregisterOperator](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/src/contracts/interfaces/IAVSRegistrar.sol) reverts, the 30 | deregistration also reverts and does not occur. 31 | -------------------------------------------------------------------------------- /docs/developers/HowTo/build/operator-sets/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Operator Sets" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/build/operator-sets/create-operator-sets.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Create Operator Sets 4 | --- 5 | 6 | :::tip 7 | If you're new to Operator Sets in EigenLayer, review the [Operator Sets concepts](../../../../eigenlayer/concepts/operator-sets/operator-sets-concept.md) before continuing with this topic. 8 | ::: 9 | 10 | Creating Operator Sets for an AVS is managed by the [AllocationManager core contract](../../../Concepts/eigenlayer-contracts/core-contracts.md). Before Operator Sets can be created, 11 | [AVS metadata must be registered](../register-avs-metadata.md). 12 | 13 | [Strategies](../../../../eigenlayer/concepts/operator-sets/strategies-and-magnitudes) can be added to Operator Sets when the Operator is created, or Strategies can be added to an existing Operator Set. 14 | 15 | Operator Sets are either: 16 | * [Non-redistributing](#create-operator-set). Slashed funds are burnt. 17 | * [Redistributing](#create-redistributing-operator-set). Slashed funds are sent to the [`redistributionRecipient`](../../../Concepts/slashing/slashing-concept-developers.md#redistribution-recipient). 18 | 19 | The Operator Set type cannot be changed. 20 | 21 | ## Create Operator Set 22 | 23 | To create an Operator Set, call the [`createOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#createoperatorsets) function. 24 | To add strategies when creating an Operator Set, specify a `params` array containing the strategies. 25 | 26 | On creation, an `id` is assigned to the Operator Set. Together the AVS `address` and `id` are a unique identifier for the Operator Set. 27 | For non-redistributing Operator Sets, the `redistributionRecipient` is the `DEFAULT_BURN_ADDRESS`. 28 | 29 | ## Create Redistributing Operator Set 30 | 31 | To create a redistributing Operator Set, call the `createRedistributingOperatorSets` function. 32 | 33 | To add strategies when creating an Operator Set, specify a `params` array containing the strategies. 34 | Native ETH cannot be added as a strategy for redistributing Operator Sets because redistribution of native ETH is not supported. 35 | 36 | Specify the address to receive slashed funds in `redistributionRecipients`. The `redistributionRecipient` can only be set 37 | when creating the Operator Set and cannot be changed. 38 | 39 | On creation, an `id` is assigned to the Operator Set. Together the AVS `address` and `id` are a unique identifier for the Operator Set. 40 | 41 | ## Complete Operator Set Configuration 42 | 43 | Once created: 44 | 1. [Update the AVS metadata](update-avs-metadata.md) to provide information on the Operator Set to Stakers and Operators. 45 | 2. If required, [add additional Strategies](modify-strategy-composition.md) to the Operator Set. -------------------------------------------------------------------------------- /docs/developers/HowTo/build/operator-sets/design-operator-set.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Design Operator Sets 4 | --- 5 | 6 | An [Operator Set](../../../../eigenlayer/concepts/operator-sets/operator-sets-concept.md) is a grouping of different types of work within a single AVS. Each AVS has at least one Operator Set. The 7 | EigenLayer protocol does not enforce criteria for Operator Sets. 8 | 9 | ## Operator Set Types 10 | 11 | Operator Sets are either: 12 | * [Non-redistributing](create-operator-sets.md#create-operator-set). Slashed funds are burnt. 13 | * [Redistributing](create-operator-sets.md#create-redistributing-operator-set). Slashed funds are sent to the [`redistributionRecipient`](../../../Concepts/slashing/slashing-concept-developers.md#redistribution-recipient). 14 | 15 | The Operator Set type cannot be changed. 16 | 17 | ## Operator Set Groupings 18 | 19 | Best practices for Operator Set design are to logically group AVS tasks (and verification) into separate Operator Sets. 20 | Organize your Operator Sets according to conditions for which you wish to distribute Rewards. Potential conditions include: 21 | * Unique business logic. 22 | * Unique Stake (cryptoeconomic security) amount and types of token required to be allocated from Operators. 23 | * Slashing conditions. 24 | * Ejection criteria. 25 | * Quantity of Operators and criteria for operators allowed. 26 | * Hardware profiles. 27 | * Liveness guarantees. 28 | 29 | For more information on Operator Sets, refer to [Operator Sets](../../../../eigenlayer/concepts/operator-sets/operator-sets-concept). -------------------------------------------------------------------------------- /docs/developers/HowTo/build/operator-sets/migrate-to-operatorsets.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 5 3 | title: Migrate to Operator Sets 4 | --- 5 | 6 | **The AVSDirectory method will be deprecated in a future upgrade. All AVSs will need to migrate to [Operator Sets](../../../../eigenlayer/concepts/operator-sets/operator-sets-concept) before the 7 | upcoming deprecation of AVSDirectory.** 8 | 9 | Operator Sets are required to [slash](../../../../eigenlayer/concepts/slashing/slashing-concept.md). To migrate to, and start using, Operator Sets: 10 | 1. [Upgrade middleware contracts](#upgrade-middleware-contracts) 11 | 2. [Integrate the AllocationManager](#upgrade-middleware-contracts) 12 | 3. [Communicate to Operators](#communicate-to-operators) 13 | 14 | Migrating now gives time to switch existing quorums over to Operator Sets. After the migration has occurred, 15 | integrations with slashing can go live on Testnet, followed by Mainnet. M2 registration and Operator Set registration can operate in parallel. 16 | 17 | ## Upgrade middleware contracts 18 | 19 | To migrate to Operator Sets: 20 | 21 | 1. Upgrade middleware contracts to handle the callback from the AllocationManager. The upgrade provides the RegistryCoordinator 22 | the hooks to handle the callback from the AllocationManager. 23 | 2. From the ServiceManager call, add an account to update the AVSRegistrar: 24 | * With setAppointee where the target is the AllocationManager. 25 | * The selector is the setAVSRegistrar selector. 26 | 3. Call setAVSRegistrar on the AllocationManager from the appointee account and set the RegistryCoordinator as your AVSRegistrar 27 | so that it becomes the destination for registration and deregistration hooks 28 | 29 | See example [RegistryCoordinator implementation with the new hooks](https://github.com/Layr-Labs/eigenlayer-middleware/blob/dev/src/SlashingRegistryCoordinator.sol). 30 | 31 | ## Integrate the AllocationManager 32 | 33 | Integrate the AllocationManager by: 34 | 35 | 1. Creating Operator Sets through the AllocationManager. 36 | 2. Adding (or later removing) specific Strategies to that Operator Set to enable Operators to secure the AVS. 37 | 3. Specifying an additional AVSRegistrar contract that applies business logic to gate Operator registration to an Operator Set. 38 | 39 | ## Communicate to Operators 40 | 41 | 1. Communicate to Operators how to: 42 | 1. Register for Operator Sets using the new registration pathway. 43 | 2. Allocate slashable stake for slashable Operator Sets. 44 | 2. Migrate to distribution of tasks based on the delegated and slashable stake of Operators registered to the AVS’s Operator Sets. 45 | 46 | To ensure community and incentive alignment, AVSs need to conduct offchain outreach to communicate 47 | the purpose and task/security makeup of their Operator Sets with their Operators and Stakers before beginning registration. 48 | Include any potential hardware, software, or stake requirements in the communication. The AVS decides task distribution 49 | within an Operator Set. 50 | -------------------------------------------------------------------------------- /docs/developers/HowTo/build/operator-sets/modify-strategy-composition.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Modify Strategy Composition 4 | --- 5 | 6 | An Operator Set requires at least one [Strategy](../../../../eigenlayer/concepts/operator-sets/strategies-and-magnitudes). 7 | 8 | To add Strategies to an existing Operator Set, call the [`addStrategiesToOperatorSet`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#addstrategiestooperatorset) function. 9 | 10 | To remove Strategies from an Operator Set, call the [`removeStrategiesFromOperatorSet`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#removestrategiesfromoperatorset) function. 11 | 12 | :::note 13 | The Native Eth strategy cannot be added to Redistributing Operator Sets. 14 | ::: -------------------------------------------------------------------------------- /docs/developers/HowTo/build/operator-sets/update-avs-metadata.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Update AVS Metadata 4 | --- 5 | 6 | :::tip 7 | The AVS metadata is used to provide information on the [EigenLayer App](https://app.eigenlayer.xyz/) for Stakers and Operators. 8 | ::: 9 | 10 | Once Operator Sets have been created, the AVS metadata can be updated to include the Operator Sets. 11 | 12 | To update metadata, call the [`updateAVSMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#avs-metadata) function. Use the following format. 13 | 14 | ``` 15 | { 16 | "name": "AVS", 17 | "website": "https.avs.xyz/", 18 | "description": "Some description about", 19 | "logo": "http://github.com/logo.png", 20 | "twitter": "https://twitter.com/avs", 21 | "operatorSets": [ 22 | { 23 | "name": "ETH Set", 24 | "id": "1", 25 | "description": "The ETH operatorSet for AVS", 26 | "software": [ 27 | { 28 | "name": "NetworkMonitor", 29 | "description": "", 30 | "url": "https://link-to-binary-or-github.com" 31 | }, 32 | { 33 | "name": "ValidatorClient", 34 | "description": "", 35 | "url": "https://link-to-binary-or-github.com" 36 | } 37 | ], 38 | "slashingConditions": ["Condition A", "Condition B"] 39 | }, 40 | { 41 | "name": "EIGEN Set", 42 | "id": "2", 43 | "description": "The EIGEN operatorSet for AVS", 44 | "software": [ 45 | { 46 | "name": "NetworkMonitor", 47 | "description": "", 48 | "url": "https://link-to-binary-or-github.com" 49 | }, 50 | { 51 | "name": "ValidatorClient", 52 | "description": "", 53 | "url": "https://link-to-binary-or-github.com" 54 | } 55 | ], 56 | "slashingConditions": ["Condition A", "Condition B"] 57 | } 58 | ] 59 | } 60 | ``` -------------------------------------------------------------------------------- /docs/developers/HowTo/build/register-avs-metadata.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Register AVS Metadata 4 | --- 5 | 6 | Metadata must be registered: 7 | * Before an AVS can create [Operator Sets](../../../eigenlayer/concepts/operator-sets/operator-sets-concept.md) or register Operators to Operator Sets. 8 | * To [onboard to the AVS Dashboard](../publish/onboard-avs-dashboard.md). 9 | 10 | Registering metadata for an AVS is managed by the [AllocationManager core contract](../../Concepts/eigenlayer-contracts/core-contracts.md). 11 | 12 | To register metadata, call the [`updateAVSMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#avs-metadata) function on the AllocationManager. Invoking [`updateAVSMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#avs-metadata) 13 | on the AllocationManager establishes the AVS address in the core EigenLayer protocol. 14 | 15 | ## Format 16 | 17 | To register metadata, the AVS must provide a URL to the JSON data in the following format. The format is not validated onchain. 18 | 19 | The metadata must be consistently available, and the URL provided to [`updateAVSMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/9a19503e2a4467f0be938f72e80b11768b2e47f9/docs/core/AllocationManager.md#avs-metadata) must not cause redirects. 20 | 21 | ``` 22 | { 23 | "name": "AVS", 24 | "website": "https.avs.xyz/", 25 | "description": "Some description about", 26 | "logo": "http://github.com/logo.png", 27 | "twitter": "https://twitter.com/avs", 28 | } 29 | ``` 30 | 31 | ## Logo 32 | 33 | The logo linked to in the metadata must: 34 | * Be consistently available. 35 | * Be hosted somewhere retrievable publicly. 36 | * Not cause redirects. 37 | * Be under 1MB. 38 | * Return a png image, and not html with an image embedded or any other format. 39 | 40 | If you need a repository for your logo to be hosted publicly, make a PR to the [`eigendata`](https://github.com/Layr-Labs/eigendata) 41 | repository to add your logo. -------------------------------------------------------------------------------- /docs/developers/HowTo/build/slashing/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Slashing" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/build/slashing/implement-slashing.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Implement Slashing 4 | --- 5 | 6 | :::important 7 | If you're new to slashing in EigenLayer, make sure you're familiar with [Operator Sets](../../../../eigenlayer/concepts/operator-sets/operator-sets-concept.md) 8 | and [Slashing](../../../../eigenlayer/concepts/slashing/slashing-concept.md) before implementing slashing. 9 | ::: 10 | 11 | :::caution 12 | The v1.5.0 Redistribution release introduced the Slash Escrow Delay. All slashed funds are held in the `SlashEscrow` contracts 13 | for the Slash Escrow Delay before being burnt or redistributed. 14 | ::: 15 | 16 | The [`AllocationManager`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/src/contracts/interfaces/IAllocationManager.sol) provides the interface for the `slashOperator` function. 17 | 18 | To implement slashing, AVSs specify: 19 | * Individual Operator 20 | * [Operator Set](../../../../eigenlayer/concepts/operator-sets/operator-sets-concept.md) 21 | * [List of Strategies](../../../../eigenlayer/concepts/operator-sets/strategies-and-magnitudes) 22 | * [List of proportions (as `wads` or “parts per `1e18`”)](../../../../eigenlayer/concepts/operator-sets/strategies-and-magnitudes) 23 | * Description. 24 | 25 | ## Define Slashing Proportions 26 | 27 | In the `wadsToSlash` parameter: 28 | * 8% slash is represented as `8e16`, or `80000000000000000`. 29 | * 25% slash is represented as `2.5e17` or `250000000000000000`. 30 | 31 | The indexes in the two arrays must match across `strategies` and `wadsToSlash`. All Strategies supplied must be configured 32 | as part of the Operator Set. 33 | 34 | For more information on how magnitudes are reduced when slashed, refer to [Magnitudes when Slashed](../../../../eigenlayer/concepts/slashing/magnitudes-when-slashed.md). 35 | 36 | ## Define Upstream Redistribution Contracts 37 | 38 | For redistributable Operator Sets, implement upstream contracts for [`redistributionRecipient`](../../../Concepts/slashing/slashing-concept-developers.md#redistribution-recipient) 39 | to redistribute slashed funds once they have exited the protocol. 40 | 41 | ## Returned by `slashOperator` 42 | 43 | The `slashOperator` function returns the `slashId` and number of shares slashed for each strategy. The `slashId` is 44 | incremented for an OperatorSet each time an Operator Set is slashed. Use the `slashID` to programmatically handle slashings. 45 | 46 | ## Slashing Event Emission 47 | 48 | When a slashing occurs, one event is emitted onchain for each slashing. Emitted details identify the Operator 49 | slashed, in what Operator Set, and across which Strategies, with fields for the proportion slashed and meta-data. 50 | ``` 51 | /// @notice Emitted when an operator is slashed by an operator set for a strategy 52 | /// `wadSlashed` is the proportion of the operator's total delegated stake that was slashed 53 | event OperatorSlashed( 54 | address operator, OperatorSet operatorSet, IStrategy[] strategies, uint256[] wadSlashed, string description 55 | ); 56 | ``` -------------------------------------------------------------------------------- /docs/developers/HowTo/build/slashing/slashing-veto-committee-design.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Design Slashing 4 | --- 5 | 6 | ## Slashing Vetoes 7 | 8 | EigenLayer provides a maximally flexible slashing function. AVSs may slash any Operator in any of their Operator Sets for 9 | any reason. Slashing does not have to be objectively attributable (that is, provable on-chain). We encourage AVSs to create 10 | robust legibility and process around individual slashings. Governance, fraud proofs, and decentralization 11 | must be considered in AVS slashing designs. Include delays and veto periods in AVS designs to avoid or cancel slashing 12 | in cases of AVS implementation bugs, improper slashing, or fraud. 13 | 14 | **No vetoes are provided by the EigenLayer protocol.** 15 | 16 | ## Veto Committee Design 17 | 18 | One popular AVS design is to utilize a governance mechanism with slashing such that a committee can review a proposed (or queued) 19 | slashing request. That slashing request can then be either fulfilled or vetoed by a committee of domain experts, governance 20 | council or multisig address for the AVS. Please see the [vetoable slasher example implementation](https://github.com/Layr-Labs/eigenlayer-middleware/blob/dev/src/slashers/VetoableSlasher.sol) for reference. 21 | 22 | Ensure that your slashing process can be resolved within the `DEALLOCATION_DELAY` time window. This is the amount of blocks 23 | between an Operator queuing a deallocation of stake from an Operator Set for a strategy and the deallocation taking effect. 24 | This will ensure that the slashing event is carried out for the Operator before their stake is deallocated. 25 | 26 | ## Redistribution 27 | 28 | Redistribution may enable AVSs to benefit from a theft related to slashing so additional design care must be taken to consider 29 | the incentives of all parties interacting with the redistribution. Redistribution enables more use-case opportunities 30 | but the higher risk and slash incentive must be considered for the participants running the AVS code. -------------------------------------------------------------------------------- /docs/developers/HowTo/build/uam/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "User Access Management" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/build/uam/dev-add-remove-admins.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Add and Remove Admins 4 | --- 5 | 6 | :::caution 7 | Security of admin keys is critical. UAM enables appointees with lessened permissions, and use of keys that can be rotated or 8 | destroyed. For more information on key management best practices, refer to [AVS Developer Security Best Practices](../../../Reference/avs-developer-best-practices.md). 9 | 10 | After an account has added an admin and the pending admin has accepted, the account address no 11 | longer has default admin privileges. That is, the original account key of the Operator or AVS cannot be 12 | used for write operations to the protocol, unless previously added as an admin, or is added back as admin in the future. 13 | There is no superadmin role. 14 | 15 | The removal of default admin privileges upon adding additional admins enables accounts 16 | to perform a key rotation to remove permissions from a potentially compromised original key. 17 | 18 | For an account to retain admin 19 | privileges for its own address, add the account first as an admin. After the account is added as an admin, add other admins as needed. 20 | ::: 21 | 22 | ## Add an Admin Using the Core Contracts 23 | 24 | Admins are added via a 2-step handshake. To add an admin: 25 | 1. As the account or admin adding the admin, call the [`PermissionController.addPendingAdmin`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md#addpendingadmin) function to set the pending admin. 26 | 2. As the pending admin, call the [`PermissionController.acceptAdmin`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md#acceptadmin) function. Once accepted, the added admin has full admin authority. 27 | 28 | ## Remove an Admin Using the Core Contracts 29 | 30 | The caller must be an admin. Once an account has added an admin, there must always be at least one admin for the account. 31 | 32 | To remove a pending admin before they have called acceptAdmin, call the [`PermissionController.removePendingAdmin`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md#removependingadmin) function. 33 | 34 | To remove an admin, call the [`PermissionController.removeAdmin`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md#removeadmin) function. 35 | -------------------------------------------------------------------------------- /docs/developers/HowTo/build/uam/dev-add-remove-appointees.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Add and Remove Appointees 4 | --- 5 | 6 | Only admins (or the account if no admin has been set) can add appointees. Unlike adding an admin, there is no requirement 7 | for an appointee to accept the appointment. 8 | 9 | For the list of contracts and functions that can have appointees set, refer to: 10 | * [User Account Management](../../../Concepts/uam-for-avs.md) for AVS 11 | * [User Account Management](../../../../operators/concepts/uam-for-operators.md) for Operators 12 | 13 | ## Add an Admin using Core Contracts 14 | 15 | To add an appointee, call the [PermissionController.setAppointee](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md#setappointee) function. 16 | 17 | To remove an appointee, call the [PermissionController.removeAppointee](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md#removeappointee) function. -------------------------------------------------------------------------------- /docs/developers/HowTo/deploy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Deploy" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/deploy/deployment-testnet-mainnet.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 6 3 | title: Prepare for and Deploy to Testnet and Mainnet 4 | --- 5 | 6 | 7 | ## Preparing and Deploying to Testnet 8 | 9 | 1. Package the Operator’s long running executable in a way that is easy for Operators to launch (via binary, docker container, or similar). 10 | 11 | 2. Author Testnet user and Operator documentation, including: 12 | - Trust Modeling: clarify any trust assumptions in your architecture to your users. Identify the components that are trusted (centralized) and untrusted (decentralized, trustless). 13 | - Operator instructions to install, register, deregister. 14 | - End user (aka “Consumer”) instructions to utilize your AVS service. 15 | - Communication channels that will be utilized for AVS upgrades. 16 | - Describe Operator monitoring tooling available, such as GraFana dashboards, log files or similar. 17 | 18 | 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). 19 | 20 | 4. Follow the [Testnet Dashboard Onboarding instructions](https://docs.eigenlayer.xyz/eigenlayer/avs-guides/avs-dashboard-onboarding). 21 | 22 | 5. Implement Rewards distributions per the instructions [here](../build/submit-rewards-submissions.md). 23 | 24 | 25 | ## Preparing and Deploying to Mainnet 26 | 27 | 1. Smart Contract Auditing: have your codebase audited with at least 2-3 reputable audit firms. 28 | 2. Finalize User and Operator documentation. 29 | 3. Follow the [Mainnet Dashboard Onboarding instructions](https://docs.eigenlayer.xyz/eigenlayer/avs-guides/avs-dashboard-onboarding). -------------------------------------------------------------------------------- /docs/developers/HowTo/get-started/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Get Started" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/get-started/implement-minimum-onchain-components.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Implement onchain components 4 | --- 5 | 6 | To build an AVS, the minimum set of functionality to be defined in the [AVS contracts](../../Concepts/avs-contracts.md) is: 7 | * [Registering AVS metadata](../build/register-avs-metadata.md) 8 | * [Create Operator Sets](../build/operator-sets/create-operator-sets.md) 9 | * [Creating and modifying Strategy composition](../build/operator-sets/modify-strategy-composition.md) 10 | * [Managing registered Operators](../build/manage-registered-operators.md) 11 | * [Responding to Operator registrations](../build/manage-registered-operators.md#respond-to-operator-registrations-to-operator-sets) 12 | * [Deregistering Operators](../build/manage-registered-operators.md#deregister-operators-from-or-respond-to-operator-deregistrations-from-operator-sets) 13 | * [Distributing Rewards](../build/submit-rewards-submissions) 14 | -------------------------------------------------------------------------------- /docs/developers/HowTo/get-started/support.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 8 3 | title: Get Support 4 | --- 5 | 6 | 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! -------------------------------------------------------------------------------- /docs/developers/HowTo/publish/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Publish" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/test/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 6, 3 | "label": "Test" 4 | } -------------------------------------------------------------------------------- /docs/developers/HowTo/test/obtain-testnet-eth.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Obtain Testnet ETH 4 | --- 5 | 6 | The [Obtaining testnet ETH and liquid staking tokens (LSTs)](../../../restakers/restaking-guides/testnet/obtaining-testnet-eth-and-liquid-staking-tokens-lsts.md) topic describes how to obtain testnet ETH and LSTs for 7 | testing AVSs. -------------------------------------------------------------------------------- /docs/developers/HowTo/test/test-avs.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Test AVS 4 | --- 5 | :::note 6 | AVS Devnet is currently in Public Alpha and is rapidly being upgraded. Features may be added, removed or otherwise improved or modified, 7 | and interfaces will have breaking changes. To report any issues, raise a [GitHub issue](https://github.com/Layr-Labs/avs-devnet/issues). 8 | ::: 9 | 10 | Use AVS Devnet to test AVSs locally. AVS Devnet includes: 11 | * A CLI tool for easy configuration, deployment, and management of local devnets. 12 | * Kurtosis integration to provide a standardized way to spin up local Ethereum environments with core EigenLayer contracts. 13 | * Consensus and Execution clients to simulate production-like environments. 14 | * Block Explorer integration for visualizing blockchain activity using a preconfigured [Blockscout explorer](https://github.com/blockscout/blockscout). 15 | * Funded Operators with keys to enable creation of operator accounts with preloaded funds and private keys for testing staking, delegation, and other interactions. 16 | * Tailored configurations for deployment, testing, and debugging. 17 | 18 | To install and use, refer to the [avs-devnet README](https://github.com/Layr-Labs/avs-devnet). -------------------------------------------------------------------------------- /docs/developers/Reference/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Reference" 4 | } -------------------------------------------------------------------------------- /docs/developers/Reference/ai-resources.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: AI Resources 4 | --- 5 | 6 | import CopyButton from '@site/src/components/CopyToClipboard'; 7 | 8 | 9 | These text and markdown files contain documentation and code optimized for use with LLMs and AI tools. 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 56 | 57 |
DescriptionFileActions
58 | -------------------------------------------------------------------------------- /docs/developers/Reference/eigenlayer-sdks.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: EigenLayer SDKs 4 | --- 5 | 6 | The EigenLayer SDKs wrap common EigenLayer AVS operations and are designed for AVS developers. 7 | * [EigenLayer Go SDK](https://github.com/Layr-Labs/eigensdk-go) 8 | * [EigenLayer Rust SDK](https://github.com/Layr-Labs/eigensdk-rs) -------------------------------------------------------------------------------- /docs/developers/Reference/resources.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Developer Resources 4 | --- 5 | 6 | :::note 7 | 8 | We are in the process of updating our samples, SDKs, and the EigenLayer CLI to include Rewards and Slashing capabilities. The samples, SDKs, and CLI will be 9 | updated as soon as possible. Use the samples now to get familiar with EigenLayer. 10 | For more information on Rewards and Slashing, refer to the [Rewards](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-001.md) and [Slashing](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) ELIPs, 11 | and [Rewards](../../eigenlayer/concepts/rewards/rewards-concept.md) and [Slashing](../Concepts/slashing/slashing-concept-developers) documentation. 12 | For questions or support, reach out to us using the Intercom button on the bottom right side of this page or here. 13 | We will promptly follow up with support! 14 | 15 | ::: 16 | 17 | ### Developer Samples 18 | * [Awesome AVS](https://github.com/Layr-Labs/awesome-avs) 19 | * [Hello World AVS](https://github.com/Layr-Labs/hello-world-avs) 20 | * [Incredible Squaring AVS](https://github.com/Layr-Labs/incredible-squaring-avs) 21 | * [devQuickstart](https://github.com/Layr-Labs/devQuickstart) 22 | 23 | ### SDKs 24 | These SDKs are wrappers on top of common EigenLayer AVS operations designed to save you time as an AVS builder: 25 | * [EigenLayer Go SDK](https://github.com/Layr-Labs/eigensdk-go) 26 | * [EigenLayer Rust SDK](https://github.com/Layr-Labs/eigensdk-rs) 27 | 28 | ### EigenLayer Core Repos 29 | * [EigenLayer Contracts](https://github.com/Layr-Labs/eigenlayer-contracts) 30 | * [EigenLayer Middleware](https://github.com/Layr-Labs/eigenlayer-middleware) 31 | * [EigenLayer CLI](https://github.com/Layr-Labs/eigenlayer-cli) 32 | * [EigenDA](https://github.com/Layr-Labs/eigenda) 33 | 34 | ### Developer Tooling 35 | - [Othentic](https://www.othentic.xyz) - Library of components for AVS builders. 36 | - [Layer](https://www.layer.xyz/) - Containerized Autonomous Verifiable Services (CAVS) via Web Assembly. 37 | - [AltLayer Wizard](https://wizard.altlayer.io/) - AVS-as-a-Service platform. 38 | - [Gadget](https://github.com/webb-tools/gadget) - A framework for building modular AVS and Tangle Blueprints. -------------------------------------------------------------------------------- /docs/developers/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 4, 3 | "label": "Developers" 4 | } -------------------------------------------------------------------------------- /docs/developers/archived/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 4, 3 | "label": "Archived content" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "EigenLayer" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 4, 3 | "label": "Concepts" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/operator-sets/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Operator Sets" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/operator-sets/allocation-deallocation.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Allocation and Deallocation 4 | --- 5 | 6 | ## Allocations 7 | 8 | Allocations are made by magnitude and can only be made: 9 | * To valid [Operator Sets](operator-sets-concept). 10 | * From non-slashable [magnitude](strategies-and-magnitudes). 11 | 12 | Allocations are not made until the Operator [`ALLOCATION_DELAY`](../../reference/safety-delays-reference.md) has passed (that is, the allocation is not pending). Allocations 13 | cannot be made from an of: 14 | * Existing queued allocations 15 | * Magnitude already allocated to an Operator Set 16 | * Pending deallocations. 17 | 18 | ## Deallocations 19 | 20 | Deallocations are similar to allocations and are not made until the Operator [`DEALLOCATION_DELAY`](../../reference/safety-delays-reference.md) has passed (that is, the 21 | deallocation is not pending). After the delay, the stake is non-slashable. The delay: 22 | * Enables AVSs to update their view of [Unique Stake](../slashing/unique-stake.md) to reflect the Operator’s reduced allocation. 23 | * Guarantees appropriate delays for tasks to remain slashable. 24 | 25 | Queued deallocations cannot be canceled. Deallocations happen immediately (that is, the `DELLOCATION_DELAY` does not apply) 26 | if the Operator is not registered to the AVS, or the strategy being deallocated is not part of the Operator Set. 27 | 28 | If an Operator deregisters, the Operator remains slashable for the `DEALLOCATION_DELAY` period following the deregistration. 29 | After the deregistration, the allocations to that Operator Set still exist, and if the Operator re-registers, those Operator 30 | Set allocations immediately become slashable again. That is, a deregistration does not queue a deallocation. 31 | 32 | Each Operator/ Strategy pair can have only one pending allocation or deallocation transaction per Operator Set at a time. 33 | A single transaction can modify multiple allocations. 34 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/operator-sets/operator-sets-concept.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Operator Sets Overview 4 | --- 5 | 6 | :::note 7 | [ELIP-006 Redistributable Slashing](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-006.md) introduced Redistributable Operator Sets. 8 | Redistributable Slashing is available in v1.5 on testnets and will be available on mainnet in Q3. 9 | 10 | Before the Slashing and Operator Sets release, Operators registered to an AVS to earn rewards in the AVSDirectory. 11 | We recommend existing AVSs [migrate to Operator Sets on testnet](../../../developers/HowTo/build/operator-sets/migrate-to-operatorsets.md). 12 | 13 | ::: 14 | 15 | Operator Sets determine which Operators secure an AVS and earn rewards. Each AVS defines one or more Operator Sets that 16 | Operators may opt into. The opted in Operators are the set of Operators that are responsible for securing that service. 17 | By opting into the Operator Set for an AVS, Operators gain access to potential AVS rewards and are exposed to AVS slashing risks. 18 | 19 | AVSs group Operators into Operator Sets based on unique business logic, hardware profiles, liveness guarantees, or composition 20 | of stake. Operators use Operator Sets to allocate and deallocate [Unique Stake](../slashing/unique-stake.md). AVSs use Operator Sets to assign tasks to Operator 21 | Sets to perform the service provided by the AVS, and for redistributable Operator Sets, specify the redistribution recipient. 22 | The redistribution recipient is an AVS-controlled role and cannot be changed after an Operator Set has been created. 23 | 24 | Operators are responsible for ensuring that they fully understand the slashing conditions and slashing risks of AVSs before 25 | opting into an Operator Set and allocating stake to the Operator Set, as once allocated, those funds may be slashable 26 | according to any conditions set by that AVS. In general, there is a larger incentive to slash when redistribution is enabled. 27 | Redistributable Operator Sets may offer higher rewards, but these should be considered against the increased slashing risks. 28 | 29 | ## For AVS Developers 30 | 31 | For information on designing Operator Sets, refer to [Design Operator Sets](../../../developers/HowTo/build/operator-sets/design-operator-set.md). 32 | 33 | ## For Operators 34 | 35 | For information on allocating to Operator Sets, refer to [Allocate and Register to Operator Set](../../../operators/howto/operator-sets.md). 36 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/operator-sets/strategies-and-magnitudes.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Strategies and Magnitudes 4 | --- 5 | 6 | :::note 7 | 8 | [ELIP-002 Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) introduced Operator Sets. 9 | 10 | ::: 11 | 12 | Magnitudes are the accounting tool used to track Operator allocations to [Operator Sets](operator-sets-concept). Magnitudes represent proportions 13 | of an Operator’s delegations for a specific Strategy. 14 | 15 | Strategies are the accounting tool used to track Stakers deposited assets. Strategies are expressions of security on EigenLayer. 16 | For example, a strategy may represent a specific token. 17 | 18 | For each Strategy: 19 | * An Operator starts with a protocol-defined Total Magnitude of 1x10^18 (`INITIAL_TOTAL_MAGNITUDE`). 20 | * The sum of all of an Operator’s Magnitudes cannot exceed the `INITIAL_TOTAL_MAGNITUDE`. 21 | * The protocol consistently decreases the Strategy’s total magnitude for the slashed Operator to account for slashing events originated by an AVS. 22 | 23 | The proportion of an Operator’s delegation assigned as Unique Stake to an Operator Set is equal to the magnitude allocated 24 | to that Operator Set divided by the Operator’s Total Magnitude. The sum of all magnitude allocations never being greater 25 | than the Total Magnitude ensures the property of Unique Stake. That is, ensures that no two Operator Sets can slash the same stake. 26 | 27 | ## Example 28 | 29 | The table displays an example of an Operator Magnitude allocation for the EIGEN Strategy. The table represents slashable 30 | and non-slashable stake by Operator Set. 31 | 32 | For legibility, the example uses a total magnitude of 10,000 instead of 1x1018. 33 | 34 | | | Magnitude | Proportion | EIGEN | 35 | | :---- | :---- | :---- | :---- | 36 | | `AVS_1_EIGEN` | 3,000 | 30% | 30 | 37 | | `AVS_2_EIGEN` | 2,500 | 25% | 25 | 38 | | `EigenDA_EIGEN` | 2,000 | 20% | 20 | 39 | | `Non-slashable` | 2,500 | 25% | 25 | 40 | | `Total` | 10,000 | 100% | 100 | 41 | 42 | The Operator deallocates 10 EIGEN to AVS_1_EIGEN. The following is the result and the non-slashable stake increases. 43 | 44 | | | Magnitude | Proportion | EIGEN | 45 | | :---- | :---- | :---- | :---- | 46 | | `AVS_1_EIGEN` | 2,000 | 20% | 20 | 47 | | `AVS_2_EIGEN` | 2,500 | 25% | 25 | 48 | | `EigenDA_EIGEN` | 2,000 | 20% | 20 | 49 | | `Non-slashable` | 3,500 | 35% | 35 | 50 | | `Total` | 10,000 | 100% | 100 | 51 | 52 | A Staker who has delegated to the Operator deposits 100 EIGEN. The following is the results and Magnitudes and proportions 53 | stay the same and the EIGEN for each Operator Set increases. 54 | 55 | | | Magnitude | Proportion | EIGEN | 56 | | :---- | :---- | :---- | :---- | 57 | | `AVS_1_EIGEN` | 2,000 | 20% | 40 | 58 | | `AVS_2_EIGEN` | 2,500 | 25% | 50 | 59 | | `EigenDA_EIGEN` | 2,000 | 20% | 40 | 60 | | `Non-slashable` | 3,500 | 35% | 70 | 61 | | `Total` | 10,000 | 100% | 200 | 62 | 63 | For information on how magnitudes are reduced when slashed, refer to [Magnitudes when Slashed](../slashing/magnitudes-when-slashed.md). -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/rewards/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Rewards" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/rewards/earners-claimers-recipients.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Earners, Claimers, and Reward Recipients 4 | --- 5 | 6 | Earners are addresses that accrue Rewards within the EigenLayer ecosystem and are Stakers, Operators, or in the case of refunds, 7 | AVS addresses. Earners accrue rewards but claiming rewards is a separate step and can be assigned to a Claimer. 8 | 9 | Claimers are addresses that are authorized to claim rewards on behalf of Earners. By default, an Earner is their own Claimer. 10 | Earners can assign a Claimer address to manage Rewards claims on their behalf. If an Earner sets a Claimer, the new Claimer 11 | gains the ability to claim all unclaimed past Rewards. Claimers can set a reward recipient address to receive the rewards. If 12 | using the EigenLayer CLI or app, the default reward recipient is the Earner. 13 | 14 | In summary: 15 | 16 | * Earners accrue rewards but do not necessarily claim them. 17 | * Claimers claim rewards but do not necessarily receive them. 18 | * Reward recipients receive the rewards (that is, the final destination for ERC20 token distributions). -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/rewards/pi-split.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Programmatic Incentives Split 4 | --- 5 | 6 | [Programmatic Incentives](https://docs.eigenfoundation.org/programmatic-incentives/programmatic-incentives-faq) are EIGEN tokens minted by the EigenLayer protocol to Stakers and Operators. 7 | Programmatic Incentives are claimed, and Operators can set a variable split of Programmatic Incentives, in the same way as Rewards. 8 | 9 | To receive Programmatic Incentives: 10 | 11 | * Operators must be opted into at least one Operator Set for at least one AVS. 12 | * Stakers must be delegated to an Operator that is opted into at least one Operator Set for at least one AVS. 13 | 14 | By default, Operators earn a 10% split on Programmatic Incentives. The rest of the Programmatic Incentives are claimable 15 | by the Operator’s delegated Stakers. Programmatic Incentive distributions are proportional to delegated stake. 16 | 17 | For information on how to change the default Programmatic Incentives split, refer to [Set Programmatic Incentives Split](../../../operators/howto/confirgurerewards/set-pi-split). 18 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/rewards/rewards-claiming.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Rewards Claiming 4 | --- 5 | 6 | The process to claim rewards is the same for AVS Rewards and Programmatic Incentives. That is, both AVS Rewards and Programmatic 7 | Incentives are displayed as claimable rewards in the EigenLayer app and by the EigenLayer CLI. 8 | 9 | The posted distribution roots contain cumulative earnings. That is, Stakers and Operators do not have to claim against every 10 | root and claiming against the most recent root will claim anything not yet claimed. 11 | 12 | For information on configuring and claiming rewards, refer to: 13 | * [Set Rewards Claimer](../../../operators/howto/confirgurerewards/set-rewards-claimer.md) 14 | * [Set Rewards Split](../../../operators/howto/confirgurerewards/set-rewards-split.md) 15 | * [Set PI Split](../../../operators/howto/confirgurerewards/set-pi-split.md) 16 | * [Claim Rewards using the CLI](../../../operators/howto/claimrewards/claim-rewards-cli.mdx) 17 | * [Claim Rewards using the App](../../../restakers/restaking-guides/claim-rewards-app.md) 18 | * [Batch Claim Rewards](../../../operators/howto/claimrewards/batch-claim-rewards.md) 19 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/rewards/rewards-split.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Rewards Split 4 | --- 5 | 6 | Operators earn rewards by opting into the Operator Sets of AVSs that implement Rewards. By default, Operators earn a 10% split 7 | on Rewards. The rest of the reward is claimable by the Operator’s delegated Stakers. Rewards are proportional to: 8 | 9 | * The amount of stake. 10 | * The AVS's relative weighting of strategies in a rewards submission. 11 | * The number of days during the eligible timeframe of the reward submission that the Staker was delegated to the Operator. 12 | 13 | For information on how to change the default rewards split, refer to [Set Rewards Split](../../../operators/howto/confirgurerewards/set-rewards-split.md). -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/rewards/rewards-submission.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 5 3 | title: Rewards Submission 4 | --- 5 | 6 | AVSs make rewards submissions specifying: 7 | 8 | * Operator Set for which the rewards are being submitted. 9 | * Time range for which the reward is distributed. 10 | * List of weights for each Strategy for the reward. 11 | * ERC20 token in which to make rewards. 12 | 13 | For information on how to create a rewards submission, refer to [Submit Rewards Submission](../../../developers/HowTo/build/submit-rewards-submissions.md). 14 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/slashing/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Slashing" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/slashing/magnitudes-when-slashed.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Magnitudes when Slashed 4 | --- 5 | 6 | :::tip 7 | If you're new to slashing in EigenLayer, make sure you're familiar with [Operator Sets](../operator-sets/operator-sets-concept.md) 8 | and [Strategies and Magnitudes](../operator-sets/strategies-and-magnitudes.md) before continuing with this topic. 9 | ::: 10 | 11 | When implementing slashing, AVSs specify: 12 | * Individual Operator 13 | * [Operator Set](../operator-sets/operator-sets-concept.md) 14 | * [List of Strategies](../operator-sets/strategies-and-magnitudes) 15 | * [List of proportions (as `wads` or “parts per `1e18`”)](../operator-sets/strategies-and-magnitudes) 16 | * Description. 17 | 18 | For all Strategies specified, the Operator’s allocations to that Operator Set are slashed by the corresponding proportion 19 | while maintaining their nominal allocations to all other Operator Sets. Maintaining nominal allocations is achieved by 20 | subtracting the allocated magnitude from both the specified Operator Set, and the Operator’s Total Magnitude. 21 | 22 | Slashing proportionally reduces funds of all Stakers of the given Strategies that are delegated to the Operator, including funds 23 | in queued deallocations and withdrawals (that haven’t passed [`WITHDRAWAL_DELAY`](../../reference/safety-delays-reference.md)). Operator delegation is decreased for each Strategy. 24 | Changes are propagated to Stakers by referring to their delegated Operator’s Total Magnitude. 25 | 26 | ## Example 27 | 28 | The allocated magnitudes are: 29 | 30 | | | Magnitude | Proportion | EIGEN | 31 | | :---- | :---- | :---- | :---- | 32 | | `AVS_1_EIGEN` | 2,000 | 20% | 40 | 33 | | `AVS_2_EIGEN` | 2,500 | 25% | 50 | 34 | | `EigenDA_EIGEN` | 2,000 | 20% | 40 | 35 | | `Non-slashable` | 3,500 | 35% | 70 | 36 | | `Total` | 10,000 | 100% | 200 | 37 | 38 | `AVS_1` slashes the Operator for a 50% reduction (`5e17` in `wads`) in the Operator Set `AVS_1_EIGEN`: 39 | 40 | | | Magnitude | Proportion | EIGEN | 41 | | :---- | :---- | :---- | :---- | 42 | | `AVS_1_EIGEN` | 1,000 | 11% | 20 | 43 | | `AVS_2_EIGEN` | 2,500 | 28% | 50 | 44 | | `EigenDA_EIGEN` | 2,000 | 22% | 40 | 45 | | `Non-slashable` | 3,500 | 39% | 70 | 46 | | `Total` | 9000 | 100% | 180 | 47 | 48 | Slashing by one Operator Set does not affect the magnitudes of EIGEN allocated to other Operator Sets. -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/slashing/redistribution.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Redistribution 4 | --- 5 | 6 | :::note 7 | [ELIP-006 Redistributable Slashing](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-006.md) introduced Redistributable Operator Sets. 8 | Redistributable Slashing is available in v1.5 on testnets and will be available on mainnet in Q3. 9 | ::: 10 | 11 | Redistribution enables AVSs to repurpose slashed funds instead of burning them. In use cases such as lending and insurance protocols, 12 | redistribution plays a key role. It enables the reallocation of funds when commitments are broken or conditions change, for example, 13 | in the event of a liquidation or user reimbursement. Redistribution may be particularly beneficial for AVS use-cases that involve 14 | lending, insurance, risk hedging, or, broadly, commitments with a need to compensate harmed parties or amortize risk. 15 | 16 | Redistribution extends slashing, allowing AVSs to not only penalize Operators for missed commitments but also strategically 17 | redirect slashed funds for their use-case, which could include compensating harmed parties or potentially rewarding reliable Operators. 18 | 19 | Redistribution is opt-in only for AVSs, Operators, and Stakers. AVSs choose whether to enable redistribution by creating 20 | redistributable Operator Sets, Operators choose whether to accept the redistribution conditions, and Stakers decide whether 21 | to delegate to Operators allocated to redistributable Operator Sets. 22 | 23 | In general, there is a larger incentive to slash user funds when redistribution is enabled. Redistributable Operator Sets 24 | may offer higher rewards, but these should be considered against the increased slashing risks. 25 | 26 | :::note 27 | All ERC-20 assets staked on EigenLayer, including Liquid Staking Tokens (LSTs), EIGEN, and AVS tokens, can be redistributed. Native ETH is not 28 | yet eligible for redistribution. 29 | ::: 30 | 31 | For information on: 32 | * Implementing redistributable slashing, refer to Create Operator Sets in the Developer section. 33 | * Opting into redistributable Operator Sets, refer to Allocate and Register to Operator Set in the Operator section. -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/slashing/slashable-stake-risks.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Slashable Stake Risks 4 | --- 5 | 6 | :::important 7 | Stake delegated to an Operator can become slashable, and when redistributable slashing is live on mainnet, previously delegated 8 | stake can become redistributable. Stakers are responsible for ensuring that they fully understand and confirm 9 | their risk tolerances for existing and future delegations to Operators and the Operator’s slashable allocations. Additionally, 10 | Stakers are responsible for continuing to monitor the allocations of their chosen Operators as they update allocations across 11 | various Operator Sets. 12 | ::: 13 | 14 | :::note 15 | [ELIP-006 Redistributable Slashing](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-006.md) introduced Redistributable Operator Sets. 16 | Redistributable Slashing is available in v1.5 on testnets and will be available on mainnet in Q3. 17 | ::: 18 | 19 | AVSs create [Operator Sets](../operator-sets/operator-sets-concept.md) that may include slashable 20 | [Unique Stake](unique-stake.md), or be Redistributable Operator Sets, and Operators can 21 | allocate their delegated stake to Operator Sets. If a Staker has previously delegated stake to an Operator, the delegated stake 22 | becomes slashable when the Operator opts into an Operator Set and allocates Unique Stake. Slashed funds can be burned or 23 | redistributed. 24 | 25 | For more information on the safety delays for Stakers, refer to the [Safety Delays reference](../../reference/safety-delays-reference.md) 26 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/slashing/unique-stake.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Unique Stake 4 | --- 5 | 6 | Unique Stake ensures AVSs and Operators maintain key safety properties when handling staked security and slashing on EigenLayer. 7 | Unique Stake is allocated to different [Operator Sets](../operator-sets/operator-sets-concept) on an opt-in basis by Operators. Only Unique Stake is slashable by AVSs, 8 | and the Unique Stake represents proportions of the Operator’s delegated stake from Stakers. Unique Stake allocations are 9 | exclusive to one Operator Set and solely slashable by the AVS that created that Operator Set. 10 | 11 | Benefits of Unique Stake to Operators and AVSs include: 12 | * Greater control over slashing risk. The risk of slashing is isolated to the individual AVS and Operator Set, and Operators 13 | control how much of their stake any AVS can slash. AVSs are not exposed to risk from other AVSs or their slashings. 14 | * Guaranteed slashable stake. AVSs can understand the amount of Unique Stake that can be slashed at a given time across their Operator Sets. 15 | * Permissionless onboarding of AVSs. There is no need for a common veto committee because slashing is localized to individual AVSs. 16 | No need for a common veto committee means launching an AVS on EigenLayer is permissionless. 17 | 18 | ## Example 1 19 | 20 | Operator 1 has a delegation of 100 staked ETH. Operator 1 allocates proportions of that ETH as Unique Stake in Operator Sets 21 | across several AVSs. The 85 allocated ETH is slashable exclusively by the AVS for each Operator Set. That is, AVS 2, 3, and 4 22 | can slash their associated Operator Sets 3, 4, 5, and 6 respectively. 23 | 24 | 25 | 26 | 27 | ## Example 2 28 | 29 | AVS 1 has two Operator Sets for different tasks. AVS 1 uses Operator Set 1 for assigning generation of ZK proofs to Operators, 30 | an expensive computation, and Operator Set 2 for verification of those proofs, a cheaper computation. 31 | 32 | Operator 1 is registered to Operator Set 1 but has not allocated any Unique Stake. Operator 2 has allocated 10% of its ETH 33 | delegation to Operator Set 1 (10 ETH). The 10% allocation by Operator 2 is exclusively slashable by AVS 1 in Operator Set 1. 34 | Operator 2 has also allocated 5% (5 ETH) to Operator Set 2, which is exclusively slashable by AVS 1 in Operator Set 2. 35 | 36 | Including the 20% allocation from Operate 3 (20 ETH), Operator Set 1 has a total Unique Stake of 30 ETH available to slash. 37 | The Unique Stake of 30 ETH cannot be slashed elsewhere. Operator Set 2 has allocations totalling 15 ETH of Unique Stake. 38 | The Unique Stake of 15 ETH cannot be slashed elsewhere. AVS 1 may distribute more valuable tasks against which to reward and 39 | slash to Operator Set 1 to take advantage of the greater amount of Unique Stake. 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/uam/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "User Access Management" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/uam/uam-accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Accounts 4 | --- 5 | 6 | The account is the Ethereum address that interacts with the EigenLayer core contracts if no appointees are set. 7 | 8 | For an Operator, the account address is initialized by the [`registerAsOperator`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md#registerasoperator) 9 | function in the [DelegationManager](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md) core contract. For Operators, this is the operator that holds shares in the `operatorShares` mapping in the [DelegationManager](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md) core contract. 10 | 11 | For an AVS, the account address is initialized by the [`updateAVSMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#updateavsmetadatauri) function in the [AllocationManager](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md) core contract. For AVSs, this 12 | is the address under which Operator Sets are created in the [AllocationManager](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md) core contact. 13 | 14 | As admin keys are added and rotated, the original account address remains the associated Operator ID or AVS ID. 15 | 16 | :::caution 17 | Before any admins are added, an account is its own admin. Once an admin is added, the account is no longer an admin by default. 18 | If an account wants to both add admins and continue acting as its own admin, the account must be added to the admins list before 19 | adding additional admins. 20 | ::: 21 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/uam/uam-admins.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Admins 4 | --- 5 | 6 | Admins can take any action on behalf of the original account that appointed them including adding or removing admins. Creating 7 | additional admins enables key rotation for Operators, or creating a backup admin which is stored on a cold key. The drawing 8 | below shows how admin addresses can be rotated while retaining appointee access permissions. 9 | 10 | 12 | 13 | 14 | There must always be at least one admin for the account. If no admins have ever been set, the initial account address acts as the admin. 15 | There is no superadmin role. 16 | 17 | Admins cannot be given access to a subset of functions or contracts. Admins always have full access unless removed as an admin. 18 | Specific function or contract access cannot be removed for a given admin. 19 | 20 | For information on how to add and remove admins, refer to: 21 | * [Add and Remove Admins](../../../operators/howto/uam/op-add-remove-admins.md) for Operators 22 | * [Add and Remove Admins](../../../developers/HowTo/build/uam/dev-add-remove-admins.md) for Developers 23 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/uam/uam-appointees.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Appointees 4 | --- 5 | 6 | Appointees act as another account for a specific function for a specific contract, granting accounts granular access control. 7 | 8 | Admins (or an account if no admins have been set) can grant an appointee access to specific functions on specified contracts. 9 | Appointees can be granted access to multiple functions or contracts. 10 | 11 | To perform key rotation, an admin creates a new appointee address with the same set of permissions and revokes access to the old appointee address. 12 | The drawing below shows how appointee addresses can be rotated. 13 | 14 | 16 | 17 | 18 | Permissions for an appointee must be added and removed individually. There is no function to batch add permissions for a 19 | given appointee, remove all permissions for a given appointee, batch add appointees to a given function, or remove all 20 | appointees for a given function. 21 | 22 | For information on how to add and remove appointees, refer to: 23 | * [Add and Remove Appointees](../../../developers/HowTo/build/uam/dev-add-remove-appointees.md) for Developers 24 | * [Add and Remove Appointees](../../../operators/howto/uam/op-add-remove-appointees.md) for Operators 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/eigenlayer/concepts/uam/user-access-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: User Access Management 4 | --- 5 | 6 | :::note 7 | UAM implements [ELIP-003: User Access Management (UAM)](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-003.md). 8 | ::: 9 | 10 | User Access Management (UAM) is an EigenLayer protocol feature for Operators and AVS Developers that enables secure key rotation, 11 | revocation, and recovery. UAM enables admin keys to: 12 | * Delegate specific functions to new addresses (EOAs or smart contracts). 13 | * Be assigned or rotated as needed. 14 | 15 | The [PermissionController core contract](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/permissions/PermissionController.md) implements UAM and defines three roles: 16 | * [Accounts](uam-accounts.md) 17 | * [Admins](uam-admins.md) 18 | * [Appointees](uam-appointees.md) 19 | 20 | :::note 21 | UAM cannot be used by Stakers. 22 | ::: -------------------------------------------------------------------------------- /docs/eigenlayer/deployed-contracts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 9, 3 | "label": "Contract Addresses and Docs" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/deployed-contracts/deployed-contracts.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Contract Addresses and Docs 4 | --- 5 | 6 | ## EigenLayer Core Restaking Contracts 7 | 8 | The EigenLayer core contracts are located in this repo: [`Layr-Labs/eigenlayer-contracts`](https://github.com/Layr-Labs/eigenlayer-contracts). They enable restaking of liquid staking tokens (LSTs) and beacon chain ETH to secure new services, called AVSs (Autonomous Verifiable Services). 9 | 10 | ### Deployment Addresses 11 | 12 | An up-to-date reference of our current mainnet and testnet contract deployments can be found in the core repository README: [`eigenlayer-contracts/README.md#deployments`](https://github.com/Layr-Labs/eigenlayer-contracts?tab=readme-ov-file#deployments). 13 | 14 | ### Technical Documentation 15 | 16 | Our most up-to-date contract-level documentation can be found in the core repository's docs folder: [`eigenlayer-contracts/docs`](https://github.com/Layr-Labs/eigenlayer-contracts/tree/dev/docs). -------------------------------------------------------------------------------- /docs/eigenlayer/economy/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 8, 3 | "label": "Data and Metrics" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/economy/sidecar.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Sidecar 4 | --- 5 | 6 | ## Overview 7 | 8 | The EigenLayer Sidecar is an open source, permissionless, verified indexer enabling anyone (AVS, operator, etc) to access EigenLayer's protocol in real-time. 9 | 10 | Sidecar provides the following benefits to users: 11 | - Access to EigenLayer protocol data through easy-to-use APIs. 12 | - Running your own Sidecar allows you to validate rewards roots posted on chain by being able to re-create them. 13 | - Direct database access gives power-users the ability to explore protocol data directly and natively. 14 | 15 | ## How to Use Sidecar 16 | 17 | Please see the [README.md documentation here](https://github.com/Layr-Labs/sidecar?tab=readme-ov-file#eigenlayer-sidecar). -------------------------------------------------------------------------------- /docs/eigenlayer/information-and-transparency/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 7, 3 | "label": "Information and Transparency" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/information-and-transparency/disclosures.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Disclosures Related to Employee and Investor Staking 4 | --- 5 | 6 | # Disclosures Related to Employee and Investor Staking 7 | 8 | ***Last Revised on September 30, 2024*** 9 | 10 | ### EMPLOYEE AND INVESTOR LOCKUP ON EIGEN 11 | 12 | EIGEN provided by Eigen Labs to its employees and [Investors](https://www.eigenlabs.org/#investors) is subject to the following lockup schedule: 4% of each recipient’s EIGEN will unlock each month starting September 2025 and an additional 4% will unlock each month thereafter, such that all EIGEN will be unlocked in September 2027 (the “**Lockup Schedule**”). 13 | 14 | ### EMPLOYEE AND INVESTOR STAKING ON EIGENLAYER 15 | 16 | It was [previously communicated](https://blog.eigenfoundation.org/announcement/) that Investors and Early Contributors would be on the above Lockup Schedule. We want to clarify Eigen Labs company policies with respect to staking EIGEN and other assets and any EIGEN rewards: 17 | 18 | #### Employees: 19 | - **EIGEN staking**: Eigen Labs prohibits its current and former employees from staking any EIGEN received from Eigen Labs on EigenLayer until at least September 30th, 2025. 20 | - **Other assets staking**: Eigen Labs does not restrict its employees from staking other assets on EigenLayer (including ETH and LSTs), and any rewards received (including EIGEN) from such staking will not be subject to the Lockup Schedule. 21 | - **Stakedrops**: Eigen Labs employees were not permitted to claim stakedrops. 22 | 23 | #### Investors: 24 | - ***EIGEN staking**: Eigen Labs [Investors](https://www.eigenlabs.org/#investors) are not restricted from staking EIGEN on EigenLayer. As such, investors may choose to stake their EIGEN and receive staking rewards the same as any other user. EIGEN provided by Eigen Labs to investors is subject to the Lockup Schedule, but EIGEN investors receive from staking will not be subject to the Lockup Schedule. 25 | - Note, as previously communicated, Investors did not receive rewards or airdrop allocation for any staking of EIGEN prior to September 30, 2024. 26 | - **Other assets staking**: Eigen Labs does not restrict [Investors](https://www.eigenlabs.org/#investors) from staking other assets on EigenLayer (including ETH and LSTs), and any rewards received (including EIGEN) from such staking will not be subject to the Lockup Schedule. 27 | - **Stakedrops**: Investors were not restricted from claiming stakedrops. 28 | 29 | *25% programmatic incentives go to EIGEN staking while the remaining 75% go to ETH and ETH-equivalent staking assets. 30 | 31 | In addition to the above disclosures, we also encourage you to review our [Privacy Policy](../legal/privacy-policy.md) and our [Terms of Service](../legal/terms-of-service.md). The above policies and disclosures are subject to change at any time for any reason and without notice. 32 | -------------------------------------------------------------------------------- /docs/eigenlayer/legal/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 8, 3 | "label": "Legal" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/legal/disclaimers.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Disclaimers 4 | --- 5 | 6 | # Disclaimers 7 | 8 | ***Last Revised on September 30, 2024*** 9 | 10 | ## LEGAL DISCLAIMERS 11 | 12 | All Eigen Labs, Inc. (“**Eigen Labs**”) blog posts, social media posts and accounts, forum posts, podcasts, speeches, videos, documentation, website copy, including [www.eigenlayer.xyz](https://www.eigenlayer.xyz), [www.eigenda.xyz](https://www.eigenda.xyz), and [www.eigenlabs.org](https://www.eigenlabs.org), or other content (collectively “**Content**”) are for entertainment and informational purposes only and do not necessarily express the views of Eigen Labs or any of its employees or contractors. The Content may contain hypothetical, forward-looking, incomplete, or incorrect information, which are not guaranteed and are subject to change. No Content, whether oral or written, from Eigen Labs or its employees or contractors, should be construed as a representation or warranty, express or implied, of any kind whatsoever. You should not rely on any Content as advice of any kind, including legal, investment, financial, tax or other professional advice, and the Content is not a substitute for advice from a qualified professional. 13 | 14 | Any Content should not be construed as an offer to sell or the solicitation of an offer to purchase any token, financial instrument or security, and is not an offering, advertisement, solicitation, confirmation, statement, or any financial promotion that can be construed as an invitation or inducement to engage in any investment activity or similar. 15 | -------------------------------------------------------------------------------- /docs/eigenlayer/overview/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Overview" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/overview/support.md: -------------------------------------------------------------------------------- 1 | # Community and EIGEN Claim Support 2 | 3 | For any discussion, engagement, and learning about EigenLayer, please join the [EigenLayer Community Discord](https://discord.gg/eigenlayer). 4 | 5 | # Restaker, Operator, and AVS Development Support 6 | 7 | For issues with the dApp, LST and restaking issues and Operator questions you may send us a question via our AI-enabled chatbot and Support team here: EigenLayer Support Desk 8 | 9 | # EigenLayer Forum 10 | 11 | If you are interested in EigenLayer at a deeper level, please check out the [EigenLayer forum](https://forum.eigenlayer.xyz/)! There are groups of researchers, AVS developers, and more contributing their expertise to help build the open verifiable cloud. 12 | 13 | # EIGEN Claim Support 14 | 15 | For any issues concerning EIGEN including token claims and stakedrop issues, please visit the stakedrop-support channel in the [EigenLayer Community Discord](https://discord.gg/eigenlayer). The Eigen Foundation support team can address your question there. Please see docs.eigenfoundation.org for information related to EIGEN token claims. 16 | 17 | Please beware of any fraudulent tokens, dApps, and phishing sites: 18 | - The only site to claim EIGEN is: claims.eigenfoundation.org . 19 | - The EIGEN token contract address is: `0xec53bF9167f50cDEB3Ae105f56099aaaB9061F83` . 20 | - The only support website is: docs.eigenlayer.xyz . 21 | 22 | For a complete list of links and more information, please visit the: [EigenLayer Community Discord](https://discord.gg/eigenlayer). 23 | 24 | -------------------------------------------------------------------------------- /docs/eigenlayer/overview/whitepaper.md: -------------------------------------------------------------------------------- 1 | # Whitepapers 2 | 3 | **EigenLayer: The Restaking Collective** ([PDF](/pdf/EigenLayer_WhitePaper.pdf) / HTML): the research paper that formed the basis of the EigenLayer protocol development. The document discusses the original architecture of EigenLayer, the Restaking primitive, and the concept of AVSs. Please note that some components of the design have changed since the original conception of the protocol. Use this document for high level guidance. For specific implementation details, please see the respective protocol implementation source code repositories. 4 | 5 | 6 | **EIGEN The Universal Intersubjective Work Token:**([PDF](/pdf/EIGEN_Token_Whitepaper.pdf) / HTML): the research paper that introduces the structure of the EIGEN token, a universal intersubjective work token. We view this intersubjective work token as a first step towards the goal of building the Verifiable Digital Commons. 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/eigenlayer/reference/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 7, 3 | "label": "Reference" 4 | } 5 | -------------------------------------------------------------------------------- /docs/eigenlayer/resources/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 11, 3 | "label": "Resources" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/resources/apis-and-dashboards.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: APIs, Dashboards, and Tooling 4 | --- 5 | 6 | ### APIs 7 | 8 | - [EigenExplorer API](https://docs.eigenexplorer.com/api-reference/introduction) 9 | - [Dune EigenLayer API](https://docs.dune.com/api-reference/eigenlayer/introduction) 10 | 11 | ### Dashboards 12 | 13 | - [Eigen Economy (maintained by Eigen Labs)](https://economy.eigenlayer.xyz/) 14 | - [EigenExplorer Dashboard](https://dashboard.eigenexplorer.com/) 15 | - [The Ultimate Restaking Dashboard](https://dune.com/hahahash/eigenlayer) 16 | - [AVS Dune Dashboard](https://dune.com/hahahash/avs) 17 | - [EigenLayer Dune dashboard by dyorcrypto](https://dune.com/dyorcrypto/eigenlayer) 18 | - [Validator.info - In-depth real-time EigenLayer analytics](https://validator.info/eigenlayer) 19 | - [Restaking Info by Nethermind](https://restaking.info/) 20 | - [OpenBlock EigenLayer Restaking Dashboard](https://app.openblocklabs.com/app/restaking/eigenlayer) 21 | - [EigenLayer Dashboard](https://daic.capital/projects/eigenlayer) 22 | -------------------------------------------------------------------------------- /docs/eigenlayer/resources/infinite-hackathon.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: EigenLayer Infinite Hackathon 4 | --- 5 | 6 | The EigenLayer Infinite Hackathon encourages submissions from developers building on EigenLayer, EigenLayer AVSs, EigenDA, and rollups built on EigenDA at any hackathon happening anywhere at any time now and in the future, both in-person and online. 7 | 8 | Submit your project [here](https://airtable.com/appnYZo360sWuEYLS/shrrnj9BWIPevjc5c). 9 | 10 | If you're in the process of hacking in the EigenLayer ecosystem, join us in the EigenLayer Hacker group chat [here](https://airtable.com/appnYZo360sWuEYLS/shrz6Pstds7EXjC5N)! 11 | 12 | ![EigenLayer Infinite Hackathon](/img/infinite-hackathon.png) 13 | 14 | If you are building within the EigenLayer ecosystem as part of your hackathon project, you are qualified to submit and be eligible for prizes in the following categories. 15 | 16 | ## 1. AVSs and open source AVS reference architectures 17 | 18 | Any new AVS or AVS reference architecture. Emphasis on code quality, documentation quality, and real world utility. 19 | 20 | 1. Ether - $7,500.00 21 | 2. Finney - $5,000.00 22 | 3. Gwei - $2,500.00 23 | 4. Wei - $1,000.00 24 | 25 | To learn more about building AVSs, see [Awesome AVS](https://github.com/Layr-Labs/awesome-avs). 26 | 27 | ## 2. Apps 28 | 29 | Any new application that is built on EigenLayer AVSs or EigenDA rollups. Emphasis on code quality, documentation quality, and real world utility. 30 | 31 | 1. Ether - $7,500.00 32 | 2. Finney - $5,000.00 33 | 3. Gwei - $2,500.00 34 | 4. Wei - $1,000.00 35 | 36 | You can see AVSs live on EigenLayer mainnet [here](https://www.eigenlayer.xyz/ecosystem?category=AVS), and rollups live on EigenDA [here](https://www.eigenlayer.xyz/ecosystem?category=EigenDA). 37 | 38 | ## 3. EigenDA and rollups 39 | 40 | Any new tooling for, or rollups built, on EigenDA. Emphasis on code quality, documentation quality, and real world utility. 41 | 42 | 1. Ether - $7,500.00 43 | 2. Finney - $5,000.00 44 | 3. Gwei - $2,500.00 45 | 4. Wei - $1,000.00 46 | 47 | To learn more about EigenDA, see the documentation [here](https://docs.eigenlayer.xyz/eigenda/overview). 48 | 49 | ### Eligibility Criteria 50 | 51 | Participants of hackathons that are already hosted by, or that include prizes offered by, Eigen Labs or Eigen Foundation are not eligible. 52 | 53 | Projects must be submitted within 14 days of original hackathon deadline. 54 | 55 | Project code must be open source. 56 | 57 | Full Hackathon Terms of Service are available [here](https://docs.google.com/document/d/1ZmW_WakvPobyps5XP_fkNs_AEAyXp-bq/edit?usp=sharing&ouid=115843462632021279280&rtpof=true&sd=true) -------------------------------------------------------------------------------- /docs/eigenlayer/resources/learning-resources.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Learning Resources 4 | --- 5 | 6 | # EigenLayer Learning Resources 7 | 8 | ### Start here 9 | 10 | * [Boys Club Ep 127: What is EigenLayer?](https://open.spotify.com/episode/2aR83WBag0pj0ldRRm2vZD) 11 | * [You Could've Invented EigenLayer (Video)](https://www.youtube.com/watch?v=fCl_PucMytU) 12 | * [The Three Pillars of Programmable Trust: The EigenLayer End Game](https://www.blog.eigenlayer.xyz/the-three-dimensions-of-programmable-trust/) 13 | * [Shared Security: The Four Superpowers](https://twitter.com/sreeramkannan/status/1742949397523304600) 14 | 15 | ### Blog posts 16 | 17 | * [EigenLayer Blog](https://www.blog.eigenlayer.xyz/) 18 | * [You Could've Invented EigenLayer (Blog)](https://www.blog.eigenlayer.xyz/ycie/) 19 | * [The EigenLayer Universe: Ideas for Building the Next 15 Unicorns](https://www.blog.eigenlayer.xyz/eigenlayer-universe-15-unicorn-ideas/) 20 | * [Dual Staking](https://www.blog.eigenlayer.xyz/dual-staking/) 21 | * [EigenLayer for Developers](https://nader.substack.com/p/beyond-restaking-eigenlayer-for-developers) 22 | * [EigenLayer: Intersubjective Faults, Token forking, bEIGEN & more](https://mirror.xyz/edatweets.eth/l3QtrWv-27h5DVkrSdFMq96MRJ8AotemvmZIQ23Ew3A) 23 | 24 | ### Videos and podcasts 25 | 26 | * [Official EigenLayer YouTube](https://www.youtube.com/@EigenLayer) 27 | * [Unchained Podcast EigenLayer interview ](https://www.youtube.com/watch?v=16p7YG8S3ec) 28 | * [EigenLayer in 2024](https://www.youtube.com/watch?v=ms94dx9HvL0) 29 | * [EigenLayer: The Endgame Coordination Layer](https://www.youtube.com/watch?v=o9y_pZUr0Nc) 30 | * [EigenLayer Explained: 4th Paradigm in CryptoEconomic Capital Efficiency](https://www.youtube.com/watch?v=iMFscq9Sxdk) 31 | 32 | ### Developer resources 33 | 34 | Please see Developer Learning Resources [here](/docs/developers/Reference/resources.mdx). 35 | 36 | ### Community 37 | 38 | * [EigenLayer Forum](https://forum.eigenlayer.xyz/) 39 | * [EigenLayer Research Forum](https://research.eigenlayer.xyz/) 40 | * [Build on Eigen group chat](https://airtable.com/appnYZo360sWuEYLS/shrz6Pstds7EXjC5N) 41 | * [Discord](https://discord.com/invite/eigenlayer) 42 | * [EigenLayer Twitter](https://twitter.com/eigenlayer) 43 | * [BuildOnEigen Twitter](https://x.com/buildoneigen) 44 | -------------------------------------------------------------------------------- /docs/eigenlayer/security/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 6, 3 | "label": "Security" 4 | } -------------------------------------------------------------------------------- /docs/eigenlayer/security/audits.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | --- 4 | 5 | # Audits 6 | 7 | As a key component of our development process, please see the most recent audits that help assess the robustness and reliability of our systems: 8 | - [Sigma Prime](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/audits/V1.0.0%20(Slashing)%20-%20Sigma%20Prime%20-%20Feb%202025.pdf) 9 | - [Certora](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/audits/V1.0.0%20(Slashing)%20-%20Certora%20-%20Feb%202025.pdf) 10 | 11 | Please see the following repositories for all current and past audits: 12 | - [EigenLayer-Contracts / Audits](https://github.com/Layr-Labs/eigenlayer-contracts/tree/main/audits) 13 | - [EigenLayer-Middleware / Audits](https://github.com/Layr-Labs/eigenlayer-middleware/tree/dev/audits) 14 | 15 | We encourage you to review all audits carefully as they offer an in-depth analysis of our technology's capabilities, security measures, and overall reliability. 16 | 17 | Instructions are also available for [Installation and Running Tests / Analyzers](https://github.com/Layr-Labs/eigenlayer-contracts#installation) via the Github repo. 18 | -------------------------------------------------------------------------------- /docs/eigenlayer/security/bug-bounty.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | description: Check out the official bug bounty program for EigenLayer on Immunefi 4 | --- 5 | 6 | # Bug Bounty 7 | 8 | Check out the official bug bounty program for EigenLayer on Immunefi: 9 | [https://immunefi.com/bounty/eigenlayer/](https://immunefi.com/bounty/eigenlayer/) 10 | -------------------------------------------------------------------------------- /docs/eigenlayer/security/guardrails.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | --- 4 | 5 | # Guardrails 6 | 7 | There will be a 14-day [withdrawal delay](withdrawal-delay.md) that will serve as a security measure during the early stages of the EigenLayer mainnet, to optimize for the safety of assets. This withdrawal lag, which is common in staking protocols, is required when AVSs go live, as there is a lag to verify that activity associated with any AVS was completed successfully. -------------------------------------------------------------------------------- /docs/eigenlayer/security/multisig-governance.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | --- 4 | 5 | # Governance 6 | 7 | Please see [EigenFoundation Governance](https://docs.eigenfoundation.org/category/protocol-governance) for latest information. -------------------------------------------------------------------------------- /docs/eigenlayer/security/slashing-delay.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 6 3 | title: Slashing Delay 4 | --- 5 | 6 | :::note 7 | [ELIP-006 Redistributable Slashing](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-006.md) introduced the `SlashEscrowFactory` core contract. Redistributable Slashing is available in v1.5 on testnets and will be 8 | available on mainnet in Q3. 9 | ::: 10 | 11 | The `SlashEscrowFactory` core contract creates child contracts that hold and apply a delay on all slashed funds exiting the protocol 12 | (whether burnable or redistributable). This design is intended to permit [EigenLayer governance](https://docs.eigenfoundation.org/protocol-governance/technical-architecture) to interface with the slash 13 | escrow contracts in the case of an EigenLayer protocol implementation bug. During the period between slash initiation and the 14 | end of the delay, the [Pauser multisig](https://docs.eigenfoundation.org/protocol-governance/technical-architecture) may implement a pause per slash preventing the slashed funds from being released from a 15 | child `SlashEscrow` contract. Prior to the release of slashed funds from a child `SlashEscrow` contract, the [Community multisig](https://docs.eigenfoundation.org/protocol-governance/technical-architecture) may 16 | upgrade the `SlashEscrowFactory` to return funds to the protocol. As of the date of the v1.5 release which includes Redistribution on testnet, the 17 | [Protocol Council](https://docs.eigenfoundation.org/protocol-governance/technical-architecture) is considering this security and governance design and what recommendations to make to the Community multisig. 18 | For more information, refer to Slash Escrow in the Security section. 19 | 20 | 21 | As at the testnet release for Redistribution, the [Protocol Council](https://github.com/eigenfoundation/ELIPs/blob/main/protocol-council-charter.md) are currently considering the 22 | slashing governance design and definition of catastrophic bugs where [Governance](https://docs.eigenfoundation.org/protocol-governance/technical-architecture) will interface with the slash escrow contracts. 23 | 24 | :::note 25 | In the protocol, the Slash Escrow exists per Strategy, and EIGEN will have a larger delay. Per-Strategy configuration of the Slash Escrow 26 | delay is reserved for future protocol use, need, and compatibility. 27 | ::: -------------------------------------------------------------------------------- /docs/eigenlayer/security/withdrawal-delay.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 5 3 | --- 4 | 5 | # Withdrawal Delay 6 | 7 | EigenLayer contracts feature a withdrawal delay for LST tokens, EIGEN token, and Native Restaking, a critical security measure for instances of vulnerability disclosure or when anomalous behavior is detected by monitoring systems. The delays serve as a preventive mechanism and also allows, in certain cases, to help mitigate protocol attacks. When contracts are paused and withdrawals disabled, the system enables arbitrary state or code changes to the contracts through upgrades. While technically feasible, such interventions are not a routine practice and should be approached with caution. 8 | 9 | The Withdrawal Delay is also referred to as the Escrow Period. Please see Restaking [Escrow Period](/docs/restakers/restaking-guides/testnet/README.md#testnet-vs-mainnet-differences) for details on the specific duration. 10 | 11 | There are two main caveats to this system. The first is the potential for a vulnerability that can bypass the withdrawal delay. The second is the risk of a flaw in the code managing requests after they have undergone the delay period. 12 | 13 | To mitigate these risks, the approach involves optimizing complex code processes before the delay, while ensuring simpler code operations post-delay. This is coupled with the aim of developing a robust and foolproof delay framework, thereby enhancing the overall security and resilience of the system. 14 | -------------------------------------------------------------------------------- /docs/lib/RenderMarkdown.tsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from 'react' 2 | import Markdown from 'react-markdown' 3 | import remarkGfm from 'remark-gfm' 4 | 5 | export default function RenderMarkdown({ src }) { 6 | const [markdown, setMarkdown] = useState('') 7 | useEffect(() => { 8 | fetchMarkdown() 9 | }, []) 10 | async function fetchMarkdown() { 11 | try { 12 | let response = await fetch(src).then((response) => response.text()) 13 | setMarkdown(response) 14 | } catch (err) { 15 | console.error(err) 16 | } 17 | } 18 | return ( 19 | 20 | {markdown} 21 | 22 | ) 23 | } -------------------------------------------------------------------------------- /docs/operators/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Operators" 4 | } -------------------------------------------------------------------------------- /docs/operators/concepts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Concepts" 4 | } -------------------------------------------------------------------------------- /docs/operators/concepts/operator-introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Overview 4 | --- 5 | 6 | # Introduction 7 | 8 | ## What is a Node Operator within EigenLayer? 9 | 10 | Operators, who can be either individuals or organizations, play an active role in the EigenLayer protocol. By registering within EigenLayer, they enable ETH stakers to delegate their staked assets, whether in the form of native ETH or LSTs. The Node Operators then opt-in to provide a range of services to AVSs, enhancing the overall security and functionality of their networks. 11 | 12 | 13 | ## Operator Eligibility and Restaking Criteria 14 | 15 | Becoming an Operator in the EigenLayer ecosystem does not require a specific amount of delegated restaked TVL. Essentially, any Ethereum address can serve as an Operator. An address can function as both a Restaker, engaging in either liquid or native restaking, and as an Operator simultaneously. However, it is important to note that this dual role is not mandatory. An Operator can participate in the EigenLayer network without having any restaked tokens. 16 | 17 | Most Operators will receive token delegations sourced from other Restakers within the network, otherwise Operators can choose to self-delegate by allocating their restaked token balance. 18 | 19 | 20 | ## Staker and Operator Roles Clarification 21 | 22 | Operators are not required to be Restakers. An Ethereum address can be both a Restaker (via liquid or native restaking) and 23 | simultaneously an Operator, however this is not a requirement. An Operator can have zero restaked tokens in EigenLayer. 24 | 25 | An Operator is required to have tokens delegated to their address. The delegation can come from other Restakers or they 26 | can self-delegate their restaked token balance. 27 | 28 | :::important 29 | If a single address is used for Restaking and Operating activities when an Operator self delegates as a Restaker, the Operator 30 | cannot undelegate from itself, and the Operator can only withdraw restaked funds. To avoid this limitation, use separate addresses 31 | for Restaking and Operating activities when self delegating as a Restaker. 32 | ::: 33 | 34 | ## Rewards 35 | Please see the [rewards claiming](../howto/claimrewards/claim-rewards-cli.mdx) documentation on how to claim rewards. 36 | 37 | 38 | ### Operator Sets 39 | 40 | For information on Operator Sets, refer to [Operator Sets concept](../../eigenlayer/concepts/operator-sets/operator-sets-concept.md). 41 | 42 | 43 | -------------------------------------------------------------------------------- /docs/operators/concepts/operator-keys.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Operator Keys 4 | --- 5 | 6 | For information on Operator keys, refer to [Keys](../../eigenlayer/concepts/keys-and-signatures). 7 | 8 | :::important 9 | When running Redistributable Operator Sets, Operators must ensure sufficient focus is given to key management and opsec. 10 | A compromise in an Operator key could enable a malicious actor to register for a malicious AVS, and slash and redistribute 11 | allocated Staker funds to a specified address. 12 | ::: 13 | 14 | For information on key management best practices, refer to: 15 | * [Node Operators](../howto/managekeys/institutional-operators.md) 16 | * [Solo Stakers](../howto/managekeys/solo-operators.md). -------------------------------------------------------------------------------- /docs/operators/concepts/uam-for-operators.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: User Access Management 4 | --- 5 | 6 | For concept material on User Access Management (UAM) and roles, refer to: 7 | * [User Access Management](../../eigenlayer/concepts/uam/user-access-management.md) 8 | * [Accounts](../../eigenlayer/concepts/uam/uam-accounts.md) 9 | * [Admins](../../eigenlayer/concepts/uam/uam-admins.md) 10 | * [Appointees](../../eigenlayer/concepts/uam/uam-appointees.md) 11 | 12 | User Access Management (UAM) enables Operators to set appointees for actions enabling a range of key management solutions to be 13 | implemented. For example, from simple (ECDSA key rotation) to complex (upstream smart contract permissioning schemes). 14 | 15 | The protocol functions that an Operator can set appointees for are: 16 | * [`AllocationManager.modifyAllocations`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#modifyallocations) 17 | * [`AllocationManager.registerForOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#registerforoperatorsets) 18 | * [`AllocationManager.deregisterFromOperatorSets`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#deregisterfromoperatorsets) 19 | * [`AllocationManager.setAllocationDelay`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/AllocationManager.md#setallocationdelay) 20 | * [`DelegationManager.modifyOperatorDetails`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md#modifyoperatordetails) 21 | * [`DelegationManager.updateOperatorMetadataURI`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md#updateoperatormetadatauri) 22 | * [`DelegationManager.undelegate`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md#undelegate) 23 | * [`RewardsCoordinator.setClaimerFor`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#setclaimerfor) 24 | * [`RewardsCoordinator.setOperatorAVSSplit`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#setoperatoravssplit) 25 | * [`RewardsCoordinator.setOperatorPISplit`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#setoperatorpisplit) 26 | * [`RewardsCoordinator.setOperatorSetSplit`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#setoperatorsetsplit) 27 | 28 | For information on how to set admins and appointees for an AVS, refer to: 29 | * [Add and Remove Admins](../howto/uam/op-add-remove-admins.md) 30 | * [Add and Remove Appointees](../howto/uam/op-add-remove-appointees.md) 31 | -------------------------------------------------------------------------------- /docs/operators/howto/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "How To" 4 | } -------------------------------------------------------------------------------- /docs/operators/howto/claimrewards/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 4, 3 | "label": "Claim Rewards" 4 | } -------------------------------------------------------------------------------- /docs/operators/howto/claimrewards/batch-claim-rewards.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Batch Claim Rewards 4 | --- 5 | 6 | Batch rewards claiming for Stakers and Operators using the EigenLayer CLI is a gas efficient way to claim on behalf 7 | of multiple Earners in a single transaction. 8 | 9 | To batch claim rewards, use the `-–batch-claim-file` option: 10 | 11 | `eigenlayer rewards claim --earner-address 0x025246421e7247a729bbcff652c5cc1815ac6373 --eth-rpc-url http://rpc-url --network hoodi --batch-claim-file samples/batch-claim.yaml` 12 | 13 | The batch claim yaml file includes the Earner addresses, and token addresses for which to claim. For example: 14 | 15 | ```yaml 16 | - earner_address: "0x025246421e7247a729bbcff652c5cc1815ac6373" 17 | token_addresses: 18 | - "0x3B78576F7D6837500bA3De27A60c7f594934027E" 19 | - earner_address: "0x025246421e7247a729bbcff652c5cc1815ac6373" 20 | token_addresses: 21 | - "0x3B78576F7D6837500bA3De27A60c7f594934027E" 22 | ``` -------------------------------------------------------------------------------- /docs/operators/howto/claimrewards/claim-rewards-smart-contract.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Claim Rewards as a Smart Contract 4 | --- 5 | 6 | To claim rewards when the [Earner](../../../eigenlayer/concepts/rewards/earners-claimers-recipients.md) is a smart contract, 7 | generate either: 8 | * JSON object with the arguments to call [`RewardsCoorinator.processClaim`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/RewardsCoordinator.md#processclaim). 9 | * Calldata that can be signed and broadcast. 10 | 11 | :::note 12 | To be eligible for a reward submission, an Operator must have been registered to the AVS for at least a portion 13 | of the reward duration. If rewards submitted to them, the rewards are 14 | refunded back to the AVS address. To claim rewards as an AVS, you must set a claimer for the AVS, 15 | which can be done using [`setClaimerFor`](https://github.com/Layr-Labs/eigenlayer-middleware/blob/5e2056601c69f39f29c3fe39edf9013852e83bf3/src/ServiceManagerBase.sol#L216) on the [`ServiceManagerBase`](https://github.com/Layr-Labs/eigenlayer-middleware/blob/2afed9dd5bdd874d8c41604453efceca93abbfbc/docs/ServiceManagerBase.md#L1) contract. 16 | ::: 17 | 18 | ## JSON Object 19 | 20 | To generate the JSON object, use: 21 | ```bash 22 | ./bin/eigenlayer rewards claim \ 23 | --network mainnet \ 24 | --eth-rpc-url \ 25 | --earner-address \ 26 | --recipient-address \ 27 | --path-to-key-store /path/to/key/store-json \ 28 | --token-addresses \ 29 | --output-type json 30 | ``` 31 | 32 | ## Calldata 33 | 34 | To generate the calldata, use: 35 | 36 | ```bash 37 | ./bin/eigenlayer rewards claim \ 38 | --network mainnet \ 39 | --eth-rpc-url \ 40 | --earner-address \ 41 | --recipient-address \ 42 | --path-to-key-store /path/to/key/store-json \ 43 | --token-addresses \ 44 | --output-type calldata 45 | ``` -------------------------------------------------------------------------------- /docs/operators/howto/confirgurerewards/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Configure Rewards" 4 | } -------------------------------------------------------------------------------- /docs/operators/howto/confirgurerewards/set-pi-split.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Set Programmatic Incentives Split 4 | --- 5 | 6 | The default [Operator split for Programmatic Incentives (PI) is 10%](../../../eigenlayer/concepts/rewards/pi-split.md). 7 | 8 | ## Get Current PI Split 9 | 10 | To obtain the current PI split, use: 11 | 12 | `eigenlayer operator get-pi-split [options]` with 13 | 14 | * `operator-address` - Operator address for which to get the operator split 15 | 16 | To get the default split at the protocol level, use `eigenlayer operator get-pi-split` without specifying 17 | `operator-address`. 18 | 19 | The current split is returned in bips (1000 bips = 10%, 10000 bips = 100%). 20 | 21 | ## Update PI Split 22 | 23 | To update the PI split by Operator, use: 24 | 25 | `eigenlayer operator set-pi-split [options]` with 26 | 27 | * `operator-address` - Operator address for which to update the PI split 28 | * `operator-split` - Split to set for the Operator in bips -------------------------------------------------------------------------------- /docs/operators/howto/confirgurerewards/set-rewards-claimer.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Set Rewards Claimer 4 | --- 5 | 6 | ## Prerequisites 7 | 8 | * EigenLayer CLI installed. 9 | * Wallet keys for the Earner address accessible to the CLI. 10 | 11 | ## Set Claimer Address 12 | 13 | To set an address as the [Claimer for an Earner](../../../eigenlayer/concepts/rewards/earners-claimers-recipients.md), use: 14 | 15 | `eigenlayer rewards set-claimer [options]` with 16 | 17 | * `earner-address` - Address of the Earner 18 | * `claimer-address` - Address of the Claimer -------------------------------------------------------------------------------- /docs/operators/howto/confirgurerewards/set-rewards-split.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Set Rewards Split 4 | --- 5 | 6 | The default Operator split for rewards is 10%. [The Operator split can be varied by AVS or by Operator Set](../../../eigenlayer/concepts/rewards/rewards-split.md). 7 | 8 | ## Get Current AVS Rewards Split 9 | 10 | To obtain the current AVS rewards split, use: 11 | 12 | `eigenlayer operator get-rewards-split [options]` with: 13 | 14 | * `avs-address` - AVS address for which to get the operator split 15 | * `operator-address` - Operator address for which to get the operator split 16 | 17 | To get the default split at the protocol level, use `eigenlayer operator get-rewards-split` without specifying `avs-address` 18 | or `operator-address`. 19 | 20 | The current split is returned in bips (1000 bips = 10%, 10000 bips = 100%). 21 | 22 | ## Update AVS Rewards Split 23 | 24 | To update the AVS rewards split, use: 25 | 26 | `eigenlayer operator set-rewards-split [options]` with: 27 | * `avs-address` - AVS address for which to update the Operator split 28 | * `operator-address` - Operator address for which to update the Operator Set split 29 | * `operator-split` - Split to set for the Operator in bips for the specified AVS 30 | 31 | Changes to the Rewards split take effect after a 7-day activation delay. Only one split can be pending. That is, any pending 32 | Rewards split must be completed before setting a new Rewards split. 33 | 34 | ## Get Current Operator Set Rewards Split 35 | 36 | To obtain the current Operator Set rewards split, use: 37 | 38 | `eigenlayer operator get-operatorset-split [options]` with: 39 | 40 | * `avs-address` - AVS address for which to get the operator split 41 | * `operator-address` - Operator address for which to get the operator split 42 | * `operatorset-id` - Operator Set ID for which to get the split 43 | 44 | The current split is returned in bips (1000 bips = 10%, 10000 bips = 100%). 45 | 46 | ## Update Operator Set Rewards Split 47 | 48 | To update the Operator Set rewards split, use: 49 | 50 | `eigenlayer operator set-operatorset-split [options]` with 51 | * `avs-address` - AVS address for which to update the Operator Set split 52 | * `operator-address` - Operator address for which to update the Operator Set split 53 | * `operatorset-id` - Operator Set ID for which to update the split 54 | * `operator-split` - Split to set for the Operator in bips for the specified Operator Set 55 | 56 | Changes to the Rewards split take effect after a 7-day activation delay. Only one split can be pending. That is, any pending 57 | Rewards split must be completed before setting a new Rewards split. 58 | -------------------------------------------------------------------------------- /docs/operators/howto/managekeys/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 4, 3 | "label": "Manage keys" 4 | } -------------------------------------------------------------------------------- /docs/operators/howto/managekeys/institutional-operators.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Node and Smart Contract Operators 4 | --- 5 | 6 | # Key Management Best Practices for Node Operators 7 | 8 | - Secure keys, including secrets such as passphrases or mnemonics, using services like AWS Secrets Manager or Hashicorp Vault. These services can be seamlessly integrated with automated mechanisms that safely retrieve secrets or keys (e.g., remote signers). If resources permit, consider running your own Hashicorp Vault instance, which grants full custody of keys and secrets while sacrificing the service provider's availability and security guarantees. 9 | - Avoid generating all keys with the same mnemonic. Minimize the attack surface by employing a new mnemonic for every 200 or 1000 validator keys, depending on your preference. This approach also reduces the risk of losing key generation capabilities if a single mnemonic is lost, and limits the impact if an attacker gains access to a few mnemonics. 10 | - Given that AVS keys are likely to be much fewer, not using the same seed to generate the keys is probably safer; generate each AVS key independently if possible. 11 | - Use a remote signer like **[Web3signer](https://github.com/ConsenSys/web3signer)** or, better yet, distributed signers to eliminate single points of failure. 12 | - Develop a custom solution involving tailor-made tools. For instance, use Web3signer for remote signing and store keys on AWS Secrets Manager. A custom tool can manage automatic key storage in Secrets Manager and facilitate interactions with Web3signer. 13 | 14 | # Smart Contract Operators 15 | 16 | We encourage institutional operators to register with EigenLayer using an [erc-1271](https://eips.ethereum.org/EIPS/eip-1271) smart contract wallet. This allows a lot more fine-grained control, such as multisig authorization and key rotation, which is currently not possible for EOA operators. 17 | 18 | # Redistributable Operator Sets 19 | 20 | When running Redistributable Operator Sets, Operators must ensure sufficient focus is given to key management and opsec. 21 | A compromise in an Operator key could enable a malicious actor to register for a malicious AVS, and slash and redistribute 22 | allocated Staker funds to a specified address. 23 | 24 | Redistributable Operators Sets are identifiable by onchain metadata ([`AllcationManager.isRedistributingOperatorSet`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/v1.5.0-rc.0/src/contracts/interfaces/IAllocationManager.sol)). -------------------------------------------------------------------------------- /docs/operators/howto/operator-content-guidelines.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 6 3 | title: Follow Webapp Content Guidelines 4 | --- 5 | 6 | # Webapp Content Guidelines 7 | 8 | ## Operator Page 9 | 10 | The following are guidelines (**“Guidelines”**) for what content Operators should include in their listing of their Operator on app.eigenlayer.xyz (the “**App**”). These Guidelines are intended to help ensure that Operators are providing relevant information from which restakers can select an Operator. 11 | 12 | The content in the Operator tile may include the following: 13 | - Factual information relating to: 14 | - The company or team running the Operator 15 | - The technical ability or experience relevant to the competence of the Operator 16 | - Links to website or social profiles associated with the Operator 17 | - Logos associated with the Operator 18 | 19 | The following content is **not permitted** to be displayed in the Operator tile: 20 | - Any offer or promotion of illegal activities 21 | - Any (i) vulgar or profane language or content or (ii) links to vulgar or profane content 22 | - Promotions or incentives for stakers including offering of tokens 23 | - Any false or misleading content 24 | - Any links to content that is not owned or controlled by the Operator 25 | - Any links to social profiles other than those associated with the Operator 26 | - Any content that violates the intellectual property rights of any other person or entity (including using the branding or logo of EigenLayer or Eigen Labs) 27 | - Anything violating the [Terms of Service](/docs/eigenlayer/legal/terms-of-service.md) 28 | 29 | 30 | Eigen Labs, Inc. (“**Eigen Labs**”) reserves the right to update these Guidelines at any time and without notice. If you violate these Guidelines, Eigen Labs may delist you or otherwise decrease your visibility on the App. 31 | 32 | ## Reporting a Violation or Remediation of Guidelines 33 | 34 | Please use our [Support channel](https://support.eigenlayer.xyz/) for reporting either of the following: 35 | - Operator violations of Webapp Content Guidelines. 36 | - Appeal to review and whitelist an Operator who has remediated their violation of the guidelines. 37 | 38 | Click on the Intercom chat icon in the bottom right of your screen, then choose “Create a Ticket: Operator Blocklist”. 39 | 40 | -------------------------------------------------------------------------------- /docs/operators/howto/troubleshooting.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 7 3 | title: Troubleshoot 4 | --- 5 | 6 | # Troubleshooting 7 | 8 | Before creating an issue with EigenLayer support please check this page to see if you can resolve your issues. If you are still stuck, please create a support ticket 9 | 10 | #### Getting "no contract code at given address" 11 | 12 | If you are getting this issue then either you are using a wrong rpc in your [operator.yaml](https://github.com/Layr-Labs/eigenlayer-cli/blob/master/pkg/operator/config/operator-config-example.yaml#L32) file or you have wrong smart contract address in your [config](https://github.com/Layr-Labs/eigenlayer-cli/blob/master/pkg/operator/config/operator-config-example.yaml#L25). 13 | 14 | * Please make sure you have correct rpc node chosen for your network and that it is also reachable via your machine. 15 | 16 | * Please find the correct smart contract addresses listed in the [Operator Installation](operator-installation.md) section. 17 | 18 | #### How to resolve the error "No contract code at given address" imply? 19 | 20 | Ensure that your operator is pointing to the correct RPC service and that it is accessible from your operator ([example](https://chainlist.org/)). 21 | 22 | #### My operator's metadata (name, description, logo) is not showing up in the webapp 23 | Please make sure to comply with our metadata [guidelines](operator-installation.md#operator-configuration-and-registration) -------------------------------------------------------------------------------- /docs/operators/howto/uam/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Manage User Access" 4 | } -------------------------------------------------------------------------------- /docs/operators/howto/uam/op-add-remove-appointees.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Add and Remove Appointees 4 | --- 5 | 6 | Only admins (or the account if no admin has been set) can add appointees. Unlike adding an admin, there is no requirement 7 | for an appointee to accept the appointment. 8 | 9 | For the list of contracts and functions that can have appointees set, refer to: 10 | * [User Account Management](../../../developers/Concepts/uam-for-avs.md) for AVS 11 | * [User Account Management](../../concepts/uam-for-operators.md) for Operators 12 | 13 | ## Add an Appointee Using EigenLayer CLI 14 | 15 | To add an appointee: 16 | 17 | `eigenlayer user appointee set [options]` with: 18 | * `account-address` - Operator address for admin 19 | * `appointee-address` - Appointee address to have ability to call specified function granted 20 | * `caller-address` - Not required when using `--broadcast` or the admin using the CLI is the `account-address`. 21 | Must be specified if `--output-type` is `calldata` and the admin using the CLI is not the `account-address`. 22 | Set to the address of the admin using the CLI. 23 | * `selector` - Function for which to grant appointee ability to call. Use Etherscan to obtain the selector. 24 | * `target-address` - Contract address containing function for which appointee is being granted permission to call 25 | (for example, `AllocationManager`). The contract addresses are published in the [core contracts](https://github.com/Layr-Labs/eigenlayer-contracts?tab=readme-ov-file#deployments) repository. 26 | 27 | ## Remove an Appointee Using EigenLayer CLI 28 | 29 | To remove an appointee: 30 | 31 | ` eigenlayer user appointee remove [options]` 32 | 33 | With the same options as adding an appointee but the permission is being removed instead of granted. 34 | -------------------------------------------------------------------------------- /docs/operators/operator-guides/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Operator" 4 | } -------------------------------------------------------------------------------- /docs/operators/reference/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Reference" 4 | } -------------------------------------------------------------------------------- /docs/restakers/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Restakers" 4 | } -------------------------------------------------------------------------------- /docs/restakers/concepts/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Concepts" 4 | } 5 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2, 3 | "label": "Restaking via Web App" 4 | } 5 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/liquid-restaking/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 1, 3 | "label": "Liquid Restaking" 4 | } 5 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/liquid-restaking/restake-lsts.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | --- 4 | 5 | 6 | # Restake and Delegate 7 | 8 | The following instructions will walk you through how tokens can be restaked on the [EigenLayer Web App](https://app.eigenlayer.xyz/). 9 | 10 | **Step 1:** Open the EigenLayer App and connect your Web3 wallet. Visit EigenLayer on the Ethereum Mainnet at [app.eigenlayer.xyz](https://app.eigenlayer.xyz/). 11 | 12 | 13 | ![](/img/restake-guides/lst-restake-1.png) 14 | 15 | **Step 2:** Click **Token** tab to view assets available for restaking. 16 | 17 | **Step 3:** Click on the asset you wish to restake. Choose the amount of the asset you wish to restake. Click **Submit** to continue. 18 | 19 | :::info 20 | This guide to Liquid Staking refers to all assets displayed on the Token tab, except for `Natively Staked Ether`, which refers to [Native Staking here](../native-restaking/README.md). 21 | ::: 22 | ![](/img/restake-guides/lst-restake-2.png) 23 | 24 | 25 | If you have not yet delegated your assets to an Operator, you will be prompted to do so at this step. Click on an Operator then click **Submit** to continue. 26 | 27 | ![](/img/restake-guides/lst-restake-2.1.png) 28 | 29 | 30 | 31 | **Step 4:** Token Approval, Deposit, and Delegate transactions: 32 | - If this is your first time depositing a token on EigenLayer, you'll need to **Approve** token spending before you can restake. [Token Approval](https://support.metamask.io/transactions-and-gas/transactions/what-is-a-token-approval) gives a dApp permission to move the specified token from your wallet. 33 | - If you have not yet delegated assets to an Operator, you will receive two transaction prompts: one for the **Deposit** transaction and second for the **Delegate** transaction. 34 | 35 | **Step 5:** **Sign** the transaction(s) via your Web3 wallet to continue. 36 | 37 | 38 | **Step 6:** Observe the confirmation that the Restake operation is completed. 39 | 40 | ![](/img/restake-guides/lst-restake-3.png) 41 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/liquid-restaking/withdraw-from-eigenlayer.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | --- 4 | 5 | 6 | # Unstake and Withdraw 7 | 8 | :::info 9 | Unstaking is the first step in the process of exiting restaked assets from EigenLayer. Unstaked tokens enter the withdrawal 10 | queue for the [Escrow Period](../../testnet/README.md#testnet-vs-mainnet-differences). Withdrawing is the final step to move the tokens back to your wallet. 11 | ::: 12 | 13 | To unstake and withdraw tokens: 14 | 15 | 1. In the [EigenLayer app](https://app.eigenlayer.xyz/), navigate to the token you wish to unstake. Click **Unstake** to continue. 16 | 2. Choose the amount of the asset you wish to unstake. Click **Submit** to continue. 17 | 3. When prompted by your wallet, click **Confirm** to sign the queue withdrawal transaction. 18 | 4. Observe the Unstake confirmation page. Your withdrawal is now in escrow. 19 | 5. Wait for the escrow period to complete. The [Withdraw queue](#view-remaining-time-in-withdrawal-queue) displays the approximate amount of time remaining in escrow. 20 | 6. Once the escrow completes, you'll see the withdrawable balance under Available to Withdraw. Click **Withdraw** to complete the withdrawal. 21 | 7. When prompted by your Web3 wallet, sign the transaction. After the transaction is completed the withdrawn assets are visible in your Web3 wallet. 22 | 23 | ## View Remaining Time in Withdrawal Queue 24 | 25 | On the Dashboard tab in the EigenLayer app, the *Withdraw queue* field displays the total value currently in the withdrawal 26 | queue. 27 | 28 | To view the remaining time in the withdrawal queue for an specific token, navigate to that token. The **Withdraw Queue** field 29 | displays the approximate amount of time remaining until the token is withdrawable. -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/native-restaking/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 2 3 | } 4 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/restaker-delegation/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Delegation" 4 | } 5 | 6 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/restaker-delegation/delegate-to-an-operator.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | title: Delegate to an Operator 4 | --- 5 | 6 | # Delegate EIGEN, LSTs, and Native Restaked ETH to an Operator 7 | 8 | Follow the steps below to initiate delegation of your Restaked balance to an Operator of your choice. This Restaked balance includes EIGEN tokens, LST tokens, and Native Restaked TVL. 9 | 10 | Delegation is a unified step in the standard EIGEN and LST Restaking flow. For Native Restakers or scenarios where the unified Restaking flow was not completed, the following steps will allow you to delegate your stake directly. 11 | 12 | 13 | 14 | **Step 1:** Navigate to the **Operator** page to view a list of available Operators. 15 | 16 | ![](/img/restake-guides/delegate-1.png) 17 | 18 | **Step 2:** Search for operators via their name or Ethereum address. Click on the **Operator's tile** to view their Detail page. 19 | 20 | ![](/img/restake-guides/delegate-2.png) 21 | 22 | **Step 3:** Click **Delegate** to initiate a delegation of all your staked assets to that operator. 23 | 24 | **Step 4:** Confirm the transaction in your Web3 wallet. 25 | 26 | **Step 5:** Note the delegating progress message. 27 | 28 | **Step 6:** After the transaction has been confirmed, please note your stake will show as Delegated for that Operator. 29 | 30 | ![](/img/restake-guides/delegate-3.png) -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/restaker-delegation/redelegation-process.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | title: Change Your Delegation 4 | --- 5 | 6 | # Change Your Delegation to a New Operator 7 | 8 | The following steps are necessary for a Restaker to **move** their Delegated balance to a New Operator. The process below requires users to perform each of the following steps in order: 9 | - **Undelegate** assets, which automatically queues a **withdrawal**. The Undelegate and Queue Withdrawal transactions are combined due to the security architecture of EigenLayer smart contracts. 10 | - **Redeposit** each asset. 11 | - **Delegate** to the new Operator. 12 | 13 | :::warning 14 | Follow the steps below carefully to avoid a "partially delegated state". A partially delegated state is when some portion of your assets in Delegated state and other assets in a "queued for withdrawal" or "withdrawal ready for completion" state. 15 | ::: 16 | 17 | ## Process to Change Your Delegation to a New Operator 18 | 19 | **Step 1:** Visit the **Operator** page for your currently delegated Operator. Click **Undelegate**. 20 | 21 | ![undelegate button](/img/restake-guides/delegate-3.png) 22 | 23 | 24 | **Step 2:** **Confirm** the Undelegate transaction in your Web3 wallet. 25 | 26 | **Step 3:** **Observe** that your Restaked balances are now 0.0 TVL. Those assets are now undelegated from the previous Operator appear in "Pending Withdraw" state. 27 | 28 | **Step 4:** **Wait** for the escrow period to end before continuing. Please see [Testnet vs Mainnet differences for detail](/docs/restakers/restaking-guides/testnet/README.md#testnet-vs-mainnet-differences). 29 | 30 | **Step 5:** Manually Redeposit each asset. **Navigate** to each asset page individually. Navigate to the **Unstake** tab, click **Redeposit**. This will prompt a Redeposit transaction for each asset that you will confirm in your Web3 wallet. 31 | 32 | **Step 6:** After all assets have been redeposited, **navigate** to the Operator page for the new operator you wish to delegate to. Click **Delegate** button. 33 | 34 | 35 | ![](/img/restake-guides/delegate-2.png) 36 | 37 | 38 | **Step 7:** **Observe** that your delegation has been changed to the new Operator. 39 | 40 | 41 | :::info 42 | Do not click the **Redelegate** button on the Operator page. The button is intended to be used only for users that have funds in a "partially delegated state". 43 | ::: -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/0-restaking-user-guide/restaker-delegation/undelegate-from-an-operator-and-initiate-withdrawal.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Undelegate and Initiate Withdrawal 4 | --- 5 | 6 | # Undelegate from an Operator and Initiate Withdrawal 7 | 8 | Restakers can Undelegate their balance from an Operator at any time. Undelegation flows are the same for both Native and LST Restakers. 9 | 10 | :::info 11 | Initiating an Undelegate transaction will also **automatically queue a withdrawal**, but not complete (finalize) the withdrawal. The Undelegate and Queue Withdrawal transactions are combined due to the security architecture of EigenLayer smart contracts. If you wish to redeposit, you can do so immediately after the escrow period ends. If you want to complete the withdrawal, you can do so immediately after the escrow period ends. 12 | ::: 13 | 14 | 15 | ## Instructions to Undelegate and Queue Withdraw 16 | 17 | **Step 1:** Navigate to the Operator tab, click the tile for the Operator you have delegated your funds to. Click the Undelegate button to continue. 18 | 19 | ![](/img/restake-guides/delegate-4.png) 20 | 21 | **Step 2:** Confirm the Undelegate transaction in your Web3 wallet. 22 | 23 | **Step 3:** Observe that your Restaked balances are now 0.0 TVL. 24 | 25 | **Step 4:** Wait for the escrow period to end before continuing. Please see [Testnet vs Mainnet differences for detail](/docs/restakers/restaking-guides/testnet/README.md#testnet-vs-mainnet-differences). 26 | 27 | **Step 5:** Visit any individual page for your unstaked assets and observe your **Unstaked** balance has increased by the corresponding amount. 28 | 29 | **Step 6:** Click **Withdraw** to finalize the withdrawal for the asset. 30 | 31 | ![](/img/restake-guides/delegate-5.png) 32 | 33 | :::info 34 | The "Redeposit" button is also available for the user to Restake funds in case the withdrawal was initiated by mistake. 35 | ::: 36 | 37 | **Step 7:** Repeat steps 5 and 6 above for any remaining assets where you wish to finalize withdrawal. 38 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/_category_.json: -------------------------------------------------------------------------------- 1 | { 2 | "position": 3, 3 | "label": "Restaking" 4 | } 5 | -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/claim-rewards-app.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | title: Claim Rewards using EigenLayer App 4 | --- 5 | 6 | For information on Rewards concepts, refer to [Rewards Overview](../../eigenlayer/concepts/rewards/rewards-concept.md). 7 | 8 | When claiming Rewards using the [EigenLayer app](https://app.eigenlayer.xyz/): 9 | * The [rewards recipient](../../eigenlayer/concepts/rewards/earners-claimers-recipients.md) cannot be specified and is always the [Earner](../../eigenlayer/concepts/rewards/earners-claimers-recipients.md). 10 | * Batch claiming cannot be used. 11 | 12 | To specify the [rewards recipient](../../operators/howto/claimrewards/claim-rewards-cli.mdx) or [batch claim](../../operators/howto/claimrewards/batch-claim-rewards.md), claim using the EigenLayer CLI. 13 | 14 | ## Earner 15 | 16 | To claim rewards using the EigenLayer app as an [Earner](../../eigenlayer/concepts/rewards/earners-claimers-recipients.md): 17 | 18 | 1. Navigate to the _Dashboard_ tab. Claimable rewards are displayed for AVS Rewards and Programmatic Incentives. 19 | 2. Click the *Claim Rewards* button. 20 | 3. Select tokens individually you wish to claim rewards for or click *Select All* to claim all token rewards at once. 21 | 4. Click the *Claim Tokens* button. A transaction is initiated in your Web3 wallet to include claim proof. 22 | 5. Sign the transaction. The summary of rewards claimed is displayed. 23 | 24 | ## Claimer 25 | 26 | A Claimer address has permission for one or more Earner profiles. Each profile represents an Earner address for which the 27 | Claimer has claim privileges. 28 | 29 | To claim rewards using the EigenLayer app as a Claimer: 30 | 1. Log in to the EigenLayer app with Claimer address. A list of Earner profiles associated with the Claimer address are displayed. 31 | 2. Select an Earner profile. The claimable rewards for the Earner are displayed. 32 | 3. Follow steps 2 to 5 as for claiming as an Earner. 33 | 34 | When logged in as a Claimer, the only option visible is the Claim Rewards option. 35 | 36 | :::note 37 | If a Claimer address is associated with more than 100 Earner profiles, delays of up to 10 seconds may be experienced while loading. 38 | We are working to optimize this behavior. If you experience delays, allow sufficient time to load all profiles. 39 | ::: -------------------------------------------------------------------------------- /docs/restakers/restaking-guides/testnet/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 4 3 | title: Testnet Restaking 4 | --- 5 | 6 | ## Testing Restaking on the Holesky Testnet 7 | 8 | Users are encouraged to first test their staking approach on the Holesky Testnet prior to restaking on ETH Mainnet. 9 | 10 | * Follow the instructions in [Obtaining Testnet ETH & Liquid Staking Tokens (LSTs)](obtaining-testnet-eth-and-liquid-staking-tokens-lsts.md) to fund your Testnet wallet. 11 | * Visit [holesky.eigenlayer.xyz](https://holesky.eigenlayer.xyz/) for the most recent EigenLayer Testnet web app. 12 | 13 | 14 | 15 | ## Testnet vs Mainnet Differences 16 | 17 | - Withdraw (Escrow) Period: 18 | - All funds unstaked from _EigenLayer Testnet_ go through a delay (escrow period) of 25 blocks (roughly 5 minutes) before being able to be withdrawn. 19 | - Liquid tokens and Native Restaking funds unstaked from _EigenLayer Mainnet_ will go through a 14-day escrow period before being able to be withdrawn. 20 | - Testnet includes the Slashing and Operator Sets upgrade. Please see [ELIP-002: Slashing via Unique Stake & Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md) for more information. 21 | 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "el-docs", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start", 8 | "build": "docusaurus build && npm run repomix", 9 | "build-docusaurus": "docusaurus build", 10 | "repomix": "node run-repomix.js", 11 | "swizzle": "docusaurus swizzle", 12 | "deploy": "docusaurus deploy", 13 | "clear": "docusaurus clear", 14 | "serve": "docusaurus serve", 15 | "write-translations": "docusaurus write-translations", 16 | "write-heading-ids": "docusaurus write-heading-ids", 17 | "check-links": "node ci-scripts/check-external-links.js" 18 | }, 19 | "dependencies": { 20 | "@docusaurus/core": "3.7.0", 21 | "@docusaurus/plugin-client-redirects": "3.7.0", 22 | "@docusaurus/plugin-google-gtag": "3.7.0", 23 | "@docusaurus/preset-classic": "3.7.0", 24 | "@docusaurus/theme-mermaid": "3.7.0", 25 | "@easyops-cn/docusaurus-search-local": "^0.45.0", 26 | "@mdx-js/react": "^3.0.0", 27 | "@userback/widget": "^0.3.7", 28 | "clsx": "2.1.0", 29 | "hast-util-is-element": "1.1.0", 30 | "prism-react-renderer": "2.3.1", 31 | "punycode": "^2.3.1", 32 | "react": "^18.2.0", 33 | "react-dom": "^18.2.0", 34 | "react-markdown": "^9.0.1", 35 | "rehype-katex": "^7.0.1", 36 | "remark-gfm": "^4.0.0", 37 | "remark-math": "^6.0.0", 38 | "repomix": "^0.3.6" 39 | }, 40 | "devDependencies": { 41 | "@docusaurus/eslint-plugin": "3.7.0", 42 | "@docusaurus/module-type-aliases": "3.7.0", 43 | "@docusaurus/tsconfig": "3.7.0", 44 | "@docusaurus/types": "3.7.0", 45 | "@types/node": "^22.15.30", 46 | "@types/react": "^18.2.29", 47 | "axios": "^1.9.0", 48 | "csv-writer": "^1.6.0", 49 | "dotenv": "^16.3.1", 50 | "ts-node": "^10.9.2", 51 | "typescript": "~5.2.2" 52 | }, 53 | "engines": { 54 | "yarn": ">=1.22.22" 55 | }, 56 | "browserslist": { 57 | "production": [ 58 | ">0.5%", 59 | "not dead", 60 | "not op_mini all" 61 | ], 62 | "development": [ 63 | "last 1 chrome version", 64 | "last 1 firefox version", 65 | "last 1 safari version" 66 | ] 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /run-repomix.js: -------------------------------------------------------------------------------- 1 | import { runCli } from 'repomix'; 2 | import path from "node:path"; 3 | 4 | async function processRemoteRepo(repoUrl, fileName) { 5 | const options = { 6 | remote: repoUrl, 7 | output: path.join(process.cwd(), 'build', fileName), 8 | compress: true, 9 | style: 'markdown' 10 | } 11 | return await runCli(['.'], process.cwd(), options); 12 | } 13 | 14 | const repos = [ 15 | { 16 | url: 'https://github.com/Layr-Labs/eigenlayer-contracts', 17 | fileName: "eigenlayer-contracts.md", 18 | }, 19 | { 20 | url: 'https://github.com/Layr-Labs/eigensdk-go', 21 | fileName: 'eigenlayer-go-sdk.md' 22 | }, 23 | { 24 | url: 'https://github.com/Layr-Labs/hello-world-avs', 25 | fileName: 'hello-world-avs.md' 26 | } 27 | ] 28 | 29 | for (const repo of repos) { 30 | await processRemoteRepo(repo.url, repo.fileName); 31 | } 32 | -------------------------------------------------------------------------------- /sidebars.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Creating a sidebar enables you to: 3 | - create an ordered group of docs 4 | - render a sidebar for each doc of that group 5 | - provide next/previous navigation 6 | 7 | The sidebars can be generated from the filesystem, or explicitly defined here. 8 | 9 | Create as many sidebars as you want. 10 | */ 11 | 12 | // @ts-check 13 | 14 | /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ 15 | const sidebars = { 16 | // By default, Docusaurus generates a sidebar from the docs folder structure 17 | eigenlayerSidebar: [{ type: 'autogenerated', dirName: 'eigenlayer' }], 18 | developersSidebar: [{ type: 'autogenerated', dirName: 'developers' }], 19 | operatorsSidebar: [{ type: 'autogenerated', dirName: 'operators' }], 20 | restakersSidebar: [{ type: 'autogenerated', dirName: 'restakers' }], 21 | 22 | // But you can create a sidebar manually 23 | /* 24 | tutorialSidebar: [ 25 | 'intro', 26 | 'hello', 27 | { 28 | type: 'category', 29 | label: 'Tutorial', 30 | items: ['tutorial-basics/create-a-document'], 31 | }, 32 | ], 33 | */ 34 | }; 35 | 36 | module.exports = sidebars; 37 | -------------------------------------------------------------------------------- /src/components/Button.js: -------------------------------------------------------------------------------- 1 | import React, { CSSProperties } from 'react'; 2 | import clsx from 'clsx'; 3 | import Link from '@docusaurus/Link'; 4 | 5 | // Build the Button component with the specified props 6 | const Button = ({ 7 | size = null, // The size of the button (e.g., 'sm', 'lg', or null) 8 | outline = false, // Whether the button should be an outline button 9 | variant = 'primary', // The color variant of the button 10 | block = false, // Whether the button should be a block-level button 11 | disabled = false, // Whether the button should be disabled 12 | className, // Custom classes for the button 13 | style, // Custom styles for the button 14 | link, // The URL the button should link to 15 | label // The text of the button 16 | }) => { 17 | const sizeMap = { 18 | sm: 'sm', 19 | small: 'sm', 20 | lg: 'lg', 21 | large: 'lg', 22 | medium: null, 23 | }; 24 | const buttonSize = size ? sizeMap[size] : ''; 25 | const sizeClass = buttonSize ? `button--${buttonSize}` : ''; 26 | const outlineClass = outline ? 'button--outline' : ''; 27 | const variantClass = variant ? `button--${variant}` : ''; 28 | const blockClass = block ? 'button--block' : ''; 29 | const disabledClass = disabled ? 'disabled' : ''; 30 | // If the button is disabled, set the destination to null. 31 | const destination = disabled ? null : link; 32 | return ( 33 | 34 | 42 | 43 | ); 44 | }; 45 | 46 | export default Button; -------------------------------------------------------------------------------- /src/components/Card.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import clsx from "clsx"; 3 | import Link from "@docusaurus/Link"; 4 | import styles from "./HomepageFeatures.module.css"; 5 | import Translate from "@docusaurus/Translate"; 6 | 7 | function Card({ to, header, body, externalIcon = false }) { 8 | /* 9 | Both the `header` and `body` expect an object with the following type 10 | header = { 11 | label: String, // 12 | } 13 | */ 14 | 15 | return ( 16 |
17 | 18 |
19 |

20 | {header.label} 21 |

22 |
23 |
24 |

25 | {body.label} 26 |

27 |
28 | 29 |
30 | ); 31 | } 32 | 33 | export default Card; -------------------------------------------------------------------------------- /src/components/HomepageFeatures.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import clsx from 'clsx'; 3 | import styles from './HomepageFeatures.module.css'; 4 | 5 | const FeatureList = [ 6 | { 7 | title: 'Easy to Use', 8 | Svg: require('../../static/img/undraw_docusaurus_mountain.svg').default, 9 | description: ( 10 | <> 11 | Docusaurus was designed from the ground up to be easily installed and 12 | used to get your website up and running quickly. 13 | 14 | ), 15 | }, 16 | { 17 | title: 'Focus on What Matters', 18 | Svg: require('../../static/img/undraw_docusaurus_tree.svg').default, 19 | description: ( 20 | <> 21 | Docusaurus lets you focus on your docs, and we'll do the chores. Go 22 | ahead and move your docs into the docs directory. 23 | 24 | ), 25 | }, 26 | { 27 | title: 'Powered by React', 28 | Svg: require('../../static/img/undraw_docusaurus_react.svg').default, 29 | description: ( 30 | <> 31 | Extend or customize your website layout by reusing React. Docusaurus can 32 | be extended while reusing the same header and footer. 33 | 34 | ), 35 | }, 36 | ]; 37 | 38 | function Feature({Svg, title, description}) { 39 | return ( 40 |
41 |
42 | 43 |
44 |
45 |

{title}

46 |

{description}

47 |
48 |
49 | ); 50 | } 51 | 52 | export default function HomepageFeatures() { 53 | return ( 54 |
55 |
56 |
57 | {FeatureList.map((props, idx) => ( 58 | 59 | ))} 60 |
61 |
62 |
63 | ); 64 | } 65 | -------------------------------------------------------------------------------- /src/components/HomepageFeatures.module.css: -------------------------------------------------------------------------------- 1 | .features { 2 | display: flex; 3 | align-items: center; 4 | padding: 2rem 0; 5 | width: 100%; 6 | } 7 | 8 | .featureSvg { 9 | height: 200px; 10 | width: 200px; 11 | } 12 | 13 | .heroBanner { 14 | padding: 4rem 0; 15 | text-align: center; 16 | position: relative; 17 | overflow: hidden; 18 | } 19 | 20 | @media screen and (max-width: 966px) { 21 | .heroBanner { 22 | padding: 2rem; 23 | } 24 | } 25 | 26 | .buttons { 27 | display: flex; 28 | align-items: center; 29 | justify-content: center; 30 | } 31 | 32 | .cardTitle { 33 | color: #e84142; 34 | } 35 | 36 | .featureImage { 37 | height: 200px; 38 | width: 200px; 39 | } 40 | 41 | .iconExternalIcon { 42 | margin-left: 0.5em; 43 | } 44 | -------------------------------------------------------------------------------- /src/pages/index.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * CSS files with the .module.css suffix will be treated as CSS modules 3 | * and scoped locally. 4 | */ 5 | 6 | .heroBanner { 7 | padding: 4rem 0; 8 | text-align: center; 9 | position: relative; 10 | overflow: hidden; 11 | } 12 | 13 | @media screen and (max-width: 996px) { 14 | .heroBanner { 15 | padding: 2rem; 16 | } 17 | } 18 | 19 | .buttons { 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | } 24 | 25 | .cardTitle { 26 | color: blue; 27 | } 28 | 29 | .main { 30 | margin-bottom: 50px; 31 | margin-top: 0px; 32 | } 33 | 34 | 35 | .features { 36 | display: flex; 37 | align-items: top; 38 | width: 100%; 39 | } 40 | 41 | .featureImage { 42 | height: 200px; 43 | width: 200px; 44 | } 45 | 46 | .iconExternalIcon { 47 | margin-left: 0.5em; 48 | } -------------------------------------------------------------------------------- /src/theme/MDXComponents.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | // Importing the original mapper + our components according to the Docusaurus doc 3 | import MDXComponents from '@theme-original/MDXComponents'; 4 | import Button from '@site/src/components/Button'; 5 | export default { 6 | // Reusing the default mapping 7 | ...MDXComponents, 8 | Button, 9 | }; -------------------------------------------------------------------------------- /static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/.nojekyll -------------------------------------------------------------------------------- /static/font/ABCReproVariable.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/font/ABCReproVariable.woff2 -------------------------------------------------------------------------------- /static/img/avs-marketplace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/avs-marketplace.png -------------------------------------------------------------------------------- /static/img/avs/avs-architecture-v1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/avs/avs-architecture-v1.png -------------------------------------------------------------------------------- /static/img/avs/avs-architecture-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/avs/avs-architecture-v2.png -------------------------------------------------------------------------------- /static/img/avs/avs-categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/avs/avs-categories.png -------------------------------------------------------------------------------- /static/img/avs/hello-world-diagram-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/avs/hello-world-diagram-v2.png -------------------------------------------------------------------------------- /static/img/eigen-da-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/eigen-da-diagram.png -------------------------------------------------------------------------------- /static/img/eigenlayer-logo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/eigenlayer-logo-dark.png -------------------------------------------------------------------------------- /static/img/eigenlayer-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/eigenlayer-logo.png -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/6Amzdvc2bS1qnBHMezLS6iA7w3XNdyW6rKacGeVoY4TiIkvuoRfYp2tJ_xBHoQOYEKSMwcz_IDpbTgXrKV2kedxX30BOVoq3yFiAItv2O03T94CCrDuNGgidDhsKIxO5cv1_G_apMsHDnwzAD8zh3hE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/6Amzdvc2bS1qnBHMezLS6iA7w3XNdyW6rKacGeVoY4TiIkvuoRfYp2tJ_xBHoQOYEKSMwcz_IDpbTgXrKV2kedxX30BOVoq3yFiAItv2O03T94CCrDuNGgidDhsKIxO5cv1_G_apMsHDnwzAD8zh3hE.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/A4J5a_mzQcqJiz7xeM2jRzsQv5slK98MANGAdtRS3B5rvOP5v6yyrmYubxbLzR_3uhgIxOmWfQIpDbQmNX2hhhX7-h4eB1dNmFCjKnGoBh6Toikh0G5hshCsyTmbeyEOs0RAdX_YLmyOqa-eg4DN2Ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/A4J5a_mzQcqJiz7xeM2jRzsQv5slK98MANGAdtRS3B5rvOP5v6yyrmYubxbLzR_3uhgIxOmWfQIpDbQmNX2hhhX7-h4eB1dNmFCjKnGoBh6Toikh0G5hshCsyTmbeyEOs0RAdX_YLmyOqa-eg4DN2Ms.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/DStQhIFho5ga5_1h945XDiJGtnQvrEy_KzXm1jnhCCysFWJCV2JoOSnEY4xX35loBDGw-tjjoWq_vUAGICkyR9Gz0eUplNKsuDJkp73rFOFMwd2NQYE5Gs_cVZ7riCGsF7j86PARHtyhf14PH3sKb2Y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/DStQhIFho5ga5_1h945XDiJGtnQvrEy_KzXm1jnhCCysFWJCV2JoOSnEY4xX35loBDGw-tjjoWq_vUAGICkyR9Gz0eUplNKsuDJkp73rFOFMwd2NQYE5Gs_cVZ7riCGsF7j86PARHtyhf14PH3sKb2Y.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/HNaZjUx0-Tp6xqPD7T6BVccmiXiwbTLD2g4jw4R87xpGw_XsTAqXXJ1eYIBOeYKZOaQ0RcYBsOr3OrZL0xUG8l6xumGHqAbByRFYHe6Qoe5zeUgHL2fYCWnCi1SNNgIkTIdj8db9t3LHVsAJi6qA5Ys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/HNaZjUx0-Tp6xqPD7T6BVccmiXiwbTLD2g4jw4R87xpGw_XsTAqXXJ1eYIBOeYKZOaQ0RcYBsOr3OrZL0xUG8l6xumGHqAbByRFYHe6Qoe5zeUgHL2fYCWnCi1SNNgIkTIdj8db9t3LHVsAJi6qA5Ys.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/L-fGo8SfLFRL9eGuclFYLGu6Hcv-J1Hj_taTc-ba7ttThA6c_yiztPylvKgfABkM0v4henpfG4sIrVTWxPdAO_4dfHIk69xRxa9edZaRDjhugWR4O6uf3wwG0-PwBg_BzsSb157d4r4Z123e0mdxQZk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/L-fGo8SfLFRL9eGuclFYLGu6Hcv-J1Hj_taTc-ba7ttThA6c_yiztPylvKgfABkM0v4henpfG4sIrVTWxPdAO_4dfHIk69xRxa9edZaRDjhugWR4O6uf3wwG0-PwBg_BzsSb157d4r4Z123e0mdxQZk.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/RLMOGvPSu2_BPRIu4o32LZIKFgSOySe8tatR67-pGsFPZxVmk1RSLvkNT_FHXcZUDtP8eINc2EQUG3y4X0yVM7l6Ly1q2iE8v1j6VDr7vI1wtR4GqKBsrLgc9pUwMvzu9UeXQbsumCSlGPNRiX9-1vA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/RLMOGvPSu2_BPRIu4o32LZIKFgSOySe8tatR67-pGsFPZxVmk1RSLvkNT_FHXcZUDtP8eINc2EQUG3y4X0yVM7l6Ly1q2iE8v1j6VDr7vI1wtR4GqKBsrLgc9pUwMvzu9UeXQbsumCSlGPNRiX9-1vA2.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/SzsWbRMQ-9NYYfah1kBT89hfCZSEvd04Rtk_G1J1en31FbZHEYalivDgIsH-E7sHrKtLQUEFIcq7CdmMvCrFXO3_qYpts5t__y3YMSuqH3GiQa95MrE-BRfHlFDkaqlAolLVXCiybmHm48TZdRLEQMI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/SzsWbRMQ-9NYYfah1kBT89hfCZSEvd04Rtk_G1J1en31FbZHEYalivDgIsH-E7sHrKtLQUEFIcq7CdmMvCrFXO3_qYpts5t__y3YMSuqH3GiQa95MrE-BRfHlFDkaqlAolLVXCiybmHm48TZdRLEQMI.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/UPnY4qM7MtBkzrwI0FZLTo5iAEVkEWUNS-pRCIg0LhL1djbF2NwPjAT4M_PDvgwIMGHOGvk0NwfjCYJUzHzKtY02Y9FZh_FXKpi_lULiNmYYdIUBJFj8MvMI3kT4lMumM470JiKMW_nt-dqPRMaggp8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/UPnY4qM7MtBkzrwI0FZLTo5iAEVkEWUNS-pRCIg0LhL1djbF2NwPjAT4M_PDvgwIMGHOGvk0NwfjCYJUzHzKtY02Y9FZh_FXKpi_lULiNmYYdIUBJFj8MvMI3kT4lMumM470JiKMW_nt-dqPRMaggp8.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/VhvtrzfZkAPIVjAVGaGiQLuHcoX94IeuJIZKymOP8rl5SU6YPkLMRDfyoEKT22MJUwCZp3bj4g7RnkFZPrvNDq1FBRWt6wp6fd_W_qxmdDczCr63Md7v_dFGjMRlA_cPbxAF2vs4pwRk8Y3aIGI5ghY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/VhvtrzfZkAPIVjAVGaGiQLuHcoX94IeuJIZKymOP8rl5SU6YPkLMRDfyoEKT22MJUwCZp3bj4g7RnkFZPrvNDq1FBRWt6wp6fd_W_qxmdDczCr63Md7v_dFGjMRlA_cPbxAF2vs4pwRk8Y3aIGI5ghY.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/fWBK0B7_n1MwCLVB7fMI5c75lRaFjLL_UGjSu3ZPxxxefoXl3qfln0UBislng7WoLq2ZXaxIepJJnzDbjWFBa3wv9XZZ-OcR3y10OvDaHzHOIPTH_-BVT3cVZXyOkGybaNCoBuW430fvzkqz5-QhdOE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/fWBK0B7_n1MwCLVB7fMI5c75lRaFjLL_UGjSu3ZPxxxefoXl3qfln0UBislng7WoLq2ZXaxIepJJnzDbjWFBa3wv9XZZ-OcR3y10OvDaHzHOIPTH_-BVT3cVZXyOkGybaNCoBuW430fvzkqz5-QhdOE.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/gCiv9UYN6M4LTyyb78MXQJ9GeXCW-Sf-23FgWOw9JHs7wRvuSjMlfejOVgcc6ymUE0Lu98ojF-k6MZzdeV45KmYlnCM_jjdoecJcdozIacCGqd0cFNet-hdZdJ9iwVkL9-kg9suCQQhkYF9364PK_yQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/gCiv9UYN6M4LTyyb78MXQJ9GeXCW-Sf-23FgWOw9JHs7wRvuSjMlfejOVgcc6ymUE0Lu98ojF-k6MZzdeV45KmYlnCM_jjdoecJcdozIacCGqd0cFNet-hdZdJ9iwVkL9-kg9suCQQhkYF9364PK_yQ.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/iLPD5MfrJT8krjQtly8sUUiqKtpTWXD58Ajp_jfKNTnNcV07s8TD-A2H0GLyPOmTHvFUWGho7qjICYzzhAvpyTwJh_Mpiq_k6lMWsNL7H5ns9OCVRa6MnjMpFpNDkNakfdTPVRcElFSfslcVJTHByN0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/iLPD5MfrJT8krjQtly8sUUiqKtpTWXD58Ajp_jfKNTnNcV07s8TD-A2H0GLyPOmTHvFUWGho7qjICYzzhAvpyTwJh_Mpiq_k6lMWsNL7H5ns9OCVRa6MnjMpFpNDkNakfdTPVRcElFSfslcVJTHByN0.png -------------------------------------------------------------------------------- /static/img/googleusercontentbackup/tdLYguBq5wyfQbJRkyVo7pqT1tBasCLxXP-aA60GZGXlqKDkLtQIN9guogHXdSRObApuLHT3LpPfIxZWJruxaAJBH5skfRY3EQAPya0sxxUnj1EoDgkUCxItwETv-dpaVVAV86JCzpYduZcpLQlH9-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/googleusercontentbackup/tdLYguBq5wyfQbJRkyVo7pqT1tBasCLxXP-aA60GZGXlqKDkLtQIN9guogHXdSRObApuLHT3LpPfIxZWJruxaAJBH5skfRY3EQAPya0sxxUnj1EoDgkUCxItwETv-dpaVVAV86JCzpYduZcpLQlH9-0.png -------------------------------------------------------------------------------- /static/img/infinite-hackathon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/infinite-hackathon.png -------------------------------------------------------------------------------- /static/img/native-restaking-processes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/native-restaking-processes.png -------------------------------------------------------------------------------- /static/img/op-stack-blob-disersal-seq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/op-stack-blob-disersal-seq.png -------------------------------------------------------------------------------- /static/img/operator-guides/avs-installation-and-registration/eigenda-operator-guide/eigenda-correct-sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/operator-guides/avs-installation-and-registration/eigenda-operator-guide/eigenda-correct-sign.png -------------------------------------------------------------------------------- /static/img/operator-guides/eigenda-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/operator-guides/eigenda-logs.png -------------------------------------------------------------------------------- /static/img/operator-guides/operator-registration-allocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/operator-guides/operator-registration-allocation.png -------------------------------------------------------------------------------- /static/img/operator-guides/operator-sets-figure-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/operator-guides/operator-sets-figure-3.png -------------------------------------------------------------------------------- /static/img/operator-guides/operator-sets-figure-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/operator-guides/operator-sets-figure-4.png -------------------------------------------------------------------------------- /static/img/operator-guides/operator-sets-figure-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/operator-guides/operator-sets-figure-5.png -------------------------------------------------------------------------------- /static/img/overview/eigenlayer-arch-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/overview/eigenlayer-arch-v2.png -------------------------------------------------------------------------------- /static/img/overview/eigenlayer-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/overview/eigenlayer-arch.png -------------------------------------------------------------------------------- /static/img/restake-guides/change-delegation-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/change-delegation-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/delegate-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/delegate-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/delegate-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/delegate-2.png -------------------------------------------------------------------------------- /static/img/restake-guides/delegate-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/delegate-3.png -------------------------------------------------------------------------------- /static/img/restake-guides/delegate-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/delegate-4.png -------------------------------------------------------------------------------- /static/img/restake-guides/delegate-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/delegate-5.png -------------------------------------------------------------------------------- /static/img/restake-guides/full-withdrawals-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/full-withdrawals-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/full-withdrawals-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/full-withdrawals-2.png -------------------------------------------------------------------------------- /static/img/restake-guides/full-withdrawals-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/full-withdrawals-3.png -------------------------------------------------------------------------------- /static/img/restake-guides/full-withdrawals-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/full-withdrawals-4.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-restake-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-restake-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-restake-2.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-restake-2.1.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-restake-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-restake-2.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-restake-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-restake-3.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-unstake-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-unstake-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-unstake-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-unstake-2.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-unstake-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-unstake-3.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-unstake-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-unstake-4.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-withdraw-button.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-withdraw-button.jpeg -------------------------------------------------------------------------------- /static/img/restake-guides/lst-withdraw-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-withdraw-confirm.png -------------------------------------------------------------------------------- /static/img/restake-guides/lst-withdraw-modal.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/lst-withdraw-modal.jpeg -------------------------------------------------------------------------------- /static/img/restake-guides/native-cli-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-cli-status.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-create-pod1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-create-pod1.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-create-pod2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-create-pod2.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-create-pod3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-create-pod3.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-full-withdrawal1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-full-withdrawal1.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-full-withdrawal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-full-withdrawal2.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-full-withdrawal3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-full-withdrawal3.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-partial-withdrawal1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-partial-withdrawal1.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-partial-withdrawal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-partial-withdrawal2.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-partial-withdrawal3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-partial-withdrawal3.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-stake-repoint-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-stake-repoint-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/native-withdraw-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/native-withdraw-1.jpg -------------------------------------------------------------------------------- /static/img/restake-guides/optimized-withdrawal-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/optimized-withdrawal-flow.png -------------------------------------------------------------------------------- /static/img/restake-guides/partial-withdrawals-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/partial-withdrawals-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/partial-withdrawals-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/partial-withdrawals-2.png -------------------------------------------------------------------------------- /static/img/restake-guides/partial-withdrawals-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/partial-withdrawals-3.png -------------------------------------------------------------------------------- /static/img/restake-guides/partial-withdrawals-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/partial-withdrawals-4.png -------------------------------------------------------------------------------- /static/img/restake-guides/partial-withdrawals-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/partial-withdrawals-5.png -------------------------------------------------------------------------------- /static/img/restake-guides/restake-balance.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/restake-balance.jpeg -------------------------------------------------------------------------------- /static/img/restake-guides/rewards-claim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/rewards-claim1.png -------------------------------------------------------------------------------- /static/img/restake-guides/rewards-claim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/rewards-claim2.png -------------------------------------------------------------------------------- /static/img/restake-guides/rewards-claim3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/rewards-claim3.png -------------------------------------------------------------------------------- /static/img/restake-guides/rewards-claim4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/rewards-claim4.png -------------------------------------------------------------------------------- /static/img/restake-guides/rewards-claim5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/rewards-claim5.png -------------------------------------------------------------------------------- /static/img/restake-guides/set-validator-withdrawal-credentials-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/set-validator-withdrawal-credentials-1.png -------------------------------------------------------------------------------- /static/img/restake-guides/set-validator-withdrawal-credentials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/set-validator-withdrawal-credentials.png -------------------------------------------------------------------------------- /static/img/restake-guides/stake-eigen-four.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/stake-eigen-four.png -------------------------------------------------------------------------------- /static/img/restake-guides/stake-eigen-one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/stake-eigen-one.png -------------------------------------------------------------------------------- /static/img/restake-guides/stake-eigen-three.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/stake-eigen-three.png -------------------------------------------------------------------------------- /static/img/restake-guides/stake-eigen-two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/stake-eigen-two.png -------------------------------------------------------------------------------- /static/img/restake-guides/withdrawal-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/restake-guides/withdrawal-flow.png -------------------------------------------------------------------------------- /static/img/roadmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/img/roadmap.png -------------------------------------------------------------------------------- /static/js/avs-guide-redirects.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const avsBaseURL = '/eigenlayer/avs-guides'; 3 | const currentPath = window.location.pathname; 4 | 5 | if (currentPath.includes(avsBaseURL)) { 6 | const newPath = currentPath.replace(avsBaseURL, '/developers'); 7 | window.location.href = window.location.origin + newPath; 8 | } 9 | })(); -------------------------------------------------------------------------------- /static/js/eigen-token-redirect.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const currentPath = window.location.pathname; 3 | if (currentPath.includes('eigen-token-overview')) { 4 | window.location.href = 'https://docs.eigenfoundation.org'; 5 | } 6 | })(); 7 | -------------------------------------------------------------------------------- /static/js/eigenda-redirects.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const eigendaBaseURL = '/eigenda'; 3 | const eigendaGuidesBaseURL = '/eigenda-guides'; 4 | const newBaseUrl = 'http://docs.eigenda.xyz'; 5 | const currentPath = window.location.pathname; 6 | 7 | 8 | if (currentPath.includes(eigendaGuidesBaseURL)) { 9 | window.location.href = newBaseUrl + currentPath; 10 | } else if (currentPath.includes(eigendaBaseURL)) { 11 | const newPath = currentPath.replace(eigendaBaseURL, ''); 12 | window.location.href = newBaseUrl + newPath; 13 | } 14 | })(); 15 | -------------------------------------------------------------------------------- /static/js/intercom.js: -------------------------------------------------------------------------------- 1 | window.intercomSettings = { 2 | api_base: "https://api-iam.intercom.io", 3 | app_id: "szc7cbjs", 4 | custom_launcher_selector:'#intercom_trigger_eldocs' 5 | }; 6 | // We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/szc7cbjs' 7 | (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/szc7cbjs';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})(); 8 | -------------------------------------------------------------------------------- /static/js/operators-redirects.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const avsBaseURL = '/eigenlayer/operator-guides'; 3 | const currentPath = window.location.pathname; 4 | 5 | if (currentPath.includes(avsBaseURL)) { 6 | const newPath = currentPath.replace(avsBaseURL, '/operators/operator-guides'); 7 | window.location.href = window.location.origin + newPath; 8 | } 9 | })(); -------------------------------------------------------------------------------- /static/js/restakers-redirects.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const avsBaseURL = '/eigenlayer/restaking-guides'; 3 | const currentPath = window.location.pathname; 4 | 5 | if (currentPath.includes(avsBaseURL)) { 6 | const newPath = currentPath.replace(avsBaseURL, '/restakers/restaking-guides'); 7 | window.location.href = window.location.origin + newPath; 8 | } 9 | })(); -------------------------------------------------------------------------------- /static/js/userback.js: -------------------------------------------------------------------------------- 1 | window.Userback = window.Userback || {}; 2 | Userback.access_token = 'A-punLdUrqzlaudld0XR5gHVAi2'; 3 | 4 | (function(d) { 5 | var s = d.createElement('script');s.async = true;s.src = 'https://static.userback.io/widget/v1.js';(d.head || d.body).appendChild(s); 6 | })(document); 7 | 8 | -------------------------------------------------------------------------------- /static/pdf/EIGEN_Token_Whitepaper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/pdf/EIGEN_Token_Whitepaper.pdf -------------------------------------------------------------------------------- /static/pdf/EigenLayer_WhitePaper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Layr-Labs/eigenlayer-docs/b265bd95169a06c4b61cefe452717a335a50a21b/static/pdf/EigenLayer_WhitePaper.pdf -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // This file is not used in compilation. It is here just for a nice editor experience. 3 | "extends": "@docusaurus/tsconfig", 4 | "compilerOptions": { 5 | "baseUrl": "." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "env": { 4 | "YARN_VERSION": "1.22.22" 5 | } 6 | } 7 | } --------------------------------------------------------------------------------