github.com/celestiaorg/celestia-node@v0.15.0-beta.1/share/availability.go (about) 1 package share 2 3 import ( 4 "context" 5 "errors" 6 7 "github.com/celestiaorg/celestia-app/pkg/da" 8 "github.com/celestiaorg/rsmt2d" 9 10 "github.com/celestiaorg/celestia-node/header" 11 ) 12 13 // ErrNotAvailable is returned whenever DA sampling fails. 14 var ErrNotAvailable = errors.New("share: data not available") 15 16 // Root represents root commitment to multiple Shares. 17 // In practice, it is a commitment to all the Data in a square. 18 type Root = da.DataAvailabilityHeader 19 20 // NewRoot generates Root(DataAvailabilityHeader) using the 21 // provided extended data square. 22 func NewRoot(eds *rsmt2d.ExtendedDataSquare) (*Root, error) { 23 dah, err := da.NewDataAvailabilityHeader(eds) 24 if err != nil { 25 return nil, err 26 } 27 return &dah, nil 28 } 29 30 // Availability defines interface for validation of Shares' availability. 31 // 32 //go:generate mockgen -destination=availability/mocks/availability.go -package=mocks . Availability 33 type Availability interface { 34 // SharesAvailable subjectively validates if Shares committed to the given Root are available on 35 // the Network. 36 SharesAvailable(context.Context, *header.ExtendedHeader) error 37 }