Compare commits

...

35 Commits

Author SHA1 Message Date
Vasco Santos
1c2e4d89ac chore: release version v0.32.5 2021-09-21 09:47:01 +02:00
Vasco Santos
c635b08d2f chore: update contributors 2021-09-21 09:47:01 +02:00
dependabot[bot]
3aedf55115 chore(deps): bump es6-promisify from 6.1.1 to 7.0.0 (#974)
Bumps [es6-promisify](https://github.com/mikehall314/es6-promisify) from 6.1.1 to 7.0.0.
- [Release notes](https://github.com/mikehall314/es6-promisify/releases)
- [Commits](https://github.com/mikehall314/es6-promisify/compare/v6.1.1...v7.0.0)

---
updated-dependencies:
- dependency-name: es6-promisify
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-21 09:40:36 +02:00
dependabot[bot]
ede653cad9 chore(deps-dev): bump into-stream from 6.0.0 to 7.0.0 (#972)
Bumps [into-stream](https://github.com/sindresorhus/into-stream) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/sindresorhus/into-stream/releases)
- [Commits](https://github.com/sindresorhus/into-stream/compare/v6.0.0...v7.0.0)

---
updated-dependencies:
- dependency-name: into-stream
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-21 09:39:58 +02:00
dependabot[bot]
2ab811d708 chore(deps-dev): bump libp2p-kad-dht from 0.23.4 to 0.24.2 (#991)
Bumps [libp2p-kad-dht](https://github.com/libp2p/js-libp2p-kad-dht) from 0.23.4 to 0.24.2.
- [Release notes](https://github.com/libp2p/js-libp2p-kad-dht/releases)
- [Changelog](https://github.com/libp2p/js-libp2p-kad-dht/blob/master/CHANGELOG.md)
- [Commits](https://github.com/libp2p/js-libp2p-kad-dht/compare/v0.23.4...v0.24.2)

---
updated-dependencies:
- dependency-name: libp2p-kad-dht
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-21 09:39:25 +02:00
XiaoZhang
122c89dd0d fix: move abortable-iterator to dependencies (#992)
fix #986
2021-09-21 09:36:37 +02:00
Leask Wong
97107c4ef7 chore: update datastore usage in CONFIGURATION.md (#982)
Co-authored-by: Vasco Santos <vasco.santos@ua.pt>
2021-08-31 11:51:51 +02:00
dependabot[bot]
d3f78edffe chore(deps-dev): bump ipfs-http-client from 50.1.2 to 52.0.2 (#973)
Bumps [ipfs-http-client](https://github.com/ipfs/js-ipfs) from 50.1.2 to 52.0.2.
- [Release notes](https://github.com/ipfs/js-ipfs/releases)
- [Changelog](https://github.com/ipfs/js-ipfs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ipfs/js-ipfs/compare/ipfs-http-client@50.1.2...ipfs-http-client@52.0.2)

---
updated-dependencies:
- dependency-name: ipfs-http-client
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-26 12:28:44 +02:00
Vasco Santos
f8e3cf10b0 chore: add dependabot (#968) 2021-08-26 12:02:28 +02:00
Vasco Santos
f342c1ff50 docs: update package list (#969) 2021-08-26 12:02:17 +02:00
Vasco Santos
fe63990a16 chore: libp2p interop job needs exit for aegir (#971) 2021-08-26 11:19:13 +02:00
Vasco Santos
e82b6e414b chore: release version v0.32.4 2021-08-20 09:25:15 +02:00
Vasco Santos
1d62ead8e5 chore: update contributors 2021-08-20 09:25:14 +02:00
Vasco Santos
3d25ff7fd0 chore: use new libp2p-noise 2021-08-20 09:13:21 +02:00
Vasco Santos
0f389a7828 chore: update uint8arrays 2021-08-20 09:13:21 +02:00
Vasco Santos
9f0582f372 chore: remove unused dev dep (#966) 2021-08-19 09:38:39 +02:00
Vasco Santos
266f2c3c86 chore: release version v0.32.3 2021-08-16 18:20:41 +02:00
Vasco Santos
7783edb059 chore: update contributors 2021-08-16 18:20:40 +02:00
Vasco Santos
ba2b4d4b28 fix: uint8arrays is a dep (#964) 2021-08-16 17:54:24 +02:00
Vasco Santos
06c3a6d407 chore: release version v0.32.2 2021-08-13 17:02:52 +02:00
Vasco Santos
833f789714 chore: update contributors 2021-08-13 17:02:51 +02:00
greenSnot
ef24fabf02 feat: custom protocol name (#962)
Co-authored-by: mzdws <8580712+mzdws@user.noreply.gitee.com>
2021-08-13 16:21:50 +02:00
Vasco Santos
3b33fb4b73 fix: browser example ci 2021-08-12 15:15:13 +02:00
Vasco Santos
a07fb7960b chore: update action setup node 2021-08-12 15:15:13 +02:00
Vasco Santos
b11126ca89 chore: release version v0.32.1 2021-07-22 11:51:39 +02:00
Vasco Santos
df53ab4e65 chore: update contributors 2021-07-22 11:51:39 +02:00
Robert Kiel
0701de40b1 fix: turn compliance tests into devDependency (#960)
Co-authored-by: Robert Kiel <robert.kiel@hoprnet.io>
2021-07-22 11:42:04 +02:00
Vasco Santos
d6bb967243 chore: release version v0.32.0 2021-07-15 13:14:37 +02:00
Vasco Santos
d48005b8b7 chore: update contributors 2021-07-15 13:14:36 +02:00
Vasco Santos
67b97e32da chore: add migration guide to 0.32 (#957) 2021-07-15 12:34:15 +02:00
Vasco Santos
664ba2d1e7 chore: release version v0.32.0-rc.0 2021-07-09 09:01:25 +02:00
Vasco Santos
608564b033 chore: update contributors 2021-07-09 09:01:24 +02:00
Vasco Santos
af723b355e fix: do not allow dial to large number of multiaddrs (#954) 2021-07-09 08:46:24 +02:00
Alex Potsides
13cf476148 chore: update to new multiformats (#948)
BREAKING CHANGE: uses the CID class from the new multiformats module

Co-authored-by: Vasco Santos <vasco.santos@moxy.studio>
2021-07-09 08:43:34 +02:00
Vasco Santos
39b03586e8 chore: use libp2p-tcp with types (#952) 2021-06-16 09:09:26 +02:00
113 changed files with 514 additions and 237 deletions

View File

@@ -7,7 +7,7 @@ const Peers = require('./test/fixtures/peers')
const PeerId = require('peer-id')
const WebSockets = require('libp2p-websockets')
const Muxer = require('libp2p-mplex')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const pipe = require('it-pipe')
let libp2p

8
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: daily
time: "11:00"
open-pull-requests-limit: 10

View File

@@ -12,12 +12,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 14
- run: npm install
- run: npx aegir lint
- uses: gozala/typescript-error-reporter-action@v1.0.8
- run: npx aegir build
- run: npx aegir dep-check
- uses: ipfs/aegir/actions/bundle-size@master
- uses: ipfs/aegir/actions/bundle-size@v32.1.0
name: size
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -31,7 +34,7 @@ jobs:
fail-fast: true
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- run: npm install
@@ -64,4 +67,4 @@ jobs:
steps:
- uses: actions/checkout@v2
- run: npm install
- run: cd node_modules/interop-libp2p && yarn && LIBP2P_JS=${GITHUB_WORKSPACE}/src/index.js npx aegir test -t node --bail
- run: cd node_modules/interop-libp2p && yarn && LIBP2P_JS=${GITHUB_WORKSPACE}/src/index.js npx aegir test -t node --bail -- --exit

View File

@@ -1,3 +1,73 @@
## [0.32.5](https://github.com/libp2p/js-libp2p/compare/v0.32.4...v0.32.5) (2021-09-21)
### Bug Fixes
* move abortable-iterator to dependencies ([#992](https://github.com/libp2p/js-libp2p/issues/992)) ([122c89d](https://github.com/libp2p/js-libp2p/commit/122c89dd0df55a59edaae078e3dc7c31b5603715)), closes [#986](https://github.com/libp2p/js-libp2p/issues/986)
## [0.32.4](https://github.com/libp2p/js-libp2p/compare/v0.32.3...v0.32.4) (2021-08-20)
## [0.32.3](https://github.com/libp2p/js-libp2p/compare/v0.32.2...v0.32.3) (2021-08-16)
### Bug Fixes
* uint8arrays is a dep ([#964](https://github.com/libp2p/js-libp2p/issues/964)) ([ba2b4d4](https://github.com/libp2p/js-libp2p/commit/ba2b4d4b28f1d9940b457de344aed44537f9eabd))
## [0.32.2](https://github.com/libp2p/js-libp2p/compare/v0.32.1...v0.32.2) (2021-08-13)
### Bug Fixes
* browser example ci ([3b33fb4](https://github.com/libp2p/js-libp2p/commit/3b33fb4b73ba8065e432fb59f758fe138fd23d9e))
### Features
* custom protocol name ([#962](https://github.com/libp2p/js-libp2p/issues/962)) ([ef24fab](https://github.com/libp2p/js-libp2p/commit/ef24fabf0269fd079888e92eedb458e23ef1c733))
## [0.32.1](https://github.com/libp2p/js-libp2p/compare/v0.32.0...v0.32.1) (2021-07-22)
### Bug Fixes
* turn compliance tests into devDependency ([#960](https://github.com/libp2p/js-libp2p/issues/960)) ([0701de4](https://github.com/libp2p/js-libp2p/commit/0701de40b1ebdf319959846d8c4fdd30b3cf34a4))
# [0.32.0](https://github.com/libp2p/js-libp2p/compare/v0.32.0-rc.0...v0.32.0) (2021-07-15)
# [0.32.0-rc.0](https://github.com/libp2p/js-libp2p/compare/v0.31.7...v0.32.0-rc.0) (2021-07-09)
### Bug Fixes
* do not allow dial to large number of multiaddrs ([#954](https://github.com/libp2p/js-libp2p/issues/954)) ([af723b3](https://github.com/libp2p/js-libp2p/commit/af723b355e1ddf4aecf439f81c3aa67613d45fa4))
### chore
* update to new multiformats ([#948](https://github.com/libp2p/js-libp2p/issues/948)) ([13cf476](https://github.com/libp2p/js-libp2p/commit/13cf4761489d59b22924bb8ec2ec6dbe207b280c))
### BREAKING CHANGES
* uses the CID class from the new multiformats module
Co-authored-by: Vasco Santos <vasco.santos@moxy.studio>
## [0.31.7](https://github.com/libp2p/js-libp2p/compare/v0.31.6...v0.31.7) (2021-06-14)

View File

@@ -163,9 +163,9 @@ List of packages currently in existence for libp2p
| [`libp2p-kad-dht`](//github.com/libp2p/js-libp2p-kad-dht) | [![npm](https://img.shields.io/npm/v/libp2p-kad-dht.svg?maxAge=86400&style=flat-square)](//github.com/libp2p/js-libp2p-kad-dht/releases) | [![Deps](https://david-dm.org/libp2p/js-libp2p-kad-dht.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-kad-dht) | [![Travis CI](https://flat.badgen.net/travis/libp2p/js-libp2p-kad-dht/master)](https://travis-ci.com/libp2p/js-libp2p-kad-dht) | [![codecov](https://codecov.io/gh/libp2p/js-libp2p-kad-dht/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-kad-dht) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
| **utilities** |
| [`libp2p-crypto`](//github.com/libp2p/js-libp2p-crypto) | [![npm](https://img.shields.io/npm/v/libp2p-crypto.svg?maxAge=86400&style=flat-square)](//github.com/libp2p/js-libp2p-crypto/releases) | [![Deps](https://david-dm.org/libp2p/js-libp2p-crypto.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-crypto) | [![Travis CI](https://flat.badgen.net/travis/libp2p/js-libp2p-crypto/master)](https://travis-ci.com/libp2p/js-libp2p-crypto) | [![codecov](https://codecov.io/gh/libp2p/js-libp2p-crypto/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-crypto) | [Jacob Heun](mailto:jacobheun@gmail.com) |
| [`libp2p-crypto-secp256k1`](//github.com/libp2p/js-libp2p-crypto-secp256k1) | [![npm](https://img.shields.io/npm/v/libp2p-crypto-secp256k1.svg?maxAge=86400&style=flat-square)](//github.com/libp2p/js-libp2p-crypto-secp256k1/releases) | [![Deps](https://david-dm.org/libp2p/js-libp2p-crypto-secp256k1.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-crypto-secp256k1) | [![Travis CI](https://flat.badgen.net/travis/libp2p/js-libp2p-crypto-secp256k1/master)](https://travis-ci.com/libp2p/js-libp2p-crypto-secp256k1) | [![codecov](https://codecov.io/gh/libp2p/js-libp2p-crypto-secp256k1/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-crypto-secp256k1) | [Friedel Ziegelmayer](mailto:dignifiedquire@gmail.com) |
| **data types** |
| [`peer-id`](//github.com/libp2p/js-peer-id) | [![npm](https://img.shields.io/npm/v/peer-id.svg?maxAge=86400&style=flat-square)](//github.com/libp2p/js-peer-id/releases) | [![Deps](https://david-dm.org/libp2p/js-peer-id.svg?style=flat-square)](https://david-dm.org/libp2p/js-peer-id) | [![Travis CI](https://flat.badgen.net/travis/libp2p/js-peer-id/master)](https://travis-ci.com/libp2p/js-peer-id) | [![codecov](https://codecov.io/gh/libp2p/js-peer-id/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-peer-id) | [Vasco Santos](mailto:santos.vasco10@gmail.com) |
| [`libp2p-record`](//github.com/libp2p/js-libp2p-record) | [![npm](https://img.shields.io/npm/v/libp2p-record.svg?maxAge=86400&style=flat-square)](//github.com/libp2p/js-libp2p-record/releases) | [![Deps](https://david-dm.org/libp2p/js-libp2p-record.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-record) | [![Travis CI](https://flat.badgen.net/travis/libp2p/js-libp2p-record/master)](https://travis-ci.com/libp2p/js-libp2p-record) | [![codecov](https://codecov.io/gh/libp2p/js-libp2p-record/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-record) | [Jacob Heun](mailto:santos.vasco10@gmail.com) |
| **pubsub** |
| [`libp2p-floodsub`](//github.com/libp2p/js-libp2p-floodsub) | [![npm](https://img.shields.io/npm/v/libp2p-floodsub.svg?maxAge=86400&style=flat-square)](//github.com/libp2p/js-libp2p-floodsub/releases) | [![Deps](https://david-dm.org/libp2p/js-libp2p-floodsub.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-floodsub) | [![Travis CI](https://flat.badgen.net/travis/libp2p/js-libp2p-floodsub/master)](https://travis-ci.com/libp2p/js-libp2p-floodsub) | [![codecov](https://codecov.io/gh/libp2p/js-libp2p-floodsub/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-floodsub) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
| [`libp2p-gossipsub`](//github.com/ChainSafe/js-libp2p-gossipsub) | [![npm](https://img.shields.io/npm/v/libp2p-gossipsub.svg?maxAge=86400&style=flat-square)](//github.com/ChainSafe/js-libp2p-gossipsub/releases) | [![Deps](https://david-dm.org/ChainSafe/js-libp2p-gossipsub.svg?style=flat-square)](https://david-dm.org/ChainSafe/js-libp2p-gossipsub) | [![Travis CI](https://flat.badgen.net/travis/ChainSafe/js-libp2p-gossipsub/master)](https://travis-ci.com/ChainSafe/js-libp2p-gossipsub) | [![codecov](https://codecov.io/gh/ChainSafe/js-libp2p-gossipsub/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/ChainSafe/js-libp2p-gossipsub) | [Cayman Nava](mailto:caymannava@gmail.com) |

View File

@@ -1,4 +1,4 @@
# Configuration
#
- [Configuration](#configuration)
- [Overview](#overview)
@@ -503,6 +503,9 @@ const MPLEX = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const LevelStore = require('datastore-level')
const datastore = new LevelStore('path/to/store')
await datastore.open()
const node = await Libp2p.create({
modules: {
transport: [TCP],
@@ -511,7 +514,7 @@ const node = await Libp2p.create({
},
keychain: {
pass: 'notsafepassword123456789',
datastore: new LevelStore('path/to/store')
datastore: dsInstant,
}
})
@@ -525,6 +528,7 @@ Dialing in libp2p can be configured to limit the rate of dialing, and how long d
| Name | Type | Description |
|------|------|-------------|
| maxParallelDials | `number` | How many multiaddrs we can dial in parallel. |
| maxAddrsToDial | `number` | How many multiaddrs is the dial allowed to dial for a single peer. |
| maxDialsPerPeer | `number` | How many multiaddrs we can dial per peer, in parallel. |
| dialTimeout | `number` | Second dial timeout per peer in ms. |
| resolvers | `object` | Dial [Resolvers](https://github.com/multiformats/js-multiaddr/blob/master/src/resolvers/index.js) for resolving multiaddrs |
@@ -549,6 +553,7 @@ const node = await Libp2p.create({
},
dialer: {
maxParallelDials: 100,
maxAddrsToDial: 25,
maxDialsPerPeer: 4,
dialTimeout: 30e3,
resolvers: {
@@ -671,16 +676,18 @@ const Libp2p = require('libp2p')
const TCP = require('libp2p-tcp')
const MPLEX = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const LevelStore = require('datastore-level')
const datastore = new LevelStore('path/to/store')
const dsInstant = await datastore.open()
const node = await Libp2p.create({
modules: {
transport: [TCP],
streamMuxer: [MPLEX],
connEncryption: [NOISE]
},
datastore: new LevelStore('path/to/store'),
datastore: dsInstant,
peerStore: {
persistence: true,
threshold: 5
@@ -779,6 +786,26 @@ By default under nodejs libp2p will attempt to use [UPnP](https://en.wikipedia.o
[NAT-PMP](http://miniupnp.free.fr/nat-pmp.html) is a feature of some modern routers which performs a similar job to UPnP. NAT-PMP is disabled by default, if enabled libp2p will try to use NAT-PMP and will fall back to UPnP if it fails.
#### Configuring protocol name
Changing the protocol name prefix can isolate default public network (IPFS) for custom purposes.
```js
const node = await Libp2p.create({
config: {
protocolPrefix: 'ipfs' // default
}
})
/*
protocols: [
"/ipfs/id/1.0.0", // identify service protocol (if we have multiplexers)
"/ipfs/id/push/1.0.0", // identify service push protocol (if we have multiplexers)
"/ipfs/ping/1.0.0", // built-in ping protocol
]
*/
```
## Configuration examples
As libp2p is designed to be a modular networking library, its usage will vary based on individual project needs. We've included links to some existing project configurations for your reference, in case you wish to replicate their configuration:

View File

@@ -0,0 +1,36 @@
<!--Specify versions for migration below-->
# Migrating to libp2p@32
A migration guide for refactoring your application code from libp2p v0.31.x to v0.32.0.
## Table of Contents
- [Module Updates](#module-updates)
## Module Updates
With this release you should update the following libp2p modules if you are relying on them:
<!--Specify module versions in JSON for migration below.
It's recommended to check package.json changes for this:
`git diff <release> <prev> -- package.json`
-->
```json
"libp2p-bootstrap": "^0.13.0",
"libp2p-crypto": "^0.19.4",
"libp2p-interfaces": "^1.0.0",
"libp2p-delegated-content-routing": "^0.11.0",
"libp2p-delegated-peer-routing": "^0.10.0",
"libp2p-floodsub": "^0.27.0",
"libp2p-gossipsub": "^0.11.0",
"libp2p-kad-dht": "^0.23.0",
"libp2p-mdns": "^0.17.0",
"libp2p-noise": "^4.0.0",
"libp2p-tcp": "^0.17.0",
"libp2p-webrtc-direct": "^0.7.0",
"libp2p-webrtc-star": "^0.23.0",
"libp2p-websockets": "^0.16.0"
```
One of the main changes in this new release is the update to `multiaddr@10.0.0`. This should also be updated in upstream projects to avoid several multiaddr versions in the bundle and to avoid potential problems when libp2p interacts with provided outdated multiaddr instances.

View File

@@ -18,7 +18,7 @@ The relay node will need to have its relay subsystem enabled, as well as its HOP
```js
const Libp2p = require('libp2p')
const Websockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
const node = await Libp2p.create({
@@ -76,7 +76,7 @@ One of the typical use cases for Auto Relay is nodes behind a NAT or browser nod
```js
const Libp2p = require('libp2p')
const Websockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
const relayAddr = process.argv[2]
@@ -147,7 +147,7 @@ Now that you have a relay node and a node bound to that relay, you can test conn
```js
const Libp2p = require('libp2p')
const Websockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
const autoRelayNodeAddr = process.argv[2]

View File

@@ -2,7 +2,7 @@
const Libp2p = require('libp2p')
const Websockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
async function main () {

View File

@@ -2,7 +2,7 @@
const Libp2p = require('libp2p')
const Websockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
async function main () {

View File

@@ -2,7 +2,7 @@
const Libp2p = require('libp2p')
const Websockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
async function main () {

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
function startProcess (name, args = []) {
return execa('node', [path.join(__dirname, name), ...args], {

View File

@@ -3,7 +3,7 @@
const TCP = require('libp2p-tcp')
const WS = require('libp2p-websockets')
const mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const defaultsDeep = require('@nodeutils/defaults-deep')
const libp2p = require('../../..')

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
function startProcess(name) {
return execa('node', [path.join(__dirname, name)], {

View File

@@ -3,7 +3,7 @@
const Libp2p = require('../..')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const pipe = require('it-pipe')

View File

@@ -8,13 +8,13 @@ A byproduct of having these encrypted communications modules is that we can auth
# 1. Set up encrypted communications
We will build this example on top of example for [Protocol and Stream Multiplexing](../protocol-and-stream-multiplexing). You will need the `libp2p-noise` module to complete it, go ahead and `npm install libp2p-noise`.
We will build this example on top of example for [Protocol and Stream Multiplexing](../protocol-and-stream-multiplexing). You will need the `@chainsafe/libp2p-noise` module to complete it, go ahead and `npm install @chainsafe/libp2p-noise`.
To add them to your libp2p configuration, all you have to do is:
```JavaScript
const Libp2p = require('libp2p')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const createNode = () => {
return Libp2p.create({

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const messageReceived = pDefer()

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Bootstrap = require('libp2p-bootstrap')
const bootstrapers = require('./bootstrapers')

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MulticastDNS = require('libp2p-mdns')
const createNode = async () => {

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Gossipsub = require('libp2p-gossipsub')
const Bootstrap = require('libp2p-bootstrap')
const PubsubPeerDiscovery = require('libp2p-pubsub-peer-discovery')

View File

@@ -168,7 +168,7 @@ You can create your libp2p nodes as follows:
const Libp2p = require('libp2p')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Gossipsub = require('libp2p-gossipsub')
const Bootstrap = require('libp2p-bootstrap')
const PubsubPeerDiscovery = require('libp2p-pubsub-peer-discovery')

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pWaitFor = require('p-wait-for')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const bootstrapers = require('./bootstrapers')
const discoveredCopy = 'Discovered:'

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pWaitFor = require('p-wait-for')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const discoveredCopy = 'Discovered:'

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pWaitFor = require('p-wait-for')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const discoveredCopy = 'discovered:'

View File

@@ -3,7 +3,7 @@
const TCP = require('libp2p-tcp')
const WS = require('libp2p-websockets')
const mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const defaultsDeep = require('@nodeutils/defaults-deep')
const libp2p = require('../../..')

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
function startProcess(name) {
return execa('node', [path.join(__dirname, name)], {

View File

@@ -16,7 +16,7 @@
<pre id="output"></pre>
</main>
<script src="./index.js"></script>
<script type="module" src="./index.js"></script>
</body>

View File

@@ -2,7 +2,7 @@ import 'babel-polyfill'
import Libp2p from 'libp2p'
import Websockets from 'libp2p-websockets'
import WebRTCStar from 'libp2p-webrtc-star'
import { NOISE } from 'libp2p-noise'
import { NOISE } from '@chainsafe/libp2p-noise'
import Mplex from 'libp2p-mplex'
import Bootstrap from 'libp2p-bootstrap'

View File

@@ -2,7 +2,6 @@
"name": "libp2p-in-browser",
"version": "1.0.0",
"description": "A libp2p node running in the browser",
"main": "dist/index.html",
"browserslist": [
"last 2 Chrome versions"
],
@@ -17,11 +16,11 @@
"dependencies": {
"@babel/preset-env": "^7.13.0",
"libp2p": "../../",
"libp2p-bootstrap": "^0.12.1",
"libp2p-mplex": "^0.10.0",
"libp2p-noise": "^2.0.0",
"libp2p-webrtc-star": "^0.22.0",
"libp2p-websockets": "^0.15.0"
"libp2p-bootstrap": "^0.13.0",
"libp2p-mplex": "^0.10.4",
"@chainsafe/libp2p-noise": "^4.1.0",
"libp2p-webrtc-star": "^0.23.0",
"libp2p-websockets": "^0.16.1"
},
"devDependencies": {
"@babel/cli": "^7.13.10",

View File

@@ -10,10 +10,12 @@
"dependencies": {
"execa": "^2.1.0",
"fs-extra": "^8.1.0",
"libp2p": "../src",
"libp2p-pubsub-peer-discovery": "^4.0.0",
"libp2p-relay-server": "^0.2.0",
"libp2p-gossipsub": "^0.9.1",
"libp2p-relay-server": "^0.3.0",
"libp2p-gossipsub": "^0.11.0",
"p-defer": "^3.0.0",
"uint8arrays": "^3.0.0",
"which": "^2.0.1"
},
"devDependencies": {

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const KadDHT = require('libp2p-kad-dht')
const delay = require('delay')

View File

@@ -4,8 +4,8 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const CID = require('cids')
const { NOISE } = require('@chainsafe/libp2p-noise')
const { CID } = require('multiformats/cid')
const KadDHT = require('libp2p-kad-dht')
const all = require('it-all')
@@ -51,10 +51,10 @@ const createNode = async () => {
// Wait for onConnect handlers in the DHT
await delay(100)
const cid = new CID('QmTp9VkYvnHyrqKQuFPiuZkiX9gPcqj6x5LJ1rmWuSySnL')
const cid = CID.parse('QmTp9VkYvnHyrqKQuFPiuZkiX9gPcqj6x5LJ1rmWuSySnL')
await node1.contentRouting.provide(cid)
console.log('Node %s is providing %s', node1.peerId.toB58String(), cid.toBaseEncodedString())
console.log('Node %s is providing %s', node1.peerId.toB58String(), cid.toString())
// wait for propagation
await delay(300)

View File

@@ -81,7 +81,7 @@ Instead of calling `peerRouting.findPeer`, we will use `contentRouting.provide`
```JavaScript
await node1.contentRouting.provide(cid)
console.log('Node %s is providing %s', node1.peerId.toB58String(), cid.toBaseEncodedString())
console.log('Node %s is providing %s', node1.peerId.toB58String(), cid.toString())
const provs = await all(node3.contentRouting.findProviders(cid, { timeout: 5000 }))

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pWaitFor = require('p-wait-for')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test() {
process.stdout.write('1.js\n')

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const providedCopy = 'is providing'
const foundCopy = 'Found provider:'

View File

@@ -3,7 +3,7 @@
const Libp2p = require('libp2p')
const TCP = require('libp2p-tcp')
const MPLEX = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Protector = require('libp2p/src/pnet')
/**

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const messageReceived = pDefer()

View File

@@ -3,7 +3,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const MPLEX = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const pipe = require('it-pipe')

View File

@@ -3,7 +3,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const MPLEX = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const pipe = require('it-pipe')

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const MPLEX = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const pipe = require('it-pipe')

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test() {
const messageDefer = pDefer()

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pWaitFor = require('p-wait-for')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const messages = [
'protocol (a)',

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pWaitFor = require('p-wait-for')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const messages = [
'from 1 to 2',

View File

@@ -4,10 +4,10 @@
const Libp2p = require('../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Gossipsub = require('libp2p-gossipsub')
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const createNode = async () => {
const node = await Libp2p.create({

View File

@@ -4,10 +4,10 @@
const Libp2p = require('../../../')
const TCP = require('libp2p-tcp')
const Mplex = require('libp2p-mplex')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Gossipsub = require('libp2p-gossipsub')
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const createNode = async () => {
const node = await Libp2p.create({

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const stdout = [
{

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const defer = pDefer()

View File

@@ -3,7 +3,7 @@
const Libp2p = require('../..')
const TCP = require('libp2p-tcp')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const createNode = async () => {
const node = await Libp2p.create({

View File

@@ -3,7 +3,7 @@
const Libp2p = require('../..')
const TCP = require('libp2p-tcp')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
const pipe = require('it-pipe')

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../..')
const TCP = require('libp2p-tcp')
const WebSockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
const pipe = require('it-pipe')

View File

@@ -4,7 +4,7 @@
const Libp2p = require('../..')
const TCP = require('libp2p-tcp')
const WebSockets = require('libp2p-websockets')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const MPLEX = require('libp2p-mplex')
const fs = require('fs');

View File

@@ -13,7 +13,7 @@ When using libp2p, you need properly configure it, that is, pick your set of mod
You will need 4 dependencies total, so go ahead and install all of them with:
```bash
> npm install libp2p libp2p-tcp libp2p-noise
> npm install libp2p libp2p-tcp @chainsafe/libp2p-noise
```
Then, in your favorite text editor create a file with the `.js` extension. I've called mine `1.js`.
@@ -25,7 +25,7 @@ First thing is to create our own libp2p node! Insert:
const Libp2p = require('libp2p')
const TCP = require('libp2p-tcp')
const { NOISE } = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const createNode = async () => {
const node = await Libp2p.create({

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const deferStarted = pDefer()

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const defer = pDefer()

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const deferNode1 = pDefer()

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
async function test () {
const deferNode1 = pDefer()

View File

@@ -2,7 +2,7 @@ import 'babel-polyfill'
const Libp2p = require('libp2p')
const WebRTCDirect = require('libp2p-webrtc-direct')
const Mplex = require('libp2p-mplex')
const {NOISE} = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const Bootstrap = require('libp2p-bootstrap')
document.addEventListener('DOMContentLoaded', async () => {

View File

@@ -2,7 +2,7 @@ const Libp2p = require('libp2p')
const Bootstrap = require('libp2p-bootstrap')
const WebRTCDirect = require('libp2p-webrtc-direct')
const Mplex = require('libp2p-mplex')
const {NOISE} = require('libp2p-noise')
const { NOISE } = require('@chainsafe/libp2p-noise')
const PeerId = require('peer-id')
;(async () => {

View File

@@ -21,11 +21,11 @@
},
"dependencies": {
"libp2p": "../../",
"libp2p-bootstrap": "^0.12.1",
"libp2p-mplex": "^0.10.1",
"libp2p-noise": "^2.0.1",
"libp2p-webrtc-direct": "^0.6.0",
"peer-id": "^0.14.3"
"libp2p-bootstrap": "^0.13.0",
"libp2p-mplex": "^0.10.4",
"@chainsafe/libp2p-noise": "^4.1.0",
"libp2p-webrtc-direct": "^0.7.0",
"peer-id": "^0.15.0"
},
"browser": {
"ipfs": "ipfs/dist/index.min.js"

View File

@@ -3,7 +3,7 @@
const path = require('path')
const execa = require('execa')
const pDefer = require('p-defer')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const { chromium } = require('playwright');
function startNode (name, args = []) {

View File

@@ -44,10 +44,10 @@
"utilities",
["libp2p/js-libp2p-crypto", "libp2p-crypto"],
["libp2p/js-libp2p-crypto-secp256k1", "libp2p-crypto-secp256k1"],
"data types",
["libp2p/js-peer-id", "peer-id"],
["libp2p/js-libp2p-record", "libp2p-record"],
"pubsub",
["libp2p/js-libp2p-floodsub", "libp2p-floodsub"],

View File

@@ -1,6 +1,6 @@
{
"name": "libp2p",
"version": "0.31.7",
"version": "0.32.5",
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
"leadMaintainer": "Jacob Heun <jacobheun@gmail.com>",
"main": "src/index.js",
@@ -78,20 +78,20 @@
]
},
"dependencies": {
"abortable-iterator": "^3.0.0",
"@motrix/nat-api": "^0.3.1",
"@vascosantos/moving-average": "^1.1.0",
"abort-controller": "^3.0.0",
"aggregate-error": "^3.1.0",
"any-signal": "^2.1.1",
"bignumber.js": "^9.0.1",
"cids": "^1.1.5",
"class-is": "^1.1.0",
"debug": "^4.3.1",
"err-code": "^3.0.0",
"es6-promisify": "^6.1.1",
"es6-promisify": "^7.0.0",
"events": "^3.3.0",
"hashlru": "^2.3.0",
"interface-datastore": "^4.0.0",
"interface-datastore": "^5.1.1",
"it-all": "^1.0.4",
"it-buffer": "^0.1.2",
"it-drain": "^1.0.3",
@@ -100,17 +100,16 @@
"it-handshake": "^2.0.0",
"it-length-prefixed": "^5.0.2",
"it-map": "^1.0.4",
"it-merge": "1.0.0",
"it-merge": "^1.0.0",
"it-pipe": "^1.1.0",
"it-take": "1.0.0",
"it-take": "^1.0.0",
"libp2p-crypto": "^0.19.4",
"libp2p-interfaces": "^0.10.4",
"libp2p-utils": "^0.3.1",
"mafmt": "^9.0.0",
"libp2p-interfaces": "^1.0.0",
"libp2p-utils": "^0.4.0",
"mafmt": "^10.0.0",
"merge-options": "^3.0.4",
"multiaddr": "^9.0.1",
"multicodec": "^3.0.1",
"multihashing-async": "^2.1.2",
"multiaddr": "^10.0.0",
"multiformats": "^9.0.0",
"multistream-select": "^2.0.0",
"mutable-proxy": "^1.0.0",
"node-forge": "^0.10.0",
@@ -118,59 +117,59 @@
"p-fifo": "^1.0.0",
"p-retry": "^4.4.0",
"p-settle": "^4.1.1",
"peer-id": "^0.14.2",
"peer-id": "^0.15.0",
"private-ip": "^2.1.0",
"protobufjs": "^6.10.2",
"retimer": "^3.0.0",
"sanitize-filename": "^1.6.3",
"set-delayed-interval": "^1.0.0",
"streaming-iterables": "^5.0.2",
"streaming-iterables": "^6.0.0",
"timeout-abort-controller": "^1.1.1",
"uint8arrays": "^3.0.0",
"varint": "^6.0.0",
"wherearewe": "^1.0.0",
"xsalsa20": "^1.1.0"
},
"devDependencies": {
"@chainsafe/libp2p-noise": "^4.0.0",
"@nodeutils/defaults-deep": "^1.1.0",
"@types/es6-promisify": "^6.0.0",
"@types/node-forge": "^0.9.7",
"@types/node": "^16.0.1",
"@types/node-forge": "^0.10.1",
"@types/varint": "^6.0.0",
"abortable-iterator": "^3.0.0",
"aegir": "^33.1.1",
"buffer": "^6.0.3",
"delay": "^5.0.0",
"interop-libp2p": "^0.4.0",
"into-stream": "^6.0.0",
"ipfs-http-client": "^50.1.1",
"it-concat": "^1.0.0",
"into-stream": "^7.0.0",
"ipfs-http-client": "^52.0.2",
"it-concat": "^2.0.0",
"it-pair": "^1.0.0",
"it-pushable": "^1.4.0",
"libp2p": ".",
"libp2p-bootstrap": "^0.12.3",
"libp2p-delegated-content-routing": "^0.10.0",
"libp2p-delegated-peer-routing": "^0.9.0",
"libp2p-floodsub": "^0.25.0",
"libp2p-gossipsub": "^0.9.0",
"libp2p-kad-dht": "^0.22.0",
"libp2p-mdns": "^0.16.0",
"libp2p-bootstrap": "^0.13.0",
"libp2p-delegated-content-routing": "^0.11.0",
"libp2p-delegated-peer-routing": "^0.10.0",
"libp2p-floodsub": "^0.27.0",
"libp2p-gossipsub": "^0.11.0",
"libp2p-interfaces-compliance-tests": "^1.0.0",
"libp2p-kad-dht": "^0.24.2",
"libp2p-mdns": "^0.17.0",
"libp2p-mplex": "^0.10.1",
"libp2p-noise": "^3.0.0",
"libp2p-tcp": "^0.15.4",
"libp2p-webrtc-star": "^0.22.2",
"libp2p-websockets": "^0.15.8",
"multihashes": "^4.0.2",
"libp2p-tcp": "^0.17.0",
"libp2p-webrtc-star": "^0.23.0",
"libp2p-websockets": "^0.16.0",
"nock": "^13.0.3",
"p-defer": "^3.0.0",
"p-times": "^3.0.0",
"p-wait-for": "^3.2.0",
"rimraf": "^3.0.2",
"sinon": "^10.0.0",
"uint8arrays": "^2.1.3",
"sinon": "^11.1.1",
"util": "^0.12.3"
},
"contributors": [
"David Dias <daviddias.p@gmail.com>",
"Vasco Santos <vasco.santos@moxy.studio>",
"David Dias <daviddias.p@gmail.com>",
"Jacob Heun <jacobheun@gmail.com>",
"Alex Potsides <alex@achingbrain.net>",
"Alan Shaw <alan@tableflip.io>",
@@ -179,31 +178,42 @@
"Friedel Ziegelmayer <dignifiedquire@gmail.com>",
"Maciej Krüger <mkg20001@gmail.com>",
"Hugo Dias <mail@hugodias.me>",
"Chris Dostert <chrisdostert@users.noreply.github.com>",
"dirkmc <dirkmdev@gmail.com>",
"Volker Mische <volker.mische@gmail.com>",
"zeim839 <50573884+zeim839@users.noreply.github.com>",
"Richard Littauer <richard.littauer@gmail.com>",
"Ryan Bell <ryan@piing.net>",
"a1300 <matthias-knopp@gmx.net>",
"Ryan Bell <ryan@piing.net>",
"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>",
"Samlior <samlior@foxmail.com>",
"Andrew Nesbitt <andrewnez@gmail.com>",
"Thomas Eizinger <thomas@eizinger.io>",
"Franck Royer <franck@royer.one>",
"Thomas Eizinger <thomas@eizinger.io>",
"Giovanni T. Parra <fiatjaf@gmail.com>",
"acolytec3 <17355484+acolytec3@users.noreply.github.com>",
"Elven <mon.samuel@qq.com>",
"Andrew Nesbitt <andrewnez@gmail.com>",
"Samlior <samlior@foxmail.com>",
"Didrik Nordström <didrik.nordstrom@gmail.com>",
"RasmusErik Voel Jensen <github@solsort.com>",
"Robert Kiel <robert.kiel@hoprnet.org>",
"Smite Chow <xiaopengyou@live.com>",
"Soeren <nikorpoulsen@gmail.com>",
"Sönke Hahn <soenkehahn@gmail.com>",
"TJKoury <TJKoury@gmail.com>",
"Tiago Alves <alvesjtiago@gmail.com>",
"XiaoZhang <zxinmyth@gmail.com>",
"Yusef Napora <yusef@napora.org>",
"Zane Starr <zcstarr@gmail.com>",
"ebinks <elizabethjbinks@gmail.com>",
"Aditya Bose <13054902+adbose@users.noreply.github.com>",
"isan_rivkin <isanrivkin@gmail.com>",
"mayerwin <mayerwin@users.noreply.github.com>",
"mcclure <andi.m.mcclure@gmail.com>",
"phillmac <phillmac@users.noreply.github.com>",
"robertkiel <robert.kiel@validitylabs.org>",
"shresthagrawal <34920931+shresthagrawal@users.noreply.github.com>",
"swedneck <40505480+swedneck@users.noreply.github.com>",
"greenSnot <greenSnot@users.noreply.github.com>",
"Aleksei <vozhdb@gmail.com>",
"Bernd Strehl <bernd.strehl@gmail.com>",
"Chris Bratlien <chrisbratlien@gmail.com>",
@@ -216,12 +226,19 @@
"Felipe Martins <felipebrasil93@gmail.com>",
"Florian-Merle <florian.david.merle@gmail.com>",
"Francis Gulotta <wizard@roborooter.com>",
"Guy Sviry <32539816+guysv@users.noreply.github.com>",
"Henrique Dias <hacdias@gmail.com>",
"Irakli Gozalishvili <rfobic@gmail.com>",
"Joel Gustafson <joelg@mit.edu>",
"John Rees <johnrees@users.noreply.github.com>",
"João Santos <joaosantos15@users.noreply.github.com>",
"Julien Bouquillon <contact@revolunet.com>",
"Kevin Kwok <antimatter15@gmail.com>",
"Kevin Lacker <lacker@gmail.com>",
"Lars Gierth <lgierth@users.noreply.github.com>",
"Leask Wong <i@leaskh.com>",
"Marcin Tojek <mtojek@users.noreply.github.com>",
"Michael Burns <5170+mburns@users.noreply.github.com>",
"Miguel Mota <miguelmota2@gmail.com>",
"Nuno Nogueira <nunofmn@gmail.com>",
"Philipp Muens <raute1337@gmx.de>"

View File

@@ -5,8 +5,8 @@ const log = Object.assign(debug('libp2p:auto-relay'), {
error: debug('libp2p:auto-relay:err')
})
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const { Multiaddr } = require('multiaddr')
const PeerId = require('peer-id')
@@ -222,7 +222,7 @@ class AutoRelay {
continue
}
const peerId = PeerId.createFromCID(id)
const peerId = PeerId.createFromB58String(id)
const connection = this._connectionManager.get(peerId)
// If not connected, store for possible later use.

View File

@@ -136,8 +136,8 @@ class Circuit {
throw errCode(new Error(errMsg), codes.ERR_RELAYED_DIAL)
}
const relayPeer = PeerId.createFromCID(relayId)
const destinationPeer = PeerId.createFromCID(destinationId)
const relayPeer = PeerId.createFromB58String(relayId)
const destinationPeer = PeerId.createFromB58String(destinationId)
let disconnectOnFailure = false
let relayConnection = this._connectionManager.get(relayPeer)

View File

@@ -1,7 +1,7 @@
'use strict'
const CID = require('cids')
const multihashing = require('multihashing-async')
const { CID } = require('multiformats/cid')
const { sha256 } = require('multiformats/hashes/sha2')
/**
* Convert a namespace string into a cid.
@@ -11,7 +11,7 @@ const multihashing = require('multihashing-async')
*/
module.exports.namespaceToCid = async (namespace) => {
const bytes = new TextEncoder().encode(namespace)
const hash = await multihashing(bytes, 'sha2-256')
const hash = await sha256.digest(bytes)
return new CID(hash)
return CID.createV0(hash)
}

View File

@@ -57,6 +57,7 @@ const DefaultConfig = {
}
},
config: {
protocolPrefix: 'ipfs',
dht: {
enabled: false,
kBucketSize: 20,

View File

@@ -4,6 +4,7 @@ module.exports = {
DIAL_TIMEOUT: 30e3, // How long in ms a dial attempt is allowed to take
MAX_PARALLEL_DIALS: 100, // Maximum allowed concurrent dials
MAX_PER_PEER_DIALS: 4, // Allowed parallel dials per DialRequest
MAX_ADDRS_TO_DIAL: 25, // Maximum number of allowed addresses to attempt to dial
METRICS: {
computeThrottleMaxQueueSize: 1000,
computeThrottleTimeout: 2000,

View File

@@ -15,7 +15,7 @@ const { pipe } = require('it-pipe')
/**
* @typedef {import('peer-id')} PeerId
* @typedef {import('multiaddr').Multiaddr} Multiaddr
* @typedef {import('cids')} CID
* @typedef {import('multiformats/cid').CID} CID
* @typedef {import('libp2p-interfaces/src/content-routing/types').ContentRouting} ContentRoutingModule
*/

View File

@@ -19,7 +19,8 @@ const { codes } = require('../errors')
const {
DIAL_TIMEOUT,
MAX_PARALLEL_DIALS,
MAX_PER_PEER_DIALS
MAX_PER_PEER_DIALS,
MAX_ADDRS_TO_DIAL
} = require('../constants')
/**
@@ -40,6 +41,7 @@ const {
* @typedef {Object} DialerOptions
* @property {(addresses: Address[]) => Address[]} [options.addressSorter = publicAddressesFirst] - Sort the known addresses of a peer before trying to dial.
* @property {number} [maxParallelDials = MAX_PARALLEL_DIALS] - Number of max concurrent dials.
* @property {number} [maxAddrsToDial = MAX_ADDRS_TO_DIAL] - Number of max addresses to dial for a given peer.
* @property {number} [maxDialsPerPeer = MAX_PER_PEER_DIALS] - Number of max concurrent dials per peer.
* @property {number} [dialTimeout = DIAL_TIMEOUT] - How long a dial attempt is allowed to take.
* @property {Record<string, Resolver>} [resolvers = {}] - multiaddr resolvers to use when dialing
@@ -65,6 +67,7 @@ class Dialer {
peerStore,
addressSorter = publicAddressesFirst,
maxParallelDials = MAX_PARALLEL_DIALS,
maxAddrsToDial = MAX_ADDRS_TO_DIAL,
dialTimeout = DIAL_TIMEOUT,
maxDialsPerPeer = MAX_PER_PEER_DIALS,
resolvers = {}
@@ -73,6 +76,7 @@ class Dialer {
this.peerStore = peerStore
this.addressSorter = addressSorter
this.maxParallelDials = maxParallelDials
this.maxAddrsToDial = maxAddrsToDial
this.timeout = dialTimeout
this.maxDialsPerPeer = maxDialsPerPeer
this.tokens = [...new Array(maxParallelDials)].map((_, index) => index)
@@ -198,6 +202,11 @@ class Dialer {
// Multiaddrs not supported by the available transports will be filtered out.
const supportedAddrs = addrs.filter(a => this.transportManager.transportForMultiaddr(a))
if (supportedAddrs.length > this.maxAddrsToDial) {
this.peerStore.delete(id)
throw errCode(new Error('dial with more addresses than allowed'), codes.ERR_TOO_MANY_ADDRESSES)
}
return {
id: id.toB58String(),
addrs: supportedAddrs

View File

@@ -16,6 +16,7 @@ exports.codes = {
ERR_CONNECTION_FAILED: 'ERR_CONNECTION_FAILED',
ERR_NODE_NOT_STARTED: 'ERR_NODE_NOT_STARTED',
ERR_ALREADY_ABORTED: 'ERR_ALREADY_ABORTED',
ERR_TOO_MANY_ADDRESSES: 'ERR_TOO_MANY_ADDRESSES',
ERR_NO_VALID_ADDRESSES: 'ERR_NO_VALID_ADDRESSES',
ERR_RELAYED_DIAL: 'ERR_RELAYED_DIAL',
ERR_DIALED_SELF: 'ERR_DIALED_SELF',

View File

@@ -3,7 +3,13 @@
// @ts-ignore file not listed within the file list of projects
const libp2pVersion = require('../../package.json').version
module.exports.PROTOCOL_VERSION = 'ipfs/0.1.0'
module.exports.PROTOCOL_VERSION = 'ipfs/0.1.0' // deprecated
module.exports.AGENT_VERSION = `js-libp2p/${libp2pVersion}`
module.exports.MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'
module.exports.MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'
module.exports.MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0' // deprecated
module.exports.MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0' // deprecated
module.exports.IDENTIFY_PROTOCOL_VERSION = '0.1.0'
module.exports.MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id'
module.exports.MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push'
module.exports.MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0'
module.exports.MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0'

View File

@@ -8,7 +8,7 @@ const errCode = require('err-code')
const lp = require('it-length-prefixed')
const { pipe } = require('it-pipe')
const { collect, take, consume } = require('streaming-iterables')
const uint8ArrayFromString = require('uint8arrays/from-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const PeerId = require('peer-id')
const { Multiaddr } = require('multiaddr')
@@ -23,7 +23,11 @@ const PeerRecord = require('../record/peer-record')
const {
MULTICODEC_IDENTIFY,
MULTICODEC_IDENTIFY_PUSH,
PROTOCOL_VERSION
IDENTIFY_PROTOCOL_VERSION,
MULTICODEC_IDENTIFY_PROTOCOL_NAME,
MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME,
MULTICODEC_IDENTIFY_PROTOCOL_VERSION,
MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION
} = require('./consts')
const { codes } = require('../errors')
@@ -39,6 +43,16 @@ const { codes } = require('../errors')
*/
class IdentifyService {
/**
* @param {import('../')} libp2p
*/
static getProtocolStr (libp2p) {
return {
identifyProtocolStr: `/${libp2p._config.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`,
identifyPushProtocolStr: `/${libp2p._config.protocolPrefix}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION}`
}
}
/**
* @class
* @param {Object} options
@@ -53,9 +67,13 @@ class IdentifyService {
this.handleMessage = this.handleMessage.bind(this)
const protocolStr = IdentifyService.getProtocolStr(libp2p)
this.identifyProtocolStr = protocolStr.identifyProtocolStr
this.identifyPushProtocolStr = protocolStr.identifyPushProtocolStr
// Store self host metadata
this._host = {
protocolVersion: PROTOCOL_VERSION,
protocolVersion: `${libp2p._config.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,
...libp2p._options.host
}
@@ -94,7 +112,7 @@ class IdentifyService {
const pushes = connections.map(async connection => {
try {
const { stream } = await connection.newStream(MULTICODEC_IDENTIFY_PUSH)
const { stream } = await connection.newStream(this.identifyPushProtocolStr)
await pipe(
[Message.Identify.encode({
@@ -129,7 +147,7 @@ class IdentifyService {
const connections = []
let connection
for (const peer of this.peerStore.peers.values()) {
if (peer.protocols.includes(MULTICODEC_IDENTIFY_PUSH) && (connection = this.connectionManager.get(peer.id))) {
if (peer.protocols.includes(this.identifyPushProtocolStr) && (connection = this.connectionManager.get(peer.id))) {
connections.push(connection)
}
}
@@ -147,7 +165,7 @@ class IdentifyService {
* @returns {Promise<void>}
*/
async identify (connection) {
const { stream } = await connection.newStream(MULTICODEC_IDENTIFY)
const { stream } = await connection.newStream(this.identifyProtocolStr)
const [data] = await pipe(
[],
stream,
@@ -224,9 +242,9 @@ class IdentifyService {
*/
handleMessage ({ connection, stream, protocol }) {
switch (protocol) {
case MULTICODEC_IDENTIFY:
case this.identifyProtocolStr:
return this._handleIdentify({ connection, stream })
case MULTICODEC_IDENTIFY_PUSH:
case this.identifyPushProtocolStr:
return this._handlePush({ connection, stream })
default:
log.error('cannot handle unknown protocol %s', protocol)

View File

@@ -31,7 +31,6 @@ const PersistentPeerStore = require('./peer-store/persistent')
const Registrar = require('./registrar')
const ping = require('./ping')
const IdentifyService = require('./identify')
const IDENTIFY_PROTOCOLS = IdentifyService.multicodecs
const NatManager = require('./nat-manager')
const { updateSelfPeerRecord } = require('./record/utils')
@@ -289,7 +288,7 @@ class Libp2p extends EventEmitter {
// Add the identify service since we can multiplex
this.identifyService = new IdentifyService({ libp2p: this })
this.handle(Object.values(IDENTIFY_PROTOCOLS), this.identifyService.handleMessage)
this.handle(Object.values(IdentifyService.getProtocolStr(this)), this.identifyService.handleMessage)
}
// Attach private network protector

View File

@@ -8,8 +8,8 @@ require('node-forge/lib/pbe')
const forge = require('node-forge/lib/forge')
const { certificateForKey, findAsync } = require('./util')
const errcode = require('err-code')
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const privates = new WeakMap()

View File

@@ -10,8 +10,8 @@ const crypto = require('libp2p-crypto')
const { Key } = require('interface-datastore')
const CMS = require('./cms')
const errcode = require('err-code')
const uint8ArrayToString = require('uint8arrays/to-string')
const uint8ArrayFromString = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
// @ts-ignore node-forge sha512 types not exported
require('node-forge/lib/sha512')

View File

@@ -99,7 +99,7 @@ class PeerStore extends EventEmitter {
const peersData = new Map()
storedPeers.forEach((idStr) => {
peersData.set(idStr, this.get(PeerId.createFromCID(idStr)))
peersData.set(idStr, this.get(PeerId.createFromB58String(idStr)))
})
return peersData

View File

@@ -5,7 +5,7 @@ const log = Object.assign(debug('libp2p:peer-store:proto-book'), {
error: debug('libp2p:peer-store:proto-book:err')
})
const errcode = require('err-code')
const uint8ArrayEquals = require('uint8arrays/equals')
const { equals: uint8ArrayEquals } = require('uint8arrays/equals')
const PeerId = require('peer-id')

View File

@@ -7,6 +7,7 @@ const log = Object.assign(debug('libp2p:persistent-peer-store'), {
const { Key } = require('interface-datastore')
const { Multiaddr } = require('multiaddr')
const PeerId = require('peer-id')
const { base32 } = require('multiformats/bases/base32')
const PeerStore = require('..')
@@ -195,7 +196,7 @@ class PersistentPeerStore extends PeerStore {
const batch = this._datastore.batch()
for (const peerIdStr of commitPeers) {
// PeerId
const peerId = this.keyBook.data.get(peerIdStr) || PeerId.createFromCID(peerIdStr)
const peerId = this.keyBook.data.get(peerIdStr) || PeerId.createFromB58String(peerIdStr)
// Address Book
this._batchAddressBook(peerId, batch)
@@ -346,7 +347,7 @@ class PersistentPeerStore extends PeerStore {
async _processDatastoreEntry ({ key, value }) {
try {
const keyParts = key.toString().split('/')
const peerId = PeerId.createFromCID(keyParts[3])
const peerId = PeerId.createFromBytes(base32.decode(keyParts[3]))
let decoded
switch (keyParts[2]) {

View File

@@ -1,6 +1,8 @@
'use strict'
module.exports = {
PROTOCOL: '/ipfs/ping/1.0.0',
PING_LENGTH: 32
PROTOCOL: '/ipfs/ping/1.0.0', // deprecated
PING_LENGTH: 32,
PROTOCOL_VERSION: '1.0.0',
PROTOCOL_NAME: 'ping'
}

View File

@@ -11,9 +11,9 @@ const { pipe } = require('it-pipe')
// @ts-ignore it-buffer has no types exported
const { toBuffer } = require('it-buffer')
const { collect, take } = require('streaming-iterables')
const equals = require('uint8arrays/equals')
const { equals } = require('uint8arrays/equals')
const { PROTOCOL, PING_LENGTH } = require('./constants')
const { PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION } = require('./constants')
/**
* @typedef {import('../')} Libp2p
@@ -30,11 +30,12 @@ const { PROTOCOL, PING_LENGTH } = require('./constants')
* @returns {Promise<number>}
*/
async function ping (node, peer) {
const protocol = `/${node._config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`
// @ts-ignore multiaddr might not have toB58String
log('dialing %s to %s', PROTOCOL, peer.toB58String ? peer.toB58String() : peer)
log('dialing %s to %s', protocol, peer.toB58String ? peer.toB58String() : peer)
const connection = await node.dial(peer)
const { stream } = await connection.newStream(PROTOCOL)
const { stream } = await connection.newStream(protocol)
const start = Date.now()
const data = crypto.randomBytes(PING_LENGTH)
@@ -61,7 +62,7 @@ async function ping (node, peer) {
* @param {Libp2p} node
*/
function mount (node) {
node.handle(PROTOCOL, ({ stream }) => pipe(stream, stream))
node.handle(`/${node._config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`, ({ stream }) => pipe(stream, stream))
}
/**
@@ -70,7 +71,7 @@ function mount (node) {
* @param {Libp2p} node
*/
function unmount (node) {
node.unhandle(PROTOCOL)
node.unhandle(`/${node._config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`)
}
exports = module.exports = ping

View File

@@ -10,8 +10,8 @@ const Errors = require('./errors')
// @ts-ignore xsalsa20 has no types exported
const xsalsa20 = require('xsalsa20')
const KEY_LENGTH = require('./key-generator').KEY_LENGTH
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
/**
* Creates a stream iterable to encrypt messages in a private network

View File

@@ -2,8 +2,8 @@
const crypto = require('libp2p-crypto')
const KEY_LENGTH = 32
const uint8ArrayToString = require('uint8arrays/to-string')
const uint8ArrayFromString = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
/**
* Generates a PSK that can be used in a libp2p-pnet private network

View File

@@ -17,7 +17,7 @@ You can read further about the envelope in [libp2p/specs#217](https://github.com
```js
// interface-record implementation example with the "libp2p-example" namespace
const Record = require('libp2p-interfaces/src/record')
const fromString = require('uint8arrays/from-string')
const { fromString } = require('uint8arrays/from-string')
class ExampleRecord extends Record {
constructor () {

View File

@@ -1,13 +1,13 @@
'use strict'
const errCode = require('err-code')
const uint8arraysConcat = require('uint8arrays/concat')
const uint8arraysFromString = require('uint8arrays/from-string')
const { concat: uint8arraysConcat } = require('uint8arrays/concat')
const { fromString: uint8arraysFromString } = require('uint8arrays/from-string')
// @ts-ignore libp2p-crypto does not support types
const cryptoKeys = require('libp2p-crypto/src/keys')
const PeerId = require('peer-id')
const varint = require('varint')
const uint8arraysEquals = require('uint8arrays/equals')
const { equals: uint8arraysEquals } = require('uint8arrays/equals')
const { codes } = require('../../errors')
const { Envelope: Protobuf } = require('./envelope')

View File

@@ -1,9 +1,7 @@
'use strict'
const multicodec = require('multicodec')
// The domain string used for peer records contained in a Envelope.
const domain = multicodec.getName(multicodec.LIBP2P_PEER_RECORD) || 'libp2p-peer-record'
const domain = 'libp2p-peer-record'
// The type hint used to identify peer records in a Envelope.
// Defined in https://github.com/multiformats/multicodec/blob/master/table.csv

View File

@@ -0,0 +1,47 @@
'use strict'
/* eslint-env mocha */
const { expect } = require('aegir/utils/chai')
const mergeOptions = require('merge-options')
const { create } = require('../../src')
const { baseOptions } = require('./utils')
describe('Protocol prefix is configurable', () => {
let libp2p
it('protocolPrefix is provided', async () => {
const testProtocol = 'test-protocol'
libp2p = await create(mergeOptions(baseOptions, {
config: {
protocolPrefix: testProtocol
}
}))
const protocols = libp2p.peerStore.protoBook.get(libp2p.peerId);
[
'/libp2p/circuit/relay/0.1.0',
`/${testProtocol}/id/1.0.0`,
`/${testProtocol}/id/push/1.0.0`,
`/${testProtocol}/ping/1.0.0`
].forEach((i, idx) => {
expect(protocols[idx]).equals(i)
})
await libp2p.stop()
})
it('protocolPrefix is not provided', async () => {
libp2p = await create(baseOptions)
const protocols = libp2p.peerStore.protoBook.get(libp2p.peerId);
[
'/libp2p/circuit/relay/0.1.0',
'/ipfs/id/1.0.0',
'/ipfs/id/push/1.0.0',
'/ipfs/ping/1.0.0'
].forEach((i, idx) => {
expect(protocols[idx]).equals(i)
})
await libp2p.stop()
})
})

View File

@@ -1,7 +1,7 @@
'use strict'
const Pubsub = require('libp2p-interfaces/src/pubsub')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const Muxer = require('libp2p-mplex')
const Transport = require('libp2p-websockets')
const filters = require('libp2p-websockets/src/filters')

View File

@@ -8,7 +8,7 @@ const sinon = require('sinon')
const pDefer = require('p-defer')
const mergeOptions = require('merge-options')
const CID = require('cids')
const { CID } = require('multiformats/cid')
const ipfsHttpClient = require('ipfs-http-client')
const DelegatedContentRouter = require('libp2p-delegated-content-routing')
const { Multiaddr } = require('multiaddr')
@@ -164,7 +164,7 @@ describe('content-routing', () => {
})
it('should be able to register as a provider', async () => {
const cid = new CID('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const provider = 'QmZNgCqZCvTsi3B4Vt7gsSqpkqDpE7M2Y9TDmEhbDb4ceF'
const mockBlockApi = nock('http://0.0.0.0:60197')
@@ -191,7 +191,7 @@ describe('content-routing', () => {
})
it('should handle errors when registering as a provider', async () => {
const cid = new CID('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const mockApi = nock('http://0.0.0.0:60197')
// mock the block/stat call
.post('/api/v0/block/stat')
@@ -205,7 +205,7 @@ describe('content-routing', () => {
})
it('should be able to find providers', async () => {
const cid = new CID('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const provider = 'QmZNgCqZCvTsi3B4Vt7gsSqpkqDpE7M2Y9TDmEhbDb4ceF'
const mockApi = nock('http://0.0.0.0:60197')
@@ -227,7 +227,7 @@ describe('content-routing', () => {
})
it('should handle errors when finding providers', async () => {
const cid = new CID('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
const mockApi = nock('http://0.0.0.0:60197')
.post('/api/v0/dht/findprovs')
.query(true)

View File

@@ -6,7 +6,7 @@ const { expect } = require('aegir/utils/chai')
const { Multiaddr } = require('multiaddr')
const pWaitFor = require('p-wait-for')
const mergeOptions = require('merge-options')
const uint8ArrayFromString = require('uint8arrays/from-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { create } = require('../../../src')
const { subsystemOptions, subsystemMulticodecs } = require('./utils')

View File

@@ -2,7 +2,7 @@
/* eslint-env mocha */
const Transport = require('libp2p-websockets')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const Libp2p = require('../../src')
const { createPeerId } = require('../utils/creators/peer')

View File

@@ -4,7 +4,7 @@
const { expect } = require('aegir/utils/chai')
const Transport = require('libp2p-websockets')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const Libp2p = require('../../src')
const { codes: ErrorCodes } = require('../../src/errors')

View File

@@ -4,7 +4,7 @@
const { expect } = require('aegir/utils/chai')
const Transport = require('libp2p-tcp')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const { create } = require('../../src')
const peerUtils = require('../utils/creators/peer')

View File

@@ -5,7 +5,7 @@ const { expect } = require('aegir/utils/chai')
const sinon = require('sinon')
const Transport = require('libp2p-tcp')
const Muxer = require('libp2p-mplex')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const { Multiaddr } = require('multiaddr')
const PeerId = require('peer-id')
const delay = require('delay')
@@ -17,7 +17,7 @@ const pushable = require('it-pushable')
const AggregateError = require('aggregate-error')
const { Connection } = require('libp2p-interfaces/src/connection')
const { AbortError } = require('libp2p-interfaces/src/transport/errors')
const uint8ArrayFromString = require('uint8arrays/from-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const Libp2p = require('../../src')
const Dialer = require('../../src/dialer')

View File

@@ -9,7 +9,7 @@ const delay = require('delay')
const Transport = require('libp2p-websockets')
const filters = require('libp2p-websockets/src/filters')
const Muxer = require('libp2p-mplex')
const { NOISE: Crypto } = require('libp2p-noise')
const { NOISE: Crypto } = require('@chainsafe/libp2p-noise')
const { Multiaddr } = require('multiaddr')
const AggregateError = require('aggregate-error')
const { AbortError } = require('libp2p-interfaces/src/transport/errors')
@@ -177,6 +177,26 @@ describe('Dialing (direct, WebSockets)', () => {
.and.to.have.property('code', ErrorCodes.ERR_TIMEOUT)
})
it('should throw when a peer advertises more than the allowed number of peers', async () => {
const spy = sinon.spy()
const dialer = new Dialer({
transportManager: localTM,
maxAddrsToDial: 10,
peerStore: {
delete: spy,
addressBook: {
add: () => { },
getMultiaddrsForPeer: () => Array.from({ length: 11 }, (_, i) => new Multiaddr(`/ip4/127.0.0.1/tcp/1500${i}/ws/p2p/12D3KooWHFKTMzwerBtsVmtz4ZZEQy2heafxzWw6wNn5PPYkBxJ5`))
}
}
})
await expect(dialer.connectToPeer(remoteAddr))
.to.eventually.be.rejected()
.and.to.have.property('code', ErrorCodes.ERR_TOO_MANY_ADDRESSES)
expect(spy.calledOnce).to.be.true()
})
it('should sort addresses on dial', async () => {
const peerMultiaddrs = [
new Multiaddr('/ip4/127.0.0.1/tcp/15001/ws'),

View File

@@ -9,7 +9,7 @@ const PeerId = require('peer-id')
const duplexPair = require('it-pair/duplex')
const { Multiaddr } = require('multiaddr')
const pWaitFor = require('p-wait-for')
const unit8ArrayToString = require('uint8arrays/to-string')
const { toString: unit8ArrayToString } = require('uint8arrays/to-string')
const { codes: Errors } = require('../../src/errors')
const IdentifyService = require('../../src/identify')
@@ -60,7 +60,8 @@ describe('Identify', () => {
peerStore: localPeerStore,
multiaddrs: listenMaddrs,
isStarted: () => true,
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
const remoteIdentify = new IdentifyService({
@@ -70,7 +71,8 @@ describe('Identify', () => {
peerStore: remotePeerStore,
multiaddrs: listenMaddrs,
isStarted: () => true,
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -119,7 +121,8 @@ describe('Identify', () => {
peerStore: localPeerStore,
multiaddrs: listenMaddrs,
isStarted: () => true,
_options: { host: { agentVersion } }
_options: { host: { agentVersion } },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -131,7 +134,8 @@ describe('Identify', () => {
peerStore: remotePeerStore,
multiaddrs: listenMaddrs,
isStarted: () => true,
_options: { host: { agentVersion } }
_options: { host: { agentVersion } },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -180,7 +184,8 @@ describe('Identify', () => {
connectionManager: new EventEmitter(),
peerStore: localPeerStore,
multiaddrs: [],
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
const remoteIdentify = new IdentifyService({
@@ -189,7 +194,8 @@ describe('Identify', () => {
connectionManager: new EventEmitter(),
peerStore: remotePeerStore,
multiaddrs: [],
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -231,7 +237,8 @@ describe('Identify', () => {
host: {
agentVersion
}
}
},
_config: { protocolPrefix: 'ipfs' }
},
protocols
})
@@ -261,7 +268,8 @@ describe('Identify', () => {
peerStore: localPeerStore,
multiaddrs: listenMaddrs,
isStarted: () => true,
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -275,7 +283,8 @@ describe('Identify', () => {
peerStore: remotePeerStore,
multiaddrs: [],
isStarted: () => true,
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -333,7 +342,8 @@ describe('Identify', () => {
peerStore: localPeerStore,
multiaddrs: listenMaddrs,
isStarted: () => true,
_options: { host: {} }
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' }
}
})
@@ -347,6 +357,7 @@ describe('Identify', () => {
peerStore: new PeerStore({ peerId: remotePeer }),
multiaddrs: [],
_options: { host: {} },
_config: { protocolPrefix: 'ipfs' },
isStarted: () => true
}
})

View File

@@ -1,7 +1,7 @@
'use strict'
/* eslint-env mocha */
const tests = require('libp2p-interfaces/src/crypto/tests')
const tests = require('libp2p-interfaces-compliance-tests/src/crypto')
const plaintext = require('../../src/insecure/plaintext')
describe('plaintext compliance', () => {

View File

@@ -3,8 +3,8 @@
'use strict'
const { expect } = require('aegir/utils/chai')
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const { MemoryDatastore } = require('interface-datastore')
const Keychain = require('../../src/keychain')

View File

@@ -4,8 +4,8 @@
const { expect } = require('aegir/utils/chai')
const fail = expect.fail
const uint8ArrayFromString = require('uint8arrays/from-string')
const uint8ArrayToString = require('uint8arrays/to-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const peerUtils = require('../utils/creators/peer')

View File

@@ -3,11 +3,11 @@
const { expect } = require('aegir/utils/chai')
const PeerId = require('peer-id')
const multihash = require('multihashes')
const { base58btc } = require('multiformats/bases/base58')
const crypto = require('libp2p-crypto')
const rsaUtils = require('libp2p-crypto/src/keys/rsa-utils')
const rsaClass = require('libp2p-crypto/src/keys/rsa-class')
const uint8ArrayFromString = require('uint8arrays/from-string')
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
const sample = {
id: '122019318b6e5e0cf93a2314bf01269a2cc23cd3dcd452d742cdb9379d8646f6e4a9',
@@ -40,7 +40,7 @@ describe('peer ID', () => {
const jwk = rsaUtils.pkixToJwk(publicKeyDer)
const rsa = new rsaClass.RsaPublicKey(jwk)
const keyId = await rsa.hash()
const kids = multihash.toB58String(keyId)
const kids = base58btc.encode(keyId).substring(1)
expect(kids).to.equal(peer.toB58String())
})
@@ -54,7 +54,7 @@ describe('peer ID', () => {
}
const rsa = new rsaClass.RsaPublicKey(jwk)
const keyId = await rsa.hash()
const kids = multihash.toB58String(keyId)
const kids = base58btc.encode(keyId).substring(1)
expect(kids).to.equal(peer.toB58String())
})

View File

@@ -11,7 +11,7 @@ const crypto = require('libp2p-crypto')
const KadDht = require('libp2p-kad-dht')
const MulticastDNS = require('libp2p-mdns')
const { Multiaddr } = require('multiaddr')
const uint8ArrayToString = require('uint8arrays/to-string')
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
const Libp2p = require('../../src')
const baseOptions = require('../utils/base-options')

Some files were not shown because too many files have changed in this diff Show More