Alex Potsides f439d9b589
deps!: update all deps to support no-copy operations (#1335)
Updates all deps needed to support passing lists of byte arrays where they have been created from multiple input buffers.

When reading multiplexed data, all messages arrive in length-prefixed buffers, which means the first few bytes tell the consumer how many bytes long next chunk will be.

One length prefixed chunk can be delivered in several payloads from the underlying network transport. The first payload can also include the length prefix and some or all of the data, so we stitch these together in a `Uint8ArrayList` to avoid having to concatenate `Uint8Array`s together.

Previously once we'd received enough bytes to satisfy the length prefix we'd concatenate the bytes together, but this is a potentially expensive operation where transports have small message sizes so instead just pass the `Uint8ArrayList` to the consumer and let them decide wether to concatenate or not as some consumers will be smart enough to operate on lists of `Uint8Array`s instead of always requiring a contiguous block of memory.

BREAKING CHANGE: Streams are now `Duplex<Uint8ArrayList, Uint8ArrayList | Uint8Array>`
2022-08-11 13:21:04 +01:00
..
2020-01-24 14:40:40 +01:00
2022-06-24 16:28:56 +01:00
2022-03-28 14:30:27 +01:00
2022-03-28 14:30:27 +01:00

Private Networking

This example shows how to set up a private network of libp2p nodes.

Setup

  1. Install the modules in the libp2p root directory, npm install and npm run build.

Run

Running the example will cause two nodes with the same swarm key to be started and exchange basic information.

node index.js

Using different keys

This example includes TASK comments that can be used to try the example with different swarm keys. This will allow you to see how nodes will fail to connect if they are on different private networks and try to connect to one another.

To change the swarm key of one of the nodes, look through index.js for comments starting with TASK to indicate where lines are that pertain to changing the swarm key of node 2.

Exploring the repos

Once you've run the example you can take a look at the repos in the ./tmp directory to see how they differ, including the swarm keys. You should see a swarm.key file in each of the repos and when the nodes are on the same private network this contents of the swarm.key files should be the same.