@web3-storage/piece-hasher-worker
v1.0.3
Published
Web worker for creating piece hashes.
Downloads
67
Readme
piece-hasher-worker
Web worker for creating piece hashes.
Piece hashes are the primary means of addressing data stored on Filecoin. Piece hashes are generated on the client for provability and verification, however they are computationally expensive to create. By moving the work into a dedicated web worker the main thread does not get blocked.
Install
npm install @web3-storage/piece-hasher-worker
Usage
Import the module in your application:
import * as PieceHasher from '@web3-storage/piece-hasher-worker'
Make the worker script available for your application to download. i.e. the file at
./node_modules/@web3-storage/piece-hasher-worker/worker.min.js
. It MUST be hosted on the same domain as your application.Create a hasher passing the worker script URL, and create a multihash from some data:
const pieceHasher = PieceHasher.create('https://example.org/worker.js') const digest = await pieceHasher.digest(crypto.getRandomValues(new Uint8Array(100)))
Optionally, build a CID from the returned multihash:
import * as Link from 'multiformats/link' import * as raw from 'multiformats/codecs/raw' const cid = Link.create(raw.code, digest) console.log(cid.toString())
Example
Use with the web3.storage client:
import * as Client from '@web3-storage/w3up-client'
import * as PieceHasher from '@web3-storage/piece-hasher-worker'
const client = Client.create(/* ... */)
const pieceHasher = PieceHasher.create('https://example.org/worker.js')
const cid = await client.uploadFile(new Blob(['some data']), {
pieceHasher,
onShardStored ({ piece }) {
console.log(`Stored a shard with Piece CID: ${piece}`)
}
})
console.log(cid.toString())
Contributing
Feel free to join in. All welcome. Open an issue!
License
Dual-licensed under MIT + Apache 2.0