Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EPIC] BlobModule #1835

Closed
4 of 7 tasks
Wondertan opened this issue Feb 28, 2023 · 5 comments
Closed
4 of 7 tasks

[EPIC] BlobModule #1835

Wondertan opened this issue Feb 28, 2023 · 5 comments
Assignees
Labels
area:api Related to celestia-node API area:blob

Comments

@Wondertan
Copy link
Member

Wondertan commented Feb 28, 2023

Context

So far, celestia-node has developed all the infrastructure and necessary components from the ground up to provide a secure and scalable DA network. Now, the time has come to create that DA module and its API basing, using which any application on top can put data, retrieve and verify its availability. We call this module BlobModule.

BlobModule API

Let's define the API for it. For simplicity and to follow our practice, we define it in Golang.

NOTE: The API is WIP and discussion towards it's finalization happens in #1829

// Blob represents any application-specific binary data that anyone can submit to Celestia.
type Blob struct {
	Namespace namespace.ID
	Data []byte
}

// Commit computes hash commitment of the Blob.
func (b *Blob) Commit() []byte

// BlobModule provides all necessary
type BlobModule interface {
	// Submit sends PFB transaction and reports the height it landed on.
	// Allows sending multiple Blobs atomically synchronously.
	// Uses default wallet registered on the Node.
	Submit(context.Context, Blob...) (height uint64, error)

	// Get retrieves all the blobs for given namespaces at the given height. 
	Get(context.Context, height uint64, namespace.ID...) ([]Blob, error)
	
	// Available checks whether the given hash commitment of a blob is available/included at the given height under a particular namespace.
   // Useful for light clients wishing to check the inclusion of the data.
	Available(context.Context, height uint64, namespace.ID, hash []byte]) (bool, error)
}

Tasks

  1. area:shares
    vgonkivs
  2. area:shares
  3. area:shares
  4. area:shares
  5. area:state
  6. 4 of 5
    area:blob
  7. documentation
@vgonkivs
Copy link
Member

@distractedm1nd
Copy link
Member

I would suggest moving the rest of the open issues to #2287 and closing this, so that we only have one blob module epic open

@Wondertan
Copy link
Member Author

Agreed. @vgonkivs, mind making the suggestion?

@vgonkivs
Copy link
Member

Will move all tasks to the Hardening EPIC

@ramin
Copy link
Contributor

ramin commented Mar 1, 2024

closing as remaining tasks moved to "the hardening" workstream/epic #2287

@ramin ramin closed this as completed Mar 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:api Related to celestia-node API area:blob
Projects
None yet
Development

No branches or pull requests

5 participants