From fda65ca83b3bbd7690fc0299c416e67a4775580f Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Thu, 13 May 2021 11:49:20 +1000 Subject: [PATCH 1/4] Fix documentation --- src/lib/waku.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/lib/waku.ts b/src/lib/waku.ts index ee194e2a86..f73338271a 100644 --- a/src/lib/waku.ts +++ b/src/lib/waku.ts @@ -34,12 +34,8 @@ export class Waku { /** * Create new waku node - * @param listenAddresses: Array of Multiaddrs on which the node should listen. - * If not present, the node is dial only. - * @param staticNoiseKey: A static key to use for noise, - * mainly used for test to reduce entropy usage. - * @throws If - * @returns {Promise} + * + * @param options Takes the same options than `Libp2p`. */ static async create(options: Partial): Promise { const opts = Object.assign( From 19e265c490ee77fb877374c3588fb33f09011018 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Thu, 13 May 2021 11:49:36 +1000 Subject: [PATCH 2/4] Remove unneeded variable --- src/lib/waku.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/waku.ts b/src/lib/waku.ts index f73338271a..b36eefb47c 100644 --- a/src/lib/waku.ts +++ b/src/lib/waku.ts @@ -122,8 +122,6 @@ export class Waku { if (!localMultiaddr || localMultiaddr.toString() === '') { throw 'Not listening on localhost'; } - const multiAddrWithId = - localMultiaddr + '/p2p/' + this.libp2p.peerId.toB58String(); - return multiAddrWithId; + return localMultiaddr + '/p2p/' + this.libp2p.peerId.toB58String(); } } From 6f7c1e0ca3f00a6e52b00c129e644eccf3ed9fb8 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Thu, 13 May 2021 11:47:03 +1000 Subject: [PATCH 3/4] Enhance addPeerToAddressBook So that consumer does not need to import multiaddr and peer-id. --- CHANGELOG.md | 4 ++++ README.md | 8 +++----- examples/web-chat/src/App.tsx | 17 ++++++----------- src/lib/waku.ts | 26 +++++++++++++++++++++++--- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5614d566bb..775f2af9a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- Enable passing `string`s to `addPeerToAddressBook`. +- Use `addPeerToAddressBook` in examples. + ## [0.1.0] - 2021-05-12 ### Added diff --git a/README.md b/README.md index 6f8c4424e1..d0717d2383 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,9 @@ Connect to a new peer: import { multiaddr } from 'multiaddr'; import PeerId from 'peer-id'; -waku.libp2p.peerStore.addressBook.add( - PeerId.createFromB58String( - '16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ' - ), - [multiaddr('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss')] +waku.addPeerToAddressBook( + '16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ', + ['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss'] ); ``` diff --git a/examples/web-chat/src/App.tsx b/examples/web-chat/src/App.tsx index 0a01192640..d561a6fec9 100644 --- a/examples/web-chat/src/App.tsx +++ b/examples/web-chat/src/App.tsx @@ -1,4 +1,3 @@ -import { multiaddr } from 'multiaddr'; import PeerId from 'peer-id'; import { useEffect, useState } from 'react'; import './App.css'; @@ -147,17 +146,13 @@ async function initWaku(setter: (waku: Waku) => void) { setter(waku); - waku.libp2p.peerStore.addressBook.add( - PeerId.createFromB58String( - '16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ' - ), - [multiaddr('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss')] + waku.addPeerToAddressBook( + '16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ', + ['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss'] ); - waku.libp2p.peerStore.addressBook.add( - PeerId.createFromB58String( - '16Uiu2HAmSyrYVycqBCWcHyNVQS6zYQcdQbwyov1CDijboVRsQS37' - ), - [multiaddr('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7009/wss')] + waku.addPeerToAddressBook( + '16Uiu2HAmSyrYVycqBCWcHyNVQS6zYQcdQbwyov1CDijboVRsQS37', + ['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7009/wss'] ); } catch (e) { console.log('Issue starting waku ', e); diff --git a/src/lib/waku.ts b/src/lib/waku.ts index b36eefb47c..e5b944bb18 100644 --- a/src/lib/waku.ts +++ b/src/lib/waku.ts @@ -4,7 +4,7 @@ import { bytes } from 'libp2p-noise/dist/src/@types/basic'; import { Noise } from 'libp2p-noise/dist/src/noise'; import Websockets from 'libp2p-websockets'; import filters from 'libp2p-websockets/src/filters'; -import { Multiaddr } from 'multiaddr'; +import { Multiaddr, multiaddr } from 'multiaddr'; import PeerId from 'peer-id'; import { RelayCodec, WakuRelay } from './waku_relay'; @@ -92,6 +92,7 @@ export class Waku { /** * Dials to the provided peer. + * * @param peer The peer to dial */ async dial( @@ -103,8 +104,27 @@ export class Waku { return this.libp2p.dialProtocol(peer, [RelayCodec, StoreCodec]); } - addPeerToAddressBook(peerId: PeerId, multiaddr: Multiaddr[]): void { - this.libp2p.peerStore.addressBook.set(peerId, multiaddr); + /** + * Add peer to address book, it will be auto-dialed in the background. + */ + addPeerToAddressBook( + peerId: PeerId | string, + multiaddrs: Multiaddr[] | string[] + ): void { + let peer; + if (typeof peerId === 'string') { + peer = PeerId.createFromB58String(peerId); + } else { + peer = peerId; + } + const addresses = multiaddrs.map((addr: Multiaddr | string) => { + if (typeof addr === 'string') { + return multiaddr(addr); + } else { + return addr; + } + }); + this.libp2p.peerStore.addressBook.set(peer, addresses); } async stop(): Promise { From e44776d09c99fcb1a28cfd3699920b7fd1785868 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Thu, 13 May 2021 11:51:39 +1000 Subject: [PATCH 4/4] Update usage with dial peer method --- CHANGELOG.md | 2 +- README.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 775f2af9a4..ba9725419e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Enable passing `string`s to `addPeerToAddressBook`. -- Use `addPeerToAddressBook` in examples. +- Use `addPeerToAddressBook` in examples and usage doc. ## [0.1.0] - 2021-05-12 diff --git a/README.md b/README.md index d0717d2383..347e969458 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,10 @@ Connect to a new peer: import { multiaddr } from 'multiaddr'; import PeerId from 'peer-id'; +// Directly dial a new peer +await waku.dial('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ'); + +// Or, add peer to address book so it auto dials in the background waku.addPeerToAddressBook( '16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ', ['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss']