github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/das/constructors.go (about) 1 package das 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "github.com/ipfs/go-datastore" 9 10 "github.com/celestiaorg/go-fraud" 11 libhead "github.com/celestiaorg/go-header" 12 13 "github.com/celestiaorg/celestia-node/das" 14 "github.com/celestiaorg/celestia-node/header" 15 modfraud "github.com/celestiaorg/celestia-node/nodebuilder/fraud" 16 "github.com/celestiaorg/celestia-node/pruner" 17 "github.com/celestiaorg/celestia-node/share" 18 "github.com/celestiaorg/celestia-node/share/eds/byzantine" 19 "github.com/celestiaorg/celestia-node/share/p2p/shrexsub" 20 ) 21 22 var _ Module = (*daserStub)(nil) 23 24 var errStub = fmt.Errorf("module/das: stubbed: dasing is not available on bridge nodes") 25 26 // daserStub is a stub implementation of the DASer that is used on bridge nodes, so that we can 27 // provide a friendlier error when users try to access the daser over the API. 28 type daserStub struct{} 29 30 func (d daserStub) SamplingStats(context.Context) (das.SamplingStats, error) { 31 return das.SamplingStats{}, errStub 32 } 33 34 func (d daserStub) WaitCatchUp(context.Context) error { 35 return errStub 36 } 37 38 func newDaserStub() Module { 39 return &daserStub{} 40 } 41 42 func newDASer( 43 da share.Availability, 44 hsub libhead.Subscriber[*header.ExtendedHeader], 45 store libhead.Store[*header.ExtendedHeader], 46 batching datastore.Batching, 47 fraudServ fraud.Service[*header.ExtendedHeader], 48 bFn shrexsub.BroadcastFn, 49 availWindow pruner.AvailabilityWindow, 50 options ...das.Option, 51 ) (*das.DASer, *modfraud.ServiceBreaker[*das.DASer, *header.ExtendedHeader], error) { 52 options = append(options, das.WithSamplingWindow(time.Duration(availWindow))) 53 54 ds, err := das.NewDASer(da, hsub, store, batching, fraudServ, bFn, options...) 55 if err != nil { 56 return nil, nil, err 57 } 58 59 return ds, &modfraud.ServiceBreaker[*das.DASer, *header.ExtendedHeader]{ 60 Service: ds, 61 FraudServ: fraudServ, 62 FraudType: byzantine.BadEncoding, 63 }, nil 64 }