kdeme
d33d27c2ee
Small improvements and cleanup
2021-02-01 20:30:55 +02:00
kdeme
e43ee6ef9c
Add ip address voting through pong responses
2021-02-01 20:30:55 +02:00
kdeme
181bbadcbc
Add more message related metrics
2021-01-13 21:44:17 +01:00
kdeme
9cedbc0cc8
Move code into seedTable and populateTable proc
2021-01-07 10:20:40 +01:00
kdeme
ac58a1f35c
Only do discovery queries to refresh the table
2021-01-07 10:20:40 +01:00
kdeme
12ec608efd
Put a limit on the nodes returned on a findnode request
2020-12-17 17:06:42 +01:00
kdeme
21423fca42
Use of discv5.1 findnode request with multiple distances
2020-12-17 15:42:04 +01:00
kdeme
a506739b23
Add query proc and use this for recurrent queries
...
This query proc is similar to the original (faulty) lookup proc.
But as we don't need to look for specific targets, it can be
used still as it gives a quicker and broader search resulting
in more nodes.
2020-12-17 15:23:02 +01:00
kdeme
e1acc1ae2d
Avoid sending more requests to node that timed out + request metrics
2020-12-16 00:07:49 +01:00
kdeme
68c9b7b3ad
Fix lookup to sort and query closest nodes
2020-12-15 13:24:57 +01:00
Kim De Mey
0820dbba46
Use one instead of deprecated oneIndex ( #317 )
2020-12-15 12:41:53 +01:00
Kim De Mey
d024ea8e85
Change invalid distance warning to debug ( #316 )
...
And also:
* move connected_peers metric so it does get added where it
shouldn't.
* imports cleanup
2020-12-14 12:21:03 +01:00
Kim De Mey
b4c1391be9
Discv5 ip limits for routing table ( #308 )
...
* Add ip limits to routing table and routing table buckets
* Fix order of ip limit check and duplicate check for replacement
* Fix ip limit for node with updated ip in ENR
* Fix bug where address wouldn't update on ENR update
and update some comments
* Reuse some add/remove code in routing table
* Fix seen bug on ENR update in routing table
* Rework addNode to make sure to do address check always
and adjust some logs.
* More documentation on the ip limits in routing table [skip ci]
2020-11-26 18:20:15 +01:00
Kim De Mey
b88fef203b
Add info log line in case of no external IP ( #313 )
2020-11-26 18:19:13 +01:00
kdeme
44637cdd8e
Remove support for discovery v5.0
2020-11-13 12:33:07 +01:00
Kim De Mey
6bdf1b4b0f
Simplify UseDiscv51 compile flag ( #305 )
2020-10-19 21:04:53 +02:00
Kim De Mey
6b17531d48
Improvements on dropping of challenges and handling of too large distance ( #296 )
...
- drop handshake challenge on invalid handshake
- send empty nodes reponse when distance is > 256
- misc
2020-09-30 09:43:51 +02:00
Kim De Mey
c9caafb2a4
Replace memory db with lrucache for temporary storage of sessions ( #292 )
2020-09-10 14:49:48 +02:00
kdeme
f0638eb3f1
Add rlp_decode fuzz test + some corpus generate code
2020-07-20 17:09:15 +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
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
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
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
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
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
kdeme
ba19465892
Functional replacement cache
2020-06-23 16:11:58 +02: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
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
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
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
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
Zahary Karadjov
ee5c9619e0
Fix test_discoveryv5
2020-04-15 05:55:08 +03:00
Zahary Karadjov
6513cd9eff
Allow application-supplied ENR fields in discv5
2020-04-15 05:32:52 +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
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
267a06dbe6
discv5: Pass bootstrap nodes and add deletion of nodes
2020-03-24 16:45:15 +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
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
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
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
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
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
Zahary Karadjov
7e836a2c96
Fix a logical typo
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
Yuriy Glukhov
129710d3e4
Liveness checks
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
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