Skip to content

Commit 2697097

Browse files
operator update (Layr-Labs#9)
1 parent 5935f71 commit 2697097

File tree

3 files changed

+122
-1
lines changed

3 files changed

+122
-1
lines changed

cmd/eigenlayer/main.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,21 @@ import (
1010
)
1111

1212
func main() {
13-
var app = cli.NewApp()
13+
cli.AppHelpTemplate = fmt.Sprintf(`
14+
_______ _ _
15+
(_______|_) | |
16+
_____ _ ____ ____ ____ | | ____ _ _ ____ ____
17+
| ___) | |/ _ |/ _ ) _ \| | / _ | | | |/ _ )/ ___)
18+
| |_____| ( ( | ( (/ /| | | | |____( ( | | |_| ( (/ /| |
19+
|_______)_|\_|| |\____)_| |_|_______)_||_|\__ |\____)_|
20+
(_____| (____/
21+
%s`, cli.AppHelpTemplate)
22+
app := cli.NewApp()
1423

1524
app.Name = "eigenlayer"
1625
app.Usage = "EigenLayer CLI"
1726
app.Version = "0.1.0"
27+
app.Copyright = "(c) 2023 EigenLabs"
1828

1929
// Initialize the dependencies
2030
prompter := utils.NewPrompter()

pkg/operator.go

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ func OperatorCmd(p utils.Prompter) *cli.Command {
1515
operator.ConfigCmd(p),
1616
operator.RegisterCmd(p),
1717
operator.StatusCmd(p),
18+
operator.UpdateCmd(p),
1819
},
1920
}
2021

pkg/operator/update.go

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package operator
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/Layr-Labs/eigenlayer-cli/pkg/types"
8+
"github.com/Layr-Labs/eigenlayer-cli/pkg/utils"
9+
eigenChainio "github.com/Layr-Labs/eigensdk-go/chainio/clients"
10+
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
11+
elContracts "github.com/Layr-Labs/eigensdk-go/chainio/elcontracts"
12+
eigensdkLogger "github.com/Layr-Labs/eigensdk-go/logging"
13+
"github.com/Layr-Labs/eigensdk-go/metrics"
14+
eigensdkUtils "github.com/Layr-Labs/eigensdk-go/utils"
15+
"github.com/ethereum/go-ethereum/common"
16+
"github.com/urfave/cli/v2"
17+
)
18+
19+
func UpdateCmd(p utils.Prompter) *cli.Command {
20+
updateCmd := &cli.Command{
21+
Name: "update",
22+
Usage: "Update the operator metadata onchain",
23+
UsageText: "update <configuration-file>",
24+
Description: `
25+
Updates the operator metadata onchain which includes
26+
- metadata url
27+
- delegation approver address
28+
- earnings receiver address
29+
- staker opt out window blocks
30+
31+
Requires the same file used for registration as argument
32+
`,
33+
Action: func(cCtx *cli.Context) error {
34+
args := cCtx.Args()
35+
if args.Len() != 1 {
36+
return fmt.Errorf("%w: accepts 1 arg, received %d", ErrInvalidNumberOfArgs, args.Len())
37+
}
38+
39+
configurationFilePath := args.Get(0)
40+
var operatorCfg types.OperatorConfig
41+
err := eigensdkUtils.ReadYamlConfig(configurationFilePath, &operatorCfg)
42+
if err != nil {
43+
return err
44+
}
45+
fmt.Printf(
46+
"Operator configuration file read successfully %s %s\n",
47+
operatorCfg.Operator.Address,
48+
utils.EmojiCheckMark,
49+
)
50+
signerType, err := validateSignerType(operatorCfg)
51+
if err != nil {
52+
return err
53+
}
54+
55+
logger, err := eigensdkLogger.NewZapLogger(eigensdkLogger.Development)
56+
if err != nil {
57+
return err
58+
}
59+
60+
localSigner, err := getSigner(p, signerType, operatorCfg)
61+
if err != nil {
62+
return err
63+
}
64+
65+
ethClient, err := eth.NewClient(operatorCfg.EthRPCUrl)
66+
if err != nil {
67+
return err
68+
}
69+
70+
elContractsClient, err := eigenChainio.NewELContractsChainClient(
71+
common.HexToAddress(operatorCfg.ELSlasherAddress),
72+
common.HexToAddress(operatorCfg.BlsPublicKeyCompendiumAddress),
73+
ethClient,
74+
ethClient,
75+
logger,
76+
)
77+
if err != nil {
78+
return err
79+
}
80+
81+
noopMetrics := metrics.NewNoopMetrics()
82+
elWriter := elContracts.NewELChainWriter(
83+
elContractsClient,
84+
ethClient,
85+
localSigner,
86+
logger,
87+
noopMetrics,
88+
)
89+
90+
if err != nil {
91+
return err
92+
}
93+
receipt, err := elWriter.UpdateOperatorDetails(context.Background(), operatorCfg.Operator)
94+
if err != nil {
95+
logger.Errorf("Error while updating operator details: %s", utils.EmojiCrossMark)
96+
return err
97+
}
98+
logger.Infof(
99+
"Operator details updated at: %s %s",
100+
getTransactionLink(receipt.TxHash.String(), &operatorCfg.ChainId),
101+
utils.EmojiCheckMark,
102+
)
103+
104+
logger.Infof("Operator updated successfully %s", utils.EmojiCheckMark)
105+
return nil
106+
},
107+
}
108+
109+
return updateCmd
110+
}

0 commit comments

Comments
 (0)