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