Bundles
Bundles consist of multiple transactions collated together and written to Arweave as a single transaction. Each transaction in a bundle is called a DataItem. A DataItem shares many properties with a regular data transaction, including owner, data, tags, target, signature, and id. However, it cannot transfer tokens and does not have a reward, as the top-level transaction covers the reward for all bundled data.
Why Bundles?
Bundles allow for infinite transaction scaling - allowing up to 2^256 transactions to be stored in a single bundle. As bundle sizes increase, Arweave's transaction capacity can increase linearly - i.e. using 1 million item bundles allows for a 1,000,000x increase in layer 1 transaction capacity.
Nested Bundles
Bundles can be nested within other bundles, theoretically allowing for unlimited levels of nesting. However, items within a nested bundle are not accessible through our GQL.
Bundle spec and implementations
The bundle spec, designed by Irys, is open-sourced and is currently implemented in JavaScript (opens in a new tab), Go (opens in a new tab), and Rust (opens in a new tab).
More Information
To learn more, please refer to the spec documents.