From 85bb8d8df6159b885497cd4c0f0c4d8c70bd9309 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Fri, 7 Feb 2025 12:10:13 -0300 Subject: [PATCH 1/3] Add fn implementation --- chainio/clients/avsregistry/writer.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/chainio/clients/avsregistry/writer.go b/chainio/clients/avsregistry/writer.go index 1a0e4b2f..5a328f36 100644 --- a/chainio/clients/avsregistry/writer.go +++ b/chainio/clients/avsregistry/writer.go @@ -614,3 +614,26 @@ func (w *ChainWriter) EjectOperator( } return receipt, nil } + +func (w *ChainWriter) SetOperatorSetParams( + ctx context.Context, + quorumNumber uint8, + operatorSetParams regcoord.ISlashingRegistryCoordinatorTypesOperatorSetParam, + waitForReceipt bool, +) (*gethtypes.Receipt, error) { + w.logger.Info("setting operator set params for quorum ", quorumNumber) + + noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() + if err != nil { + return nil, err + } + tx, err := w.registryCoordinator.SetOperatorSetParams(noSendTxOpts, quorumNumber, operatorSetParams) + if err != nil { + return nil, err + } + receipt, err := w.txMgr.Send(ctx, tx, waitForReceipt) + if err != nil { + return nil, utils.WrapError("failed to send SetSlashableStakeLookahead tx with err", err.Error()) + } + return receipt, nil +} From 7f8ad3f271cc8fb80238766f2760793a6887e73a Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Fri, 7 Feb 2025 12:24:50 -0300 Subject: [PATCH 2/3] Add test case modifying state --- chainio/clients/avsregistry/writer_test.go | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/chainio/clients/avsregistry/writer_test.go b/chainio/clients/avsregistry/writer_test.go index 223dcefe..d1ba0d0a 100644 --- a/chainio/clients/avsregistry/writer_test.go +++ b/chainio/clients/avsregistry/writer_test.go @@ -455,3 +455,49 @@ func TestEjectOperator(t *testing.T) { require.NoError(t, err) require.False(t, isRegisterd) } + +func TestSetOperatorSetParams(t *testing.T) { + // Test set up + clients, anvilHttpEndpoint := testclients.BuildTestClients(t) + + contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint) + + chainWriter := clients.AvsRegistryChainWriter + + registryCoordinatorAddress := contractAddrs.RegistryCoordinator + registryCoordinator, err := regcoord.NewContractRegistryCoordinator( + registryCoordinatorAddress, + clients.EthHttpClient, + ) + require.NoError(t, err) + + // This parameters are seted to the quorum created on reg coordinator initialization + initialParams := regcoord.ISlashingRegistryCoordinatorTypesOperatorSetParam{ + MaxOperatorCount: 10000, + KickBIPsOfOperatorStake: 15000, + KickBIPsOfTotalStake: 100, + } + + // At the beginning, params are the set on initialization + params, err := registryCoordinator.GetOperatorSetParams(&bind.CallOpts{}, 0) + require.NoError(t, err) + require.Equal(t, params, initialParams) + + newOperatorSetParams := regcoord.ISlashingRegistryCoordinatorTypesOperatorSetParam{ + MaxOperatorCount: 5, + } + + receipt, err := chainWriter.SetOperatorSetParams( + context.Background(), + 0, + newOperatorSetParams, + true, + ) + require.NoError(t, err) + require.Equal(t, receipt.Status, gethtypes.ReceiptStatusSuccessful) + + // After setting operator set params, params are the setted ones + params, err = registryCoordinator.GetOperatorSetParams(&bind.CallOpts{}, 0) + require.NoError(t, err) + require.Equal(t, params, newOperatorSetParams) +} From 406294a6476f70b3eadc06a0ee5b98b99ac04986 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Fri, 7 Feb 2025 12:40:21 -0300 Subject: [PATCH 3/3] Add fn description --- chainio/clients/avsregistry/writer.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chainio/clients/avsregistry/writer.go b/chainio/clients/avsregistry/writer.go index 25ffa113..c0bd6e56 100644 --- a/chainio/clients/avsregistry/writer.go +++ b/chainio/clients/avsregistry/writer.go @@ -648,6 +648,9 @@ func (w *ChainWriter) EjectOperator( return receipt, nil } +// Sets the operator set params for the quorum which id matches the quorum number. +// Params consists in a new max operator count and operator churn parameters +// Returns the transaction receipt in case of success. func (w *ChainWriter) SetOperatorSetParams( ctx context.Context, quorumNumber uint8,