What is web3-bzz?
The web3-bzz package is a module of the web3.js library that allows interaction with the Swarm decentralized storage system. It provides functionalities to upload, download, and manage files on the Swarm network.
What are web3-bzz's main functionalities?
Upload File
This feature allows you to upload a file to the Swarm network. The code sample demonstrates how to upload a simple text file and log the resulting hash.
const Web3Bzz = require('web3-bzz');
const bzz = new Web3Bzz('http://localhost:8500');
const file = new Blob(['Hello, Swarm!'], { type: 'text/plain' });
bzz.uploadFile(file).then(hash => {
console.log('File uploaded with hash:', hash);
});
Download File
This feature allows you to download a file from the Swarm network using its hash. The code sample shows how to download a file and log its content.
const Web3Bzz = require('web3-bzz');
const bzz = new Web3Bzz('http://localhost:8500');
const hash = 'your-file-hash';
bzz.downloadFile(hash).then(file => {
console.log('File downloaded:', file);
});
Upload Directory
This feature allows you to upload a directory to the Swarm network. The code sample demonstrates how to upload a directory containing an HTML file and a CSS file.
const Web3Bzz = require('web3-bzz');
const bzz = new Web3Bzz('http://localhost:8500');
const directory = [
{ path: 'index.html', data: '<html><body>Hello, Swarm!</body></html>' },
{ path: 'style.css', data: 'body { font-family: Arial; }' }
];
bzz.uploadDirectory(directory).then(hash => {
console.log('Directory uploaded with hash:', hash);
});
Other packages similar to web3-bzz
ipfs-http-client
The ipfs-http-client package allows interaction with the InterPlanetary File System (IPFS), a peer-to-peer hypermedia protocol. Similar to web3-bzz, it provides functionalities to upload, download, and manage files on a decentralized network. However, it is designed for IPFS rather than Swarm.
orbit-db
The orbit-db package is a serverless, distributed, peer-to-peer database built on IPFS. It offers similar decentralized storage capabilities but focuses on database functionalities rather than file storage. It provides a higher-level abstraction compared to web3-bzz.
gun
The gun package is a decentralized, offline-first, graph database that provides real-time data synchronization. While it offers decentralized storage like web3-bzz, it is more focused on real-time data and graph structures rather than file storage.
web3-bzz
This is a sub-package of web3.js.
This is the swarm package.
Please read the documentation for more.
Installation
You can install the package either using NPM or using Yarn
Using NPM
npm install web3-bzz
Using Yarn
yarn add web3-bzz
Usage
const Web3Bzz = require('web3-bzz');
const bzz = new Web3Bzz('http://swarm-gateways.net');
Types
All the TypeScript typings are placed in the types
folder.