Arweave Bundles
A library for creating, editing, reading and verifying bundles.
See ANS-104 for more details.
Installing the library
Using npm:
npm install arbundles
Using yarn:
yarn add arbundles
Post data
import { createData, ArweaveSigner } from "ans104";
const data = { data: "some data" };
const signer = new ArweaveSigner(jwk);
const item = await createData(data, signer);
await item.sign(signer);
await item.sendToBundler();
Creating bundles
import { bundleAndSignData, ArweaveSigner } from "arbundles";
const dataItems = [
{ data: "some data" },
{ data: "some other data" },
];
const signer = new ArweaveSigner(jwk);
const bundle = await bundleAndSignData(dataItems, jwk);
It's as simple as that! All the binary encoding is handled for you.
Creating and using a DataItem
import { createData, ArweaveSigner } from "arbundles";
const data = { data: "some data" };
const signer = new ArweaveSigner(jwk);
const dataItem = await createData(data, signer);
const owner = dataItem.owner;
await dataItem.sign(jwk);
assert(owner == jwk.n);
Get a DataItem in a bundle
const bundle = await bundleAndSignData(dataItems, jwk);
const byIndex = bundle.get(0);
const byId = bundle.get("hKMMPNh_emBf8v_at1tFzNYACisyMQNcKzeeE1QE9p8");
const all = bundle.items;
Submit a transaction
const bundle = await bundleAndSignData(dataItems, jwk);
const tx = await bundle.toTransaction(arweave, jwk);
tx.addTag('MyTag', 'value1');
tx.addTag('MyTag', 'value2');
await arweave.transactions.sign(tx, jwk);
await arweave.transactions.post(tx);
Parse a bundle binary
import { unbundleData } from "arbundles";
const data = await arweave.transactions.getData("hKMMPNh_emBf8v_at1tFzNYACisyMQNcKzeeE1QE9p8");
const bundle = new Bundle(data);
File API
This API is experimental so avoid use in production. There's one issue that exists that may affect it's overall
functionality and could lead to breaking changes.
The file API stores the items in the filesystem meaning you can bundle more items without hitting the NodeJS memory
limit.
Docs coming soon...