Skip to content

Commit

Permalink
Merge branch 'dev' into feat/ServiceManagerBase.getRestakeableStrategies
Browse files Browse the repository at this point in the history
  • Loading branch information
MegaRedHand committed Feb 12, 2025
2 parents cfcd820 + dd1cd5b commit a8b84d3
Show file tree
Hide file tree
Showing 13 changed files with 162 additions and 149 deletions.
1 change: 0 additions & 1 deletion .github/workflows/bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ jobs:
filters: |
contracts:
- 'contracts/lib/**'
- 'contracts/script/**'
- 'contracts/src/**'
bindings:
- 'contracts/bindings/**'
Expand Down
55 changes: 36 additions & 19 deletions chainio/clients/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,15 @@ import (
)

type BuildAllConfig struct {
EthHttpUrl string
EthWsUrl string
RegistryCoordinatorAddr string
OperatorStateRetrieverAddr string
AvsName string
PromMetricsIpPortAddress string
EthHttpUrl string
EthWsUrl string
AvsName string
PromMetricsIpPortAddress string

RegistryCoordinatorAddr string
OperatorStateRetrieverAddr string
RewardsCoordinatorAddress string
PermissionControllerAddress string

/// The address of the ServiceManager contract.
ServiceManagerAddress string
Expand Down Expand Up @@ -196,12 +199,20 @@ func BuildAll(
return nil, utils.WrapError("Failed to create AVS Registry Reader and Writer", err)
}

elcontractsCfg := elcontracts.Config{
DelegationManagerAddress: avsRegistryContractBindings.DelegationManagerAddr,
AvsDirectoryAddress: avsRegistryContractBindings.AvsDirectoryAddr,
}
if config.RewardsCoordinatorAddress != "" {
elcontractsCfg.RewardsCoordinatorAddress = gethcommon.HexToAddress(config.RewardsCoordinatorAddress)
}
if config.PermissionControllerAddress != "" {
elcontractsCfg.PermissionControllerAddress = gethcommon.HexToAddress(config.PermissionControllerAddress)
}

// creating EL clients: Reader, Writer and EigenLayer Contract Bindings
elChainReader, elChainWriter, elContractBindings, err := elcontracts.BuildClients(
elcontracts.Config{
DelegationManagerAddress: avsRegistryContractBindings.DelegationManagerAddr,
AvsDirectoryAddress: avsRegistryContractBindings.AvsDirectoryAddr,
},
elcontractsCfg,
ethHttpClient,
txMgr,
logger,
Expand Down Expand Up @@ -244,24 +255,30 @@ func (config *BuildAllConfig) validate(logger logging.Logger) error {
logger.Error("BuildAllConfig.validate: Missing eth ws url")
return fmt.Errorf("BuildAllConfig.validate: Missing eth ws url")
}
if config.AvsName == "" {
logger.Error("BuildAllConfig.validate: Missing avs name")
return fmt.Errorf("BuildAllConfig.validate: Missing avs name")
}
if config.PromMetricsIpPortAddress == "" {
logger.Error("BuildAllConfig.validate: Missing prometheus metrics ip port address")
return fmt.Errorf("BuildAllConfig.validate: Missing prometheus metrics ip port address")
}
if config.RegistryCoordinatorAddr == "" {
logger.Error("BuildAllConfig.validate: Missing bls registry coordinator address")
return fmt.Errorf("BuildAllConfig.validate: Missing bls registry coordinator address")
}
if config.ServiceManagerAddress == "" {
logger.Info("BuildAllConfig.validate: Missing optional service manager address")
}
if config.OperatorStateRetrieverAddr == "" {
logger.Error("BuildAllConfig.validate: Missing bls operator state retriever address")
return fmt.Errorf("BuildAllConfig.validate: Missing bls operator state retriever address")
}
if config.AvsName == "" {
logger.Error("BuildAllConfig.validate: Missing avs name")
return fmt.Errorf("BuildAllConfig.validate: Missing avs name")
if config.RewardsCoordinatorAddress == "" {
logger.Info("BuildAllConfig.validate: Missing optional rewards coordinator address")
}
if config.PromMetricsIpPortAddress == "" {
logger.Error("BuildAllConfig.validate: Missing prometheus metrics ip port address")
return fmt.Errorf("BuildAllConfig.validate: Missing prometheus metrics ip port address")
if config.PermissionControllerAddress == "" {
logger.Info("BuildAllConfig.validate: Missing optional permission controller address")
}
if config.ServiceManagerAddress == "" {
logger.Info("BuildAllConfig.validate: Missing optional service manager address")
}
return nil
}
4 changes: 2 additions & 2 deletions chainio/clients/elcontracts/bindings.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ func NewBindingsFromConfig(
}
}

if isZeroAddress(cfg.PermissionsControllerAddress) {
if isZeroAddress(cfg.PermissionControllerAddress) {
logger.Debug("PermissionController address not provided, the calls to the contract will not work")
} else {
permissionController, err = permissioncontroller.NewContractPermissionController(
cfg.PermissionsControllerAddress,
cfg.PermissionControllerAddress,
client,
)
if err != nil {
Expand Down
8 changes: 4 additions & 4 deletions chainio/clients/elcontracts/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ import (
)

type Config struct {
DelegationManagerAddress gethcommon.Address
AvsDirectoryAddress gethcommon.Address
RewardsCoordinatorAddress gethcommon.Address
PermissionsControllerAddress gethcommon.Address
DelegationManagerAddress gethcommon.Address
AvsDirectoryAddress gethcommon.Address
RewardsCoordinatorAddress gethcommon.Address
PermissionControllerAddress gethcommon.Address
}

type ChainReader struct {
Expand Down
16 changes: 7 additions & 9 deletions chainio/clients/elcontracts/reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ func TestCheckClaim(t *testing.T) {
}

func TestGetAllocatableMagnitudeAndGetMaxMagnitudes(t *testing.T) {
// Without changes, Allocable magnitude is max magnitude
// Without changes, Allocatable magnitude is max magnitude

// Test setup
ctx := context.Background()
Expand Down Expand Up @@ -601,10 +601,9 @@ func TestAdminFunctions(t *testing.T) {
anvilHttpEndpoint, err := anvilC.Endpoint(context.Background(), "http")
assert.NoError(t, err)

permissionControllerAddr := common.HexToAddress(testutils.PERMISSION_CONTROLLER_ADDRESS)
config := elcontracts.Config{
PermissionsControllerAddress: permissionControllerAddr,
}
contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)

config := elcontracts.Config{PermissionControllerAddress: contractAddrs.PermissionController}

operatorAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS)
privateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY
Expand Down Expand Up @@ -690,10 +689,9 @@ func TestAppointeesFunctions(t *testing.T) {
anvilHttpEndpoint, err := anvilC.Endpoint(context.Background(), "http")
assert.NoError(t, err)

permissionControllerAddr := common.HexToAddress(testutils.PERMISSION_CONTROLLER_ADDRESS)
config := elcontracts.Config{
PermissionsControllerAddress: permissionControllerAddr,
}
contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)

config := elcontracts.Config{PermissionControllerAddress: contractAddrs.PermissionController}

chainReader, err := testclients.NewTestChainReaderFromConfig(anvilHttpEndpoint, config)
assert.NoError(t, err)
Expand Down
22 changes: 8 additions & 14 deletions chainio/clients/elcontracts/writer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -696,12 +696,11 @@ func TestSetAndRemovePermission(t *testing.T) {
anvilHttpEndpoint, err := anvilC.Endpoint(context.Background(), "http")
require.NoError(t, err)
contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)
permissionControllerAddr := common.HexToAddress(testutils.PERMISSION_CONTROLLER_ADDRESS)

privateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY
config := elcontracts.Config{
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionsControllerAddress: permissionControllerAddr,
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionControllerAddress: contractAddrs.PermissionController,
}
chainWriter, err := testclients.NewTestChainWriterFromConfig(anvilHttpEndpoint, privateKeyHex, config)
require.NoError(t, err)
Expand Down Expand Up @@ -942,13 +941,11 @@ func TestAddAndRemovePendingAdmin(t *testing.T) {
require.NoError(t, err)
contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)

permissionControllerAddr := common.HexToAddress(testutils.PERMISSION_CONTROLLER_ADDRESS)

operatorAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS)
privateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY
config := elcontracts.Config{
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionsControllerAddress: permissionControllerAddr,
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionControllerAddress: contractAddrs.PermissionController,
}
chainWriter, err := testclients.NewTestChainWriterFromConfig(anvilHttpEndpoint, privateKeyHex, config)
require.NoError(t, err)
Expand Down Expand Up @@ -1007,13 +1004,12 @@ func TestAcceptAdmin(t *testing.T) {
anvilHttpEndpoint, err := anvilC.Endpoint(context.Background(), "http")
require.NoError(t, err)
contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)
permissionControllerAddr := common.HexToAddress(testutils.PERMISSION_CONTROLLER_ADDRESS)

accountAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS)
accountPrivateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY
config := elcontracts.Config{
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionsControllerAddress: permissionControllerAddr,
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionControllerAddress: contractAddrs.PermissionController,
}
accountChainWriter, err := testclients.NewTestChainWriterFromConfig(anvilHttpEndpoint, accountPrivateKeyHex, config)
require.NoError(t, err)
Expand Down Expand Up @@ -1068,13 +1064,11 @@ func TestRemoveAdmin(t *testing.T) {
require.NoError(t, err)
contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)

permissionControllerAddr := common.HexToAddress(testutils.PERMISSION_CONTROLLER_ADDRESS)

accountAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS)
accountPrivateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY
config := elcontracts.Config{
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionsControllerAddress: permissionControllerAddr,
DelegationManagerAddress: contractAddrs.DelegationManager,
PermissionControllerAddress: contractAddrs.PermissionController,
}
accountChainWriter, err := testclients.NewTestChainWriterFromConfig(anvilHttpEndpoint, accountPrivateKeyHex, config)
require.NoError(t, err)
Expand Down
2 changes: 1 addition & 1 deletion contracts/anvil/contracts-deployed-anvil-state.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions contracts/script/DeployMockAvsRegistries.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -215,5 +215,6 @@ contract DeployMockAvsRegistries is Script, ConfigsReadWriter, EigenlayerContrac
registry.registerContract("delegationManager", address(eigen.delegationManager));
registry.registerContract("strategyManager", address(eigen.strategyManager));
registry.registerContract("rewardsCoordinator", address(eigen.rewardsCoordinator));
registry.registerContract("permissionController", address(eigen.permissionController));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"addresses": {
"erc20mock": "0xDC11f7E700A4c898AE5CAddB1082cFfa76512aDD",
"erc20mockstrategy": "0x36b58F5C1969B7b6591D752ea6F5486D069010AB"
"erc20mock": "0x51A1ceB83B83F1985a81C295d1fF28Afef186E02",
"erc20mockstrategy": "0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7"
}
}
37 changes: 19 additions & 18 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
module github.com/Layr-Labs/eigensdk-go

go 1.21.13
go 1.22.0

toolchain go1.22.5

require (
github.com/aws/aws-sdk-go-v2/credentials v1.17.11
github.com/consensys/gnark-crypto v0.12.1
github.com/ethereum/go-ethereum v1.14.0
github.com/consensys/gnark-crypto v0.14.0
github.com/ethereum/go-ethereum v1.15.0
github.com/google/uuid v1.6.0
github.com/lmittmann/tint v1.0.4
github.com/prometheus/client_golang v1.19.0
Expand All @@ -28,7 +30,9 @@ require (
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect
github.com/aws/smithy-go v1.20.2 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/ethereum/go-verkle v0.2.2 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
Expand All @@ -43,26 +47,25 @@ require (
require (
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/Microsoft/hcsshim v0.11.4 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
github.com/aws/aws-sdk-go-v2 v1.26.1
github.com/aws/aws-sdk-go-v2/config v1.27.11
github.com/aws/aws-sdk-go-v2/service/kms v1.31.0
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.6
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.10.0 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
github.com/bits-and-blooms/bitset v1.17.0 // indirect
github.com/cenkalti/backoff/v4 v4.3.0
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/consensys/bavard v0.1.22 // indirect
github.com/containerd/containerd v1.7.12 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/cpuguy83/dockercfg v0.3.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/docker/docker v25.0.6+incompatible // indirect
github.com/docker/go-connections v0.5.0 // indirect
Expand All @@ -74,7 +77,7 @@ require (
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/golang/protobuf v1.5.4 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/holiman/uint256 v1.2.4 // indirect
github.com/holiman/uint256 v1.3.2 // indirect
github.com/klauspost/compress v1.16.0 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
Expand All @@ -96,20 +99,18 @@ require (
github.com/shirou/gopsutil/v3 v3.23.12 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/supranational/blst v0.3.11 // indirect
github.com/supranational/blst v0.3.13 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
golang.org/x/mod v0.17.0 // indirect
golang.org/x/sync v0.7.0
golang.org/x/sys v0.28.0 // indirect
golang.org/x/tools v0.20.0 // indirect
golang.org/x/sync v0.10.0
golang.org/x/sys v0.29.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
google.golang.org/grpc v1.58.3 // indirect
google.golang.org/protobuf v1.33.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
)
Loading

0 comments on commit a8b84d3

Please sign in to comment.