Skip to content

Commit

Permalink
chore: move el writer initialization to common (#204)
Browse files Browse the repository at this point in the history
  • Loading branch information
shrimalmadhur authored Aug 27, 2024
1 parent d6ca32a commit 3a0acc1
Show file tree
Hide file tree
Showing 7 changed files with 114 additions and 110 deletions.
59 changes: 59 additions & 0 deletions pkg/internal/common/contracts.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package common

import (
"errors"
"math/big"

"github.com/Layr-Labs/eigenlayer-cli/pkg/types"
"github.com/Layr-Labs/eigenlayer-cli/pkg/utils"

"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
eigensdkLogger "github.com/Layr-Labs/eigensdk-go/logging"
eigenMetrics "github.com/Layr-Labs/eigensdk-go/metrics"
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
)

func GetELWriter(
signerAddress gethcommon.Address,
signerConfig *types.SignerConfig,
ethClient *ethclient.Client,
contractConfig elcontracts.Config,
prompter utils.Prompter,
chainId *big.Int,
logger eigensdkLogger.Logger,
) (*elcontracts.ChainWriter, error) {
if signerConfig == nil {
return nil, errors.New("signer is required for broadcasting")
}
logger.Debug("Getting Writer from config")
keyWallet, sender, err := getWallet(
*signerConfig,
signerAddress.String(),
ethClient,
prompter,
*chainId,
logger,
)
if err != nil {
return nil, eigenSdkUtils.WrapError("failed to get wallet", err)
}

txMgr := txmgr.NewSimpleTxManager(keyWallet, ethClient, logger, sender)
noopMetrics := eigenMetrics.NewNoopMetrics()
eLWriter, err := elcontracts.NewWriterFromConfig(
contractConfig,
ethClient,
logger,
noopMetrics,
txMgr,
)
if err != nil {
return nil, eigenSdkUtils.WrapError("failed to create new writer from config", err)
}

return eLWriter, nil
}
2 changes: 1 addition & 1 deletion pkg/internal/common/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func PrintTransactionInfo(txHash string, chainId *big.Int) {
}
}

func GetWallet(
func getWallet(
cfg types.SignerConfig,
signerAddress string,
ethClient *ethclient.Client,
Expand Down
29 changes: 12 additions & 17 deletions pkg/operator/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ import (

"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
elContracts "github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
eigenMetrics "github.com/Layr-Labs/eigensdk-go/metrics"
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
gethcommon "github.com/ethereum/go-ethereum/common"
Expand Down Expand Up @@ -64,27 +63,23 @@ func RegisterCmd(p utils.Prompter) *cli.Command {
return err
}

keyWallet, sender, err := common.GetWallet(
operatorCfg.SignerConfig,
operatorCfg.Operator.Address,
contractCfg := elcontracts.Config{
DelegationManagerAddress: gethcommon.HexToAddress(operatorCfg.ELDelegationManagerAddress),
AvsDirectoryAddress: gethcommon.HexToAddress(operatorCfg.ELAVSDirectoryAddress),
}

elWriter, err := common.GetELWriter(
gethcommon.HexToAddress(operatorCfg.Operator.Address),
&operatorCfg.SignerConfig,
ethClient,
contractCfg,
p,
operatorCfg.ChainId,
&operatorCfg.ChainId,
logger,
)
if err != nil {
return err
}

txMgr := txmgr.NewSimpleTxManager(keyWallet, ethClient, logger, sender)
noopMetrics := eigenMetrics.NewNoopMetrics()
contractCfg := elcontracts.Config{
DelegationManagerAddress: gethcommon.HexToAddress(operatorCfg.ELDelegationManagerAddress),
AvsDirectoryAddress: gethcommon.HexToAddress(operatorCfg.ELAVSDirectoryAddress),
}
elWriter, err := elcontracts.NewWriterFromConfig(contractCfg, ethClient, logger, noopMetrics, txMgr)
if err != nil {
return err
return eigenSdkUtils.WrapError("failed to get EL writer", err)
}

elReader, err := elContracts.NewReaderFromConfig(
Expand Down
29 changes: 12 additions & 17 deletions pkg/operator/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import (
"github.com/Layr-Labs/eigenlayer-cli/pkg/utils"

"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
eigenMetrics "github.com/Layr-Labs/eigensdk-go/metrics"
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
Expand Down Expand Up @@ -63,27 +62,23 @@ This command only updates above details. To update metadata URI, use eigenlayer
return err
}

keyWallet, sender, err := common.GetWallet(
operatorCfg.SignerConfig,
operatorCfg.Operator.Address,
contractCfg := elcontracts.Config{
DelegationManagerAddress: gethcommon.HexToAddress(operatorCfg.ELDelegationManagerAddress),
AvsDirectoryAddress: gethcommon.HexToAddress(operatorCfg.ELAVSDirectoryAddress),
}

elWriter, err := common.GetELWriter(
gethcommon.HexToAddress(operatorCfg.Operator.Address),
&operatorCfg.SignerConfig,
ethClient,
contractCfg,
p,
operatorCfg.ChainId,
&operatorCfg.ChainId,
logger,
)
if err != nil {
return err
}

txMgr := txmgr.NewSimpleTxManager(keyWallet, ethClient, logger, sender)
noopMetrics := eigenMetrics.NewNoopMetrics()
contractCfg := elcontracts.Config{
DelegationManagerAddress: gethcommon.HexToAddress(operatorCfg.ELDelegationManagerAddress),
AvsDirectoryAddress: gethcommon.HexToAddress(operatorCfg.ELAVSDirectoryAddress),
}
elWriter, err := elcontracts.NewWriterFromConfig(contractCfg, ethClient, logger, noopMetrics, txMgr)
if err != nil {
return err
return eigenSdkUtils.WrapError("failed to get EL writer", err)
}

receipt, err := elWriter.UpdateOperatorDetails(context.Background(), operatorCfg.Operator, true)
Expand Down
33 changes: 12 additions & 21 deletions pkg/operator/update_metadata_uri.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import (
"github.com/Layr-Labs/eigenlayer-cli/pkg/utils"

"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
eigenMetrics "github.com/Layr-Labs/eigensdk-go/metrics"
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
Expand Down Expand Up @@ -59,31 +58,23 @@ Requires the same file used for registration as argument
return err
}

keyWallet, sender, err := common.GetWallet(
operatorCfg.SignerConfig,
operatorCfg.Operator.Address,
ethClient,
p,
operatorCfg.ChainId,
logger,
)
if err != nil {
return err
}

txMgr := txmgr.NewSimpleTxManager(keyWallet, ethClient, logger, sender)
noopMetrics := eigenMetrics.NewNoopMetrics()
contractCfg := elcontracts.Config{
DelegationManagerAddress: gethcommon.HexToAddress(operatorCfg.ELDelegationManagerAddress),
AvsDirectoryAddress: gethcommon.HexToAddress(operatorCfg.ELAVSDirectoryAddress),
}
elWriter, err := elcontracts.NewWriterFromConfig(contractCfg, ethClient, logger, noopMetrics, txMgr)
if err != nil {
return err
}

elWriter, err := common.GetELWriter(
gethcommon.HexToAddress(operatorCfg.Operator.Address),
&operatorCfg.SignerConfig,
ethClient,
contractCfg,
p,
&operatorCfg.ChainId,
logger,
)

if err != nil {
return err
return eigenSdkUtils.WrapError("failed to get EL writer", err)
}

receipt, err := elWriter.UpdateMetadataURI(context.Background(), operatorCfg.Operator.MetadataUrl, true)
Expand Down
32 changes: 8 additions & 24 deletions pkg/rewards/claim.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,8 @@ import (
"github.com/Layr-Labs/eigenlayer-rewards-proofs/pkg/proofDataFetcher/httpProofDataFetcher"

"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator"
"github.com/Layr-Labs/eigensdk-go/logging"
eigenMetrics "github.com/Layr-Labs/eigensdk-go/metrics"
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
Expand Down Expand Up @@ -147,37 +145,23 @@ func Claim(cCtx *cli.Context, p utils.Prompter) error {
}

if config.Broadcast {
if config.SignerConfig == nil {
return errors.New("signer is required for broadcasting")
}
logger.Info("Broadcasting claim...")
keyWallet, sender, err := common.GetWallet(
*config.SignerConfig,
config.ClaimerAddress.String(),
eLWriter, err := common.GetELWriter(
config.ClaimerAddress,
config.SignerConfig,
ethClient,
p,
*config.ChainID,
logger,
)
if err != nil {
return eigenSdkUtils.WrapError("failed to get wallet", err)
}

txMgr := txmgr.NewSimpleTxManager(keyWallet, ethClient, logger, sender)
noopMetrics := eigenMetrics.NewNoopMetrics()
eLWriter, err := elcontracts.NewWriterFromConfig(
elcontracts.Config{
RewardsCoordinatorAddress: config.RewardsCoordinatorAddress,
},
ethClient,
p,
config.ChainID,
logger,
noopMetrics,
txMgr,
)

if err != nil {
return eigenSdkUtils.WrapError("failed to create new writer from config", err)
return eigenSdkUtils.WrapError("failed to get EL writer", err)
}

logger.Infof("Broadcasting claim transaction...")
receipt, err := eLWriter.ProcessClaim(ctx, elClaim, config.RecipientAddress, true)
if err != nil {
return eigenSdkUtils.WrapError("failed to process claim", err)
Expand Down
40 changes: 10 additions & 30 deletions pkg/rewards/setclaimer.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@ import (
"fmt"
"sort"

eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

"github.com/Layr-Labs/eigenlayer-cli/pkg/internal/common"
"github.com/Layr-Labs/eigenlayer-cli/pkg/internal/common/flags"
"github.com/Layr-Labs/eigenlayer-cli/pkg/telemetry"
"github.com/Layr-Labs/eigenlayer-cli/pkg/utils"

"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
"github.com/Layr-Labs/eigensdk-go/logging"
eigenMetrics "github.com/Layr-Labs/eigensdk-go/metrics"

gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"

Expand Down Expand Up @@ -116,39 +115,20 @@ func SetClaimer(cCtx *cli.Context, p utils.Prompter) error {
return nil
}

if config.SignerConfig == nil {
return fmt.Errorf("signer config is required to broadcast the transaction")
}

keyWallet, sender, err := common.GetWallet(
*config.SignerConfig,
config.EarnerAddress.Hex(),
elWriter, err := common.GetELWriter(
config.EarnerAddress,
config.SignerConfig,
ethClient,
elcontracts.Config{
RewardsCoordinatorAddress: config.RewardsCoordinatorAddress,
},
p,
*config.ChainID,
config.ChainID,
logger,
)
if err != nil {
return err
}

if sender != config.EarnerAddress {
return fmt.Errorf(
"signer address(%s) and earner addresses(%s) do not match",
sender.String(),
config.EarnerAddress.String(),
)
}

txMgr := txmgr.NewSimpleTxManager(keyWallet, ethClient, logger, sender)
noopMetrics := eigenMetrics.NewNoopMetrics()
contractCfg := elcontracts.Config{
RewardsCoordinatorAddress: config.RewardsCoordinatorAddress,
}

elWriter, err := elcontracts.NewWriterFromConfig(contractCfg, ethClient, logger, noopMetrics, txMgr)
if err != nil {
return err
return eigenSdkUtils.WrapError("failed to get EL writer", err)
}

receipt, err := elWriter.SetClaimerFor(context.Background(), config.ClaimerAddress, true)
Expand Down

0 comments on commit 3a0acc1

Please sign in to comment.