Skip to content

Commit

Permalink
add private key support
Browse files Browse the repository at this point in the history
  • Loading branch information
shrimalmadhur committed Jul 4, 2024
1 parent 53bb0a7 commit a028392
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 9 deletions.
9 changes: 8 additions & 1 deletion pkg/common/flags/general.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ var (

EarnerAddressFlag = cli.StringFlag{
Name: "earner-address",
Aliases: []string{"e"},
Aliases: []string{"ea"},
Required: true,
Usage: "Address of the earner (this is your staker/operator address)",
EnvVars: []string{"EARNER_ADDRESS"},
Expand Down Expand Up @@ -54,4 +54,11 @@ var (
Usage: "Perform a dry run. This takes precedence over the broadcast flag",
EnvVars: []string{"DRY_RUN"},
}

EcdsaPrivateKeyFlag = cli.StringFlag{
Name: "ecdsa-private-key",
Aliases: []string{"e"},
Usage: "ECDSA private key hex to send transaction",
EnvVars: []string{"ECDSA_PRIVATE_KEY"},
}
)
28 changes: 28 additions & 0 deletions pkg/common/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import (
"strings"
"time"

"github.com/urfave/cli/v2"

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

Expand All @@ -22,6 +25,7 @@ import (
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"

"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"

"github.com/fatih/color"
)
Expand Down Expand Up @@ -317,3 +321,27 @@ func validateMetadata(operatorCfg *types.OperatorConfig) error {
}
return nil
}

func GetSignerConfig(cCtx *cli.Context) (*types.SignerConfig, error) {
ecdsaPrivateKeyString := cCtx.String(flags.EcdsaPrivateKeyFlag.Name)
pathToKeyStore := cCtx.String(flags.PathToKeyStoreFlag.Name)
if len(ecdsaPrivateKeyString) != 0 {
pk, err := crypto.HexToECDSA(ecdsaPrivateKeyString)
if err != nil {
return nil, err
}
return &types.SignerConfig{
SignerType: types.PrivateKeySigner,
PrivateKey: pk,
}, nil
}

if len(pathToKeyStore) != 0 {
return &types.SignerConfig{
SignerType: types.LocalKeystoreSigner,
PrivateKeyStorePath: pathToKeyStore,
}, nil
}

return nil, fmt.Errorf("either ecdsa private key hex or path to keystore is required")
}
18 changes: 10 additions & 8 deletions pkg/rewards/claim.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ type ClaimConfig struct {
EarnerAddress gethcommon.Address
RecipientAddress gethcommon.Address
Output string
PathToKeyStore string
Broadcast bool
TokenAddresses []gethcommon.Address
RewardsCoordinatorAddress gethcommon.Address
ClaimTimestamp string
ChainID *big.Int
ProofStoreBaseURL string
Environment string
SignerConfig types.SignerConfig
}

func ClaimCmd(p utils.Prompter) *cli.Command {
Expand All @@ -64,6 +64,7 @@ func ClaimCmd(p utils.Prompter) *cli.Command {
&flags.EarnerAddressFlag,
&flags.OutputFileFlag,
&flags.PathToKeyStoreFlag,
&flags.EcdsaPrivateKeyFlag,
&flags.BroadcastFlag,
&RecipientAddressFlag,
&TokenAddressesFlag,
Expand Down Expand Up @@ -140,12 +141,8 @@ func Claim(cCtx *cli.Context, p utils.Prompter) error {
solidityClaim := claimgen.FormatProofForSolidity(accounts.Root(), claim)

if config.Broadcast {
signerSfg := types.SignerConfig{
PrivateKeyStorePath: config.PathToKeyStore,
SignerType: types.LocalKeystoreSigner,
}
keyWallet, sender, err := common.GetWallet(
signerSfg,
config.SignerConfig,
config.EarnerAddress.String(),
ethClient,
p,
Expand Down Expand Up @@ -215,7 +212,6 @@ func readAndValidateClaimConfig(cCtx *cli.Context) (*ClaimConfig, error) {
rpcUrl := cCtx.String(flags.ETHRpcUrlFlag.Name)
earnerAddress := gethcommon.HexToAddress(cCtx.String(flags.EarnerAddressFlag.Name))
output := cCtx.String(flags.OutputFileFlag.Name)
pathToKeyStore := cCtx.String(flags.PathToKeyStoreFlag.Name)
broadcast := cCtx.Bool(flags.BroadcastFlag.Name)
tokenAddresses := cCtx.String(TokenAddressesFlag.Name)
tokenAddressArray := stringToAddressArray(strings.Split(tokenAddresses, ","))
Expand Down Expand Up @@ -256,19 +252,25 @@ func readAndValidateClaimConfig(cCtx *cli.Context) (*ClaimConfig, error) {
env := utils.GetEnvironmentFromNetwork(network)
//env = "preprod"

// Get SignerConfig
signerConfig, err := common.GetSignerConfig(cCtx)
if err != nil {
return nil, err
}

return &ClaimConfig{
Network: network,
RPCUrl: rpcUrl,
EarnerAddress: earnerAddress,
Output: output,
PathToKeyStore: pathToKeyStore,
Broadcast: broadcast,
TokenAddresses: tokenAddressArray,
RewardsCoordinatorAddress: gethcommon.HexToAddress(rewardsCoordinatorAddress),
ChainID: chainID,
ProofStoreBaseURL: proofStoreBaseURL,
Environment: env,
RecipientAddress: recipientAddress,
SignerConfig: *signerConfig,
}, nil
}

Expand Down

0 comments on commit a028392

Please sign in to comment.