Documentation ¶
Overview ¶
Package share contains logic related to the retrieval and random sampling of shares of block data.
Though this package contains several useful methods for getting specific shares and/or sampling them at random, a particularly useful method is GetSharesByNamespace which retrieves all shares of block data of the given Namespace from the block associated with the given DataAvailabilityHeader (DAH, but referred to as AxisRoots within this package).
This package also contains declaration of the Availability interface. Implementations of the interface (light, full) are located in the availability sub-folder. Light Availability implementation samples for 16 shares of block data (enough to verify the block's availability on the network). Full Availability implementation samples for as many shares as necessary to fully reconstruct the block data.
Index ¶
- Constants
- Variables
- func EmptyBlockShares() []libshare.Share
- func EmptyEDS() *rsmt2d.ExtendedDataSquare
- func IsAboveMax(namespace libshare.Namespace, hash []byte) (bool, error)
- func IsBelowMin(namespace libshare.Namespace, hash []byte) (bool, error)
- func IsOutsideRange(namespace libshare.Namespace, leftHash, rightHash []byte) (bool, error)
- func NewSHA256Hasher() hash.Hash
- func RootHashForCoordinates(r *AxisRoots, axisType rsmt2d.Axis, rowIdx, colIdx uint) []byte
- func RowsWithNamespace(root *AxisRoots, namespace libshare.Namespace) (idxs []int, err error)
- type Availability
- type AxisRoots
- type DataHash
- type ShareWithProof
Constants ¶
const ( // DataHashSize is the size of the DataHash. DataHashSize = 32 // AxisRootSize is the size of the single root in AxisRoots. AxisRootSize = 90 )
Variables ¶
var DefaultRSMT2DCodec = appconsts.DefaultCodec
DefaultRSMT2DCodec sets the default rsmt2d.Codec for shares.
var ErrNotAvailable = errors.New("share: data not available")
ErrNotAvailable is returned whenever DA sampling fails.
var MaxSquareSize = appconsts.SquareSizeUpperBound(appconsts.LatestVersion)
MaxSquareSize is currently the maximum size supported for unerasured data in rsmt2d.ExtendedDataSquare.
Functions ¶
func EmptyBlockShares ¶ added in v0.11.0
EmptyBlockShares returns the shares of the empty block.
func EmptyEDS ¶
func EmptyEDS() *rsmt2d.ExtendedDataSquare
EmptyEDS returns the EDS of the empty block data square.
func IsAboveMax ¶
IsAboveMax checks if the namespace is above the maximum namespace of the given hash.
func IsBelowMin ¶
IsBelowMin checks if the target namespace is below the minimum namespace of the given hash.
func IsOutsideRange ¶
IsOutsideRange checks if the namespace is outside the min-max range of the given hashes.
func NewSHA256Hasher ¶ added in v0.13.5
NewSHA256Hasher returns a new instance of a SHA-256 hasher.
func RootHashForCoordinates ¶
RootHashForCoordinates returns the root hash for the given coordinates.
Types ¶
type Availability ¶
type Availability interface { // the Network. SharesAvailable(context.Context, *header.ExtendedHeader) error }
Availability defines interface for validation of Shares' availability.
type AxisRoots ¶
type AxisRoots = da.DataAvailabilityHeader
AxisRoots represents root commitment to multiple Shares. In practice, it is a commitment to all the Data in a square.
func EmptyEDSRoots ¶
func EmptyEDSRoots() *AxisRoots
EmptyEDSRoots returns AxisRoots of the empty block EDS.
func NewAxisRoots ¶
func NewAxisRoots(eds *rsmt2d.ExtendedDataSquare) (*AxisRoots, error)
NewAxisRoots generates AxisRoots(DataAvailabilityHeader) using the provided extended data square.
type DataHash ¶ added in v0.5.0
type DataHash []byte
DataHash is a representation of the AxisRoots hash.
func EmptyEDSDataHash ¶
func EmptyEDSDataHash() DataHash
EmptyEDSDataHash returns DataHash of the empty block EDS.
func MustDataHashFromString ¶ added in v0.11.0
MustDataHashFromString converts a hex string to a valid datahash.
func (DataHash) IsEmptyEDS ¶
IsEmptyEDS check whether DataHash corresponds to the root of an empty block EDS.
type ShareWithProof ¶
ShareWithProof contains data with corresponding Merkle Proof
Directories ¶
Path | Synopsis |
---|---|
availability
|
|
light
TODO(@Wondertan): Instead of doing sampling over the coordinates do a random walk over NMT trees.
|
TODO(@Wondertan): Instead of doing sampling over the coordinates do a random walk over NMT trees. |
mocks
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |
getters/mock
Package mock is a generated GoMock package.
|
Package mock is a generated GoMock package. |
p2p/shrex
Package shrex provides functionality that powers the share exchange protocols used by celestia-node.
|
Package shrex provides functionality that powers the share exchange protocols used by celestia-node. |
p2p/shrex/peers
Package peers provides a peer manager that handles peer discovery and peer selection for the shrex getter.
|
Package peers provides a peer manager that handles peer discovery and peer selection for the shrex getter. |
p2p/shrex/shrexeds
This package defines a protocol that is used to request extended data squares from peers in the network.
|
This package defines a protocol that is used to request extended data squares from peers in the network. |
p2p/shrex/shrexnd
This package defines a protocol that is used to request namespaced data from peers in the network.
|
This package defines a protocol that is used to request namespaced data from peers in the network. |
p2p/shrex/shrexsub
This package defines a protocol that is used to broadcast shares to peers over a pubsub network.
|
This package defines a protocol that is used to broadcast shares to peers over a pubsub network. |