Giter VIP home page Giter VIP logo

eigenlayer-fundmanager's Introduction

EigenLayer FundManager

  • On-chain Managed Fund for the EigenLayer delegators and liquid staked ETH restaking.
  • On-chain billing and customer rewards management.
  • Auto-compounding and automatic rewards withdrawal.

values we can offer

  • ๐Ÿ‘ stacking to EigenPod, and then delegate to EigenLayer Operators
  • ๐Ÿ‘ restacking of liquid-staked ETH to EigenLayer Operators
  • ๐Ÿ‘ automatic rewards withdrawal in the token of customer choice (USDC)
  • ๐Ÿ‘ automatic rewards compounding (reinvesting)
  • ๐Ÿ‘ save on gas fees
  • ๐Ÿ‘ ERC4626 Vault compatible with beffy.com, yearn.fi, and other yielding pools aggregators

My Medium Post with Findings about EigenLayer

Demo

Youtube

Live Demo @ Holesky

Contract System Desgin

Multichain System Design

Technologies Used

  • MaterializeCSS
  • Ethers.js
  • Foundry
  • OpenZeppelin

Dev

Environment

  1. Install foundry
curl -L https://foundry.paradigm.xyz | bash
  1. Pull repo and submodules git submodule update --init --recursive

  2. Go to contracts and run cd contracts; forge install; forge bulid or forge test

How to deploy contract

  1. cd contracts
  2. Copy .env.example to .env and set values
  3. Run deployment scripts
./bin/run-script --verify script/ExchangeDeploy.sol
./bin/run-script --verify script/VaultDeploy.sol
  1. Add liqudity to exchange. It transfer RewardsTokens and ETHx to the Exchange liqudity pool. This pool will be used to swap rewards tokens into the liqudity tokens for auto-reinvesting...
./bin/run-script -vvv  ./script/ExchangeAddLiqudity.sol
  1. Harvest rewards -> autocompound
./bin/run-script ./script/VaultHarvest.sol

Web

  1. cd webui && python3 -m http.server
  2. Open localhost:8000

Useful information

  • What is the EigenLayer Pod? According to the context provided, an EigenPod is a smart contract managed by users, designed to facilitate the EigenLayer protocol in monitoring and managing balance and withdrawal statuses. Here are some key points about EigenPods:

    • You can repoint any number of validators to a single EigenPod
    • An Ethereum address can only deploy a single EigenPod
    • The address that deploys an EigenPod becomes the owner of the contract and gains permission for restaking and withdrawal operations
    • Ownership of an EigenPod cannot be transferred
    • To create an EigenPod, you need to:
      • Open the EigenLayer App at https://app.eigenlayer.xyz/ and connect your Web3 wallet, making sure you are connected to Ethereum mainnet
      • If successful, you should receive a confirmation and the EigenPod Address will be displayed So in summary, an EigenPod is a user-controlled smart contract that acts as the interface between a user's validators and the EigenLayer protocol, allowing the user to manage their staking balance and withdrawals within the EigenLayer ecosystem [3]. It is a key component for participating in EigenLayer's restaking and delegation features.
  • How to get testnet ETH and stETH?

eigenlayer-fundmanager's People

Contributors

c3duan avatar dzianisv avatar shreifabdallah avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

eigenlayer-fundmanager's Issues

`revert: ERC20: transfer amount exceeds balance`

Deployment script

Stake function implementation


