@jbrower95/eigenblob
v1.0.2
Published
Post blobs to EigenDA.
Readme
EigenBlob
Disclosure -- This is a third party library. This repository is not affiliated with Eigen Labs, Layr Labs, or any related entity. Use at your own risk. See LICENSE for more info.
EigenBlob is a convenience library that wraps EigenDA for usage in web and server applications.
It's sort of like decentralized S3 -- post some data, and get it back later. All without a backend. See "Constraints" for more info on what you can do.
Getting Started
Installation
npm install @jbrower95/eigenblob.
Sample Usage
const client = new EigenDA(); // defaults to testnet
// you can `.put()` any JS object that is serializable.
const putRequest = client.put({hello: 'world'});
// putting takes a while... potentially a few minutes.
const blob = await putRequest.wait(10_000 /* max deadline in MS */);
// if something comes up, and you want to cancel an inflight request, try;
try {
await putRequest.cancel();
} catch {};
// you can use the `putRequest` to fetch this item back later.
const blob = await client.get(putRequest);
expect(blob.hello).toEqual('world');
// if you want to be able to fetch the blob later, just serialize `putRequest`.
window.localStorage.setItem("my-blob", putRequest.toString()); // set
// then, later:
const contents = await client.get(
EigenBlob.from(window.localStorage.getItem("my-blob"));
)More Information
Under the hood
EigenBlobusesCompressionStreamto gzip encode your object after JSON encoding it.EigenBlobhandles polling for different intermediate states and making sure that your blob is successfully added to the network before returning.
Constraints
- A
.put()can take 3-8 minutes, as the SDK waits for the blob to finalize on the network. - A
.get()is typically much faster, on the order of seconds. - Blobs can't be more than 2MB in size.
- Blobs exist for 14 days on the network.
- Testnet's free tier is limited to 1.28 kb/s. (source).
- For mainnet, you can contact Eigen for access. (source). Simply override the URL in your
EigenDA()client.
