Skip to content

Commit

Permalink
make WrapError function public and replace errors.Join everywhere wit…
Browse files Browse the repository at this point in the history
…h this
  • Loading branch information
samlaf committed Feb 14, 2024
1 parent 856915e commit 33eac92
Show file tree
Hide file tree
Showing 16 changed files with 102 additions and 97 deletions.
46 changes: 23 additions & 23 deletions chainio/clients/avsregistry/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,26 +120,26 @@ func BuildAvsRegistryChainReader(
) (*AvsRegistryChainReader, error) {
contractRegistryCoordinator, err := regcoord.NewContractRegistryCoordinator(registryCoordinatorAddr, ethClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create contractRegistryCoordinator"), err)
return nil, types.WrapError(errors.New("Failed to create contractRegistryCoordinator"), err)
}
blsApkRegistryAddr, err := contractRegistryCoordinator.BlsApkRegistry(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get blsApkRegistryAddr"), err)
return nil, types.WrapError(errors.New("Failed to get blsApkRegistryAddr"), err)
}
stakeRegistryAddr, err := contractRegistryCoordinator.StakeRegistry(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get stakeRegistryAddr"), err)
return nil, types.WrapError(errors.New("Failed to get stakeRegistryAddr"), err)
}
contractStakeRegistry, err := stakeregistry.NewContractStakeRegistry(stakeRegistryAddr, ethClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create contractStakeRegistry"), err)
return nil, types.WrapError(errors.New("Failed to create contractStakeRegistry"), err)
}
contractOperatorStateRetriever, err := contractOperatorStateRetriever.NewContractOperatorStateRetriever(
operatorStateRetrieverAddr,
ethClient,
)
if err != nil {
return nil, errors.Join(errors.New("Failed to create contractOperatorStateRetriever"), err)
return nil, types.WrapError(errors.New("Failed to create contractOperatorStateRetriever"), err)
}
return NewAvsRegistryChainReader(
registryCoordinatorAddr,
Expand All @@ -165,10 +165,10 @@ func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsAtCurrentBlock(
}
curBlock, err := r.ethClient.BlockNumber(opts.Context)
if err != nil {
return nil, errors.Join(errors.New("Cannot get current block number"), err)
return nil, types.WrapError(errors.New("Cannot get current block number"), err)
}
if curBlock > math.MaxUint32 {
return nil, errors.Join(errors.New("Current block number is too large to be converted to uint32"), err)
return nil, types.WrapError(errors.New("Current block number is too large to be converted to uint32"), err)
}
return r.GetOperatorsStakeInQuorumsAtBlock(opts, quorumNumbers, uint32(curBlock))
}
Expand All @@ -186,7 +186,7 @@ func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsAtBlock(
quorumNumbers,
blockNumber)
if err != nil {
return nil, errors.Join(errors.New("Failed to get operators state"), err)
return nil, types.WrapError(errors.New("Failed to get operators state"), err)
}
return operatorStakes, nil
}
Expand All @@ -200,10 +200,10 @@ func (r *AvsRegistryChainReader) GetOperatorAddrsInQuorumsAtCurrentBlock(
}
curBlock, err := r.ethClient.BlockNumber(opts.Context)
if err != nil {
return nil, errors.Join(errors.New("Failed to get current block number"), err)
return nil, types.WrapError(errors.New("Failed to get current block number"), err)
}
if curBlock > math.MaxUint32 {
return nil, errors.Join(errors.New("Current block number is too large to be converted to uint32"), err)
return nil, types.WrapError(errors.New("Current block number is too large to be converted to uint32"), err)
}
operatorStakes, err := r.operatorStateRetriever.GetOperatorState(
opts,
Expand All @@ -212,7 +212,7 @@ func (r *AvsRegistryChainReader) GetOperatorAddrsInQuorumsAtCurrentBlock(
uint32(curBlock),
)
if err != nil {
return nil, errors.Join(errors.New("Failed to get operators state"), err)
return nil, types.WrapError(errors.New("Failed to get operators state"), err)
}
var quorumOperatorAddrs [][]common.Address
for _, quorum := range operatorStakes {
Expand All @@ -237,7 +237,7 @@ func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsOfOperatorAtBlock(
operatorId,
blockNumber)
if err != nil {
return nil, nil, errors.Join(errors.New("Failed to get operators state"), err)
return nil, nil, types.WrapError(errors.New("Failed to get operators state"), err)
}
quorums := types.BitmapToQuorumIds(quorumBitmap)
return quorums, operatorStakes, nil
Expand All @@ -254,10 +254,10 @@ func (r *AvsRegistryChainReader) GetOperatorsStakeInQuorumsOfOperatorAtCurrentBl
}
curBlock, err := r.ethClient.BlockNumber(opts.Context)
if err != nil {
return nil, nil, errors.Join(errors.New("Failed to get current block number"), err)
return nil, nil, types.WrapError(errors.New("Failed to get current block number"), err)
}
if curBlock > math.MaxUint32 {
return nil, nil, errors.Join(errors.New("Current block number is too large to be converted to uint32"), err)
return nil, nil, types.WrapError(errors.New("Current block number is too large to be converted to uint32"), err)
}
opts.BlockNumber = big.NewInt(int64(curBlock))
return r.GetOperatorsStakeInQuorumsOfOperatorAtBlock(opts, operatorId, uint32(curBlock))
Expand All @@ -272,7 +272,7 @@ func (r *AvsRegistryChainReader) GetOperatorStakeInQuorumsOfOperatorAtCurrentBlo
) (map[types.QuorumNum]types.StakeAmount, error) {
quorumBitmap, err := r.registryCoordinator.GetCurrentQuorumBitmap(opts, operatorId)
if err != nil {
return nil, errors.Join(errors.New("Failed to get operator quorums"), err)
return nil, types.WrapError(errors.New("Failed to get operator quorums"), err)
}
quorums := types.BitmapToQuorumIds(quorumBitmap)
quorumStakes := make(map[types.QuorumNum]types.StakeAmount)
Expand All @@ -283,7 +283,7 @@ func (r *AvsRegistryChainReader) GetOperatorStakeInQuorumsOfOperatorAtCurrentBlo
quorum,
)
if err != nil {
return nil, errors.Join(errors.New("Failed to get operator stake"), err)
return nil, types.WrapError(errors.New("Failed to get operator stake"), err)
}
quorumStakes[quorum] = stake
}
Expand All @@ -304,7 +304,7 @@ func (r *AvsRegistryChainReader) GetCheckSignaturesIndices(
nonSignerOperatorIds,
)
if err != nil {
return opstateretriever.OperatorStateRetrieverCheckSignaturesIndices{}, errors.Join(errors.New("Failed to get check signatures indices"), err)
return opstateretriever.OperatorStateRetrieverCheckSignaturesIndices{}, types.WrapError(errors.New("Failed to get check signatures indices"), err)
}
return checkSignatureIndices, nil
}
Expand All @@ -318,7 +318,7 @@ func (r *AvsRegistryChainReader) GetOperatorId(
operatorAddress,
)
if err != nil {
return [32]byte{}, errors.Join(errors.New("Failed to get operator id"), err)
return [32]byte{}, types.WrapError(errors.New("Failed to get operator id"), err)
}
return operatorId, nil
}
Expand All @@ -332,7 +332,7 @@ func (r *AvsRegistryChainReader) GetOperatorFromId(
operatorId,
)
if err != nil {
return gethcommon.Address{}, errors.Join(errors.New("Failed to get operator address"), err)
return gethcommon.Address{}, types.WrapError(errors.New("Failed to get operator address"), err)
}
return operatorAddress, nil
}
Expand All @@ -343,7 +343,7 @@ func (r *AvsRegistryChainReader) IsOperatorRegistered(
) (bool, error) {
operatorStatus, err := r.registryCoordinator.GetOperatorStatus(opts, operatorAddress)
if err != nil {
return false, errors.Join(errors.New("Failed to get operator status"), err)
return false, types.WrapError(errors.New("Failed to get operator status"), err)
}

// 0 = NEVER_REGISTERED, 1 = REGISTERED, 2 = DEREGISTERED
Expand All @@ -359,7 +359,7 @@ func (r *AvsRegistryChainReader) QueryExistingRegisteredOperatorPubKeys(

blsApkRegistryAbi, err := abi.JSON(bytes.NewReader(eigenabi.BLSApkRegistryAbi))
if err != nil {
return nil, nil, errors.Join(errors.New("Cannot get Abi"), err)
return nil, nil, types.WrapError(errors.New("Cannot get Abi"), err)
}

query := ethereum.FilterQuery{
Expand All @@ -373,7 +373,7 @@ func (r *AvsRegistryChainReader) QueryExistingRegisteredOperatorPubKeys(

logs, err := r.ethClient.FilterLogs(ctx, query)
if err != nil {
return nil, nil, errors.Join(errors.New("Cannot filter logs"), err)
return nil, nil, types.WrapError(errors.New("Cannot filter logs"), err)
}
r.logger.Info("avsRegistryChainReader.QueryExistingRegisteredOperatorPubKeys", "transactionLogs", logs)

Expand All @@ -388,7 +388,7 @@ func (r *AvsRegistryChainReader) QueryExistingRegisteredOperatorPubKeys(

event, err := blsApkRegistryAbi.Unpack("NewPubkeyRegistration", vLog.Data)
if err != nil {
return nil, nil, errors.Join(errors.New("Cannot unpack event data"), err)
return nil, nil, types.WrapError(errors.New("Cannot unpack event data"), err)
}

G1Pubkey := event[0].(struct {
Expand Down
5 changes: 3 additions & 2 deletions chainio/clients/avsregistry/subscriber.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/Layr-Labs/eigensdk-go/chainio/clients/eth"
blsapkreg "github.com/Layr-Labs/eigensdk-go/contracts/bindings/BLSApkRegistry"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/Layr-Labs/eigensdk-go/types"
)

type AvsRegistrySubscriber interface {
Expand Down Expand Up @@ -41,7 +42,7 @@ func BuildAvsRegistryChainSubscriber(
) (*AvsRegistryChainSubscriber, error) {
blsapkreg, err := blsapkreg.NewContractBLSApkRegistry(blsApkRegistryAddr, ethWsClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create BLSApkRegistry contract"), err)
return nil, types.WrapError(errors.New("Failed to create BLSApkRegistry contract"), err)
}
return NewAvsRegistryChainSubscriber(blsapkreg, logger)
}
Expand All @@ -52,7 +53,7 @@ func (s *AvsRegistryChainSubscriber) SubscribeToNewPubkeyRegistrations() (chan *
&bind.WatchOpts{}, newPubkeyRegistrationChan, nil,
)
if err != nil {
return nil, nil, errors.Join(errors.New("Failed to subscribe to NewPubkeyRegistration events"), err)
return nil, nil, types.WrapError(errors.New("Failed to subscribe to NewPubkeyRegistration events"), err)
}
return newPubkeyRegistrationChan, sub, nil
}
23 changes: 12 additions & 11 deletions chainio/clients/avsregistry/writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/Layr-Labs/eigensdk-go/chainio/utils"
"github.com/Layr-Labs/eigensdk-go/crypto/bls"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/Layr-Labs/eigensdk-go/types"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
gethcommon "github.com/ethereum/go-ethereum/common"
gethtypes "github.com/ethereum/go-ethereum/core/types"
Expand Down Expand Up @@ -116,50 +117,50 @@ func BuildAvsRegistryChainWriter(
) (*AvsRegistryChainWriter, error) {
registryCoordinator, err := regcoord.NewContractRegistryCoordinator(registryCoordinatorAddr, ethClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create RegistryCoordinator contract"), err)
return nil, types.WrapError(errors.New("Failed to create RegistryCoordinator contract"), err)
}
operatorStateRetriever, err := opstateretriever.NewContractOperatorStateRetriever(
operatorStateRetrieverAddr,
ethClient,
)
if err != nil {
return nil, errors.Join(errors.New("Failed to create OperatorStateRetriever contract"), err)
return nil, types.WrapError(errors.New("Failed to create OperatorStateRetriever contract"), err)
}
serviceManagerAddr, err := registryCoordinator.ServiceManager(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get ServiceManager address"), err)
return nil, types.WrapError(errors.New("Failed to get ServiceManager address"), err)
}
serviceManager, err := smbase.NewContractServiceManagerBase(serviceManagerAddr, ethClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create ServiceManager contract"), err)
return nil, types.WrapError(errors.New("Failed to create ServiceManager contract"), err)
}
blsApkRegistryAddr, err := registryCoordinator.BlsApkRegistry(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get BLSApkRegistry address"), err)
return nil, types.WrapError(errors.New("Failed to get BLSApkRegistry address"), err)
}
blsApkRegistry, err := blsapkregistry.NewContractBLSApkRegistry(blsApkRegistryAddr, ethClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create BLSApkRegistry contract"), err)
return nil, types.WrapError(errors.New("Failed to create BLSApkRegistry contract"), err)
}
stakeRegistryAddr, err := registryCoordinator.StakeRegistry(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get StakeRegistry address"), err)
return nil, types.WrapError(errors.New("Failed to get StakeRegistry address"), err)
}
stakeRegistry, err := stakeregistry.NewContractStakeRegistry(stakeRegistryAddr, ethClient)
if err != nil {
return nil, errors.Join(errors.New("Failed to create StakeRegistry contract"), err)
return nil, types.WrapError(errors.New("Failed to create StakeRegistry contract"), err)
}
delegationManagerAddr, err := stakeRegistry.Delegation(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get DelegationManager address"), err)
return nil, types.WrapError(errors.New("Failed to get DelegationManager address"), err)
}
avsDirectoryAddr, err := serviceManager.AvsDirectory(&bind.CallOpts{})
if err != nil {
return nil, errors.Join(errors.New("Failed to get AvsDirectory address"), err)
return nil, types.WrapError(errors.New("Failed to get AvsDirectory address"), err)
}
elReader, err := elcontracts.BuildELChainReader(delegationManagerAddr, avsDirectoryAddr, ethClient, logger)
if err != nil {
return nil, errors.Join(errors.New("Failed to create ELChainReader"), err)
return nil, types.WrapError(errors.New("Failed to create ELChainReader"), err)
}
return NewAvsRegistryChainWriter(
serviceManagerAddr,
Expand Down
21 changes: 11 additions & 10 deletions chainio/clients/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/Layr-Labs/eigensdk-go/metrics"
"github.com/Layr-Labs/eigensdk-go/signerv2"
"github.com/Layr-Labs/eigensdk-go/types"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/prometheus/client_golang/prometheus"
Expand Down Expand Up @@ -57,12 +58,12 @@ func BuildAll(
// creating two types of Eth clients: HTTP and WS
ethHttpClient, err := eth.NewClient(config.EthHttpUrl)
if err != nil {
return nil, errors.Join(errors.New("Failed to create Eth Http client"), err)
return nil, types.WrapError(errors.New("Failed to create Eth Http client"), err)
}

ethWsClient, err := eth.NewClient(config.EthWsUrl)
if err != nil {
return nil, errors.Join(errors.New("Failed to create Eth WS client"), err)
return nil, types.WrapError(errors.New("Failed to create Eth WS client"), err)
}

txMgr := txmgr.NewSimpleTxManager(ethHttpClient, logger, signerFn, signerAddr)
Expand All @@ -74,7 +75,7 @@ func BuildAll(
eigenMetrics,
)
if err != nil {
return nil, errors.Join(errors.New("Failed to create EL Reader, Writer and Subscriber"), err)
return nil, types.WrapError(errors.New("Failed to create EL Reader, Writer and Subscriber"), err)
}

// creating AVS clients: Reader and Writer
Expand All @@ -86,7 +87,7 @@ func BuildAll(
logger,
)
if err != nil {
return nil, errors.Join(errors.New("Failed to create AVS Registry Reader and Writer"), err)
return nil, types.WrapError(errors.New("Failed to create AVS Registry Reader and Writer"), err)
}

return &Clients{
Expand Down Expand Up @@ -117,7 +118,7 @@ func (config *BuildAllConfig) buildElClients(
logger,
)
if err != nil {
return nil, nil, errors.Join(errors.New("Failed to create AVSRegistryContractBindings"), err)
return nil, nil, types.WrapError(errors.New("Failed to create AVSRegistryContractBindings"), err)
}

delegationManagerAddr, err := avsRegistryContractBindings.StakeRegistry.Delegation(&bind.CallOpts{})
Expand All @@ -136,7 +137,7 @@ func (config *BuildAllConfig) buildElClients(
logger,
)
if err != nil {
return nil, nil, errors.Join(errors.New("Failed to create EigenlayerContractBindings"), err)
return nil, nil, types.WrapError(errors.New("Failed to create EigenlayerContractBindings"), err)
}

// get the Reader for the EL contracts
Expand All @@ -161,7 +162,7 @@ func (config *BuildAllConfig) buildElClients(
txMgr,
)
if err != nil {
return nil, nil, errors.Join(errors.New("Failed to create ELChainWriter"), err)
return nil, nil, types.WrapError(errors.New("Failed to create ELChainWriter"), err)
}

return elChainReader, elChainWriter, nil
Expand All @@ -182,7 +183,7 @@ func (config *BuildAllConfig) buildAvsClients(
logger,
)
if err != nil {
return nil, nil, nil, errors.Join(errors.New("Failed to create AVSRegistryContractBindings"), err)
return nil, nil, nil, types.WrapError(errors.New("Failed to create AVSRegistryContractBindings"), err)
}

avsRegistryChainReader := avsregistry.NewAvsRegistryChainReader(
Expand All @@ -207,7 +208,7 @@ func (config *BuildAllConfig) buildAvsClients(
txMgr,
)
if err != nil {
return nil, nil, nil, errors.Join(errors.New("Failed to create AVSRegistryChainWriter"), err)
return nil, nil, nil, types.WrapError(errors.New("Failed to create AVSRegistryChainWriter"), err)
}

// get the Subscriber for Avs Registry contracts
Expand All @@ -218,7 +219,7 @@ func (config *BuildAllConfig) buildAvsClients(
logger,
)
if err != nil {
return nil, nil, nil, errors.Join(errors.New("Failed to create ELChainSubscriber"), err)
return nil, nil, nil, types.WrapError(errors.New("Failed to create ELChainSubscriber"), err)
}

return avsRegistryChainReader, avsRegistrySubscriber, avsRegistryChainWriter, nil
Expand Down
Loading

0 comments on commit 33eac92

Please sign in to comment.