Skip to content

Commit

Permalink
fix: add claimer address flag when claimer is not earner for claim me…
Browse files Browse the repository at this point in the history
…thod (#201)
  • Loading branch information
shrimalmadhur committed Aug 27, 2024
1 parent e140239 commit 2b1c6e6
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 10 deletions.
11 changes: 8 additions & 3 deletions pkg/internal/common/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,11 +419,16 @@ func IsEmptyString(s string) bool {

func GetLogger(cCtx *cli.Context) eigensdkLogger.Logger {
verbose := cCtx.Bool(flags.VerboseFlag.Name)
logLevel := slog.LevelInfo
loggerOptions := &eigensdkLogger.SLoggerOptions{
Level: slog.LevelInfo,
}
if verbose {
logLevel = slog.LevelDebug
loggerOptions = &eigensdkLogger.SLoggerOptions{
Level: slog.LevelDebug,
AddSource: true,
}
}
logger := eigensdkLogger.NewTextSLogger(os.Stdout, &eigensdkLogger.SLoggerOptions{Level: logLevel})
logger := eigensdkLogger.NewTextSLogger(os.Stdout, loggerOptions)
return logger
}

Expand Down
5 changes: 3 additions & 2 deletions pkg/rewards/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ USAGE:

OPTIONS:
--broadcast, -b Use this flag to broadcast the transaction (default: false) [$BROADCAST]
--claim-timestamp value, -c value Specify the timestamp. Only 'latest' and 'latest_active' are supported (default: "latest") [$CLAIM_TIMESTAMP]
--claim-timestamp value, -c value Specify the timestamp. Only 'latest' and 'latest_active' are supported. 'latest' can be an inactive root which you can't claim yet. (default: "latest_active") [$CLAIM_TIMESTAMP]
--claimer-address value, -a value Address of the claimer [$REWARDS_CLAIMER_ADDRESS]
--earner-address value, --ea value Address of the earner [$REWARDS_EARNER_ADDRESS]
--ecdsa-private-key value, -e value ECDSA private key hex to send transaction [$ECDSA_PRIVATE_KEY]
--environment value, --env value Environment to use. Currently supports 'preprod' ,'testnet' and 'prod'. If not provided, it will be inferred based on network [$ENVIRONMENT]
Expand Down Expand Up @@ -78,7 +79,7 @@ DESCRIPTION:
OPTIONS:
--broadcast, -b Use this flag to broadcast the transaction (default: false) [$BROADCAST]
--claimer-address value, -a value Address of the claimer [$NODE_OPERATOR_CLAIMER_ADDRESS]
--claimer-address value, -a value Address of the claimer [$REWARDS_CLAIMER_ADDRESS]
--earner-address value, --ea value Address of the earner [$REWARDS_EARNER_ADDRESS]
--ecdsa-private-key value, -e value ECDSA private key hex to send transaction [$ECDSA_PRIVATE_KEY]
--eth-rpc-url value, -r value URL of the Ethereum RPC [$ETH_RPC_URL]
Expand Down
19 changes: 16 additions & 3 deletions pkg/rewards/claim.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ type ClaimConfig struct {
RPCUrl string
EarnerAddress gethcommon.Address
RecipientAddress gethcommon.Address
ClaimerAddress gethcommon.Address
Output string
OutputType string
Broadcast bool
Expand Down Expand Up @@ -78,6 +79,7 @@ func getClaimFlags() []cli.Flag {
&EnvironmentFlag,
&RecipientAddressFlag,
&TokenAddressesFlag,
&ClaimerAddressFlag,
&RewardsCoordinatorAddressFlag,
&ClaimTimestampFlag,
&ProofStoreBaseURLFlag,
Expand Down Expand Up @@ -161,7 +163,7 @@ func Claim(cCtx *cli.Context, p utils.Prompter) error {
logger.Info("Broadcasting claim...")
keyWallet, sender, err := common.GetWallet(
*config.SignerConfig,
config.EarnerAddress.String(),
config.ClaimerAddress.String(),
ethClient,
p,
*config.ChainID,
Expand Down Expand Up @@ -194,7 +196,7 @@ func Claim(cCtx *cli.Context, p utils.Prompter) error {
logger.Infof("Claim transaction submitted successfully")
common.PrintTransactionInfo(receipt.TxHash.String(), config.ChainID)
} else {
noSendTxOpts := common.GetNoSendTxOpts(config.EarnerAddress)
noSendTxOpts := common.GetNoSendTxOpts(config.ClaimerAddress)
_, _, contractBindings, err := elcontracts.BuildClients(elcontracts.Config{
RewardsCoordinatorAddress: config.RewardsCoordinatorAddress,
}, ethClient, nil, logger, nil)
Expand All @@ -204,7 +206,7 @@ func Claim(cCtx *cli.Context, p utils.Prompter) error {

unsignedTx, err := contractBindings.RewardsCoordinator.ProcessClaim(noSendTxOpts, elClaim, config.RecipientAddress)
if err != nil {
return err
return eigenSdkUtils.WrapError("failed to create unsigned tx", err)
}
if config.OutputType == string(common.OutputType_Calldata) {
calldataHex := gethcommon.Bytes2Hex(unsignedTx.Data())
Expand Down Expand Up @@ -345,6 +347,16 @@ func readAndValidateClaimConfig(cCtx *cli.Context, logger logging.Logger) (*Clai
}
logger.Infof("Using rewards recipient address: %s", recipientAddress.String())

claimerAddress := gethcommon.HexToAddress(cCtx.String(ClaimerAddressFlag.Name))
if claimerAddress == utils.ZeroAddress {
logger.Infof(
"Claimer address not provided, using earner address (%s) as claimer address",
earnerAddress.String(),
)
claimerAddress = earnerAddress
}
logger.Infof("Using rewards claimer address: %s", claimerAddress.String())

chainID := utils.NetworkNameToChainId(network)
logger.Debugf("Using chain ID: %s", chainID.String())

Expand Down Expand Up @@ -394,6 +406,7 @@ func readAndValidateClaimConfig(cCtx *cli.Context, logger logging.Logger) (*Clai
RecipientAddress: recipientAddress,
SignerConfig: signerConfig,
ClaimTimestamp: claimTimestamp,
ClaimerAddress: claimerAddress,
}, nil
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/rewards/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ var (
Name: "claimer-address",
Aliases: []string{"a"},
Usage: "Address of the claimer",
Required: true,
EnvVars: []string{"NODE_OPERATOR_CLAIMER_ADDRESS"},
Required: false,
EnvVars: []string{"REWARDS_CLAIMER_ADDRESS"},
}

EarnerAddressFlag = cli.StringFlag{
Expand Down
8 changes: 8 additions & 0 deletions pkg/rewards/setclaimer.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,10 @@ 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(),
Expand Down Expand Up @@ -191,6 +195,10 @@ func readAndValidateSetClaimerConfig(cCtx *cli.Context, logger logging.Logger) (
earnerAddress := gethcommon.HexToAddress(cCtx.String(EarnerAddressFlag.Name))
broadcast := cCtx.Bool(flags.BroadcastFlag.Name)
claimerAddress := cCtx.String(ClaimerAddressFlag.Name)
if common.IsEmptyString(claimerAddress) {
return nil, fmt.Errorf("claimer address is required")
}

rewardsCoordinatorAddress := cCtx.String(RewardsCoordinatorAddressFlag.Name)
var err error
if common.IsEmptyString(rewardsCoordinatorAddress) {
Expand Down

0 comments on commit 2b1c6e6

Please sign in to comment.