Commit Graph

263 Commits

Author SHA1 Message Date
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