Skip to content

Commit 0fbb597

Browse files
vasco-santosjacobheun
andcommittedMay 28, 2020
docs: update examples to 0.28.x api (#625)
* chore: update examples to 0.28 api * chore: use libp2p-noise in examples * chore: examples using multiaddrs property of libp2p Co-authored-by: Jacob Heun <jacobheun@gmail.com> * docs: update language around secio in crypto example Co-authored-by: Jacob Heun <jacobheun@gmail.com>
1 parent 56316b8 commit 0fbb597

File tree

30 files changed

+298
-249
lines changed

30 files changed

+298
-249
lines changed
 

‎examples/chat/src/dialer.js

+9-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/* eslint-disable no-console */
33

44
const PeerId = require('peer-id')
5-
const PeerInfo = require('peer-info')
5+
const multiaddr = require('multiaddr')
66
const Node = require('./libp2p-bundle')
77
const { stdinToStream, streamToConsole } = require('./stream')
88

@@ -13,27 +13,25 @@ async function run() {
1313
])
1414

1515
// Create a new libp2p node on localhost with a randomly chosen port
16-
const peerDialer = new PeerInfo(idDialer)
17-
peerDialer.multiaddrs.add('/ip4/0.0.0.0/tcp/0')
1816
const nodeDialer = new Node({
19-
peerInfo: peerDialer
17+
peerId: idDialer,
18+
addresses: {
19+
listen: ['/ip4/0.0.0.0/tcp/0']
20+
}
2021
})
2122

22-
// Create a PeerInfo with the listening peer's address
23-
const peerListener = new PeerInfo(idListener)
24-
peerListener.multiaddrs.add('/ip4/127.0.0.1/tcp/10333')
25-
2623
// Start the libp2p host
2724
await nodeDialer.start()
2825

2926
// Output this node's address
3027
console.log('Dialer ready, listening on:')
31-
peerListener.multiaddrs.forEach((ma) => {
32-
console.log(ma.toString() + '/p2p/' + idListener.toB58String())
28+
nodeDialer.multiaddrs.forEach((ma) => {
29+
console.log(ma.toString() + '/p2p/' + idDialer.toB58String())
3330
})
3431

3532
// Dial to the remote peer (the "listener")
36-
const { stream } = await nodeDialer.dialProtocol(peerListener, '/chat/1.0.0')
33+
const listenerMa = multiaddr(`/ip4/127.0.0.1/tcp/10333/p2p/${idListener.toB58String()}`)
34+
const { stream } = await nodeDialer.dialProtocol(listenerMa, '/chat/1.0.0')
3735

3836
console.log('Dialer dialed to listener on protocol: /chat/1.0.0')
3937
console.log('Type a message and see what happens')

‎examples/chat/src/libp2p-bundle.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
const TCP = require('libp2p-tcp')
44
const WS = require('libp2p-websockets')
55
const mplex = require('libp2p-mplex')
6-
const secio = require('libp2p-secio')
6+
const SECIO = require('libp2p-secio')
7+
const { NOISE } = require('libp2p-noise')
78
const defaultsDeep = require('@nodeutils/defaults-deep')
89
const libp2p = require('../../..')
910

@@ -16,7 +17,7 @@ class Node extends libp2p {
1617
WS
1718
],
1819
streamMuxer: [ mplex ],
19-
connEncryption: [ secio ]
20+
connEncryption: [ NOISE, SECIO ]
2021
}
2122
}
2223

‎examples/chat/src/listener.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
'use strict'
22
/* eslint-disable no-console */
33

4+
const multaddr = require('multiaddr')
45
const PeerId = require('peer-id')
5-
const PeerInfo = require('peer-info')
66
const Node = require('./libp2p-bundle.js')
77
const { stdinToStream, streamToConsole } = require('./stream')
88

