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