Skip to content

Commit 1dd031d

Browse files
fix: add caller address to opset reg/dereg (#269)
1 parent 57d967f commit 1dd031d

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

pkg/operator/deregister_operator_sets.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func deregisterAction(cCtx *cli.Context, p utils.Prompter) error {
6666
}
6767
logger.Info("Signing and broadcasting deregistration transaction")
6868
eLWriter, err := common.GetELWriter(
69-
config.operatorAddress,
69+
config.callerAddress,
7070
config.signerConfig,
7171
ethClient,
7272
elcontracts.Config{
@@ -92,7 +92,7 @@ func deregisterAction(cCtx *cli.Context, p utils.Prompter) error {
9292
}
9393
common.PrintTransactionInfo(receipt.TxHash.String(), config.chainID)
9494
} else {
95-
noSendTxOpts := common.GetNoSendTxOpts(config.operatorAddress)
95+
noSendTxOpts := common.GetNoSendTxOpts(config.callerAddress)
9696
_, _, contractBindings, err := elcontracts.BuildClients(elcontracts.Config{
9797
DelegationManagerAddress: config.delegationManagerAddress,
9898
}, ethClient, nil, logger, nil)
@@ -103,7 +103,7 @@ func deregisterAction(cCtx *cli.Context, p utils.Prompter) error {
103103
// since balance of contract can be 0, as it can be called by an EOA
104104
// to claim. So we hardcode the gas limit to 150_000 so that we can
105105
// create unsigned tx without gas limit estimation from contract bindings
106-
if common.IsSmartContractAddress(config.operatorAddress, ethClient) {
106+
if common.IsSmartContractAddress(config.callerAddress, ethClient) {
107107
// address is a smart contract
108108
noSendTxOpts.GasLimit = 150_000
109109
}
@@ -169,7 +169,12 @@ func readAndValidateDeregisterConfig(cCtx *cli.Context, logger logging.Logger) (
169169
broadcast := cCtx.Bool(flags.BroadcastFlag.Name)
170170
isSilent := cCtx.Bool(flags.SilentFlag.Name)
171171

172-
operatorAddress := gethcommon.HexToAddress(cCtx.String(flags.OperatorAddressFlag.Name))
172+
operatorAddress := cCtx.String(flags.OperatorAddressFlag.Name)
173+
callerAddress := cCtx.String(flags.CallerAddressFlag.Name)
174+
if common.IsEmptyString(callerAddress) {
175+
logger.Infof("Caller address not provided. Using operator address (%s) as caller address", operatorAddress)
176+
callerAddress = operatorAddress
177+
}
173178
avsAddress := gethcommon.HexToAddress(cCtx.String(flags.AVSAddressFlag.Name))
174179

175180
// Get signerConfig
@@ -199,7 +204,8 @@ func readAndValidateDeregisterConfig(cCtx *cli.Context, logger logging.Logger) (
199204
config := &DeregisterConfig{
200205
avsAddress: avsAddress,
201206
operatorSetIds: operatorSetIds,
202-
operatorAddress: operatorAddress,
207+
operatorAddress: gethcommon.HexToAddress(operatorAddress),
208+
callerAddress: gethcommon.HexToAddress(callerAddress),
203209
network: network,
204210
environment: environment,
205211
broadcast: broadcast,
@@ -229,6 +235,7 @@ func getDeregistrationFlags() []cli.Flag {
229235
&flags.OperatorSetIdsFlag,
230236
&flags.DelegationManagerAddressFlag,
231237
&flags.SilentFlag,
238+
&flags.CallerAddressFlag,
232239
}
233240

234241
allFlags := append(baseFlags, flags.GetSignerFlags()...)

pkg/operator/register_operator_sets.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func registerOperatorSetsAction(cCtx *cli.Context, p utils.Prompter) error {
6262
}
6363
logger.Info("Signing and broadcasting registration transaction")
6464
eLWriter, err := common.GetELWriter(
65-
config.operatorAddress,
65+
config.callerAddress,
6666
config.signerConfig,
6767
ethClient,
6868
elcontracts.Config{
@@ -87,7 +87,7 @@ func registerOperatorSetsAction(cCtx *cli.Context, p utils.Prompter) error {
8787
}
8888
common.PrintTransactionInfo(receipt.TxHash.String(), config.chainID)
8989
} else {
90-
noSendTxOpts := common.GetNoSendTxOpts(config.operatorAddress)
90+
noSendTxOpts := common.GetNoSendTxOpts(config.callerAddress)
9191
_, _, contractBindings, err := elcontracts.BuildClients(elcontracts.Config{
9292
DelegationManagerAddress: config.delegationManagerAddress,
9393
}, ethClient, nil, logger, nil)
@@ -98,7 +98,7 @@ func registerOperatorSetsAction(cCtx *cli.Context, p utils.Prompter) error {
9898
// since balance of contract can be 0, as it can be called by an EOA
9999
// to claim. So we hardcode the gas limit to 150_000 so that we can
100100
// create unsigned tx without gas limit estimation from contract bindings
101-
if common.IsSmartContractAddress(config.operatorAddress, ethClient) {
101+
if common.IsSmartContractAddress(config.callerAddress, ethClient) {
102102
// address is a smart contract
103103
noSendTxOpts.GasLimit = 150_000
104104
}
@@ -155,7 +155,12 @@ func readAndValidateRegisterOperatorSetsConfig(cCtx *cli.Context, logger logging
155155
broadcast := cCtx.Bool(flags.BroadcastFlag.Name)
156156
isSilent := cCtx.Bool(flags.SilentFlag.Name)
157157

158-
operatorAddress := gethcommon.HexToAddress(cCtx.String(flags.OperatorAddressFlag.Name))
158+
operatorAddress := cCtx.String(flags.OperatorAddressFlag.Name)
159+
callerAddress := cCtx.String(flags.CallerAddressFlag.Name)
160+
if common.IsEmptyString(callerAddress) {
161+
logger.Infof("Caller address not provided. Using operator address (%s) as caller address", operatorAddress)
162+
callerAddress = operatorAddress
163+
}
159164
avsAddress := gethcommon.HexToAddress(cCtx.String(flags.AVSAddressFlag.Name))
160165

161166
// Get signerConfig
@@ -185,7 +190,8 @@ func readAndValidateRegisterOperatorSetsConfig(cCtx *cli.Context, logger logging
185190
config := &RegisterConfig{
186191
avsAddress: avsAddress,
187192
operatorSetIds: operatorSetIds,
188-
operatorAddress: operatorAddress,
193+
operatorAddress: gethcommon.HexToAddress(operatorAddress),
194+
callerAddress: gethcommon.HexToAddress(callerAddress),
189195
network: network,
190196
environment: environment,
191197
broadcast: broadcast,
@@ -215,6 +221,7 @@ func getRegistrationFlags() []cli.Flag {
215221
&flags.OperatorSetIdsFlag,
216222
&flags.DelegationManagerAddressFlag,
217223
&flags.SilentFlag,
224+
&flags.CallerAddressFlag,
218225
}
219226

220227
allFlags := append(baseFlags, flags.GetSignerFlags()...)

pkg/operator/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type DeregisterConfig struct {
1111
avsAddress common.Address
1212
operatorSetIds []uint32
1313
operatorAddress common.Address
14+
callerAddress common.Address
1415
network string
1516
environment string
1617
broadcast bool
@@ -27,6 +28,7 @@ type RegisterConfig struct {
2728
avsAddress common.Address
2829
operatorSetIds []uint32
2930
operatorAddress common.Address
31+
callerAddress common.Address
3032
network string
3133
environment string
3234
broadcast bool

0 commit comments

Comments
 (0)