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>`
Private Networking
This example shows how to set up a private network of libp2p nodes.
Setup
- Install the modules in the libp2p root directory,
npm install
andnpm 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.