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
![Dev Dependency Status](https://david-dm.org/ethereum/web3.js/1.x/dev-status.svg?path=packages/web3-bzz)
This is a sub-package of web3.js.
This is the swarm package.
Please read the documentation for more.
Installation
Node.js
npm install 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.