Documentation
¶
Index ¶
- Variables
- func BlobsToShares(blobs ...*Blob) ([]share.Share, error)
- func ToAppBlobs(blobs ...*Blob) []*apptypes.Blob
- type Blob
- type Commitment
- type Proof
- type Service
- func (s *Service) Get(ctx context.Context, height uint64, namespace share.Namespace, ...) (blob *Blob, err error)
- func (s *Service) GetAll(ctx context.Context, height uint64, namespaces []share.Namespace) ([]*Blob, error)
- func (s *Service) GetProof(ctx context.Context, height uint64, namespace share.Namespace, ...) (proof *Proof, err error)
- func (s *Service) Included(ctx context.Context, height uint64, namespace share.Namespace, proof *Proof, ...) (_ bool, err error)
- func (s *Service) Submit(ctx context.Context, blobs []*Blob, txConfig *SubmitOptions) (uint64, error)
- type SubmitOptions
- type Submitter
Constants ¶
This section is empty.
Variables ¶
var ( ErrBlobNotFound = errors.New("blob: not found") ErrInvalidProof = errors.New("blob: invalid proof") )
Functions ¶
func BlobsToShares ¶
BlobsToShares accepts blobs and convert them to the Shares.
func ToAppBlobs ¶ added in v0.15.0
ToAppBlobs converts node's blob type to the blob type from celestia-app.
Types ¶
type Blob ¶
type Blob struct {
types.Blob `json:"blob"`
Commitment Commitment `json:"commitment"`
// contains filtered or unexported fields
}
Blob represents any application-specific binary data that anyone can submit to Celestia.
func NewBlobV0 ¶
NewBlobV0 constructs a new blob from the provided Namespace and data. The blob will be formatted as v0 shares.
func (*Blob) Index ¶ added in v0.13.1
Index returns the blob's first share index in the EDS. Only retrieved, on-chain blobs will have the index set. Default is -1.
func (*Blob) MarshalJSON ¶
func (*Blob) UnmarshalJSON ¶
type Commitment ¶
type Commitment []byte
Commitment is a Merkle Root of the subtree built from shares of the Blob. It is computed by splitting the blob into shares and building the Merkle subtree to be included after Submit.
func (Commitment) Equal ¶
func (com Commitment) Equal(c Commitment) bool
Equal ensures that commitments are the same
func (Commitment) String ¶
func (com Commitment) String() string
type Proof ¶
The Proof is a set of nmt proofs that can be verified only through the included method (due to limitation of the nmt https://github.com/celestiaorg/nmt/issues/218). Proof proves the WHOLE namespaced data to the row roots. TODO (@vgonkivs): rework `Proof` in order to prove a particular blob. https://github.com/celestiaorg/celestia-node/issues/2303
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func (*Service) Get ¶
func (s *Service) Get( ctx context.Context, height uint64, namespace share.Namespace, commitment Commitment, ) (blob *Blob, err error)
Get retrieves a blob in a given namespace at the given height by commitment. Get collects all namespaced data from the EDS, construct the blob and compares the commitment argument. `ErrBlobNotFound` can be returned in case blob was not found.
func (*Service) GetAll ¶
func (s *Service) GetAll(ctx context.Context, height uint64, namespaces []share.Namespace) ([]*Blob, error)
GetAll returns all blobs under the given namespaces at the given height. If all blobs were found without any errors, the user will receive a list of blobs. If the BlobService couldn't find any blobs under the requested namespaces, the user will receive an empty list of blobs along with an empty error. If some of the requested namespaces were not found, the user will receive all the found blobs and an empty error. If there were internal errors during some of the requests, the user will receive all found blobs along with a combined error message.
All blobs will preserve the order of the namespaces that were requested.
func (*Service) GetProof ¶
func (s *Service) GetProof( ctx context.Context, height uint64, namespace share.Namespace, commitment Commitment, ) (proof *Proof, err error)
GetProof returns an NMT inclusion proof for a specified namespace to the respective row roots on which the blob spans on at the given height, using the given commitment. It employs the same algorithm as service.Get() internally.
func (*Service) Included ¶
func (s *Service) Included( ctx context.Context, height uint64, namespace share.Namespace, proof *Proof, commitment Commitment, ) (_ bool, err error)
Included verifies that the blob was included in a specific height. To ensure that blob was included in a specific height, we need: 1. verify the provided commitment by recomputing it; 2. verify the provided Proof against subtree roots that were used in 1.;
func (*Service) Submit ¶
func (s *Service) Submit(ctx context.Context, blobs []*Blob, txConfig *SubmitOptions) (uint64, error)
Submit sends PFB transaction and reports the height at which it was included. Allows sending multiple Blobs atomically synchronously. Uses default wallet registered on the Node. Handles gas estimation and fee calculation.
type SubmitOptions ¶
SubmitOptions aliases TxOptions from state package allowing users to specify options for SubmitPFB transaction.
type Submitter ¶
type Submitter interface {
SubmitPayForBlob(context.Context, []*state.Blob, *state.TxConfig) (*types.TxResponse, error)
}
Submitter is an interface that allows submitting blobs to the celestia-core. It is used to avoid a circular dependency between the blob and the state package, since the state package needs the blob.Blob type for this signature.