99
async function run() {
1010
// Create a new libp2p node with the given multi-address
1111
const idListener = await PeerId.createFromJSON(require('./peer-id-listener'))
12-
const peerListener = new PeerInfo(idListener)
13-
peerListener.multiaddrs.add('/ip4/0.0.0.0/tcp/10333')
1412
const nodeListener = new Node({
15-
peerInfo: peerListener
13+
peerId: idListener,
14+
addresses: {
15+
listen: ['/ip4/0.0.0.0/tcp/10333']
16+
}
1617
})
1718

1819
// Log a message when a remote peer connects to us
19-
nodeListener.on('peer:connect', (peerInfo) => {
20-
console.log(peerInfo.id.toB58String())
20+
nodeListener.connectionManager.on('peer:connect', (connection) => {
21+
console.log('connected to: ', connection.remotePeer.toB58String())
2122
})
2223

2324
// Handle messages for the protocol
@@ -33,7 +34,7 @@ async function run() {
3334

3435
// Output listen addresses to the console
3536
console.log('Listener ready, listening on:')
36-
peerListener.multiaddrs.forEach((ma) => {
37+
nodeListener.multiaddrs.forEach((ma) => {
3738
console.log(ma.toString() + '/p2p/' + idListener.toB58String())
3839
})
3940
}

‎examples/discovery-mechanisms/1.js

+9-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const Libp2p = require('../../')
55
const TCP = require('libp2p-tcp')
66
const Mplex = require('libp2p-mplex')
77
const SECIO = require('libp2p-secio')
8+
const { NOISE } = require('libp2p-noise')
89
const Bootstrap = require('libp2p-bootstrap')
910

1011
// Find this list at: https://github.com/ipfs/js-ipfs/blob/master/src/core/runtime/config-nodejs.json
@@ -22,10 +23,13 @@ const bootstrapers = [
2223

2324
;(async () => {
2425
const node = await Libp2p.create({
26+
addresses: {
27+
listen: ['/ip4/0.0.0.0/tcp/0']
28+
},
2529
modules: {
2630
transport: [TCP],
2731
streamMuxer: [Mplex],
28-
connEncryption: [SECIO],
32+
connEncryption: [NOISE, SECIO],
2933
peerDiscovery: [Bootstrap]
3034
},
3135
config: {
@@ -39,15 +43,13 @@ const bootstrapers = [
3943
}
4044
})
4145

42-
node.peerInfo.multiaddrs.add('/ip4/0.0.0.0/tcp/0')
43-
44-
node.on('peer:connect', (peer) => {
45-
console.log('Connection established to:', peer.id.toB58String()) // Emitted when a peer has been found
46+
node.connectionManager.on('peer:connect', (connection) => {
47+
console.log('Connection established to:', connection.remotePeer.toB58String()) // Emitted when a peer has been found
4648
})
4749

48-
node.on('peer:discovery', (peer) => {
50+
node.on('peer:discovery', (peerId) => {
4951
// No need to dial, autoDial is on
50-
console.log('Discovered:', peer.id.toB58String())
52+
console.log('Discovered:', peerId.toB58String())
5153
})
5254

5355
await node.start()

‎examples/discovery-mechanisms/2.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@ const Libp2p = require('../../')
55
const TCP = require('libp2p-tcp')
66
const Mplex = require('libp2p-mplex')
77
const SECIO = require('libp2p-secio')
8+
const { NOISE } = require('libp2p-noise')
89
const MulticastDNS = require('libp2p-mdns')
910

1011
const createNode = async () => {
1112
const node = await Libp2p.create({
13+
addresses: {
14+
listen: ['/ip4/0.0.0.0/tcp/0']
15+
},
1216
modules: {
1317
transport: [TCP],
1418
streamMuxer: [Mplex],
15-
connEncryption: [SECIO],
19+
connEncryption: [NOISE, SECIO],
1620
peerDiscovery: [MulticastDNS]
1721
},
1822
config: {
@@ -24,7 +28,6 @@ const createNode = async () => {
2428
}
2529
}
2630
})
27-
node.peerInfo.multiaddrs.add('/ip4/0.0.0.0/tcp/0')
2831

2932
return node
3033
}
@@ -35,8 +38,8 @@ const createNode = async () => {
3538
createNode()
3639
])
3740

38-
node1.on('peer:discovery', (peer) => console.log('Discovered:', peer.id.toB58String()))
39-
node2.on('peer:discovery', (peer) => console.log('Discovered:', peer.id.toB58String()))
41+
node1.on('peer:discovery', (peerId) => console.log('Discovered:', peerId.toB58String()))
42+
node2.on('peer:discovery', (peerId) => console.log('Discovered:', peerId.toB58String()))
4043

4144
await Promise.all([
4245
node1.start(),

‎examples/discovery-mechanisms/README.md

+25-12
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ A Peer Discovery module enables libp2p to find peers to connect to. Think of the
44

55
With these system, a libp2p node can both have a set of nodes to always connect on boot (bootstraper nodes), discover nodes through locality (e.g connected in the same LAN) or through serendipity (random walks on a DHT).
66

7-
These mechanisms save configuration and enable a node to operate without any explicit dials, it will just work.
7+
These mechanisms save configuration and enable a node to operate without any explicit dials, it will just work. Once new peers are discovered, their known data is stored in the peer's PeerStore.
88

99
## 1. Bootstrap list of Peers when booting a node
1010

@@ -20,7 +20,7 @@ const node = Libp2p.create({
2020
modules: {
2121
transport: [ TCP ],
2222
streamMuxer: [ Mplex ],
23-
connEncryption: [ SECIO ],
23+
connEncryption: [ NOISE, SECIO ],
2424
peerDiscovery: [ Bootstrap ]
2525
},
2626
config: {
@@ -55,11 +55,14 @@ Now, once we create and start the node, we can listen for events such as `peer:d
5555

5656
```JavaScript
5757
const node = await Libp2p.create({
58-
peerInfo,
58+
peerId,
59+
addresses: {
60+
listen: ['/ip4/0.0.0.0/tcp/0']
61+
}
5962
modules: {
6063
transport: [ TCP ],
6164
streamMuxer: [ Mplex ],
62-
connEncryption: [ SECIO ],
65+
connEncryption: [ NOISE, SECIO ],
6366
peerDiscovery: [ Bootstrap ]
6467
},
6568
config: {
@@ -73,15 +76,13 @@ const node = await Libp2p.create({
7376
}
7477
})
7578

76-
node.peerInfo.multiaddrs.add('/ip4/0.0.0.0/tcp/0')
77-
78-
node.on('peer:connect', (peer) => {
79-
console.log('Connection established to:', peer.id.toB58String()) // Emitted when a peer has been found
79+
node.connectionManager.on('peer:connect', (connection) => {
80+
console.log('Connection established to:', connection.remotePeer.toB58String()) // Emitted when a new connection has been created
8081
})
8182

82-
// Emitted when a peer has been found
83-
node.on('peer:discovery', (peer) => {
84-
console.log('Discovered:', peer.id.toB58String())
83+
node.on('peer:discovery', (peerId) => {
84+
// No need to dial, autoDial is on
85+
console.log('Discovered:', peerId.toB58String())
8586
})
8687

8788
await node.start()
@@ -100,6 +101,15 @@ Discovered: QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64
100101
Discovered: QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd
101102
Discovered: QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3
102103
Discovered: QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx
104+
Connection established to: QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
105+
Connection established to: QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z
106+
Connection established to: QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM
107+
Connection established to: QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm
108+
Connection established to: QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu
109+
Connection established to: QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64
110+
Connection established to: QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd
111+
Connection established to: QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3
112+
Connection established to: QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx
103113
```
104114

105115
## 2. MulticastDNS to find other peers in the network
@@ -114,10 +124,13 @@ const MulticastDNS = require('libp2p-mdns')
114124

115125
const createNode = () => {
116126
return Libp2p.create({
127+
addresses: {
128+
listen: ['/ip4/0.0.0.0/tcp/0']
129+
}
117130
modules: {
118131
transport: [ TCP ],
119132
streamMuxer: [ Mplex ],
120-
connEncryption: [ SECIO ],
133+
connEncryption: [ NOISE, SECIO ],
121134
peerDiscovery: [ MulticastDNS ]
122135
},
123136
config: {

‎examples/echo/src/dialer.js

+10-12
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
* Dialer Node
66
*/
77

8+
const multiaddr = require('multiaddr')
89
const PeerId = require('peer-id')
9-
const PeerInfo = require('peer-info')
1010
const Node = require('./libp2p-bundle')
1111
const pipe = require('it-pipe')
1212

@@ -17,28 +17,26 @@ async function run() {
1717
])
1818

1919
// Dialer
20-
const dialerPeerInfo = new PeerInfo(dialerId)
21-
dialerPeerInfo.multiaddrs.add('/ip4/0.0.0.0/tcp/0')
2220
const dialerNode = new Node({
23-
peerInfo: dialerPeerInfo
21+
addresses: {
22+
listen: ['/ip4/0.0.0.0/tcp/0']
23+
},
24+
peerId: dialerId
2425
})
2526

26-
// Peer to Dial (the listener)
27-
const listenerPeerInfo = new PeerInfo(listenerId)
28-
const listenerMultiaddr = '/ip4/127.0.0.1/tcp/10333/p2p/' +
29-
listenerId.toB58String()
30-
listenerPeerInfo.multiaddrs.add(listenerMultiaddr)
27+
// Add peer to Dial (the listener) into the PeerStore
28+
const listenerMultiaddr = '/ip4/127.0.0.1/tcp/10333/p2p/' + listenerId.toB58String()
3129

3230
// Start the dialer libp2p node
3331
await dialerNode.start()
3432

3533
console.log('Dialer ready, listening on:')
36-
dialerPeerInfo.multiaddrs.forEach((ma) => console.log(ma.toString() +
34+
dialerNode.multiaddrs.forEach((ma) => console.log(ma.toString() +
3735
'/p2p/' + dialerId.toB58String()))
3836

3937
// Dial the listener node
40-
console.log('Dialing to peer:', listenerMultiaddr.toString())
41-
const { stream } = await dialerNode.dialProtocol(listenerPeerInfo, '/echo/1.0.0')
38+
console.log('Dialing to peer:', listenerMultiaddr)
39+
const { stream } = await dialerNode.dialProtocol(listenerMultiaddr, '/echo/1.0.0')
4240

4341
console.log('nodeA dialed to nodeB on protocol: /echo/1.0.0')
4442

‎examples/echo/src/libp2p-bundle.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
const TCP = require('libp2p-tcp')
44
const WS = require('libp2p-websockets')
55
const mplex = require('libp2p-mplex')
6-
const secio = require('libp2p-secio')
6+
const SECIO = require('libp2p-secio')
7+
const { NOISE } = require('libp2p-noise')
8+
79
const defaultsDeep = require('@nodeutils/defaults-deep')
810
const libp2p = require('../../..')
911

@@ -16,7 +18,7 @@ class Node extends libp2p {
1618
WS
1719
],
1820
streamMuxer: [ mplex ],
19-
connEncryption: [ secio ]
21+
connEncryption: [ NOISE, SECIO ]
2022
}
2123
}
2224

‎examples/echo/src/listener.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,23 @@
66
*/
77

88
const PeerId = require('peer-id')
9-
const PeerInfo = require('peer-info')
109
const Node = require('./libp2p-bundle')
1110
const pipe = require('it-pipe')
1211

1312
async function run() {
1413
const listenerId = await PeerId.createFromJSON(require('./id-l'))
1514

1615
// Listener libp2p node
17-
const listenerPeerInfo = new PeerInfo(listenerId)
18-
listenerPeerInfo.multiaddrs.add('/ip4/0.0.0.0/tcp/10333')
1916
const listenerNode = new Node({
20-
peerInfo: listenerPeerInfo
17+
addresses: {
18+
listen: ['/ip4/0.0.0.0/tcp/10333']
19+
},
20+
peerId: listenerId
2121
})
2222

2323
// Log a message when we receive a connection
24-
listenerNode.on('peer:connect', (peerInfo) => {
25-
console.log('received dial to me from:', peerInfo.id.toB58String())
24+
listenerNode.connectionManager.on('peer:connect', (connection) => {
25+
console.log('received dial to me from:', connection.remotePeer.toB58String())
2626
})
2727

2828
// Handle incoming connections for the protocol by piping from the stream
@@ -33,7 +33,7 @@ async function run() {
3333
await listenerNode.start()
3434

3535
console.log('Listener ready, listening on:')
36-
listenerNode.peerInfo.multiaddrs.forEach((ma) => {
36+
listenerNode.multiaddrs.forEach((ma) => {
3737
console.log(ma.toString() + '/p2p/' + listenerId.toB58String())
3838
})
3939
}

0 commit comments

Comments
 (0)
Please sign in to comment.