Skip to content

Commit 7f37efa

Browse files
authored
Updating appointee set & remove to support output parameters (#271)
Co-authored-by: Brandon Chatham <[email protected]>
1 parent 0e5a6eb commit 7f37efa

File tree

6 files changed

+66
-32
lines changed

6 files changed

+66
-32
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/Layr-Labs/eigenlayer-contracts v0.3.2-mainnet-rewards
88
github.com/Layr-Labs/eigenlayer-rewards-proofs v0.2.12
99
github.com/Layr-Labs/eigenpod-proofs-generation v0.0.14-stable.0.20240730152248-5c11a259293e
10-
github.com/Layr-Labs/eigensdk-go v0.1.14-0.20241217222530-549e0185cee6
10+
github.com/Layr-Labs/eigensdk-go v0.1.14-0.20241217234459-1dd4a5c5b30a
1111
github.com/blang/semver/v4 v4.0.0
1212
github.com/consensys/gnark-crypto v0.12.1
1313
github.com/ethereum/go-ethereum v1.14.5

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ github.com/Layr-Labs/eigenpod-proofs-generation v0.0.14-stable.0.20240730152248-
1414
github.com/Layr-Labs/eigenpod-proofs-generation v0.0.14-stable.0.20240730152248-5c11a259293e/go.mod h1:T7tYN8bTdca2pkMnz9G2+ZwXYWw5gWqQUIu4KLgC/vM=
1515
github.com/Layr-Labs/eigensdk-go v0.1.14-0.20241217222530-549e0185cee6 h1:v2SQn+Yq/HMAkv0a11NHnZXJS0K+2F4JWU0ogOV6+jg=
1616
github.com/Layr-Labs/eigensdk-go v0.1.14-0.20241217222530-549e0185cee6/go.mod h1:aYdNURUhaqeYOS+Cq12TfSdPbjFfiLaHkxPdR4Exq/s=
17+
github.com/Layr-Labs/eigensdk-go v0.1.14-0.20241217234459-1dd4a5c5b30a h1:spyS+Tp1PgVIPmAesVVRuOkC3jAZRyKXhttAieTBxmg=
18+
github.com/Layr-Labs/eigensdk-go v0.1.14-0.20241217234459-1dd4a5c5b30a/go.mod h1:aYdNURUhaqeYOS+Cq12TfSdPbjFfiLaHkxPdR4Exq/s=
1719
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
1820
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
1921
github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8=

pkg/user/appointee/remove.go

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
1313
"github.com/Layr-Labs/eigensdk-go/logging"
1414
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"
15+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
1516
gethcommon "github.com/ethereum/go-ethereum/common"
1617
gethtypes "github.com/ethereum/go-ethereum/core/types"
1718
"github.com/ethereum/go-ethereum/ethclient"
@@ -25,6 +26,7 @@ type RemoveAppointeePermissionWriter interface {
2526
request elcontracts.RemovePermissionRequest,
2627
) (*gethtypes.Receipt, error)
2728
NewRemovePermissionTx(
29+
txOpts *bind.TransactOpts,
2830
request elcontracts.RemovePermissionRequest,
2931
) (*gethtypes.Transaction, error)
3032
}
@@ -69,10 +71,27 @@ func removeAppointeePermission(
6971
if config.Broadcast {
7072
return broadcastRemoveAppointeeTx(ctx, permissionWriter, config, removePermissionRequest)
7173
}
72-
return printRemoveAppointeeResult(logger, permissionWriter, config, removePermissionRequest)
74+
return printRemoveAppointeeTx(logger, permissionWriter, config, removePermissionRequest)
7375
}
7476

