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  }