libp2p
    Preparing search index...

    Module @libp2p/gossipsub

    js-libp2p-gossipsub

    Travis CI ES Version Node Version

    Gossipsub is an implementation of pubsub based on meshsub and floodsub. You can read the specification here.

    libp2p-gossipsub currently implements the v1.1 of the spec.

    npm install @chainsafe/libp2p-gossipsub

    import { gossipsub } from '@chainsafe/libp2p-gossipsub'


    const libp2p = await createLibp2p({
    // ...
    services: {
    pubsub: gossipsub(options)
    }
    });

    libp2p.services.pubsub.addEventListener('message', (message) => {
    console.log(`${message.detail.topic}:`, new TextDecoder().decode(message.detail.data))
    })

    libp2p.services.pubsub.subscribe('fruit')

    libp2p.services.pubsub.publish('fruit', new TextEncoder().encode('banana'))
    const options = {…}
    const gossipsub = gossipsub(options)(libp2p)

    Options is an optional object with the following key-value pairs:

    • emitSelf: boolean identifying whether the node should emit to self on publish, in the event of the topic being subscribed (defaults to false).
    • gossipIncoming: boolean identifying if incoming messages on a subscribed topic should be automatically gossiped (defaults to true).
    • fallbackToFloodsub: boolean identifying whether the node should fallback to the floodsub protocol, if another connecting peer does not support gossipsub (defaults to true).
    • floodPublish: boolean identifying if self-published messages should be sent to all peers, (defaults to true).
    • doPX: boolean identifying whether PX is enabled; this should be enabled in bootstrappers and other well connected/trusted nodes (defaults to false).
    • msgIdFn: a function with signature (message) => string defining the message id given a message, used internally to deduplicate gossip (defaults to (message) => message.from + message.seqno.toString('hex'))
    • signMessages: boolean identifying if we want to sign outgoing messages or not (default: true)
    • strictSigning: boolean identifying if message signing is required for incoming messages or not (default: true)
    • messageCache: optional, a customized MessageCache instance, see the implementation for the interface.
    • scoreParams: optional, a customized peer score parameters Object.
    • scoreThresholds: optional, a customized peer score thresholds Object.
    • directPeers: optional, an array of AddrInfo of peers with which we will maintain direct connections.

    For the remaining API, see @libp2p/interface-pubsub.

    This module is actively under development. Please check out the issues and submit PRs!

    MIT © ChainSafe Systems

    Modules

    message
    metrics
    score
    types