KonradStaniec
139c6fa2a8
Track current bytes in flight ( #434 )
2021-11-24 17:49:13 +01:00
KonradStaniec
ce296ff76e
Make initial state of socket configurable ( #428 )
...
* Make initial state of socket configurable
2021-11-19 11:36:46 +01:00
KonradStaniec
d5e5ec9f90
Add possibility to connect with requested conneciton id ( #425 )
...
* Improve error handling when initiating connection
* Add api to connect with requested id
* Add callback to allow only specific incoming peers
2021-11-18 10:05:56 +01:00
Kim De Mey
22757db83b
Fix logDistance for BE arch and remove toBytes for NodeId ( #427 )
...
toBytes for NodeId wasn't selected by compiler byt if it does
get selected, it will fail on the test cases due to the
countdown that is done in logDistance.
Set to toBytesBE properly now and do countup, that should make
it correct also for BE architecture.
Removed toBytes to avoid confusion and avoid this one being
selected ever. The only place toBytes for NodeId was used is in
sessions.nim makeKey func and there also the stint one
(thus native endianness) was selected in Nim 1.2.x.
Native endianness is fine there as it is only an internal
representation.
2021-11-17 22:55:19 +01:00
KonradStaniec
73d9bf4c80
Add ackNr validation ( #424 )
2021-11-15 11:32:00 +01:00
KonradStaniec
8139aae346
Advertise correct rcv buffer size ( #423 )
...
* Advertise correct rcv buffer size
2021-11-12 10:58:49 +01:00
KonradStaniec
b671f6c901
Handling of fin packet ( #421 )
...
* Handling of connection finalization by sending and receiving FIN packets
2021-11-09 15:29:59 +01:00
Kim De Mey
df802248d8
Remove test_merkleization as it is moved to nim-ssz-serialization ( #422 )
2021-11-09 09:00:46 +01:00
KonradStaniec
7a113ffa48
Add handling of reset packet ( #420 )
...
* Add handling of reset packet
2021-11-05 09:41:41 +01:00
KonradStaniec
d4cc42241d
Add handling of out of order packets ( #418 )
...
* Add handling of out of order packets
2021-11-04 07:38:46 +01:00
KonradStaniec
34bac6e703
Utp code cleanup ( #417 )
...
* Refactor tests and move socket to separate file
* Move sockets handling to separate class
* Abstract over underlying transport
* Fix bug with receiving duplicated SYN packet
* Fix race condition in connect
2021-10-28 11:41:43 +02:00
KonradStaniec
fd4f78d1c0
Add timeout loop ( #416 )
...
* Modify outbuffer
Each element of outbuffer keeps encoded packet ,number
of transmissions of givern packet and information if
given packet needs to be re-send.
* Add initial handling of timeouts
* Add tests for syn re-sends
2021-10-25 09:58:13 +02:00
Kim De Mey
9a1bb5e125
Make ENR $ call print the IP address prettier ( #409 )
2021-10-19 14:13:09 +02:00
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