diff --git a/src/lib/components/OnBoarding.svelte b/src/lib/components/OnBoarding.svelte index 85850b9..4f401e2 100644 --- a/src/lib/components/OnBoarding.svelte +++ b/src/lib/components/OnBoarding.svelte @@ -31,10 +31,8 @@ requestAddress($did) requested = true } - } - $:{ if($myAddressBook.length>0){ //if a record arrives in my address book show it on the page //TODO go to ContactList (would be better) scannedContact = $myAddressBook?.filter((it) => { return it.owner === $did }) diff --git a/src/relay.js b/src/relay.js index 4379aab..c4b39cf 100644 --- a/src/relay.js +++ b/src/relay.js @@ -1,56 +1,56 @@ -/* eslint-disable no-console */ - -import { noise } from '@chainsafe/libp2p-noise' import { yamux } from '@chainsafe/libp2p-yamux' import { createLibp2p } from 'libp2p' -import {circuitRelayTransport, circuitRelayServer} from '@libp2p/circuit-relay-v2' +import { noise } from '@chainsafe/libp2p-noise' +import { circuitRelayServer } from '@libp2p/circuit-relay-v2' +import { webSockets } from '@libp2p/websockets' +import * as filters from '@libp2p/websockets/filters' import { identify } from '@libp2p/identify' -import { pubsubPeerDiscovery } from "@libp2p/pubsub-peer-discovery"; -import { autoNAT } from '@libp2p/autonat' -import {dcutr} from "@libp2p/dcutr"; -import {gossipsub} from "@chainsafe/libp2p-gossipsub"; -import {FaultTolerance} from "@libp2p/interface-transport"; -import {kadDHT} from "@libp2p/kad-dht"; +import { createFromPrivKey } from '@libp2p/peer-id-factory' +import { unmarshalPrivateKey } from '@libp2p/crypto/keys' +import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' -const topics = [ - 'dcontact._peer - discovery._p2p._pubsub' // It's recommended but not required to extend the global space - // '_peer-discovery._p2p._pubsub' // Include if you want to participate in the global space -]; +// output of: console.log(server.peerId.privateKey.toString('hex')) +const relayPrivKey = '08011240821cb6bc3d4547fcccb513e82e4d718089f8a166b23ffcd4a436754b6b0774cf07447d1693cd10ce11ef950d7517bad6e9472b41a927cd17fc3fb23f8c70cd99' +// the peer id of the above key +// const relayId = '12D3KooWAJjbRkp8FPF5MKgMU53aUTxWkqvDrs4zc1VMbwRwfsbE' -// const reservationStore = new ReservationStore({ maxReservations: 100 }) +const encoded = uint8ArrayFromString(relayPrivKey, 'hex') +const privateKey = await unmarshalPrivateKey(encoded) +const peerId = await createFromPrivKey(privateKey) const server = await createLibp2p({ + peerId, addresses: { - listen: ['/ip4/127.0.0.1/tcp/12313/ws'] + listen: ['/ip4/0.0.0.0/tcp/12345/ws'] }, transports: [ - circuitRelayTransport(), webSockets({ filter: filters.all }) ], connectionEncryption: [noise()], streamMuxers: [yamux()], - peerDiscovery: [ - // bootstrap(bootstrapConfig), - pubsubPeerDiscovery({ - interval: 10000, - topics: topics, // defaults to ['_peer-discovery._p2p._pubsub'] - listenOnly: false - }) - ], services: { identify: identify(), - autoNAT: autoNAT(), - dcutr: dcutr(), - pubsub: gossipsub({ allowPublishToZeroPeers: true, canRelayMessage: true }), - circuitRelay: circuitRelayServer({ - reservations: { applyDefaultLimit: false, maxReservations: Infinity } + relay: circuitRelayServer({ + reservations: { + maxReservations: 5000, + reservationTtl: 1000, + defaultDataLimit: BigInt(1024 * 1024 * 1024) + } }) } -}); +}) + +server.addEventListener('peer:connect', async event => { + console.log('peer:connect', event.detail) +}) + +server.addEventListener('peer:disconnect', async event => { + console.log('peer:disconnect', event.detail) + server.peerStore.delete(event.detail) +}) -console.log( - 'Relay listening on multiaddr(s): ', - server.getMultiaddrs().map((ma) => ma.toString()) -); +console.log(server.peerId.toString()) +console.log('p2p addr: ', server.getMultiaddrs().map((ma) => ma.toString())) +// generates a deterministic address: /ip4/127.0.0.1/tcp/33519/ws/p2p/12D3KooWAJjbRkp8FPF5MKgMU53aUTxWkqvDrs4zc1VMbwRwfsbE