Commit Graph

383 Commits

Author SHA1 Message Date
Kim De Mey c9caafb2a4
Replace memory db with lrucache for temporary storage of sessions (#292) 2020-09-10 14:49:48 +02:00
Zahary Karadjov 73c1bb817c
Adapt to latest snappy; Avoid decompression bombs 2020-08-19 14:14:59 +03:00
kdeme f0638eb3f1
Add rlp_decode fuzz test + some corpus generate code 2020-07-20 17:09:15 +02:00
kdeme 4e4836a0fe
Add discv5 fuzzing test targets 2020-07-20 14:17:44 +02:00
kdeme ec260dcfe4
Add & update tests 2020-07-17 22:48:14 +02:00
kdeme 1eae8f93f9
Fix empty ENR list in auth-response properly + potentially request new ENR on revalidation 2020-07-17 16:18:50 +02:00
kdeme 84fd39a8f8
Update enrs in buckets and replacement caches and fix empty ENR list in AuthResponse 2020-07-17 11:14:08 +02:00
kdeme c7ac9f54b3
Refactor the findNode code + add tests 2020-07-15 15:27:22 +02:00
kdeme 33f72e77bc
Add duplicate and distance checks in Nodes message 2020-07-15 11:15:50 +02:00
Kim De Mey 7febbec673
Use brHmacDrbgGenerate for all random operations in discovery (#272) 2020-07-13 14:34:53 +02:00
Kim De Mey f3de959261
Discv5 readme (#278)
* Add discovery v5 readme + test_discv5 task

* Move hkdf tests to test file and add to nimble task
2020-07-12 23:53:27 +02:00
Kim De Mey 0888667ac0
Comments and cleanup (#276)
* Fix dcli + add more comments

* Fix pong enr sequence number + varia cleanup

* Send randomData in case no handshake was done yet. Fix #277
2020-07-12 17:25:18 +02:00
Kim De Mey 28a8d52308
Fix enr deserialization crash + more tests + fuzz test (#274)
* Fix enr deserialization crash + more tests + fuzz test

* CI: Install depsOnly
2020-07-11 01:28:53 +02:00
Eugene Kabanov e64efc5dbb
Fix LSWAP problem. (#275) 2020-07-10 23:30:34 +02:00
Kim De Mey 7f77ba2308
Fix formatFloat issue (#273) 2020-07-10 14:17:06 +02:00
kdeme eeb958e834
Add comments [skip ci] 2020-07-08 14:56:56 +02:00
kdeme 4f3df3c9b2
Change update back to use var parameter of Record 2020-07-08 14:28:54 +02:00
kdeme d3db83fa0a
Extra test on newProtocol 2020-07-08 13:16:07 +02:00
kdeme 95a09fdf7f
Get rid of some duplicate code 2020-07-08 12:14:00 +02:00
kdeme 0fb21e72d7
Add updateEnr and allow for table constructor usage in newProtocol 2020-07-08 11:45:58 +02:00
kdeme 72420d7f17
Allow for passing in previous enr at discovery protocol creation 2020-07-07 23:39:32 +02:00
kdeme 57302fcf52
Allow for multiple enr fields to be inserted + enr update proc 2020-07-07 22:48:26 +02:00
kdeme 3bbe757fe3
Add record size check on init + add insertFieldPair call + tests 2020-07-07 17:19:15 +02:00
Jacek Sieka 484fbcab1b
use bearssl rng throughout (#265)
* use bearssl rng throughout

* seeder can fail

* imports and exports

* modules, sigh

* one more try

* move var

* even fewer thread vars

* remove out-of-date genrated files
2020-07-07 10:56:26 +02:00
kdeme ffb7923370
Use different try/except construct to enforce returning on error 2020-06-30 21:58:23 +02:00
kdeme 23aa13b03d
Return on getMessage failure and do address conversion afterwards 2020-06-30 15:33:33 +02:00
Kim De Mey 9a467225fb
Add routing table metrics + tweaks + fixes (#261)
- routing table metrics + option in dcli
- only forward "seen" nodes on a findNode request
- setJustSeen & replace on ping AND findnode
- self lookup only at start
- revalidate 10x more
- use bitsPerHop (b) of 5
- small fix in resolve
- small fix in bucket split
2020-06-30 13:35:15 +02:00
Kim De Mey 0d591c6423
Merge pull request #247 from status-im/routing-table
Routing table work
2020-06-24 22:29:41 +02:00
narimiran ebabd6f76d more fixes 2020-06-24 22:20:50 +02:00
Miran 0424a66aa2
fix deprecated 'rand' (#259) 2020-06-24 16:06:07 +02:00
kdeme e28f3f987c
routing table: resolve some TODOs 2020-06-24 12:29:59 +02:00
kdeme ba19465892
Functional replacement cache 2020-06-23 16:11:58 +02:00
kdeme ceb4a20463 Fix depth calculation for bucket splitting 2020-06-23 09:35:12 +02:00
kdeme 2d7b3440f2 make bitsPerHop configurable + add routing table tests 2020-06-23 09:35:12 +02:00
kdeme 6c85a48b4c Fix bucket ordering and add comments on this 2020-06-23 09:35:12 +02:00
kdeme 7e35b329b4 Add limit to the replacement cache 2020-06-23 09:35:12 +02:00
Jacek Sieka 61feae0f21
secp: requiresInit updates (#258)
* secp: requiresInit updates

* fixup!

* clean up mapconverts
2020-06-22 18:07:48 +02:00
jangko f85c8303ee add goerli bootnodes 2020-06-19 12:15:05 +03:00
Kim De Mey 225a9ad41c
Add predicate filter option for randomNodes (#251)
* Add predicate filter option for randomNodes

* Further ValidIpAddress fixes

* Add gcsafe/noSideEffect and add test case
2020-06-11 21:24:52 +02:00
kdeme 67decc3a85 Clear after aes encrypt/decrypt 2020-06-09 11:10:16 +02:00
kdeme 1e1fd70649 Metrics with labels 2020-06-09 11:10:16 +02:00
Kim De Mey 1c77cc1d3d
Fix discovery after introduction of ValidIpAddress (#248) 2020-06-09 11:09:35 +02:00
Zahary Karadjov 4e31a86533
IpAddress -> ValidIpAddress 2020-06-05 19:35:43 +03:00
kdeme 6dd820840a
Add simple auth header encode/decode test 2020-06-04 15:03:41 +02:00
kdeme 12627b34d3
Don't allow to use HandshareSecrets if auth response is invalid 2020-06-04 13:38:04 +02:00
kdeme 47602e634c
Add node id check and id-nonce-sig verification #204 2020-06-04 12:19:06 +02:00
kdeme 4276e713f4 Add argument pragma for ping and findnode target node 2020-06-03 16:08:15 +03:00
kdeme ff7bed9555 Add discoveryv5 debugging tool: dcli 2020-06-03 16:08:15 +03:00
kdeme d53cebcf5d Quickfix for local node without reachable address 2020-05-29 19:18:49 +03:00
Kim De Mey a110f091af
Discv5 eh2 (#240)
* Discv5: More error handling improvements

- More results usage and raises pragma annotations
- Remove ENode related code and adjust Node object
- Misc.

* Add sendMessage and catch RlpError when decoding WhoAreYou

* Make the receive proc exception free

Except for `Exception` hah...

* Address review comments

* And another bunch of results and raises annotations

* Send Nodes Message also on 0 nodes and remove usage of broken require
2020-05-28 10:19:36 +02:00
Zahary Karadjov ff546d27c3
Remove the last remains of gensym in the p2pProtocol DSL in order to get non-changing codegen 2020-05-25 19:41:20 +03:00
Zahary Karadjov 218192aa09
Allow LibP2P to break the ties with RLPx by allowing more natural RPC syntax
Integrate the Stew macro printer and use to store the generated code for Whisper
2020-05-24 01:10:00 +03:00
Jacek Sieka 9375ccc3a9
cleanup (#238) 2020-05-21 11:58:19 +02:00
Zahary Karadjov 53166fd1ff Allow overriding the request Result/Option type 2020-05-13 11:37:35 +03:00
Zahary Karadjov 631b6d5d15 Adapt to latest FastStreams API 2020-05-13 11:37:35 +03:00
kdeme 17586c05d7 Remove waku protocol from the repository 2020-05-07 20:49:00 +03:00
kdeme 887cbba563
discv5: Address review comments 2020-05-01 22:34:26 +02:00
kdeme 74df90e16d
discv5: further prepping for results error handling 2020-04-30 00:11:03 +02:00
kdeme 3a6d4336bc
Bunch of renames to use same nomenclature as spec 2020-04-27 14:13:00 +02:00
kdeme 09a127ef1b
Pass packet as decoding result 2020-04-24 16:52:41 +02:00
kdeme 5dec5c5a9b discv5 encoding: First steps to move to result based error handling 2020-04-24 15:51:04 +02:00
kdeme 0c6c4b969c Add comment about used routing table and FindNode call [skip ci] 2020-04-21 21:27:32 +02:00
kdeme 59ba3704d6 Add resolve proc + test 2020-04-21 21:27:32 +02:00
kdeme d3c9ccea67 Fix FindNode to return nodes with specific distance + tests 2020-04-21 21:27:32 +02:00
Kim De Mey 5bb6ee6451
Update waku to version 1.0 specification (#228) 2020-04-21 14:03:40 +02:00
Jacek Sieka fd6caa0fdc
Rlp experimental (#227)
* rlp: remove experimental features

* avoid range library

* trie: avoid reference-unsafe bitrange type
2020-04-20 20:14:39 +02:00
Jacek Sieka 1646d78d83
cleanups (#226) 2020-04-18 10:17:59 +02:00
Zahary Karadjov ee5c9619e0
Fix test_discoveryv5 2020-04-15 05:55:08 +03:00
Zahary Karadjov bac6248301
Remove the unnecessary initFuture in the LibP2P p2pProtocol back-end 2020-04-15 05:33:52 +03:00
Zahary Karadjov 6513cd9eff
Allow application-supplied ENR fields in discv5 2020-04-15 05:32:52 +03:00
Zahary Karadjov 8f3bf36054
Adapt to the latest FastStreams API 2020-04-14 19:33:49 +03:00
Kim De Mey 99c68d40f7
Fix idAtDistance (#219) 2020-04-14 11:08:08 +02:00
andri lim f11250ea23 add goerli bootnodes 2020-04-09 17:13:30 +03:00
Kim De Mey 3f1d6e2922
Add Status test nodes (#216) 2020-04-08 15:21:48 +02:00
Jacek Sieka ec1492a65a result -> results 2020-04-07 13:32:10 +03:00
Jacek Sieka 0b110f3287
Secp more refactor (#211)
* simplify some modules

* mark several modules with raises
* fix clearing of keys in auth.nim
* fix keyfile case dropping off
* fix keyfile stream storage
* uuid should be output in lowercase

* enode: simplify API
2020-04-06 18:24:15 +02:00
Jacek Sieka ac5bbe4d3d
keys: get rid of deprecated calls (#213) 2020-04-04 18:44:01 +02:00
Corey c827c37329
update boot and whisper nodes 2020-04-02 20:05:05 -04:00
Jacek Sieka 02d661503f
refactor secp interface (#203)
* avoid mix of exceptions and return codes
* introduce result
* use deprecated compatibility API to avoid big-bang refactoring
* loosely based on nim-libp2p secp as well as the rust-secp256k1 wrapper
* oh, boy does our secp256k1 wrapper need updating - we're _far_
behind...
2020-04-02 14:40:29 +02:00
kdeme abc61e188a discv5: Add check on ip address after handshake 2020-03-30 23:14:18 +02:00
kdeme 65bed1ae94 discv5: allow creation of node without external ip 2020-03-30 13:32:15 +02:00
kdeme 0a33744d1c Add IP checks on ENRs received from Nodes packet 2020-03-27 14:38:45 +01:00
kdeme c3f23e5912 Minor adjustments to store bootnode records + deletion test 2020-03-24 16:45:15 +02:00
kdeme 7464c8cb4b discv5: reorganize protocol code somewhat 2020-03-24 16:45:15 +02:00
kdeme 6ec942a195 discv5: quick fix for leaking pending requests 2020-03-24 16:45:15 +02:00
kdeme 713f2e3bff Add getNode and tests for findNode and getNode 2020-03-24 16:45:15 +02:00
kdeme f46f9f1418 discv5: add start call 2020-03-24 16:45:15 +02:00
kdeme a9ff761d68 For now use directly address/id instead of Node to workaround node isNil problem in edge cases 2020-03-24 16:45:15 +02:00
kdeme 55b8e3e23f Update address to UDP endpoint and delete keys on removal from DHT 2020-03-24 16:45:15 +02:00
kdeme 00c2bac465 Fix logDist and add test 2020-03-24 16:45:15 +02:00
kdeme 267a06dbe6 discv5: Pass bootstrap nodes and add deletion of nodes 2020-03-24 16:45:15 +02:00
Zahary Karadjov 2b7a25175b Prepare for Nim 1.2 2020-03-24 14:05:30 +02:00
Zahary Karadjov 9c442bf65b
Deal with bit rot in the p2p tracing support 2020-03-18 20:43:53 +02:00
Zahary Karadjov b3b5854003
Add some simple accessors needed in NBC for the JSON-RPC service 2020-03-17 18:58:11 +02:00
kdeme 172173b863
Discv5: set recordSeq in whoareyou to 0 so we receive always an ENR 2020-03-10 22:44:10 +01:00
kdeme 596f148974
Discv5: Specifically handle decryption errors 2020-03-10 16:01:04 +01:00
Kim De Mey 19a8c6ee0c
Merge pull request #193 from status-im/discv5-fixes
Fix invalid packet in pendingRequest
2020-03-09 10:23:01 +01:00
kdeme c4c1bb967d
Add ping proc 2020-03-06 17:01:45 +01:00
kdeme 942e978269
discv5: Fix invalid packet in pendingRequest 2020-03-06 15:57:54 +01:00
Jacek Sieka a899e09f68
fix endian conversion issues 2020-03-05 12:13:48 +01:00
kdeme 4a3ac80c4b
Quick workaround for chronicles json sink issue 2020-03-02 14:10:19 +01:00
kdeme 86bceaa5d8
Add TODO comments from review 2020-03-01 11:50:26 +01:00
kdeme b951ec45dc
Address review comments from Enterlist PR 2020-03-01 11:46:38 +01:00
kdeme 0d63ff4db4 (Quick)fix hashing for handshakes by adding Ports + tests 2020-02-29 14:16:27 +01:00
kdeme 6b01ada194 Add address to handshakes key 2020-02-29 14:16:27 +01:00
kdeme 1fab56f894 Introduce more constants and type aliases 2020-02-29 14:16:27 +01:00
kdeme ad99b96e12 Drop additional handshakes with same nodeid and add timeout on handshakes 2020-02-29 14:09:12 +01:00
kdeme fc844347a4 Don't send Whoareyou on handshake failure 2020-02-29 14:09:12 +01:00
kdeme f81a87f31b Add lookupLoop and other fixes
- add lookupLoop
- protocol close / closeWait
- randomize randomNodes
- Use lookupRequestLimit
- Remove invalid check in neighbours proc
- Add lookup test
2020-02-29 14:00:58 +01:00
Zahary Karadjov e89e59aa59
`enterList` now returns a bool 2020-02-27 20:09:05 +02:00
Andrea Maria Piana 9dcbb91ae0
Handle waku status-update code 22
This commits adds handling of the status-update code, 22, according to
waku specs 0.4 a6a9d6bcb1

Removes unused codes 20,21
2020-02-26 14:40:21 +01:00
Andrea Maria Piana 3a4f97cb13
Increase max-topic-interest to 10K
This commit increases max-topic-interest to 10K according to the waku
0.4 specs a6a9d6bcb1
2020-02-26 10:05:24 +01:00
Ștefan Talpalaru f4712aaf74
rename safeEnterList() to enterList()
in order to avoid unhandled exceptions due to malformed data received
over the network
2020-02-25 16:10:09 +01:00
Zahary Karadjov 74d0247e6b
Tweak some retry limits and timeouts 2020-02-22 20:49:14 +02:00
Zahary Karadjov 1369cf3a30 [discv5] Allow specifying the advertised IP address; Code style improvements 2020-02-22 02:24:33 +02:00
kdeme 5aebab3f41 Fix duplicates in returned values of a lookup 2020-02-20 15:09:31 +02:00
kdeme 3dd26e8526 Attempt to further add the discv5 wire test vectors 2020-02-20 15:09:31 +02:00
Zahary Karadjov cfdb26db40
[discv5] Advertise the LibP2P TCP port properly 2020-02-18 01:07:23 +02:00
Zahary Karadjov cca931d0b5
Reduce the use of the general Exception type and improve the exception tarcking in protocol.receive 2020-02-18 00:47:13 +02:00
kdeme 79dfe88ec8 Add Packet encodings tests 2020-02-17 22:38:56 +02:00
kdeme 5daaf73d2e Clean up logging and some exception handling 2020-02-17 22:38:56 +02:00
kdeme bb6a3c2ce1 Add basic node discovery test 2020-02-17 22:38:56 +02:00
kdeme c679b9d436 Fix priority check of topic-interest versus bloom filter 2020-02-14 11:03:47 +02:00
kdeme 1fcac8b30d Adjust version check (disabled) and don't pass unsupported RateLimits 2020-02-13 18:40:25 +02:00
Zahary Karadjov 31a4e8f959
Fix one more usage of the old-style IP-as-number handling in ENR 2020-02-12 15:36:39 +02:00
Zahary Karadjov 7b18d6e642 Oops, copying and pasting code is evil 2020-02-12 11:58:14 +02:00
Zahary Karadjov 9908e84935 Use the new enr.Record constructor 2020-02-12 11:58:14 +02:00
Zahary Karadjov a1a6862c7c More spec compliant ENR
* Don't use signed integers in RLP
* Don't store IP addresses as var-sized ints (use fixed-sized blobs instead)
* Allow constructing ENR from ENode.Address
2020-02-12 11:58:14 +02:00
Kim De Mey b89874f6cc
Merge pull request #162 from status-im/waku-alist
Add StatusOptions to Waku Status packet
2020-02-06 20:42:31 +01:00
kdeme 419bc4730d
More sensible timeout values for the Whisper/Waku handshake 2020-02-06 19:19:54 +01:00
Zahary Karadjov 7e836a2c96 Fix a logical typo 2020-02-06 16:32:00 +01:00
Zahary Karadjov d70bb85392 Review all exceptions and classify them as Defects and Errors 2020-02-06 16:32:00 +01:00
Zahary Karadjov 81e0ae12b0 Allow starting the discovery v5 bootstrap process without ENR records 2020-02-06 16:32:00 +01:00
kdeme 18799f1491
Add StatusOptions alist and remove WakuMode 2020-02-04 20:25:50 +01:00
kdeme 3ee5651b7c Rework the metrics and add metrics for dropped envelopes due to full queue 2020-01-23 17:58:59 +02:00
kdeme 84015d0d1d Set of just the msg hash is enough, fixes #156 2020-01-23 17:58:59 +02:00
kdeme 85a2b24920
Lower verbosity of logging in processQueue 2020-01-14 19:02:34 +01:00
kdeme ab287d234a
Fix ordering of Waku/Whisper queue and increase queue capacity 2020-01-14 18:17:37 +01:00
kdeme 5e476dd7d2
Make counter metrics public 2020-01-14 15:36:21 +01:00
kdeme cb2bc388f1
rename newFilter to initFilter for correctness 2020-01-14 15:33:21 +01:00
Yuriy Glukhov 3527d47cb5 Added packet encoding tests 2020-01-08 17:22:43 +02:00
Yuriy Glukhov 129710d3e4 Liveness checks 2020-01-08 17:22:43 +02:00
Yuriy Glukhov 5795054dbf Per @kdeme's comments. Limit ENR size, fix rlp len check 2020-01-08 17:22:43 +02:00
Yuriy Glukhov 9772fbe470 Use addresses instead of stubs as db keys 2020-01-08 17:22:43 +02:00
Zahary Karadjov 988d743c9a Introduce enr.TypedRecord that can replace enr.Record in the future 2020-01-08 17:22:43 +02:00
Zahary Karadjov 39857d57f0 Fix build issues manifesting in our controlled build environment 2020-01-08 17:22:43 +02:00
Zahary Karadjov 54bb1adac9 Export some private APIs needed in nim-beacon-node 2020-01-08 17:22:43 +02:00
Yuriy Glukhov eda6c2906c Discv5 WIP 2020-01-08 17:22:43 +02:00
Zahary Karadjov edd674662a Handle missing keys in enr.Record.get() 2020-01-08 17:22:43 +02:00
Yuriy Glukhov 992aeecd29 ENR parsing and serialization 2020-01-08 17:22:43 +02:00