@@ -4,10 +4,8 @@ import (
44 "context"
55 "fmt"
66 "math/big"
7- "strings"
87
98 "github.com/ethereum/go-ethereum/accounts/abi/bind"
10- "github.com/ethereum/go-ethereum/crypto"
119 "github.com/ethereum/go-ethereum/ethclient"
1210 "github.com/ipfs/go-cid"
1311
@@ -57,7 +55,7 @@ func (a *pdpVerifierReader) FindPieceIdsByCid(ctx context.Context, dataSetID sdk
5755 new (big.Int ).SetUint64 (limit ),
5856 )
5957 if err != nil {
60- if isDataSetUnavailable (err ) {
58+ if pdpverifier . IsDataSetUnavailable (err ) {
6159 return []sdktypes.BigInt {}, nil
6260 }
6361 return nil , fmt .Errorf ("adapters.pdpVerifierReader.FindPieceIdsByCid: %w" , err )
@@ -72,7 +70,7 @@ func (a *pdpVerifierReader) FindPieceIdsByCid(ctx context.Context, dataSetID sdk
7270func (a * pdpVerifierReader ) GetScheduledRemovals (ctx context.Context , dataSetID sdktypes.BigInt ) ([]sdktypes.BigInt , error ) {
7371 raw , err := a .caller .GetScheduledRemovals (& bind.CallOpts {Context : ctx }, dataSetID .Big ())
7472 if err != nil {
75- if isDataSetUnavailable (err ) {
73+ if pdpverifier . IsDataSetUnavailable (err ) {
7674 return []sdktypes.BigInt {}, nil
7775 }
7876 return nil , fmt .Errorf ("adapters.pdpVerifierReader.GetScheduledRemovals: %w" , err )
@@ -87,7 +85,7 @@ func (a *pdpVerifierReader) GetScheduledRemovals(ctx context.Context, dataSetID
8785func (a * pdpVerifierReader ) GetNextChallengeEpoch (ctx context.Context , dataSetID sdktypes.BigInt ) (* big.Int , error ) {
8886 v , err := a .caller .GetNextChallengeEpoch (& bind.CallOpts {Context : ctx }, dataSetID .Big ())
8987 if err != nil {
90- if isDataSetUnavailable (err ) {
88+ if pdpverifier . IsDataSetUnavailable (err ) {
9189 return nil , nil
9290 }
9391 return nil , fmt .Errorf ("adapters.pdpVerifierReader.GetNextChallengeEpoch: %w" , err )
@@ -113,7 +111,7 @@ func (a *pdpVerifierReader) BlockNumber(ctx context.Context) (uint64, error) {
113111func (a * pdpVerifierReader ) GetDataSetSizeBytes (ctx context.Context , dataSetID sdktypes.BigInt ) (* big.Int , error ) {
114112 leafCount , err := a .caller .GetDataSetLeafCount (& bind.CallOpts {Context : ctx }, dataSetID .Big ())
115113 if err != nil {
116- if isDataSetUnavailable (err ) {
114+ if pdpverifier . IsDataSetUnavailable (err ) {
117115 return new (big.Int ), nil
118116 }
119117 return nil , fmt .Errorf ("adapters.pdpVerifierReader.GetDataSetSizeBytes: %w" , err )
@@ -124,36 +122,6 @@ func (a *pdpVerifierReader) GetDataSetSizeBytes(ctx context.Context, dataSetID s
124122 return new (big.Int ).Mul (leafCount , big .NewInt (32 )), nil
125123}
126124
127- var (
128- dataSetNotFoundSelector = errorSelector ("DataSetNotFound()" )
129- dataSetNotLiveSelector = errorSelector ("DataSetNotLive()" )
130- )
131-
132- // isDataSetUnavailable reports whether err is the PDPVerifier revert raised
133- // for terminated, missing, or otherwise non-readable data sets.
134- func isDataSetUnavailable (err error ) bool {
135- if err == nil {
136- return false
137- }
138- msg := err .Error ()
139- if strings .Contains (msg , "Data set not live" ) ||
140- strings .Contains (msg , "DataSetNotLive" ) ||
141- strings .Contains (msg , "DataSetNotFound" ) {
142- return true
143- }
144- data , ok := ethclient .RevertErrorData (err )
145- if ! ok || len (data ) < 4 {
146- return false
147- }
148- selector := [4 ]byte {data [0 ], data [1 ], data [2 ], data [3 ]}
149- return selector == dataSetNotFoundSelector || selector == dataSetNotLiveSelector
150- }
151-
152- func errorSelector (signature string ) [4 ]byte {
153- hash := crypto .Keccak256 ([]byte (signature ))
154- return [4 ]byte {hash [0 ], hash [1 ], hash [2 ], hash [3 ]}
155- }
156-
157125func dedupeBigInts (values []sdktypes.BigInt ) []sdktypes.BigInt {
158126 if len (values ) == 0 {
159127 return values
0 commit comments