Skip to content

Commit

Permalink
Update to mainnet rewards v0.4.3 (#407)
Browse files Browse the repository at this point in the history
Co-authored-by: tomasarrachea <[email protected]>
pablodeymo and TomasArrachea authored Dec 18, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 648c118 commit c559c41
Showing 30 changed files with 2,221 additions and 3,568 deletions.
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[submodule "contracts/lib/eigenlayer-middleware"]
path = contracts/lib/eigenlayer-middleware
url = [email protected]:Layr-Labs/eigenlayer-middleware.git
commit = 512ce7326f35e8060b9d46e23f9c159c0000b546
[submodule "contracts/lib/forge-std"]
path = contracts/lib/forge-std
url = [email protected]:foundry-rs/forge-std
10 changes: 3 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
@@ -59,11 +59,11 @@ lint: ## runs all linters

___BINDINGS___: ##

core_default := "DelegationManager IRewardsCoordinator ISlasher StrategyManager EigenPod EigenPodManager IStrategy IAVSDirectory"
core_default := "DelegationManager IRewardsCoordinator ISlasher StrategyManager EigenPod EigenPodManager IStrategy IAVSDirectory IEigenPod IEigenPodManager"
core_location := "./lib/eigenlayer-middleware/lib/eigenlayer-contracts"
core_bindings_location := "../../../../bindings"

middleware_default := "RegistryCoordinator IndexRegistry OperatorStateRetriever StakeRegistry BLSApkRegistry IBLSSignatureChecker ServiceManagerBase IERC20"
middleware_default := "RegistryCoordinator IndexRegistry OperatorStateRetriever StakeRegistry BLSApkRegistry IBLSSignatureChecker ServiceManagerBase IERC20 ERC20"
middleware_location := "./lib/eigenlayer-middleware"
middleware_bindings_location := "../../bindings"

@@ -107,13 +107,9 @@ else
cd contracts && ./generate-bindings.sh $(sdk_location) $(sdk_default) $(sdk_bindings_location)
endif

.PHONY: eigenpod-bindings
eigenpod-bindings: ## generates contract bindings for eigenpod
cd chainio/clients/eigenpod && ./generate.sh

.PHONY: bindings
bindings: ## generates all contract bindings
rm -rf bindings/* && make core-bindings middleware-bindings sdk-bindings eigenpod-bindings
rm -rf bindings/* && make core-bindings middleware-bindings sdk-bindings


___CONTRACTS___: ##
36 changes: 18 additions & 18 deletions chainio/clients/eigenpod/bindings.go
Original file line number Diff line number Diff line change
@@ -1,84 +1,84 @@
package eigenpod

import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eigenpod/bindings"
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"

ieigenpod "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IEigenPod"
ieigenpodmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IEigenPodManager"
"github.com/ethereum/go-ethereum/common"
)

type ContractBindings struct {
Address common.Address
*bindings.IEigenPod
*ieigenpod.ContractIEigenPod
}

type ContractCallerBindings struct {
Address common.Address
*bindings.IEigenPodCaller
*ieigenpod.ContractIEigenPodCaller
}

type ManagerContractBindings struct {
Address common.Address
*bindings.IEigenPodManager
*ieigenpodmanager.ContractIEigenPodManager
}

type ManagerContractCallerBindings struct {
Address common.Address
*bindings.IEigenPodManagerCaller
*ieigenpodmanager.ContractIEigenPodManagerCaller
}

func NewContractBindings(
address common.Address,
ethClient eth.HttpBackend,
) (*ContractBindings, error) {
pod, err := bindings.NewIEigenPod(address, ethClient)
pod, err := ieigenpod.NewContractIEigenPod(address, ethClient)
if err != nil {
return nil, err
}
return &ContractBindings{
Address: address,
IEigenPod: pod,
Address: address,
ContractIEigenPod: pod,
}, nil
}

func NewContractCallerBindings(
address common.Address,
ethClient eth.HttpBackend,
) (*ContractCallerBindings, error) {
pod, err := bindings.NewIEigenPodCaller(address, ethClient)
pod, err := ieigenpod.NewContractIEigenPodCaller(address, ethClient)
if err != nil {
return nil, err
}
return &ContractCallerBindings{
Address: address,
IEigenPodCaller: pod,
Address: address,
ContractIEigenPodCaller: pod,
}, nil
}

func NewManagerContractBindings(
address common.Address,
ethClient eth.HttpBackend,
) (*ManagerContractBindings, error) {
manager, err := bindings.NewIEigenPodManager(address, ethClient)
manager, err := ieigenpodmanager.NewContractIEigenPodManager(address, ethClient)
if err != nil {
return nil, err
}
return &ManagerContractBindings{
Address: address,
IEigenPodManager: manager,
Address: address,
ContractIEigenPodManager: manager,
}, nil
}

func NewManagerContractCallerBindings(
address common.Address,
ethClient eth.HttpBackend,
) (*ManagerContractCallerBindings, error) {
manager, err := bindings.NewIEigenPodManagerCaller(address, ethClient)
manager, err := ieigenpodmanager.NewContractIEigenPodManagerCaller(address, ethClient)
if err != nil {
return nil, err
}
return &ManagerContractCallerBindings{
Address: address,
IEigenPodManagerCaller: manager,
Address: address,
ContractIEigenPodManagerCaller: manager,
}, nil
}
8 changes: 4 additions & 4 deletions chainio/clients/eigenpod/builder.go
Original file line number Diff line number Diff line change
@@ -21,13 +21,13 @@ func BuildEigenPodClients(
}

eigenPodChainReader := newChainReader(
&eigenPodBindings.IEigenPodCaller,
&eigenPodBindings.ContractIEigenPodCaller,
client,
logger,
)

eigenPodChainWriter := newChainWriter(
eigenPodBindings.IEigenPod,
eigenPodBindings.ContractIEigenPod,
client,
logger,
txMgr,
@@ -48,13 +48,13 @@ func BuildEigenPodManagerClients(
}

eigenPodManagerChainReader := newManagerChainReader(
&eigenPodManagerBindings.IEigenPodManagerCaller,
&eigenPodManagerBindings.ContractIEigenPodManagerCaller,
client,
logger,
)

eigenPodManagerChainWriter := newManagerChainWriter(
eigenPodManagerBindings.IEigenPodManager,
eigenPodManagerBindings.ContractIEigenPodManager,
client,
logger,
txMgr,
59 changes: 0 additions & 59 deletions chainio/clients/eigenpod/generate.sh

This file was deleted.

27 changes: 14 additions & 13 deletions chainio/clients/eigenpod/reader.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package eigenpod

import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eigenpod/bindings"
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
ieigenpod "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IEigenPod"
ieigenpodmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IEigenPodManager"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/Layr-Labs/eigensdk-go/utils"

@@ -15,7 +16,7 @@ import (
type ChainReader struct {
logger logging.Logger
ethClient eth.HttpBackend
*bindings.IEigenPodCaller
*ieigenpod.ContractIEigenPodCaller
}

// ManagerChainReader is a reader for the EigenPodManager contract.
@@ -24,34 +25,34 @@ type ChainReader struct {
type ManagerChainReader struct {
logger logging.Logger
ethClient eth.HttpBackend
*bindings.IEigenPodManagerCaller
*ieigenpodmanager.ContractIEigenPodManagerCaller
}

func newChainReader(
eigenPod *bindings.IEigenPodCaller,
eigenPod *ieigenpod.ContractIEigenPodCaller,
ethClient eth.HttpBackend,
logger logging.Logger,
) *ChainReader {
logger = logger.With(logging.ComponentKey, "eigenpod/reader")

return &ChainReader{
logger: logger,
ethClient: ethClient,
IEigenPodCaller: eigenPod,
logger: logger,
ethClient: ethClient,
ContractIEigenPodCaller: eigenPod,
}
}

func newManagerChainReader(
manager *bindings.IEigenPodManagerCaller,
manager *ieigenpodmanager.ContractIEigenPodManagerCaller,
ethClient eth.HttpBackend,
logger logging.Logger,
) *ManagerChainReader {
logger = logger.With(logging.ComponentKey, "eigenpodmanager/reader")

return &ManagerChainReader{
logger: logger,
ethClient: ethClient,
IEigenPodManagerCaller: manager,
logger: logger,
ethClient: ethClient,
ContractIEigenPodManagerCaller: manager,
}
}

@@ -65,7 +66,7 @@ func NewReader(
return nil, utils.WrapError("Failed to create EigenPod contract", err)
}

return newChainReader(pod.IEigenPodCaller, ethClient, logger), nil
return newChainReader(pod.ContractIEigenPodCaller, ethClient, logger), nil
}

func NewManagerReader(
@@ -78,5 +79,5 @@ func NewManagerReader(
return nil, utils.WrapError("Failed to create EigenPodManager contract", err)
}

return newManagerChainReader(manager.IEigenPodManagerCaller, ethClient, logger), nil
return newManagerChainReader(manager.ContractIEigenPodManagerCaller, ethClient, logger), nil
}
15 changes: 8 additions & 7 deletions chainio/clients/eigenpod/writer.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package eigenpod

import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eigenpod/bindings"
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
ieigenpod "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IEigenPod"
ieigenpodmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IEigenPodManager"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/Layr-Labs/eigensdk-go/utils"

@@ -13,19 +14,19 @@ import (
type ChainWriter struct {
logger logging.Logger
ethClient eth.HttpBackend
eigenPod *bindings.IEigenPod
eigenPod *ieigenpod.ContractIEigenPod
txMgr txmgr.TxManager
}

type ManagerChainWriter struct {
logger logging.Logger
ethClient eth.HttpBackend
manager *bindings.IEigenPodManager
manager *ieigenpodmanager.ContractIEigenPodManager
txMgr txmgr.TxManager
}

func newChainWriter(
eigenPod *bindings.IEigenPod,
eigenPod *ieigenpod.ContractIEigenPod,
ethClient eth.HttpBackend,
logger logging.Logger,
txMgr txmgr.TxManager,
@@ -41,7 +42,7 @@ func newChainWriter(
}

func newManagerChainWriter(
manager *bindings.IEigenPodManager,
manager *ieigenpodmanager.ContractIEigenPodManager,
ethClient eth.HttpBackend,
logger logging.Logger,
txMgr txmgr.TxManager,
@@ -62,7 +63,7 @@ func NewWriter(
txMgr txmgr.TxManager,
logger logging.Logger,
) (*ChainWriter, error) {
pod, err := bindings.NewIEigenPod(eigenPodAddress, ethClient)
pod, err := ieigenpod.NewContractIEigenPod(eigenPodAddress, ethClient)
if err != nil {
return nil, utils.WrapError("Failed to create EigenPod contract", err)
}
@@ -76,7 +77,7 @@ func NewManagerWriter(
txMgr txmgr.TxManager,
logger logging.Logger,
) (*ManagerChainWriter, error) {
manager, err := bindings.NewIEigenPodManager(eigenPodManagerAddress, ethClient)
manager, err := ieigenpodmanager.NewContractIEigenPodManager(eigenPodManagerAddress, ethClient)
if err != nil {
return nil, utils.WrapError("Failed to create EigenPodManager contract", err)
}
6 changes: 3 additions & 3 deletions chainio/clients/elcontracts/reader.go
Original file line number Diff line number Diff line change
@@ -12,8 +12,8 @@ import (

"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
delegationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/DelegationManager"
erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ERC20"
avsdirectory "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAVSDirectory"
erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IERC20"
rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator"
slasher "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ISlasher"
strategy "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IStrategy"
@@ -176,7 +176,7 @@ func (r *ChainReader) GetStrategyAndUnderlyingToken(
func (r *ChainReader) GetStrategyAndUnderlyingERC20Token(
ctx context.Context,
strategyAddr gethcommon.Address,
) (*strategy.ContractIStrategy, erc20.ContractIERC20Methods, gethcommon.Address, error) {
) (*strategy.ContractIStrategy, erc20.ContractERC20Methods, gethcommon.Address, error) {
contractStrategy, err := strategy.NewContractIStrategy(strategyAddr, r.ethClient)
if err != nil {
return nil, nil, common.Address{}, utils.WrapError("Failed to fetch strategy contract", err)
@@ -185,7 +185,7 @@ func (r *ChainReader) GetStrategyAndUnderlyingERC20Token(
if err != nil {
return nil, nil, common.Address{}, utils.WrapError("Failed to fetch token contract", err)
}
contractUnderlyingToken, err := erc20.NewContractIERC20(underlyingTokenAddr, r.ethClient)
contractUnderlyingToken, err := erc20.NewContractERC20(underlyingTokenAddr, r.ethClient)
if err != nil {
return nil, nil, common.Address{}, utils.WrapError("Failed to fetch token contract", err)
}
4 changes: 2 additions & 2 deletions chainio/clients/elcontracts/reader_test.go
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ import (
"math/big"
"testing"

erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IERC20"
erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ERC20"
"github.com/Layr-Labs/eigensdk-go/testutils"
"github.com/Layr-Labs/eigensdk-go/testutils/testclients"
"github.com/Layr-Labs/eigensdk-go/types"
@@ -46,7 +46,7 @@ func TestChainReader(t *testing.T) {
assert.NotNil(t, strategy)
assert.NotEqual(t, common.Address{}, underlyingTokenAddr)

erc20Token, err := erc20.NewContractIERC20(underlyingTokenAddr, clients.EthHttpClient)
erc20Token, err := erc20.NewContractERC20(underlyingTokenAddr, clients.EthHttpClient)
assert.NoError(t, err)

tokenName, err := erc20Token.Name(&bind.CallOpts{})
4 changes: 2 additions & 2 deletions chainio/clients/elcontracts/writer.go
Original file line number Diff line number Diff line change
@@ -12,8 +12,8 @@ import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
delegationmanager "github.com/Layr-Labs/eigensdk-go/contracts/bindings/DelegationManager"
erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ERC20"
avsdirectory "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IAVSDirectory"
erc20 "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IERC20"
rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator"
slasher "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ISlasher"
strategy "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IStrategy"
@@ -27,7 +27,7 @@ import (
type Reader interface {
GetStrategyAndUnderlyingERC20Token(
ctx context.Context, strategyAddr gethcommon.Address,
) (*strategy.ContractIStrategy, erc20.ContractIERC20Methods, gethcommon.Address, error)
) (*strategy.ContractIStrategy, erc20.ContractERC20Methods, gethcommon.Address, error)
}

type ChainWriter struct {
2 changes: 1 addition & 1 deletion contracts/bindings/BLSApkRegistry/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/bindings/DelegationManager/binding.go

Large diffs are not rendered by default.

860 changes: 860 additions & 0 deletions contracts/bindings/ERC20/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/bindings/EigenPod/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/bindings/EigenPodManager/binding.go

Large diffs are not rendered by default.

1,154 changes: 35 additions & 1,119 deletions contracts/bindings/IAVSDirectory/binding.go

Large diffs are not rendered by default.

101 changes: 1 addition & 100 deletions contracts/bindings/IERC20/binding.go

Large diffs are not rendered by default.

Large diffs are not rendered by default.

714 changes: 257 additions & 457 deletions contracts/bindings/IRewardsCoordinator/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/bindings/IndexRegistry/binding.go

Large diffs are not rendered by default.

418 changes: 2 additions & 416 deletions contracts/bindings/MockAvsServiceManager/binding.go

Large diffs are not rendered by default.

70 changes: 2 additions & 68 deletions contracts/bindings/OperatorStateRetriever/binding.go

Large diffs are not rendered by default.

93 changes: 2 additions & 91 deletions contracts/bindings/RegistryCoordinator/binding.go

Large diffs are not rendered by default.

416 changes: 1 addition & 415 deletions contracts/bindings/ServiceManagerBase/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/bindings/StakeRegistry/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/bindings/StrategyManager/binding.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion contracts/lib/eigenlayer-middleware
Submodule eigenlayer-middleware updated 60 files
+3 −0 .gitmodules
+ audits/Dedaub - Middleware Audit - Final - Feb'24.pdf
+2 −2 docs/README.md
+1 −1 docs/ServiceManagerBase.md
+1 −1 docs/experimental/AVS-Guide.md
+0 −1 foundry.toml
+1 −0 lib/ds-test
+1 −1 lib/eigenlayer-contracts
+1 −1 lib/forge-std
+4 −8 src/BLSApkRegistry.sol
+62 −116 src/BLSSignatureChecker.sol
+0 −175 src/EjectionManager.sol
+1 −5 src/IndexRegistry.sol
+0 −33 src/OperatorStateRetriever.sol
+145 −274 src/RegistryCoordinator.sol
+1 −6 src/RegistryCoordinatorStorage.sol
+28 −252 src/ServiceManagerBase.sol
+0 −55 src/ServiceManagerBaseStorage.sol
+3 −3 src/ServiceManagerRouter.sol
+10 −22 src/StakeRegistry.sol
+3 −24 src/interfaces/IECDSAStakeRegistryEventsAndErrors.sol
+0 −55 src/interfaces/IEjectionManager.sol
+40 −16 src/interfaces/IServiceManager.sol
+0 −61 src/interfaces/IServiceManagerUI.sol
+0 −61 src/libraries/LibMergeSort.sol
+0 −27 src/libraries/SignatureCheckerLib.sol
+0 −283 src/unaudited/ECDSAServiceManagerBase.sol
+75 −204 src/unaudited/ECDSAStakeRegistry.sol
+3 −10 src/unaudited/ECDSAStakeRegistryStorage.sol
+10 −14 src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol
+0 −69 test/events/IServiceManagerBaseEvents.sol
+1 −1 test/ffi/BLSPubKeyCompendiumFFI.t.sol
+0 −68 test/harnesses/AVSDirectoryHarness.sol
+0 −5 test/integration/CoreRegistration.t.sol
+59 −135 test/integration/IntegrationDeployer.t.sol
+1 −1 test/integration/TimeMachine.t.sol
+10 −12 test/integration/User.t.sol
+52 −10 test/integration/mocks/BeaconChainOracleMock.t.sol
+3 −141 test/mocks/AVSDirectoryMock.sol
+20 −4 test/mocks/DelegationMock.sol
+0 −29 test/mocks/ECDSAServiceManagerMock.sol
+0 −14 test/mocks/ECDSAStakeRegistryMock.sol
+0 −114 test/mocks/RewardsCoordinatorMock.sol
+3 −9 test/mocks/ServiceManagerMock.sol
+147 −369 test/unit/BLSApkRegistryUnit.t.sol
+1 −1 test/unit/BitmapUtils.t.sol
+0 −186 test/unit/ECDSAServiceManager.t.sol
+14 −60 test/unit/ECDSAStakeRegistryEqualWeightUnit.t.sol
+16 −48 test/unit/ECDSAStakeRegistryPermissionedUnit.t.sol
+105 −472 test/unit/ECDSAStakeRegistryUnit.t.sol
+0 −399 test/unit/EjectionManagerUnit.t.sol
+0 −188 test/unit/LibMergeSort.t.sol
+110 −266 test/unit/OperatorStateRetrieverUnit.t.sol
+0 −200 test/unit/RegistryCoordinatorMigration.t.sol
+0 −56 test/unit/RegistryCoordinatorUnit.t.sol
+0 −533 test/unit/ServiceManagerBase.t.sol
+0 −347 test/unit/ServiceManagerMigration.t.sol
+0 −1 test/unit/ServiceManagerRouter.t.sol
+411 −820 test/unit/StakeRegistryUnit.t.sol
+91 −123 test/utils/MockAVSDeployer.sol
3 changes: 1 addition & 2 deletions contracts/src/MockAvsServiceManager.sol
Original file line number Diff line number Diff line change
@@ -17,7 +17,6 @@ contract MockAvsServiceManager is ServiceManagerBase, BLSSignatureChecker {
)
ServiceManagerBase(
_avsDirectory,
_rewardsCoordinator,
_registryCoordinator,
_registryCoordinator.stakeRegistry()
)
@@ -26,6 +25,6 @@ contract MockAvsServiceManager is ServiceManagerBase, BLSSignatureChecker {

function initialize(address _initialOwner) external initializer {
// TODO: setting _rewardsInitializer to be _initialOwner for now.
__ServiceManagerBase_init(_initialOwner, _initialOwner);
__ServiceManagerBase_init(_initialOwner);
}
}

0 comments on commit c559c41

Please sign in to comment.