80 Commits

Author SHA1 Message Date
Ivan Folgueira Bande
dcb4c8b74e fix(libp2p): Updating nim-libp2p to fix the wss connectivity issue (#1848)
* Updating nim-libp2p to fix the `wss` connectivity issue

* The `nim-libp2p` adds many changes although we are actually interested
in the latest commit:

> wstransport.nim: avoid re-raising 'TransportOsError' to avoid stopping
`switch.accept` (#929)

* The `nim-stew` bump is needed so that the `nim-libp2p` can compile.

* The changes in `waku_node.nim` are needed due to the changes in
`nim-stew`.

* waku_node.nim: returning a "completed" future within 'statusAndConfidenceHandler'

  This is aimed to avoid the next exception happening in the wakunode:

  ```
  Unhandled defect: Async procedure (service.nim(74)    callHandler)
  yielded `nil`, are you await'ing a `nil` Future? [AssertionDefect]
  ```

  * Adding 'async' to 'statusAndConfidenceHandler' so that it properly returns a Future[void]
2023-07-13 18:00:55 +02:00
Simon-Pierre Vivier
ea5af1a935 chore: discv5 re-org clean-up (#1823)
- Remove discv5 from node and it's builder
- Require a record to init a node (was previously using discv5 record).
- Fix various tests that assumed nodes with discv5.
- Fix ENR creation
- Fix wakubridge
- Fix networkmonitor
2023-06-28 08:57:10 -04:00
Simon-Pierre Vivier
00a818b96c chore: move discv5 out of node. (#1818)
- Refactor discv5 start, stop & loop.
- Fix tests.
2023-06-27 09:50:11 -04:00
Ivan Folgueira Bande
32ba79a920 refactor(archive): Moving waku archive logic from app.nim to the archive module (#1817)
* Refactoring the Waku Archive. Simplifying the app.nim

This change is needed to accommodate the further PRs where we will integrate Postgres in `wakunode2`.
2023-06-27 13:24:31 +02:00
Alvaro Revuelta
a67bf22e61 chore: add peer manager config to builder (#1816) 2023-06-23 15:30:28 +02:00
Simon-Pierre Vivier
887a5c76b2 chore: discv5 re-org setup (#1815)
Key, netconfig, enr are created at App initialization and config files has been renamed.
2023-06-22 16:58:14 -04:00
Simon-Pierre Vivier
af98f7bb94 feat: discovery peer filtering for relay shard (#1804)
Add discv6 predicate that filter peer by static shard.

Co-authored-by: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com>
2023-06-20 12:08:10 -04:00
Alvaro Revuelta
7cc3239466 feat(networking): integrate gossipsub scoring (#1769) 2023-06-06 19:28:47 +02:00
Hanno Cornelius
5ebf095477 feat(discv5): added find random nodes with predicate (#1762) (#1763)
* feat(discv5): added find random nodes with predicate (#1762)

Co-authored-by: Lorenzo Delgado <lnsdev@proton.me>

* chore: play around with sleep times on tests

* chore: simplify flaky tests

* chore: update waku/v2/node/waku_node.nim

Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>

* chore: update tests/v2/test_waku_discv5.nim

Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>

* chore: update examples/v2/subscriber.nim

Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>

---------

Co-authored-by: Lorenzo Delgado <lnsdev@proton.me>
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
2023-06-06 16:36:20 +02:00
Vaclav Pavlin
8bacfd0ba4 feat(wakunode2): enable libp2p rendezvous protocol by default (#1770) 2023-06-01 21:43:10 +02:00
Ivan Folgueira Bande
7c52ba44a4 feat(postgresql): 1st commit to async sql (waku_archive/driver...) (#1755) 2023-05-25 17:34:34 +02:00
Ivan Folgueira Bande
2f1eb2c0ca feat(cbindings): first commit - waku relay (#1632) (#1714)
* feat(cbindings): first commit - waku relay (#1632)

* test_app.nim: fix compilation issue. App.init(..) -> App.new(..)

* Simplifying library name (libwaku) and standardizing function names (waku_*)

* Proper wrapper of the waku_node API and creation of the libwaku.a

* Rolling back changes that are not needed

* Rolling back changes that are out of the scope of this task

* wakunode.nim: Removing unnecessary import

* Aplying PR suggestions

* Renaming 'waku.h' -> 'libwaku.h'

* Use of 'isNil' instead of '== nil'

* libwaku.nim: explicitly setting waku_poll() as gcsafe
2023-05-12 18:08:41 +02:00
Alvaro Revuelta
bcdb7e9cfb chore: add payload bytes to trace log (#1703) 2023-04-25 09:50:43 +02:00
Lorenzo Delgado
59cbcf9dd0 chore(core): move peers utils module to waku_core 2023-04-24 16:37:54 +02:00
Alvaro Revuelta
686b5ee09a feat: add metrics with msg size histogram (#1697) 2023-04-20 13:45:29 +02:00
Lorenzo Delgado
1b1708884b chore(core): move utils time module to waku_core 2023-04-19 16:39:52 +02:00
Alvaro Revuelta
5598ab64e1 feat: curate peers shared over px protocol (#1671) 2023-04-19 16:12:00 +02:00
Lorenzo Delgado
e2dc11912c chore(core): rename waku_message module to waku_core 2023-04-19 13:29:23 +02:00
Lorenzo Delgado
cc85f7f213 chore: flatten waku v2 protocols folder 2023-04-18 15:22:10 +02:00
Ivan Folgueira Bande
cef5f89cf3 Adding parsePeerInfo and deprecating 'parseRemotePeerInfo' (#1658) 2023-04-12 11:29:11 +02:00
Hanno Cornelius
10028a4df9 feat: integrate new filter protocol, other improvements (#1637) 2023-04-11 10:12:54 +02:00
Lorenzo Delgado
7834ca839c refactor(node): remove deprecated constructor and extend testlib with builder 2023-04-05 16:01:51 +02:00
Alvaro Revuelta
1088c5f063 chore: do not mount relay more than once (#1650) 2023-04-05 15:12:49 +02:00
Lorenzo Delgado
e3cba65827 refactor(node): added waku_node barrel import and split config module 2023-04-05 09:46:13 +02:00
Lorenzo Delgado
884b2fc9ac chore: remove deprecated enr record init method 2023-04-04 15:35:15 +02:00
Alvaro Revuelta
0fe18e2842 feat: dos protected topic relay msgs based on meta field (#1614) 2023-04-04 10:58:45 +02:00
Lorenzo Delgado
f07287e015 chore: remove waku swap protocol 2023-03-31 17:21:40 +02:00
Alvaro Revuelta
4e006e5ca1 bug: connect instead dial relay peers (#1622) 2023-03-28 13:29:48 +02:00
Alvaro Revuelta
bdf5cd1c54 bug: fix hash size greater than 32 (#1621) 2023-03-24 13:06:27 +01:00
Alvaro Revuelta
ba027aa21c refactor(networking): unify peer data models, remove StoredInfo (#1597) 2023-03-09 11:05:50 -07:00
Lorenzo Delgado
f5c77ed76f refactor(enr): node capabilities code clean up and reorganization 2023-03-08 15:44:10 +01:00
Lorenzo Delgado
4ac7af2928 chore(enr): move waku_enr to protocols module 2023-03-07 10:52:12 +01:00
Lorenzo Delgado
6ffc95a2ec chore: move discovery protocols under protocol module 2023-03-06 17:18:41 +01:00
Aaryamann Challani
7c9339b2e5 feat(rln-relay): group manager integration (#1496)
* feat(rln-relay): init group manager integration

fix(rln-relay): integrate group manager. todo spam and reg handlers

fix(rln-relay): decouple waku-relay and waku-rln-relay

fix(rln-relay): compiles now

fix(chat2): compilation

fix(rln-relay): wip segfault

fix(rln-relay): segfault

fix(chat2|wakunode2): use optional field

fix(rln-relay): wakunode test

fix(rln-relay): uncomment fields in proto decode

fix(rln-relay): used pragma on tests

fix(rln-relay): include cred processing

fix(rln-relay): add reg callback

fix(rln-relay): args to mount

fix(rln-relay): add timeout to waitForExit

fix(rln-relay): use osproc term instead of posix kill

fix(rln-relay): use poParentStream to prevent deadlock

fix(rln-relay): remove poParentStream, remove ganache log output

* fix(rln-relay): abstract tuple into own type
2023-02-28 19:08:30 +05:30
Alvaro Revuelta
68acf82c95 refactor(networking): peermanager refactor and cleanups (#1539)
* refactor(networking): use addServicePeer where needed + add metrics
2023-02-27 10:24:31 -07:00
Hanno Cornelius
1a968e21ff chore: log node peer ID with relay trace logging (#1574)
* chore: log node peer ID with relay trace logging

* feat: add peerId accessor
2023-02-27 17:36:24 +02:00
Lorenzo Delgado
1ea771fb2f fix(node): remove subscription to waku default network topic (#1545) 2023-02-10 17:55:47 +01:00
Lorenzo Delgado
f07e6301c8 refactor(relay): improve waku_relay apis and add tests 2023-02-10 15:17:50 +01:00
Alvaro Revuelta
a74eaf1c10 refactor(px): refactor peer exchange + tests (#1527) 2023-02-09 16:59:29 +01:00
G
8396b7faa1 feat(credentials): store and processing generic app credentials (#1466)
* feat(credentials): store and processing generic app credentials

* feat(credentials): separate module; minimal tests

* more work

* feat(credentials): check presence of idCredential in keystore and add only new membership groups

* feat(credential): refactor, new data structure, dynamic add credential, filter

* feat(credential): add filter, get credentials

* feat(credential): encode/decode utility

* feat(credential): sort groups, test credential retrieval/group merging

* fix(credential): remove unnecessary order in sort

* fix(credentials): fix vendor commits

* fix(credential/rln): embed credential module in rln relay

* feat(credentials/rln): use credentials API in rln-relay to store/read credentials

* refactor(credentials): implement hasKeys for JsonNode

* fix(credentials): restore connectToNodes call

* refactor(credentials): remove unnecessary imports

* refactor(credentials): add Res suffix to results

* refactor(credential): moved save json to separate proc; added comments

* feat(credentials): use appInfo

* refactor(keystore): refactor code in a more structured module; address reviewers

* fix(keystore): fix indentation
2023-02-08 16:26:23 +01:00
Lorenzo Delgado
8f399e2dba refactor(relay): improve wakuy relay api 2023-02-08 16:09:59 +01:00
Aaryamann Challani
13b7153aad feat(discv5): advertise custom multiaddresses (#1512)
* feat(discv5): allow custom multiaddr advertisement in discv5

feat(discv5): allow custom multiaddr advertisement in discv5

feat(discv5): move discv5 setup from wakunode2 to waku_node

fix(waku_node): def param

test(discv5): test for ext multiaddr

fix(discv5): address comments

fix(discv5): address comments

fix(wakunode2): discoveryconfig in var before init

fix(discv5): pass multiaddr to discv5 directly

fix(discv5): make multiaddrs optional

fix(test): discv5 init

fix(discv5): split discv5 mounting from waku_node

chore(discv5): s/WakuAddressMetadata/WakuNodeAddrMeta/g

* fix(waku_node): 1.25 max conns

* fix(discv5): s/WakuNodeAddrMeta/NetConfig/g

* fix(discv5): address reviews

* fix(discv5): smaller try-catches

* fix(discv5): missing arg

* fix: compile error
2023-02-07 18:36:50 +05:30
Aaryamann Challani
fd433ce0e2 fix(rng): create rng only within isMainModule blocks (#1523)
* fix(rng): create rng only within isMainModule blocks

* fix(rng): wakucanary rng

* fix(rng): address comments
2023-02-06 17:23:05 +05:30
Lorenzo Delgado
0ea7acdd6a chore(peer_manager): added peer_manager barrel module 2023-02-06 10:03:30 +01:00
Hanno Cornelius
e9ba53bbd0 chore: add better e2 trace logging for relay (#1526) 2023-02-03 10:06:21 +02:00
Alvaro Revuelta
1a425b0bf6 fix: add safe default values for peer-store-capacity (#1525) 2023-01-31 17:26:22 +01:00
Aaryamann Challani
bf532eea8b feat(wakunode): advertise custom multiaddresses (#1509)
* feat(wakunode2): ability to advertise custom multiaddresses

* test(wakunode): test the feature

* fix(wakunode): remove rln diff

* revert(rln-relay): change that creeped into the diff

* fix(wakunode): move extMultiaddrs closer to nat

* fix(waku_node): idiomatic default arg

* fix(config): shortened validation

* fix(wakunode): discoverable via discv5 and dnsdisc
2023-01-26 15:48:30 +05:30
Alvaro Revuelta
f3ee7af3aa feat(networking): add service slots to peer manager (#1473) 2023-01-26 10:20:20 +01:00
Lorenzo Delgado
9949996ed7 refactor(relay): simplify relay publish jsonrpc api 2023-01-25 14:35:38 +01:00
Alvaro Revuelta
9ccaeb1d6e feat(networking): add backoff period after failed dial (#1462)
* feat(networking): add exponential backoff when dialing relay peers

* feat(networking): fix tests

* revert withTimeout

* feat(networking): refactor tests

* feat(networking): improve logs + ping using switch

* feat(networking): fix backoff bug + fix tests

* feat(networking): fix comments
2023-01-23 21:24:46 +01:00