Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package avsregistry
package avsblsregistry

import (
"bytes"
Expand Down Expand Up @@ -44,18 +44,18 @@ type AvsRegistryReader interface {

GetOperatorsStakeInQuorumsOfOperatorAtBlock(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
blockNumber uint32,
) ([]types.QuorumNum, [][]opstateretriever.OperatorStateRetrieverOperator, error)

GetOperatorsStakeInQuorumsOfOperatorAtCurrentBlock(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
) ([]types.QuorumNum, [][]opstateretriever.OperatorStateRetrieverOperator, error)

GetOperatorStakeInQuorumsOfOperatorAtCurrentBlock(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
) (map[types.QuorumNum]types.StakeAmount, error)

GetCheckSignaturesIndices(
Expand All @@ -67,7 +67,7 @@ type AvsRegistryReader interface {

GetOperatorId(opts *bind.CallOpts, operatorAddress gethcommon.Address) ([32]byte, error)

GetOperatorFromId(opts *bind.CallOpts, operatorId types.OperatorId) (gethcommon.Address, error)
GetOperatorFromId(opts *bind.CallOpts, operatorId types.BlsOperatorId) (gethcommon.Address, error)

IsOperatorRegistered(opts *bind.CallOpts, operatorAddress gethcommon.Address) (bool, error)

Expand Down Expand Up @@ -233,7 +233,7 @@ func (r *AvsRegistryChainReader) GetOperatorAddrsInQuorumsAtCurrentBlock(

func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsOfOperatorAtBlock(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
blockNumber uint32,
) ([]types.QuorumNum, [][]opstateretriever.OperatorStateRetrieverOperator, error) {
quorumBitmap, operatorStakes, err := r.operatorStateRetriever.GetOperatorState0(
Expand All @@ -259,7 +259,7 @@ func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsOfOperatorAtBlock(
// blockNumber in opts will be ignored, and the chain will be queried to get the latest blockNumber
func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsOfOperatorAtCurrentBlock(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
) ([]types.QuorumNum, [][]opstateretriever.OperatorStateRetrieverOperator, error) {
if opts.Context == nil {
opts.Context = context.Background()
Expand All @@ -282,7 +282,7 @@ func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsOfOperatorAtCurrentBl
// so some of them could actually return information from different blocks
func (r *AvsRegistryChainReader) GetOperatorStakeInQuorumsOfOperatorAtCurrentBlock(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
) (map[types.QuorumNum]types.StakeAmount, error) {
quorumBitmap, err := r.registryCoordinator.GetCurrentQuorumBitmap(opts, operatorId)
if err != nil {
Expand Down Expand Up @@ -343,7 +343,7 @@ func (r *AvsRegistryChainReader) GetOperatorId(

func (r *AvsRegistryChainReader) GetOperatorFromId(
opts *bind.CallOpts,
operatorId types.OperatorId,
operatorId types.BlsOperatorId,
) (gethcommon.Address, error) {
operatorAddress, err := r.registryCoordinator.GetOperatorFromId(
opts,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package avsregistry
package avsblsregistry

import (
"github.com/ethereum/go-ethereum/accounts/abi/bind"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package avsregistry
package avsblsregistry

import (
"context"
Expand Down
109 changes: 109 additions & 0 deletions chainio/clients/avsregistry/ecdsa/reader.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package avsecdsaregistry

import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
gethcommon "github.com/ethereum/go-ethereum/common"

opstateretriever "github.com/Layr-Labs/eigensdk-go/contracts/bindings/ECDSAOperatorStateRetriever"
)

type AvsEcdsaRegistryReader interface {
GetOperatorsStakeInQuorumsAtBlock(
opts *bind.CallOpts,
quorumNumbers []byte,
blockNumber uint32,
) ([][]opstateretriever.ECDSAOperatorStateRetrieverOperator, error)

GetCheckSignaturesIndices(
opts *bind.CallOpts,
referenceBlockNumber uint32,
quorumNumbers []byte,
nonSignerOperatorIds []gethcommon.Address,
) (opstateretriever.ECDSAOperatorStateRetrieverCheckSignaturesIndices, error)
}

type AvsEcdsaRegistryChainReader struct {
logger logging.Logger
registryCoordinatorAddr gethcommon.Address
operatorStateRetriever *opstateretriever.ContractECDSAOperatorStateRetriever
ethClient eth.EthClient
}

// forces AvsReader to implement the clients.ReaderInterface interface
var _ AvsEcdsaRegistryReader = (*AvsEcdsaRegistryChainReader)(nil)

func NewAvsEcdsaRegistryChainReader(
registryCoordinatorAddr gethcommon.Address,
operatorStateRetriever *opstateretriever.ContractECDSAOperatorStateRetriever,
logger logging.Logger,
ethClient eth.EthClient,
) *AvsEcdsaRegistryChainReader {
return &AvsEcdsaRegistryChainReader{
registryCoordinatorAddr: registryCoordinatorAddr,
operatorStateRetriever: operatorStateRetriever,
logger: logger,
ethClient: ethClient,
}
}

func BuildAvsEcdsaRegistryChainReader(
registryCoordinatorAddr gethcommon.Address,
operatorStateRetrieverAddr gethcommon.Address,
ethClient eth.EthClient,
logger logging.Logger,
) (*AvsEcdsaRegistryChainReader, error) {
contractOperatorStateRetriever, err := opstateretriever.NewContractECDSAOperatorStateRetriever(
operatorStateRetrieverAddr,
ethClient,
)
if err != nil {
return nil, err
}
return NewAvsEcdsaRegistryChainReader(
registryCoordinatorAddr,
contractOperatorStateRetriever,
logger,
ethClient,
), nil
}

func (r *AvsEcdsaRegistryChainReader) GetCheckSignaturesIndices(
opts *bind.CallOpts,
referenceBlockNumber uint32,
quorumNumbers []byte,
signerOperatorIds []gethcommon.Address,
) (opstateretriever.ECDSAOperatorStateRetrieverCheckSignaturesIndices, error) {
checkSignatureIndices, err := r.operatorStateRetriever.GetCheckSignaturesIndices(
opts,
r.registryCoordinatorAddr,
referenceBlockNumber,
quorumNumbers,
signerOperatorIds,
)
if err != nil {
r.logger.Error("Failed to get check signatures indices", "err", err)
return opstateretriever.ECDSAOperatorStateRetrieverCheckSignaturesIndices{}, err
}
return checkSignatureIndices, nil
}

// the contract stores historical state, so blockNumber should be the block number of the state you want to query
// and the blockNumber in opts should be the block number of the latest block (or set to nil, which is equivalent)
func (r *AvsEcdsaRegistryChainReader) GetOperatorsStakeInQuorumsAtBlock(
opts *bind.CallOpts,
quorumNumbers []byte,
blockNumber uint32,
) ([][]opstateretriever.ECDSAOperatorStateRetrieverOperator, error) {
operatorStakes, err := r.operatorStateRetriever.GetOperatorState0(
opts,
r.registryCoordinatorAddr,
quorumNumbers,
blockNumber)
if err != nil {
r.logger.Error("Failed to get operators state", "err", err)
return nil, err
}
return operatorStakes, nil
}
16 changes: 8 additions & 8 deletions chainio/clients/builder.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package clients

import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry"
"github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry/bls"
"github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts"
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
"github.com/Layr-Labs/eigensdk-go/chainio/txmgr"
Expand Down Expand Up @@ -29,9 +29,9 @@ type BuildAllConfig struct {
// for non-instrumented clients that doesn't return metrics/reg, and another instrumented-constructor
// that returns instrumented clients and the metrics/reg.
type Clients struct {
AvsRegistryChainReader *avsregistry.AvsRegistryChainReader
AvsRegistryChainSubscriber *avsregistry.AvsRegistryChainSubscriber
AvsRegistryChainWriter *avsregistry.AvsRegistryChainWriter
AvsRegistryChainReader *avsblsregistry.AvsRegistryChainReader
AvsRegistryChainSubscriber *avsblsregistry.AvsRegistryChainSubscriber
AvsRegistryChainWriter *avsblsregistry.AvsRegistryChainWriter
ElChainReader *elcontracts.ELChainReader
ElChainWriter *elcontracts.ELChainWriter
EthHttpClient *eth.Client
Expand Down Expand Up @@ -167,7 +167,7 @@ func (config *BuildAllConfig) buildAvsClients(
ethWsClient eth.EthClient,
txMgr txmgr.TxManager,
logger logging.Logger,
) (*avsregistry.AvsRegistryChainReader, *avsregistry.AvsRegistryChainSubscriber, *avsregistry.AvsRegistryChainWriter, error) {
) (*avsblsregistry.AvsRegistryChainReader, *avsblsregistry.AvsRegistryChainSubscriber, *avsblsregistry.AvsRegistryChainWriter, error) {

avsRegistryContractBindings, err := chainioutils.NewAVSRegistryContractBindings(
gethcommon.HexToAddress(config.RegistryCoordinatorAddr),
Expand All @@ -180,7 +180,7 @@ func (config *BuildAllConfig) buildAvsClients(
return nil, nil, nil, err
}

avsRegistryChainReader := avsregistry.NewAvsRegistryChainReader(
avsRegistryChainReader := avsblsregistry.NewAvsRegistryChainReader(
avsRegistryContractBindings.RegistryCoordinatorAddr,
avsRegistryContractBindings.BlsApkRegistryAddr,
avsRegistryContractBindings.RegistryCoordinator,
Expand All @@ -190,7 +190,7 @@ func (config *BuildAllConfig) buildAvsClients(
ethHttpClient,
)

avsRegistryChainWriter, err := avsregistry.NewAvsRegistryChainWriter(
avsRegistryChainWriter, err := avsblsregistry.NewAvsRegistryChainWriter(
avsRegistryContractBindings.ServiceManagerAddr,
avsRegistryContractBindings.RegistryCoordinator,
avsRegistryContractBindings.OperatorStateRetriever,
Expand All @@ -208,7 +208,7 @@ func (config *BuildAllConfig) buildAvsClients(

// get the Subscriber for Avs Registry contracts
// note that the subscriber needs a ws connection instead of http
avsRegistrySubscriber, err := avsregistry.BuildAvsRegistryChainSubscriber(
avsRegistrySubscriber, err := avsblsregistry.BuildAvsRegistryChainSubscriber(
avsRegistryContractBindings.BlsApkRegistryAddr,
ethWsClient,
logger,
Expand Down
7 changes: 4 additions & 3 deletions chainio/gen.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package chainio

//go:generate mockgen -destination=./mocks/avsRegistryContractsReader.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry AvsRegistryReader
//go:generate mockgen -destination=./mocks/avsRegistryContractsSubscriber.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry AvsRegistrySubscriber
//go:generate mockgen -destination=./mocks/avsRegistryContractsWriter.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry AvsRegistryWriter
//go:generate mockgen -destination=./mocks/avsEcdsaRegistryContractsReader.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry/ecdsa AvsEcdsaRegistryReader
//go:generate mockgen -destination=./mocks/avsRegistryContractsReader.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry/bls AvsRegistryReader
//go:generate mockgen -destination=./mocks/avsRegistryContractsSubscriber.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry/bls AvsRegistrySubscriber
//go:generate mockgen -destination=./mocks/avsRegistryContractsWriter.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry/bls AvsRegistryWriter
//go:generate mockgen -destination=./mocks/elContractsReader.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts ELReader
//go:generate mockgen -destination=./mocks/elContractsWriter.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts ELWriter
//go:generate mockgen -destination=./mocks/ethclient.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/eth EthClient
Expand Down
71 changes: 71 additions & 0 deletions chainio/mocks/avsEcdsaRegistryContractsReader.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions chainio/mocks/avsRegistryContractsReader.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions chainio/mocks/avsRegistryContractsSubscriber.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions chainio/mocks/avsRegistryContractsWriter.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading