Commit Graph

722 Commits

Author SHA1 Message Date
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
Zahary Karadjov 5c6d8ccb36 Add a helper from NBC 2020-06-22 17:32:32 +03:00
Zahary Karadjov 964a380191 Stricter error handling 2020-06-22 17:32:32 +03:00
Ștefan Talpalaru 66e2dc7ba3
ignoreSignalsInThread() 2020-06-21 01:32:13 +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
Ștefan Talpalaru 8ded65fe0e SQLite3 metrics: cosmetic changes 2020-05-13 11:37:35 +03:00
Ștefan Talpalaru 9da92b5415 SQLite3 mem usage metric 2020-05-13 11:37:35 +03:00
Jacek Sieka f730557baa sqlite: separate contains query
Using `select 1` for contains query tells sqlite not to actually load
the data for simple contains queries
2020-05-08 22:22:55 +03: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 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
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 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
Viktor Kirilov 28e684ce80 removed redundant definitions which are also present in nim-json-serialization/json_serialization/std/net 2020-04-23 18:30:14 +03: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
Jacek Sieka e9b25b5309
Result rocks (#225)
* rocksdb: update
2020-04-18 07:21:13 +02:00
Jacek Sieka 7c709551a5
secp: use upstream convenience API (#224) 2020-04-17 13:13:08 +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
Jacek Sieka 6a513ae02e
secp: adapt to secp256k1 update (#220) 2020-04-12 07:50:34 +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
Jacek Sieka 42b36d1aef
secp: handle invalid keys better (#210)
* secp: handle invalid keys better

we can't guarantee with the type system that invalid keys don't exist,
so we have to introduce error handling for it
2020-04-04 11:40:47 +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
tersec 56f312c69b
port TODOs from nim-beacon-chain lmdb implementation (#197) 2020-03-14 11:34:33 +01: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
Ștefan Talpalaru cb27813f3b
log the stack trace on fatal exceptions 2020-02-23 01:53:57 +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 6ef16785ce
Add equals operator for keys 2020-02-19 11:11:45 +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 40b96e2d3c
Check range on deserialising enum 2020-02-04 11:15:01 +01:00
Jacek Sieka 1756f7b41f
result -> stew/result (#159) 2020-01-24 09:24:29 +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
Zahary Karadjov fc327718fb
Added PrivateKey.toKeyPair 2020-01-21 18:58:26 +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
Yuriy Glukhov 091239a710 Addded non-recoverable signature type and routines 2020-01-08 17:22:43 +02:00
kdeme f3357602e4
Allow light node to send the regular way #131 2019-12-20 11:56:12 +01:00
kdeme 4dde3af2d5
p2pRequestComplete parameters are not a separate list 2019-12-19 23:23:06 +01:00
kdeme 48c9adbb6a
Changes to be more according to Waku spec 2019-12-19 22:48:51 +01:00
kdeme ac30d7f589 Add envelope valid and dropped metrics for Waku/Whisper 2019-12-18 11:32:05 +02:00
kdeme a514db1427
Fix PoW to be specifically uint64 as it is a float64 value that is being passed 2019-12-17 17:07:34 +01:00
kdeme f940162b6b
Implement Waku mode PoC 2019-12-12 23:23:26 +01:00
kdeme b2656cc3a9 Fix review comments, or not really, just add more TODOs 2019-12-12 17:35:30 +02:00
kdeme f0582a084c Quick implementation for multiple mail requests by using cursor 2019-12-12 17:35:30 +02:00
kdeme 9bd042c265 First go on Waku mail client addition 2019-12-12 17:35:30 +02:00
Ștefan Talpalaru 655fc43751
doPortMapping(): don't set the external IP
because some IGDs can't handle it
2019-12-12 01:57:05 +01:00
andri lim e0e49b1711 implement hexary trie replicate iterator 2019-12-11 11:50:45 +02:00
kdeme 59ba63f74c
Fix double whisper types export by moving to separate file 2019-12-10 12:18:52 +01:00
Zahary Karadjov 5bd7baaf9c
Fix regression in RLPx 2019-12-09 23:14:11 +02:00
Zahary Karadjov 3f721e7ef6
[P2P DSL] Add a separate genUserHandlerCall helper 2019-12-09 16:18:22 +02:00
Jacek Sieka 4c6878343c tighten a few imports 2019-12-09 14:37:21 +02:00
kdeme 9165ff8549
Merge pull request #137 from status-im/no-zero-send
Do not send empty messages packets at interval
2019-12-09 03:58:12 -08:00
kdeme 0229547c41
More explicit Exceptions + fix re-raising 2019-12-04 12:34:37 +01:00
kdeme 2dcccf19b2 Do not send empty messages packets at interval 2019-12-03 16:50:05 +01:00
andri lim 146eeddd65 add trie/db.nim 2019-12-03 01:41:57 +02:00
kdeme 4976bd9fb9 Replace getCurrentException and getCurrentExceptionMsg 2019-12-02 23:35:34 +02:00
Zahary Karadjov a54fdc8073 Cosmetic renames to match the protocol naming conventions 2019-11-25 19:55:41 +02:00
kdeme bc2b76f09a cleaner solution for sharing the queue 2019-11-21 19:35:27 +02:00
kdeme a8a55f16dc Implement quick Waku - Whisper bridge by sharing the queue + adjust test 2019-11-21 19:35:27 +02:00
kdeme 8d45b22033 Remove duplicated code in waku_protocol by importing whisper_types 2019-11-21 19:35:27 +02:00
Oskar Thoren b4638a5867 wkk -> waku rlpx based on discussion 2019-11-21 19:35:27 +02:00
Oskar Thoren 4be5382a15 Waku version 0 (after fix-119) 2019-11-21 19:35:27 +02:00
Oskar Thoren c841906593 Waku Fix crash due to zero version 2019-11-21 19:35:27 +02:00
Oskar Thoren 5281e46634 Waku: rename capability to wkk
According to `doc/p2p.md` capability should be three letters.  I can't see this
in https://github.com/ethereum/devp2p/blob/master/rlpx.md#capability-messaging
though, but better safe than sorry.

This also dismabiguates and stays somewhat consistent in vocabulary:

Whisper -> Waku
whisper -> waku
shh     -> wkk
2019-11-21 19:35:27 +02:00
Oskar Thoren 243d2d8b27 waku: whisper-> waku; version 0 2019-11-21 19:35:27 +02:00
Oskar Thoren 2c49d4adb8 waku/0 init 2019-11-21 19:35:27 +02:00
Yuriy Glukhov 10e35d3def Support for compressed public key format 2019-11-21 11:50:12 +02:00
kdeme 9c19f1e5b1 First go at splitting up Whisper protocol layer and message structures 2019-11-19 11:03:49 +00:00
zah 7a39a50c27 Allow devp2p sub-protocols to use version 0; Fix #119 (#121) 2019-11-19 08:16:35 +01:00
kdeme 680e52ec24 Do not start the peer pool loop when discovery is disabled 2019-11-08 13:42:15 +00:00
kdeme bcc3ab3955
Add Whisper staging nodes and Status bootnodes 2019-11-05 11:49:31 +01:00
kdeme 44400ee549 Fix nim v1.0.2 compile issues 2019-10-29 14:44:26 +02:00
Zahary Karadjov aa1f7f2c06
Fix a typo 2019-10-23 13:36:22 +03:00
Zahary Karadjov 52b5ca9c9c
Make the 'single record inlining' behavior optional 2019-10-23 13:01:53 +03:00
Zahary Karadjov 517adbbbca
Small fixes needed for the latest ETH networking spec 2019-10-23 12:10:19 +03:00
Zahary Karadjov 14e99e0711
Changes related to the new ETH interop spec
* RPC requests and responses with a single parameter are now inlined
2019-10-23 12:10:16 +03:00
kdeme 98be627bcc Make msgId fixed int32 2019-10-23 09:35:33 +09:00
kdeme 17f90920e0 Add unittest for rlpx thunk payload tests 2019-10-23 09:35:33 +09:00
kdeme 77834d1df0 Beginning of bzz protocol + simple handshake tester 2019-10-17 21:59:32 +09:00
kdeme 02a6906c01
Remove the p2p disconnect handling from dispatchMessages 2019-10-14 12:01:01 +02:00
kdeme 757ac1ab86
Remove standalone define and add specific afl/libFuzzer define 2019-10-11 15:25:11 +02:00
kdeme 9ee208876d
Fix possible AssertionError in ByteRange due to invalid access 2019-10-10 14:40:40 +02:00
kdeme 903b72a5c8
Fix AssertionError on ByteRange slice with nonexistent position 2019-10-10 13:14:24 +02:00
kdeme 9b69910570
Fix AssertionError that should be RlpTypeMismatch 2019-10-10 13:07:20 +02:00
kdeme 87f2a51a1b
Fix segfault + fix IndexError (causes also segfault in release) 2019-10-09 22:19:41 +02:00
kdeme 4cf3262902
Fix possible AssertionError in typedranges on rlp reading invalid list 2019-10-09 22:06:00 +02:00
kdeme c64a370fe7 Whisper documentation updates 2019-10-03 17:08:39 +03:00
kdeme 5bc7612e2f Add bloom size check and no longer raise on sendMsg failures 2019-10-03 16:38:14 +03:00
kdeme 9dccfe27f4 Use stew/endians2 for endianness conversion 2019-10-03 16:38:14 +03:00
Jacek Sieka 0f020d5df8
compat with latest chronos 2019-09-10 17:28:38 -04:00
Bruno Škvorc f3aad8f925 Small clarification to protocol name length doc
As per conversation in PR
2019-08-20 21:33:16 +03:00
kdeme 8451ce6c3b Add necessary re-exports, fixes #91 2019-08-20 13:59:34 +03:00
nolash 5dc8117a07 Allow longer rlpx protocol names (for compatability with swarm) 2019-08-19 20:33:38 +03:00
kdeme 9fb79d0d88 Refactor bootnodes and whispernodes 2019-08-16 08:50:58 +02:00
Zahary Karadjov f0315b0988
RLP serialization routines for types used in the ETH2 spec 2019-08-15 17:45:25 +02:00
Zahary Karadjov f8da72ca96 Fix the build when json logging is enabled 2019-08-14 17:19:55 +02:00
Yuriy Glukhov 4552e0333d
Export EIP155_CHAIN_ID_OFFSET 2019-08-13 10:42:50 +02:00
Zahary Karadjov 1fe3de6c39
Changes required for the latest ETH2 spec 2019-08-07 06:13:45 +03:00
Yuriy Glukhov 3e1ce94961 Moved Transaction encodings from nimbus 2019-08-06 10:33:55 +03:00
kdeme aef7522788 Disconnect on failed persistWorkItem + add comments 2019-08-01 17:28:41 +03:00
kdeme 5389884ecf
Add max open files limit of 512 to rocksdb init 2019-07-18 21:15:35 +02:00
Ștefan Talpalaru e195868a64
metrics: port to new API 2019-07-17 00:21:37 +02:00
Ștefan Talpalaru 0a5ffaa8b3
small syntax change for collector declaration 2019-07-16 13:10:34 +02:00
Ștefan Talpalaru 620573f63c use new nim-metrics API 2019-07-16 14:06:46 +03:00
kdeme 14ae046354 Increase rlpx maxMsgSize *10 2019-07-11 17:19:19 +02:00
Ștefan Talpalaru a1a285c290 NAT: move setControlCHook() outside the library 2019-07-11 12:13:13 +03:00
Ștefan Talpalaru 93637fa060
Merge branch 'master' of github.com:status-im/nim-eth 2019-07-10 15:35:19 +02:00
Ștefan Talpalaru 6bd5c35986
forgot about metric naming convention 2019-07-10 15:34:50 +02:00
kdeme da5a7a54ed
Merge pull request #79 from status-im/removecheck
Cleanup unneeded check in getBlockHeaders
2019-07-10 15:00:15 +02:00
kdeme fb7743e9db Prepare for allowing BlockNumber as int64 2019-07-10 14:27:11 +02:00
Ștefan Talpalaru d445412297
use nim-metrics 2019-07-10 03:01:30 +02:00
kdeme 646a58dbc0
Cleanup unneeded check in getBlockHeaders 2019-07-09 17:06:20 +02:00
kdeme 1797b76351 Add check for reverse getBlockHeaders 2019-07-08 18:03:55 +03:00
kdeme 3088cb462e Support skip and reverse in the GetBlockHeaders request + reactivate getBlockBodies 2019-07-08 18:03:55 +03:00
Jacek Sieka 75c7c62651
std_shims -> stew 2019-07-07 11:56:01 +02:00
kdeme 3d2436d3df Provide empty RLP list data for devp2p ping/pong messages, for Parity compatibility 2019-07-04 09:43:29 +02:00
kdeme 325d120274 Add capability-id and context-id rlp list in header-data for Parity compatibility 2019-07-04 09:43:29 +02:00
kdeme 934a247c23 Add/update some debugging info 2019-07-04 09:43:29 +02:00
kdeme 13a32811aa Fix leading zeroes bug + add tests from geth and parity 2019-06-27 12:03:55 +02:00
Ștefan Talpalaru 799b1a7bb0
initial statistics collection setup 2019-06-26 14:49:38 +02:00
Zahary Karadjov 07484bfc88
Refactorings enabling more code reuse in the libp2p back-ends 2019-06-24 05:12:23 +03:00
Zahary Karadjov 8acdbedfbd
Fix a simple merge issue 2019-06-24 05:12:23 +03:00
Zahary Karadjov 11fce4122e
Pre and post-serialization steps for send procs 2019-06-24 05:12:23 +03:00
Zahary Karadjov 9191bc7851
Bugfix: Fix an empty name field in the ETH/LES protocol info 2019-06-24 05:12:23 +03:00
Zahary Karadjov bac87ff6d2
Restore the compilation of Nimbus by restoring the support for p2pProtocol decorators 2019-06-24 05:12:23 +03:00
Zahary Karadjov a492e3c218
More flexible definitions of Responders 2019-06-24 05:12:23 +03:00
Zahary Karadjov 1adad7f4da
Fixes for compiling beacon_node in RLPx mode 2019-06-24 05:12:22 +03:00
Zahary Karadjov e4ec051fc6
Take advantage of the new shared DSL helpers to simplify the RLPx back-end implementation 2019-06-24 05:12:22 +03:00
Zahary Karadjov 638442070d
Simplified the generation of sender procs 2019-06-24 05:12:22 +03:00
Zahary Karadjov 76bb2cde5c
More shared code extracted out of RLPx 2019-06-24 05:12:22 +03:00
Zahary Karadjov f761889518
Refactored the p2pProtocol macro to eliminate most code duplication in the backends 2019-06-24 05:12:22 +03:00
kdeme 0a5d6118c2 Add check if message loop is finished during connection stage 2019-06-21 15:58:40 +03:00
kdeme 7cb5ac050b Add discovery tests against regression of recently fixed bugs 2019-06-18 20:10:14 +03:00
kdeme 21c3c3946d Fix another Assertion + change error pragma to fatal 2019-06-14 16:15:09 +03:00
kdeme dc02a5b28d Fix two AssertionErrors from being raised all the way up 2019-06-14 16:15:09 +03:00
kdeme f068a54312 Seperate transport close exceptions in blockchain sync 2019-06-14 16:15:09 +03:00
kdeme 46255c31d1 Make use of peer.connectionState in whisper and blockchain sync + add note in docs 2019-06-12 16:30:01 +03:00
kdeme 0966a4e9ca
Adjust deprecated use of sleepAsync 2019-06-11 15:31:00 +02:00
kdeme b44675eda5
Same error handling for rlpxAccept as for rlpxConnect 2019-06-11 14:38:02 +02:00
kdeme f8bdec88c9
Rework duplicate connections check and fix #36 2019-06-11 12:46:26 +02:00
kdeme ee27111e2b actually, lets fix it in readAheadCheck 2019-06-07 16:11:33 +03:00
kdeme f40bf032ba Add remaining bytes check in toBytes 2019-06-07 16:11:33 +03:00
kdeme d2d6d7fc16 Fix overflows and add + activate tests 2019-05-30 22:01:07 +03:00
cheatfate 88b3b949a8 Fix return value handling for transport.write(). 2019-05-30 13:37:45 +03:00
kdeme dfe7d43d19 Resolve without altering Rlp API 2019-05-28 13:37:08 +03:00
kdeme 6b5af745a2 Add several checks for currently unhandled errors 2019-05-28 13:37:08 +03:00
kdeme b977996b0a Fix unhandled exceptions 2019-05-15 15:10:11 +03:00
Yuriy Glukhov 55e1eff4a9
Merge pull request #39 from kdeme/bug/fix-transport-leaks-#37
Bug/fix transport leaks #37
2019-05-09 23:58:40 +08:00
kdeme 42fbbb8961
Make the wait + close not blocking 2019-05-09 14:26:02 +02:00
Yuriy Glukhov 130d984d8b
Added randomPeers iterator with protocol filter 2019-05-09 19:05:31 +08:00
kdeme b62d091963 Remove double transport close 2019-05-09 10:35:02 +02:00
kdeme 6ba61488ff Fix transport leaks + handle disconnects in message loop 2019-05-09 10:35:02 +02:00
Ștefan Talpalaru 88ded1b7c6
make block numbers out of sequence a CatchableError
and check the Option objects from peer.getBlockBodies(hashes)
2019-05-08 01:41:29 +02:00
kdeme 69691f56d2 No reraise on RlpTypeMismatch in processClient 2019-05-05 19:54:27 +03:00
Ștefan Talpalaru bb79902399
eth/net/nat.nim: delete unused var 2019-05-03 17:24:17 +02:00
Ștefan Talpalaru 05bf76c537
fix logic error 2019-04-29 17:32:37 +02:00
Ștefan Talpalaru 4fbb4603fc
Merge branch 'master' of github.com:status-im/nim-eth 2019-04-29 17:06:09 +02:00
Ștefan Talpalaru 20abba71d0
UPnP: port mapping check no longer a show stopper 2019-04-29 17:05:25 +02:00
kdeme 442c3d9f7b More whisper changes (#43)
* Make messages with invalid ID a catchable error as we should not disconnect on this

* Add unimplemented message IDs used by Status

* Make whisper log less verbose + add comment on duplicate messages

* Cleanup + add documentation
2019-04-26 07:36:54 -06:00
Ștefan Talpalaru ecc1a995aa
Windows: a new thread is created for the signal handler 2019-04-25 03:06:11 +02:00
Ștefan Talpalaru 12f2a87de3
kademlia: turn exception into warning 2019-04-25 01:17:11 +02:00
Ștefan Talpalaru d0d09559b8
workaround for https://github.com/nim-lang/Nim/issues/4057 2019-04-25 00:25:34 +02:00
Ștefan Talpalaru 7ec1433b01
Merge branch 'master' of github.com:status-im/nim-eth 2019-04-23 20:50:34 +02:00
Ștefan Talpalaru c5e564d771
more gcsafe pragmas for Nim HEAD 2019-04-23 17:03:32 +02:00
Jacek Sieka e1af5a0c02
don't swallow random exceptions (#11) 2019-04-22 19:31:12 -06:00
kdeme 5d9239ef17 Quick fix for when removePeer gets called before dispatcher is initialized 2019-04-18 17:17:57 +02:00
kdeme 7cdd31e982 Add option to set specific protocol for observer 2019-04-18 17:17:57 +02:00
kdeme 31290b6b35 Fix to only allow sync for peer with eth support 2019-04-18 17:17:57 +02:00
Ștefan Talpalaru 0b01d1f028
Merge branch 'nat' 2019-04-17 15:40:21 +02:00
Ștefan Talpalaru 3db5f4c5dd
external IP retrieval and port mapping functionality 2019-04-17 03:35:45 +02:00
Yuriy Glukhov f295418f75
Lower bonding failed msg verbosity 2019-04-15 12:50:00 +03:00
kdeme c4b25ba708 Quick fix for overflow on 32bit systems 2019-04-12 16:43:43 +02:00
Yuriy Glukhov 2c12746c03
Use chronos durations 2019-04-10 20:03:58 +03:00
Yuriy Glukhov ca8519ef61
Workaround compilation error cause by chronos newFuture changes 2019-04-10 18:16:18 +03:00
Yuriy Glukhov bc23b68c95
Comments addressed 2019-04-10 10:04:48 +03:00
Yuriy Glukhov 02843c0013
Fixed discovery busyloop when no bootnodes provided 2019-04-09 11:06:32 +03:00
Yuriy Glukhov b84c228364 Retry bootstrapping in case of failure 2019-04-08 15:39:03 +03:00
kdeme ac766bf7b3 Fix decoded dst bug + add tests 2019-04-08 14:28:50 +03:00
kdeme 6e7822e210 Change default minimum PoW to same value as geth 2019-04-08 14:28:50 +03:00
kdeme c599f7649d Add powTarget and other changes for Whisper RPC implementation 2019-04-08 14:28:50 +03:00
kdeme 9e5cf2086c Address review feedback 2019-04-08 13:51:32 +03:00
kdeme 7fd501136f Add catch for exception in any of the disconnect handlers 2019-04-08 13:51:32 +03:00
kdeme 5550179dd1 Fix unhandled exceptions #3 2019-04-08 13:51:32 +03:00
andri lim 2d75751960 add readonly option to lmdb and rocksdb backend 2019-04-01 11:29:39 +03:00
Ștefan Talpalaru 7954c0c7ed
release the memory a bit sooner 2019-03-31 22:38:21 +02:00
Yuriy Glukhov dcb82f6a96 Tone down annoying discovery messages 2019-03-28 23:11:00 +02:00
Zahary Karadjov d678762c50 Cosmetic change 2019-03-28 20:21:35 +02:00
Ștefan Talpalaru 49fff3a859
Merge branch 'fix_nimbus_build' of github.com:jangko/nim-eth into jangko-fix_nimbus_build 2019-03-28 17:32:37 +01:00
Zahary Karadjov c4da31505e The end of the dispatchMessages loop is not really an error 2019-03-28 14:47:25 +02:00
Zahary Karadjov 1cc52976df Add a new asyncDiscard replacement that traces recoverable errors and aborts on defects 2019-03-28 14:47:25 +02:00
andri lim 7a6b195021
fix nimbus/premix appveyor build 2019-03-27 19:53:28 +07:00
Zahary Karadjov abafbc3a73 Fix the build of Nimbus 2019-03-26 18:28:54 +02:00
Zahary Karadjov c10da74b77 Addressed review comments 2019-03-26 17:32:17 +02:00
Zahary Karadjov dc2b6170b5 Improved error-handling; Timeouts in all handshakes 2019-03-26 17:32:17 +02:00
Jacek Sieka fcc9dec015
whisper: fix timeout 2019-03-25 13:44:17 -06:00
Jacek Sieka cbe67720ce
use Moment for tracking timeouts (#25)
* use Moment for tracking timeouts
* Use the new Duration type throughout RLPx
2019-03-25 11:32:18 -06:00
Yuriy Glukhov d1e713cfb3
Added package length validation 2019-03-25 11:20:53 +02:00
Zahary Karadjov f0bf0570d1 Support compiling with json logging; Drop package_visible_types 2019-03-25 02:10:09 +02:00
Jacek Sieka a69e52bf3e
bind to any address for listening (#20) 2019-03-19 12:15:16 -06:00
Ștefan Talpalaru 9146e8e2f0
assert() -> doAssert() 2019-03-13 23:15:26 +01:00
Zahary Karadjov f15cbbae90 Support types with custom RLP serialization in param positions 2019-03-13 23:22:22 +02:00
Ștefan Talpalaru 1481c824fa
AbstractChainDB.getStateDb() renamed to getTrieDB() 2019-03-13 21:35:22 +01:00
Ștefan Talpalaru 4ac8812707 avoid segfault in Nimbus with -d:release (#19) 2019-03-12 19:37:36 -06:00
Ștefan Talpalaru 4329cc1cb6 AbstractChainDb -> AbstractChainDB (#18) 2019-03-12 19:37:04 -06:00
Zahary Karadjov 3efec171a6 Make the APIs compatible with libp2p
Lib2P2 handles RPC requests and responses with separate streams
while DEV2P2 is relying on tagged messages transmitted over a
single stream. To cover both models through the same application
code, we introduce a new `response` variable in the request handlers.
The user is supposed to issue a call to `response.send` in order to
reply to the request. Please note that the `response.send` signature
is strongly typed and depends on the current message.
2019-03-12 13:36:39 +02:00
Yuriy Glukhov eb1a04e93b Fixes #13 2019-02-27 13:14:22 +02:00
Yuriy Glukhov 07a0c5443f Fixed PeerPool error when no bootnodes given 2019-02-26 23:47:20 +02:00
andri lim daafd991d5 address cheatfate comments 2019-02-18 13:14:43 +02:00
andri lim c36b3e54cc change TransactionFlags to TransactionState 2019-02-18 13:14:43 +02:00
andri lim 96f29a971d more robust dbtx dispose 2019-02-18 13:14:43 +02:00
Ștefan Talpalaru 95b93eb5aa convert zeroBytesRange and zeroNibblesRange into threadvars
fixes https://github.com/status-im/nim-eth/issues/6
2019-02-15 16:33:40 +02:00
Mamy Ratsimbazafy 07cf801b97
Rebrand asyncdispatch2 to chronos (#2)
* Rebrand asyncdispatch2 to chronos

* fix nimble path to chronos
2019-02-06 17:01:04 +01:00
Yuriy Glukhov fe9fa7689b Fixed imports 2019-02-05 18:54:58 +02:00
Yuriy Glukhov d9b0c48c67 Fixed rlp import 2019-02-05 18:22:21 +02:00
Yuriy Glukhov e75a00f86e Moved eth-p2p to eth 2019-02-05 17:40:29 +02:00
Yuriy Glukhov afeb2c0b93 Moved eth_bloom to eth, some fixes 2019-02-05 16:22:21 +02:00
Yuriy Glukhov 32998f0dc1 Moved rlp and trie to eth 2019-02-05 14:01:10 +02:00
Yuriy Glukhov 0d18ffac31 Moved eth-keyfile to eth 2019-02-05 12:45:09 +02:00
Yuriy Glukhov 4c89f9e270 Moved eth-keys to eth 2019-02-05 12:32:22 +02:00
Yuriy Glukhov 1d6434883e Moved eth-common to eth 2019-02-05 12:10:36 +02:00