KonradStaniec
88795c6477
Add sending and receiving data procedures ( #407 )
...
* Add sending and receiving data procedures
2021-10-19 13:36:57 +02:00
Kim De Mey
f101c83626
Enr rlp lists ( #408 )
...
* Don't fail ENR decoding when value is an RLP list
* Store RLP raw list in the ENR field pair instead
* Add ENR kList FieldKind so lists can be treated differently
Treated differently now when printing out the ENR, mentioning
that it is a raw RLP list
2021-10-19 09:26:14 +02:00
KonradStaniec
6fbf129ba9
Add initial handling of acks ( #406 )
...
* Add initial handling of acks
Add implemetaion of circular buffer based on reference implementation
Add way to test number of packet in flight
Add acking of initial syn packet
2021-10-15 13:38:51 +02:00
KonradStaniec
7ae287ad1b
Add rudimentary connect function ( #405 )
...
* Add rudimentary connect function
2021-10-11 14:16:06 +02:00
Kim De Mey
5125a438db
Make the custom distances call somewhat more accessible ( #404 )
...
And make the naming more consistent
2021-10-07 16:03:12 +02:00
Kim De Mey
1babe38226
Allow for tcp/udp ports to always be configured ( #402 )
...
* Allow for tcp/udp ports to always be configured
- Allow for an ENR to be build with tcp and udp ports also when
no IP address is provided
- In the address set-up always provide best efforttcp and udp ports
also when configuration of external ip (and/or ports) fails.
2021-09-29 18:50:23 +02:00
KonradStaniec
9f2f101070
Add initial skeleton of utp protocol ( #397 )
...
* Add initial impl of utp over udp
* Add more comments
* Add licenses and push declarations
* Add tests to nimble task
* Pr comments
Use better random generator
Raise assert error in case of buffer io exception
2021-09-13 14:54:06 +02:00
KonradStaniec
a95b205cf7
Modify nodes verification ( #398 )
...
* Modify nodes verification
* Move nodes verification to separate module
By moving verification to separate module it can be re-used
in different contexts not only in discoveryv5.
2021-09-13 14:20:26 +02:00
KonradStaniec
e219547d64
Fix lookupDistances function and make it public ( #399 )
2021-09-10 17:26:22 +02:00
Kim De Mey
df6020832b
Build fuzzing tests in CI and fix current fuzzing tests ( #396 )
...
* Build fuzzing tests in CI and fix current fuzzing tests
* Build fuzzing tests separately (fix Windows CI)
2021-09-07 16:00:01 +02:00
Kim De Mey
bea1f1c6a1
Clean-up routing table object constructions ( #395 )
2021-09-07 11:56:16 +02:00
KonradStaniec
c078f85e48
Expose id and address of talkreq sender ( #393 )
2021-09-07 10:49:18 +02:00
KonradStaniec
bfadcfbfaf
Make Routing table distance function configurable ( #392 )
2021-09-02 14:00:36 +02:00
KonradStaniec
aa3fbbd95d
Add proof verification to public api ( #390 )
2021-08-12 16:15:02 +02:00
KonradStaniec
50c0c5f123
Add helpers to generate merkle proofs ( #381 )
2021-08-09 12:17:21 +02:00
Kim De Mey
9bc4fa366a
Let talkreq directly return the seq[byte] for easier API ( #384 )
2021-07-30 16:04:14 +02:00
KonradStaniec
e3fba48f0f
add merkle proof verification ( #379 )
...
* add merkle proof verification
* remove redundant buffer
* simplify verification function
2021-07-23 13:40:47 +02:00
KonradStaniec
20ad6504b7
Add merkleization tests ( #378 )
...
* Add merkleization tests
* Fix typo in build file
* add test prefix
2021-07-21 09:24:07 +02:00
Kim De Mey
eb0908e33f
Push raises Defect to rlpx and accompanying changes ( #373 )
2021-07-14 10:35:35 +02:00
Kim De Mey
79911ed5d8
Log distance to uint16 and add public neighbours calls ( #371 )
...
* Use uint16 instead of uint32 for discv5 log distance
* Make neighboursAtDistances and neighbours calls available
2021-07-13 10:05:46 +02:00
Kim De Mey
41127eaee8
Remove portal wire code which was moved to nimbus-eth1 repo ( #370 )
2021-07-09 22:14:31 +02:00
jangko
a10d301085
implement EIP-1559 Transaction and BlockHeader
2021-06-27 20:12:47 +07:00
kdeme
e2e30247bf
Add implementation of Portal wire protocol
2021-06-09 14:57:30 +02:00
Jacek Sieka
3514ee6484
sqlite: quick exec with result ( #361 )
2021-05-27 11:31:34 +02:00
Jacek Sieka
68e6aadc29
sqlite3: support option type
...
.. and any integer when writing but don't support int32 on reads -
internally sqlite will truncate on overflow which isn't nice.
2021-05-26 13:32:31 +03:00
Kim De Mey
8abe6b7144
Add support for discv5 talk protocols ( #357 )
2021-05-20 09:49:46 +02:00
Jacek Sieka
1995afb87e
kvstore fixes ( #350 )
...
Storing large blobs in a "WITHOUT ROWID" table turns out to be extremely
slow when the tree must be rebalanced.
* Split out keystore capability into separate interface, making each
keystore a separate instance
* Disable "WITHOUT ROWID" optimization by default
* Implement prefix lookup that allows iterating over all values with a
certain prefix in their key
2021-05-17 15:55:57 +02:00
jangko
ea8530f6a0
EIP-2718: fixes BlockBody rlp encoding
2021-05-17 10:07:05 +07:00
jangko
61d5327f55
implement eip2718: transaction type envelope
...
also add more test cases for both tx and receipt
rlp encoding decoding
2021-05-15 08:18:08 +07:00
kdeme
755729c6a1
Fix several compiler warnings
...
Mostly replacing deprecated calls
2021-05-11 09:24:23 +02:00
kdeme
90b4724492
Adjust for chronosStrictException usage in rest of eth/p2p
2021-05-06 17:20:54 +02:00
kdeme
b0474c0d40
Add raises annotations to discovery.nim
...
And add push raises Defect, remove unneeded gcsafe and remove
all usage of inline.
2021-04-27 21:11:54 +02:00
kdeme
9fed10de88
Allow for discv4 chronos strict usage
...
And group p2p tests that can be run with strict usage along the way.
2021-04-27 10:09:54 +02:00
Jamie Lokier
a48687d277
discv4: Add test associated with fix to Kademlia crash ( #341 )
...
It's been confirmed that the test fails if the Kademlia crash workaround isn't
in `findNode`, and passes with it there.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-04-06 18:46:32 +01:00
Kim De Mey
762415319c
Add build_dcli target and add it to CI ( #344 )
...
* Add build_dcli target and add it to CI
* Fix local imports for dcli
* And use local imports for all other files too
* Use local imports in tests and rlpx protocols
2021-04-06 13:33:24 +02:00
Kim De Mey
207b783253
Nimble file cleanup and group discv5 tests to compile once ( #340 )
2021-03-29 15:26:34 +02:00
Kim De Mey
0700ec770f
Improve network address discovery / NAT setup ( #323 )
...
* Add search for best route and refactor setupNat to setupAddress
* Update setupAddress and make enr ports in discovery optional
* Add specific error log when no route is found
* Use bindIP if it is public
* Adjust some log levels
2021-03-02 17:13:29 +01:00
jangko
dda2bec8aa
turn networkId into distinct uint
2021-02-13 17:43:17 +07:00
Kim De Mey
a339944bcf
Some discv5 cleanup / refactor ( #326 )
...
* Use Address in HandshakeKey
* Refactor + comments + dcli use queryRandom
* Rename types.nim to messages.nim
2021-02-02 22:47:21 +01:00
kdeme
bfbad64d83
Add update of ENR on newly discovered address
2021-02-01 20:30:55 +02:00
kdeme
689eef2c11
Move IpAddress into the pong message
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
68c9b7b3ad
Fix lookup to sort and query closest nodes
2020-12-15 13:24:57 +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
Mamy André-Ratsimbazafy
482ea988c0
Add support for array[N, byte] in SQLite queries
2020-11-29 11:00:09 +02: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
kdeme
784a868705
Add handshake tests for discovery v5.1
2020-11-13 12:34:49 +01:00
kdeme
44637cdd8e
Remove support for discovery v5.0
2020-11-13 12:33:07 +01:00
Zahary Karadjov
5dff021cbc
Add a helper type used in web3 and elsewhere to denote blocks
2020-11-12 20:56:31 +02:00
Kim De Mey
71d6dbd1b4
Discv5 small adjustments ( #307 )
...
* Use checkedEnumAssign in discv5.1
* Some renaming according to discv5 spec nomenclature
2020-10-29 22:04:37 +01:00
Kim De Mey
6bdf1b4b0f
Simplify UseDiscv51 compile flag ( #305 )
2020-10-19 21:04:53 +02:00
kdeme
ce5f6e4c1f
Add two fuzzing targets for discovery v5.1
2020-10-16 21:20:47 +03:00
kdeme
65ed0c4850
Activate discovery v5.0 handshake tests again
2020-10-16 21:20:47 +03:00
kdeme
c28cba3589
Limit request id to maximum 8 bytes
2020-10-16 21:20:47 +03:00
kdeme
301067c869
Fix RequestId encoding/decoding and improved tests
...
- RequestId to variable rlp byte array
- Do encoding and decoding steps in the message tests
- Do sign and verify in the nonce sign test
2020-10-16 21:20:47 +03:00
kdeme
17ef0b25e0
Update to support the latest discv5.1 specification
2020-10-16 21:20:47 +03:00
kdeme
ce2cd2323c
Support findnode with multiple distances in discv5.1
2020-10-16 21:20:47 +03:00
kdeme
8042d72711
Add discovery v5.1 implementation
2020-10-16 21:20:47 +03:00
Zahary Karadjov
cc0d15ccac
Richer Sqlite API
...
* Adds a strongly typed API for creating custom SQL queries and
executing them
* Uses destructors to simplify the error handling in the init logic
2020-10-13 21:44:42 +03: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
jangko
7afa22cf41
add scrypt kdf to keyfile and implement test for it
2020-07-27 19:34:36 +07:00
Kim De Mey
38bf21b4f7
Update fuzzing readme.md
2020-07-21 10:58:14 +02: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
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
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
Kim De Mey
8d2614a1ad
Merge pull request #266 from status-im/enr-update
...
Enr updating
2020-07-09 17:12:30 +02:00
Kim De Mey
2c5eeded6d
Small fuzzing readme correction [skip ci]
2020-07-09 11:01:35 +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
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
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
5ffe6bb8ff
Add more routing table kbucket tests
2020-06-23 17:54:12 +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
Jacek Sieka
61feae0f21
secp: requiresInit updates ( #258 )
...
* secp: requiresInit updates
* fixup!
* clean up mapconverts
2020-06-22 18:07:48 +02:00
kdeme
4d0a7a46ba
Update fuzzing tests now that the helpers have moved to ntu
2020-06-12 18:58: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
Kim De Mey
1c77cc1d3d
Fix discovery after introduction of ValidIpAddress ( #248 )
2020-06-09 11:09:35 +02:00
kdeme
6dd820840a
Add simple auth header encode/decode test
2020-06-04 15:03:41 +02: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
17586c05d7
Remove waku protocol from the repository
2020-05-07 20:49:00 +03:00
Kim De Mey
cea370c4fa
Merge pull request #231 from status-im/discv5-results
...
Improve error handling in discv5
2020-05-01 23:47:11 +02:00
kdeme
74df90e16d
discv5: further prepping for results error handling
2020-04-30 00:11:03 +02:00
Jacek Sieka
205b57fe71
port kvstore from nim-beacon-chain ( #230 )
...
* port kvstore from nim-beacon-chain
* remove old database backends
* use kvstore in trie database
* add sqlite dep
* avoid template param double evaluation
* clean up heterogenous lookup todo
2020-04-27 15:16:11 +02:00
kdeme
3a6d4336bc
Bunch of renames to use same nomenclature as spec
2020-04-27 14:13:00 +02:00
kdeme
5dec5c5a9b
discv5 encoding: First steps to move to result based error handling
2020-04-24 15:51:04 +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