Arweave-Bundles (ANS-102)
This library contains routines to create, read, and verify Arweave bundled data.
See ANS-102 for more details.
Installing the library
You need to first have NodeJS and NPM installed. Then you can run:
npm install arweave-bundles
Initializing the library
This is a self-contained library, so we need to initialize the API with a couple of dependencies:
import Arweave from 'arweave';
import deepHash from 'arweave/node/lib/deepHash';
import ArweaveBundles from 'arweave-bundles';
const deps = {
utils: Arweave.utils,
crypto: Arweave.crypto,
deepHash: deepHash,
}
const arBundles = ArweaveBundles(deps);
Unbundling from a Transaction containing DataItems
const txData = myTx.get('data', { decode: true, string: true });
const items = await ArweaveBundles.unbundleData(txData);
Reading data and tags from a DataItem
const item = items[1];
const data = await arBundles.decodeData(item, { string: false });
const data = await arBundles.decodeData(item, { string: true });
const id = item.id
const owner = item.owner
const target = item.taget
const signature = item.signature
const nonce = item.none
for (let i = 0; i < item.tags.length; i++) {
const tag = await arBundles.decodeTag(item.tag)
}
Creating a DataItem
const myTags = [
{ name: 'App-Name', value: 'myApp' },
{ name: 'App-Version', value: '1.0.0' }
];
let item = await arBundles.createData({ to: 'awalleet', data: 'somemessage', tags: myTags }, wallet);
arBundles.addTag(item, 'MyTag', 'value1');
arBundles.addTag(item, 'MyTag', 'value2');
data = await arBundles.sign(item, wallet);
Bundling up DataItems and writing a transaction
const items = await makeManyDataItems();
const myBundle = await arBundles.bundleData(items);
const myTx = await arweave.createTransaction({ data: myBundle }, wallet);
myTx.addTag('Bundle-Format', 'json');
myTx.addTag('Bundle-Version', '1.0.0');
myTx.addTag('Content-Type', 'application/json');
await arweave.transactions.sign(tx, wallet);
await arweave.transactions.post(tx);