75-
func printRemoveAppointeeResult(
77+
func broadcastRemoveAppointeeTx(
78+
ctx context.Context,
79+
permissionWriter RemoveAppointeePermissionWriter,
80+
config *removeConfig,
81+
request elcontracts.RemovePermissionRequest,
82+
) error {
83+
receipt, err := permissionWriter.RemovePermission(
84+
ctx,
85+
request,
86+
)
87+
if err != nil {
88+
return err
89+
}
90+
common.PrintTransactionInfo(receipt.TxHash.String(), config.ChainID)
91+
return nil
92+
}
93+
94+
func printRemoveAppointeeTx(
7695
logger logging.Logger,
7796
permissionWriter RemoveAppointeePermissionWriter,
7897
config *removeConfig,
@@ -84,10 +103,9 @@ func printRemoveAppointeeResult(
84103
}
85104
noSendTxOpts := common.GetNoSendTxOpts(config.CallerAddress)
86105
if common.IsSmartContractAddress(config.CallerAddress, ethClient) {
87-
// address is a smart contract
88106
noSendTxOpts.GasLimit = 150_000
89107
}
90-
unsignedTx, err := permissionWriter.NewRemovePermissionTx(request)
108+
unsignedTx, err := permissionWriter.NewRemovePermissionTx(noSendTxOpts, request)
91109
if err != nil {
92110
return eigenSdkUtils.WrapError("failed to create unsigned tx", err)
93111
}
@@ -109,7 +127,7 @@ func printRemoveAppointeeResult(
109127
fmt.Println()
110128
}
111129
fmt.Printf(
112-
"Appointee %s will be lose permission to target %s selector %s by account %s\n",
130+
"Appointee %s will lose permission to target %s selector %s for account %s\n",
113131
config.AppointeeAddress,
114132
config.Target,
115133
config.Selector,
@@ -123,23 +141,6 @@ func printRemoveAppointeeResult(
123141
return nil
124142
}
125143

126-
func broadcastRemoveAppointeeTx(
127-
ctx context.Context,
128-
permissionWriter RemoveAppointeePermissionWriter,
129-
config *removeConfig,
130-
request elcontracts.RemovePermissionRequest,
131-
) error {
132-
receipt, err := permissionWriter.RemovePermission(
133-
ctx,
134-
request,
135-
)
136-
if err != nil {
137-
return err
138-
}
139-
common.PrintTransactionInfo(receipt.TxHash.String(), config.ChainID)
140-
return nil
141-
}
142-
143144
func generateRemoveAppointeePermissionWriter(
144145
prompter utils.Prompter,
145146
) func(

pkg/user/appointee/remove_test.go

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"testing"
77

8+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
89
gethtypes "github.com/ethereum/go-ethereum/core/types"
910

1011
"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
@@ -16,7 +17,7 @@ import (
1617

1718
type mockRemoveAppointeePermissionWriter struct {
1819
removePermissionFunc func(ctx context.Context, request elcontracts.RemovePermissionRequest) (*gethtypes.Receipt, error)
19-
newRemovePermissionTxFunc func(request elcontracts.RemovePermissionRequest) (*gethtypes.Transaction, error)
20+
newRemovePermissionTxFunc func(txOpts *bind.TransactOpts, request elcontracts.RemovePermissionRequest) (*gethtypes.Transaction, error)
2021
}
2122

2223
func (m *mockRemoveAppointeePermissionWriter) RemovePermission(
@@ -27,9 +28,10 @@ func (m *mockRemoveAppointeePermissionWriter) RemovePermission(
2728
}
2829

2930
func (m *mockRemoveAppointeePermissionWriter) NewRemovePermissionTx(
31+
txOpts *bind.TransactOpts,
3032
request elcontracts.RemovePermissionRequest,
3133
) (*gethtypes.Transaction, error) {
32-
return m.newRemovePermissionTxFunc(request)
34+
return m.newRemovePermissionTxFunc(txOpts, request)
3335
}
3436

3537
func generateMockRemoveWriter(err error) func(logging.Logger, *removeConfig) (RemoveAppointeePermissionWriter, error) {
@@ -38,7 +40,7 @@ func generateMockRemoveWriter(err error) func(logging.Logger, *removeConfig) (Re
3840
removePermissionFunc: func(ctx context.Context, request elcontracts.RemovePermissionRequest) (*gethtypes.Receipt, error) {
3941
return &gethtypes.Receipt{}, err
4042
},
41-
newRemovePermissionTxFunc: func(request elcontracts.RemovePermissionRequest) (*gethtypes.Transaction, error) {
43+
newRemovePermissionTxFunc: func(txOpts *bind.TransactOpts, request elcontracts.RemovePermissionRequest) (*gethtypes.Transaction, error) {
4244
return &gethtypes.Transaction{}, err
4345
},
4446
}, nil
@@ -94,3 +96,28 @@ func TestRemoveCmd_GeneratorError(t *testing.T) {
9496
assert.Error(t, err)
9597
assert.Contains(t, err.Error(), expectedError)
9698
}
99+
100+
func TestRemoveCmd_RemovePermissionError(t *testing.T) {
101+
expectedError := "error removing appointee permission"
102+
app := cli.NewApp()
103+
app.Commands = []*cli.Command{
104+
RemoveCmd(generateMockRemoveWriter(errors.New(expectedError))),
105+
}
106+
107+
args := []string{
108+
"TestRemoveCmd_RemovePermissionError",
109+
"remove",
110+
"--account-address", "0x1234567890abcdef1234567890abcdef12345678",
111+
"--appointee-address", "0xabcdef1234567890abcdef1234567890abcdef12",
112+
"--target-address", "0x9876543210fedcba9876543210fedcba98765432",
113+
"--selector", "0x1A2B3C4D",
114+
"--network", "holesky",
115+
"--eth-rpc-url", "https://ethereum-holesky.publicnode.com/",
116+
"--ecdsa-private-key", "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd",
117+
"--broadcast",
118+
}
119+
120+
err := app.Run(args)
121+
assert.Error(t, err)
122+
assert.Contains(t, err.Error(), expectedError)
123+
}

pkg/user/appointee/set.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
1313
"github.com/Layr-Labs/eigensdk-go/logging"
1414
eigenSdkUtils "github.com/Layr-Labs/eigensdk-go/utils"
15+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
1516
gethcommon "github.com/ethereum/go-ethereum/common"
1617
gethtypes "github.com/ethereum/go-ethereum/core/types"
1718
"github.com/ethereum/go-ethereum/ethclient"
@@ -25,6 +26,7 @@ type SetAppointeePermissionWriter interface {
2526
request elcontracts.SetPermissionRequest,
2627
) (*gethtypes.Receipt, error)
2728
NewSetPermissionTx(
29+
txOpts *bind.TransactOpts,
2830
request elcontracts.SetPermissionRequest,
2931
) (*gethtypes.Transaction, error)
3032
}
@@ -109,11 +111,11 @@ func printSetAppointeeResults(
109111
if common.IsSmartContractAddress(config.CallerAddress, ethClient) {
110112
noSendTxOpts.GasLimit = 150_000
111113
}
112-
tx, err := permissionWriter.NewSetPermissionTx(request)
114+
115+
tx, err := permissionWriter.NewSetPermissionTx(noSendTxOpts, request)
113116
if err != nil {
114117
return eigenSdkUtils.WrapError("failed to create unsigned tx", err)
115118
}
116-
117119
if config.OutputType == string(common.OutputType_Calldata) {
118120
calldataHex := gethcommon.Bytes2Hex(tx.Data())
119121
if !common.IsEmptyString(config.OutputFile) {

pkg/user/appointee/set_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ import (
77

88
"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
99
"github.com/Layr-Labs/eigensdk-go/logging"
10+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
1011
gethtypes "github.com/ethereum/go-ethereum/core/types"
11-
"github.com/stretchr/testify/assert"
1212

13+
"github.com/stretchr/testify/assert"
1314
"github.com/urfave/cli/v2"
1415
)
1516

1617
type mockSetAppointeePermissionWriter struct {
1718
setPermissionFunc func(ctx context.Context, request elcontracts.SetPermissionRequest) (*gethtypes.Receipt, error)
18-
newSetPermissionTxFunc func(request elcontracts.SetPermissionRequest) (*gethtypes.Transaction, error)
19+
newSetPermissionTxFunc func(txOpts *bind.TransactOpts, request elcontracts.SetPermissionRequest) (*gethtypes.Transaction, error)
1920
}
2021

2122
func (m *mockSetAppointeePermissionWriter) SetPermission(
@@ -26,9 +27,10 @@ func (m *mockSetAppointeePermissionWriter) SetPermission(
2627
}
2728

2829
func (m *mockSetAppointeePermissionWriter) NewSetPermissionTx(
30+
txOpts *bind.TransactOpts,
2931
request elcontracts.SetPermissionRequest,
3032
) (*gethtypes.Transaction, error) {
31-
return m.newSetPermissionTxFunc(request)
33+
return m.newSetPermissionTxFunc(txOpts, request)
3234
}
3335

3436
func generateMockSetWriter(err error) func(logging.Logger, *setConfig) (SetAppointeePermissionWriter, error) {
@@ -37,7 +39,7 @@ func generateMockSetWriter(err error) func(logging.Logger, *setConfig) (SetAppoi
3739
setPermissionFunc: func(ctx context.Context, request elcontracts.SetPermissionRequest) (*gethtypes.Receipt, error) {
3840
return &gethtypes.Receipt{}, err
3941
},
40-
newSetPermissionTxFunc: func(request elcontracts.SetPermissionRequest) (*gethtypes.Transaction, error) {
42+
newSetPermissionTxFunc: func(txOpts *bind.TransactOpts, request elcontracts.SetPermissionRequest) (*gethtypes.Transaction, error) {
4143
return &gethtypes.Transaction{}, err
4244
},
4345
}, nil

0 commit comments

Comments
 (0)