A TypeScript implementation of the DiscV5 protocol
Included is a libp2p peer-discovery compatibility module.
import {Discv5Discovery} from "@chainsafe/discv5";
import {ENR, SignableENR} from "@chainsafe/enr";
import {createLibp2p} from "libp2p";
import PeerId from "peer-id";
const myPeerId: PeerId = ...;
const bootEnrs: ENR[] = [...];
const libp2p = createLibp2p({
peerId: myPeerId,
peerDiscovery: [() => new Discv5Discovery({
enabled: true,
enr: SignableENR.createFromPeerId(myPeerId),
peerId: myPeerId,
bindAddrs: {ip4: "/ip4/0.0.0.0/udp/9000"},
bootEnrs,
searchInterval: 30000, // wait 30s between searches
})]
});
By default, importing this library will, as a side-effect, change the enr crypto implementation to use bcrypto
.
If you'd like to remain using @chainsafe/enr
's default crypto you can add this after importing @chainsafe/discv5
:
import {setV4Crypto, defaultCrypto} from "@chainsafe/enr";
setV4Crypto(defaultCrypto)
Apache-2.0