Traces:
  [366904] โ†’ new TestMyOperator@0x5b73C5498c1E3b4dbA84de0F1833c4a029d90519
    โ””โ”€ โ† [Return] 1722 bytes of code

  [98] TestMyOperator::setUp()
    โ””โ”€ โ† [Stop] 

  [122063] TestMyOperator::run()
    โ”œโ”€ [0] VM::envAddress("EIGEN_LAYER_CONTRACTS_ADDRESS") [staticcall]
    โ”‚   โ””โ”€ โ† [Return] <env var value>
    โ”œโ”€ [0] VM::envAddress("MY_OPERATOR_ADDRESS") [staticcall]
    โ”‚   โ””โ”€ โ† [Return] <env var value>
    โ”œโ”€ [10627] 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859::symbol() [staticcall]
    โ”‚   โ”œโ”€ [3305] 0x20659EE2730FE4Ea0eE91821fc2eE42B193f8F76::symbol() [delegatecall]
    โ”‚   โ”‚   โ””โ”€ โ† [Return] "ETHx"
    โ”‚   โ””โ”€ โ† [Return] "ETHx"
    โ”œโ”€ [3446] 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859::balanceOf(0x3336A950Ebd1f1B43d32290aE88b2F3768Ab155A) [staticcall]
    โ”‚   โ”œโ”€ [2627] 0x20659EE2730FE4Ea0eE91821fc2eE42B193f8F76::balanceOf(0x3336A950Ebd1f1B43d32290aE88b2F3768Ab155A) [delegatecall]
    โ”‚   โ”‚   โ””โ”€ โ† [Return] 10999907636462063358 [1.099e19]
    โ”‚   โ””โ”€ โ† [Return] 10999907636462063358 [1.099e19]
    โ”œโ”€ [0] console::log("ETHx", 10999907636462063358 [1.099e19]) [staticcall]
    โ”‚   โ””โ”€ โ† [Stop] 
    โ”œโ”€ [0] VM::startBroadcast()
    โ”‚   โ””โ”€ โ† [Return] 
    โ”œโ”€ [25503] 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859::approve(0xD355271063109336F301274C919e2d576Af9B9C8, 1)
    โ”‚   โ”œโ”€ [24681] 0x20659EE2730FE4Ea0eE91821fc2eE42B193f8F76::approve(0xD355271063109336F301274C919e2d576Af9B9C8, 1) [delegatecall]
    โ”‚   โ”‚   โ”œโ”€ emit Approval(owner: 0x3336A950Ebd1f1B43d32290aE88b2F3768Ab155A, spender: 0xD355271063109336F301274C919e2d576Af9B9C8, value: 1)
    โ”‚   โ”‚   โ””โ”€ โ† [Return] true
    โ”‚   โ””โ”€ โ† [Return] true
    โ”œโ”€ [68402] 0xD355271063109336F301274C919e2d576Af9B9C8::stake(0xB4F5fc289a778B80392b86fa70A7111E5bE0F859, 1, 0xE8e8611732BbF9b10AbD79d257556E7c1Bad8cd5)
    โ”‚   โ”œโ”€ [2127] 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859::symbol() [staticcall]
    โ”‚   โ”‚   โ”œโ”€ [1305] 0x20659EE2730FE4Ea0eE91821fc2eE42B193f8F76::symbol() [delegatecall]
    โ”‚   โ”‚   โ”‚   โ””โ”€ โ† [Return] "ETHx"
    โ”‚   โ”‚   โ””โ”€ โ† [Return] "ETHx"
    โ”‚   โ”œโ”€ [5136] 0xE8e8611732BbF9b10AbD79d257556E7c1Bad8cd5::strategy("ETHx") [staticcall]
    โ”‚   โ”‚   โ””โ”€ โ† [Return] 0x31B6F59e1627cEfC9fA174aD03859fC337666af7
    โ”‚   โ”œโ”€ [168] 0xE8e8611732BbF9b10AbD79d257556E7c1Bad8cd5::strategyManager() [staticcall]
    โ”‚   โ”‚   โ””โ”€ โ† [Return] 0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6
    โ”‚   โ”œโ”€ [25503] 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859::approve(0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6, 1)
    โ”‚   โ”‚   โ”œโ”€ [24681] 0x20659EE2730FE4Ea0eE91821fc2eE42B193f8F76::approve(0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6, 1) [delegatecall]
    โ”‚   โ”‚   โ”‚   โ”œโ”€ emit Approval(owner: 0xD355271063109336F301274C919e2d576Af9B9C8, spender: 0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6, value: 1)
    โ”‚   โ”‚   โ”‚   โ””โ”€ โ† [Return] true
    โ”‚   โ”‚   โ””โ”€ โ† [Return] true
    โ”‚   โ”œโ”€ [27248] 0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6::depositIntoStrategy(0x31B6F59e1627cEfC9fA174aD03859fC337666af7, 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859, 1)
    โ”‚   โ”‚   โ”œโ”€ [19904] 0x59f766A603C53f3AC8Be43bBe158c1519b193a18::depositIntoStrategy(0x31B6F59e1627cEfC9fA174aD03859fC337666af7, 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859, 1) [delegatecall]
    โ”‚   โ”‚   โ”‚   โ”œโ”€ [8577] 0xB4F5fc289a778B80392b86fa70A7111E5bE0F859::transferFrom(0xD355271063109336F301274C919e2d576Af9B9C8, 0x31B6F59e1627cEfC9fA174aD03859fC337666af7, 1)
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€ [7733] 0x20659EE2730FE4Ea0eE91821fc2eE42B193f8F76::transferFrom(0xD355271063109336F301274C919e2d576Af9B9C8, 0x31B6F59e1627cEfC9fA174aD03859fC337666af7, 1) [delegatecall]
    โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€ emit Approval(owner: 0xD355271063109336F301274C919e2d576Af9B9C8, spender: 0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6, value: 0)
    โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€ โ† [Revert] revert: ERC20: transfer amount exceeds balance
    โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€ โ† [Revert] revert: ERC20: transfer amount exceeds balance
    โ”‚   โ”‚   โ”‚   โ””โ”€ โ† [Revert] revert: ERC20: transfer amount exceeds balance
    โ”‚   โ”‚   โ””โ”€ โ† [Revert] revert: ERC20: transfer amount exceeds balance
    โ”‚   โ””โ”€ โ† [Revert] revert: ERC20: transfer amount exceeds balance
    โ””โ”€ โ† [Revert] revert: ERC20: transfer amount exceeds balance



== Logs ==
  ETHx 10999907636462063358
Error: 
script failed: revert: ERC20: transfer amount exceeds balance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.