mirror of https://github.com/vacp2p/nim-libp2p.git
44 lines
1.4 KiB
Nim
44 lines
1.4 KiB
Nim
import asyncdispatch2, nimcrypto, strutils
|
|
import ../libp2p/daemon/daemonapi, ../libp2p/[base58, multicodec, multiaddress]
|
|
import hexdump
|
|
|
|
const
|
|
PubSubTopic = "test-net"
|
|
|
|
proc dumpSubscribedPeers(api: DaemonAPI) {.async.} =
|
|
var peers = await api.pubsubListPeers(PubSubTopic)
|
|
echo "= List of connected and subscribed peers:"
|
|
for item in peers:
|
|
echo Base58.encode(item)
|
|
|
|
proc main() {.async.} =
|
|
echo "= Starting P2P bootnode"
|
|
var api = await newDaemonApi({DHTFull, PSGossipSub})
|
|
var id = await api.identity()
|
|
let tpeerid = Base58.encode(id.peer)
|
|
echo "= P2P bootnode ", tpeerid, " started."
|
|
let mcip4 = multiCodec("ip4")
|
|
let mcip6 = multiCodec("ip6")
|
|
echo "= You can use one of this addresses to bootstrap your nodes:"
|
|
for item in id.addresses:
|
|
if item.protoCode() == mcip4 or item.protoCode() == mcip6:
|
|
echo $item & "/ipfs/" & tpeerid
|
|
|
|
proc pubsubLogger(api: DaemonAPI,
|
|
ticket: PubsubTicket,
|
|
message: PubSubMessage): Future[bool] {.async.} =
|
|
let bpeer = Base58.encode(message.peer)
|
|
let msglen = len(message.data)
|
|
echo "= Recieved pubsub message wit length ", msglen,
|
|
" bytes from peer ", bpeer
|
|
echo dumpHex(message.data)
|
|
await api.dumpSubscribedPeers()
|
|
result = true
|
|
|
|
var ticket = await api.pubsubSubscribe(PubSubTopic, pubsubLogger)
|
|
|
|
when isMainModule:
|
|
waitFor(main())
|
|
while true:
|
|
poll()
|