Commit Graph

778 Commits

Author SHA1 Message Date
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
Jamie Lokier 83e5638212 Add option to `connectToNetwork` return without waiting for peers
The new sync code wants to start without waiting.  We can `discard` the async
result but there is no need for a background task polling and running a timer
for no clear benefit.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-08-10 14:09:57 +03:00
Jamie Lokier 9a28ed7ef5 RLPx: Protocol names have never been limited to 3 characters
Don't treat 3 characters as special in `cmp`.  `cmp` for `ProtocolInfo` was
wrong because it ignored all characters after the first 3.

In the wild we have seen protocol names longer than 3 characters.  `snap`,
`hive`, `istanbul`, `bzzeth`, `bzz-stream`, `bzz-retrieve`, `dbix`, `opera`,
`pchain`, `pchain_child_0`, `sero`, `smilobft`, `spock`.

There was never a 3 character limit in the [specification]
(https://github.com/ethereum/devp2p/blob/master/rlpx.md).

It always said "short ASCII name", until recently on 2021-02-25 it was changed
to an 8 characters limit.

Also `pi.nameStr` can be removed.  Nothing uses it, and it has the same actual
effect as just copying the string `pi.name`.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-08-10 14:08:35 +03:00
Jamie Lokier 5234e30f8b Remove `{.rlpInline.}` which was never really implemented
For a long time this caused invalid RLP parsing of `NewBlock` messages in the
`eth` protocol.

The `rlpInline` pragma was accepted but had no effect.  We could implemented
it, but it doesn't seem worth doing, with tests etc, as there's only one user
which has been fixed another way.

With `NewBlock`, whenever a peer sent us `NewBlock`, we'd get an RLP decoding
error, and disconnected the peer thinking it was the peer's error.

These messages are sent often by good peers, so whenever we connected to a
really good peer, we'd end up disconnecting within a minute due to this.  This
went unnoticed for years, as we stayed connected to old peers which have no new
blocks, and we weren't looking at peer quality, disconnect reasons or real-time
blockchain updates anyway.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-08-10 14:08:35 +03: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
Kim De Mey dd02d1be23
Remove unused lastUpdated from buckets (#382) 2021-07-29 21:58:10 +02:00
Jamie Lokier 04ff8e460f Fix RLP serialisation of `seq[Transaction]` used in `eth` protocol
1. Generalises the special cases for serialising RLP `seq[Transaction]`.
   Previously it only used the special case inside `BlockBody` and `EthBlock`.
   Now it uses it for all `seq[Transaction]` regardless of what objects they
   are parts of, or no object at all.  `openArray[Transaction]` is also
   included, as this was found to be necessary to match in some places.

2. Bug fix parsing `Transaction`: Always read the first byte to get the
   transaction type instead of parsing an RLP `int`.  This way invalid or
   adversarial input gives a correct error (i.e. invalid type code).

   When it was read with `rlp.read(int)`, those inputs gave many crazy
   messages (e.g. "too large to fit in memory").  In the specification it's a
   byte.  (Technically the input is not RLP and we shouldn't be using the RLP
   parser anyway to parse standalone transaction objects).

3. Bug fix parsing `Transaction`: If a typed transaction is detected in
   `seq[Transaction]`, the previous code removed the RLP (blob) wrapper, then
   passed the contents to `read(Transaction)`.  That meant a blob-wrapped
   legacy transaction would be accepted.  This is incorrect.  The new code
   passes the contents to the typed transaction decoder, which correctly
   rejects a wrapped legacy transaction as having invalid type.

Change 1 has a large, practical effect on `eth/65` syncing with peers.

Serialisation of `eth` message types `Transactions` and `PooledTransactions`
have been broken since the introduction of typed transactions (EIP-2718), as
used in Berlin/London forks.  (The special case for `seq[Transaction]` inside
`BlockBody` only fixed message type `BlockBodies`.)

Due to this, whenever a peer sent us a `Transactions` message, we had an RLP
decoding error processing it, and disconnected the peer thinking it was the
peer's error.

These messages are sent often by good peers, so whenever we connected to a
really good peer, we'd end up disconnecting from it within a few tens of
seconds due to this.

This didn't get noticed before updating to `eth/65`, because with old protocols
we tend to only connect to old peers, which may be out of date themselves and
have no typed transactions.  Also, we didn't really investigate occasional
disconnects before, we assumed they're just part of P2P life.

The root cause is the RLP serialisation of individual `Transaction` is meant to
be subtly different from arrays/sequences of `Transaction` objects in network
messages.  RFC-2976 covers this but it's quite subtle:

- Individual transactions are encoded and stored as either `RLP([fields..])`
  for legacy transactions, or `Type || RLP([fields..])`.  Both of these
  encodings are byte sequences.  The part after `Type` doesn't have to be
  RLP in theory, but all types so far use RLP.  EIP-2718 covers this.

- In arrays (sequences), transactions are encoded as either `RLP([fields..])`
  for legacy transactions, or `RLP(Type || RLP([fields..]))` for all typed
  transactions to date.  Spot the extra `RLP(..)` blob encoding, to make it
  valid RLP inside a larger RLP.  EIP-2976 covers this, "Typed Transactions
  over Gossip", although it's not very clear about the blob encoding.

In practice the extra `RLP(..)` applies to all arrays/sequences of transactions
that are to be RLP-encoded as a list.  In principle, it should be all
aggregates (object fields etc.), but it's enough for us to enable it for all
arrays/sequences, as this is what's used in the protocol and EIP-2976.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-07-29 15:37:11 +03: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
KonradStaniec 44fee391f4
Port merkleization off ssz (#376) 2021-07-19 15:58:09 +02:00
Kim De Mey a8d11dd30b
Add top level push raises Defect to p2p code (#374) 2021-07-16 21:44:30 +02:00
Kim De Mey 2557fd35c6
Use aesKeySize const for aes key instead if ivSize (same values) (#375) 2021-07-16 14:55:52 +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
Ștefan Talpalaru 2dfd352fd0 metrics: initialise lock for custom collector 2021-07-06 17:46:23 +03:00
jangko a10d301085
implement EIP-1559 Transaction and BlockHeader 2021-06-27 20:12:47 +07:00
kdeme 1c400e3f0e
Improve Portal message tracing 2021-06-09 14:57:35 +02:00
kdeme 880b753ad2
Add Portal wire readme doc 2021-06-09 14:57:35 +02:00
kdeme e2e30247bf
Add implementation of Portal wire protocol 2021-06-09 14:57:30 +02:00
Kim De Mey d18ebaa570
Slightly improved logging traces for error on message responses (#364) 2021-06-09 14:55:00 +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
Jacek Sieka 2a292cfb62
sqlite: fix readonly mode (#359)
* sqlite: fix readonly mode

* document kvstore versions
2021-05-25 20:57:28 +02: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 d0eb2de328
eip2718: protect against malformed rlp in tx sequence decoder 2021-05-16 19:15:48 +07:00
jangko ef49a6f50a
fixes EIP2718/EIP2930 misinterpretation
the new Tx format (txType || txPayload) needs envelope
encoding at EthBlock level, not at the Tx level itself.
2021-05-16 12:10:09 +07:00
jangko 343d4f25e1
fix eip2718 bug
- fixes bug in rlp decoder of Receipt
- fixes bug in rlp decoder of Transaction
- refactor rlpEncode for AccessListTx in eth/common/transaction.nim
2021-05-15 14:34:43 +07:00
jangko b6b6f3dec7
implement txHashNoSignature for EIP2817's AccessListTx 2021-05-15 08:18:19 +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
Jacek Sieka 8890175b6a remove WITHOUT ROWID
This is a minimal performance hotfix for storing large blobs in kvstore
2021-05-14 20:04:14 +03:00
Kim De Mey d05cb5d3bd
Fix raw Exceptions in hexary caused by forward declarations (#349)
* Fix raw Exceptions in hexary caused by forward declarations

* Fix raw Exceptions in trie/db caused by forward declarations

* And now we can remove those db Proc CatchableError raises
2021-05-11 17:32:47 +02:00
kdeme 00a45a7b91
Remove inline pragmas 2021-05-11 09:59:58 +02:00
kdeme 81f0a56ebd
Add/update bunch of license headers 2021-05-11 09:37:33 +02:00
kdeme 755729c6a1
Fix several compiler warnings
Mostly replacing deprecated calls
2021-05-11 09:24:23 +02:00
kdeme bcb58216d1
Add CatchableErrors where needed because of db backends used
In nim-eth this will not fail, as they are base, not implemented
methods. In for example Nimbus-eth1 it will.
2021-05-07 16:28:48 +02:00
kdeme 90b4724492
Adjust for chronosStrictException usage in rest of eth/p2p 2021-05-06 17:20:54 +02:00
kdeme e10ef19f81
Move push raises to top and add/update license info where needed 2021-04-28 16:20:05 +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 a1da5d5e59
Use asyncSpawn instead of asyncCheck so chronos strict makes sense
And additional cleanup:
- Push raises Defect at top
- remove inlines
- remove unneeded gcsafe
- remove usage of deprecated calls
2021-04-27 11:30:08 +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 0f3bb61678
Fix import syntax error in `les_protocol.nim` added by PR #344
`les_protocol.nim` failed to build, due to very silly Nim bugs
nim-lang/Nim#8792 and nim-lang/Nim#17102.

    import
      ../../[rlp, keys], ../../common/eth_types,
      ../[rlpx, kademlia, blockchain_utils], ../private/p2p_types,

The silly part is `../` has to be quoted if it's before a group of files, but
not before a single file.  Most places in PR #344 / 7624153 use the workaround
`".."/` but it was missed in `les_protocol.nim`:

    nimbus-eth1/vendor/nim-eth/eth/p2p/rlpx_protocols/les_protocol.nim(14, 3)
        Error: cannot open file: ../../[rlp,keys]

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-04-07 18:07:00 +01:00
Jamie Lokier 209171d97d
discv4: Refactor findNode so it can be called directly from a test
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-04-06 18:41:47 +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
Jamie Lokier e4b4b7f4af
discv4: Fix Kademlia crash when trying to sync (#342)
Fixes status-im/nim-eth#341, status-im/nimbus-eth1#489.

When using discv4 (Kademlia) to find peers, there is a crash after a few
minutes.  It occurs for most of us on Eth1 mainnet, and everyone on Ropsten.

The cause is `findNodes` being called twice in succession to the same peer,
within about 5 seconds of each other.  ("About" 5 seconds, because Chronos does
not guarantee to run the timeout branch at a particular time, due to queuing
and clock reading delays.)

Then `findNodes` sends a duplicate message to the peer and calls
`waitNeighbours` to listen for the reply.  There's already a `waitNeighbours`
callback in a shared table, so that function hits an assert failure.

Ignoring the assert would be wrong as it would break timeout logic, and sending
`FindNodes` twice in rapid succession also makes us a bad peer.

As a simple workaround, just skip `findNodes` in this state and return a fake
empty `Neighbours` reply.  This is a bit of a hack as `findNodes` should not be
called like this; there's a logic error at a higher level.  But it works.

Tested for about 4 days constant operation on Ropsten.  The crash which occured
every few minutes no longer occurs, and discv4 keeps working.

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-04-02 23:29:02 +02:00
Kim De Mey c5dace27ca
Use chronos http server for dcli metrics and remove insecure compile flag (#343)
And add cfg file to default have runtime log filtering on
2021-04-02 17:29:38 +02:00
Kim De Mey ae4177851f
Remove no longer needed try/except (#339) 2021-03-26 17:49:03 +01:00
Jacek Sieka 698b3bea88
Exception tracking (#334)
* Exception tracking

https://github.com/status-im/nim-chronos/pull/166

* Remove redundant raises annotation

Co-authored-by: kdeme <kim.demey@gmail.com>
2021-03-25 18:12:11 +01:00
Kim De Mey 8c27f291f5
Add raises annotation to the FilterMsgHandler proc type (#337) 2021-03-25 15:06:12 +01:00
Kim De Mey 0be863d2de
Add raises annotations to make exception tracking work (#336)
See https://github.com/status-im/nim-chronos/pull/166
2021-03-24 12:52:09 +01:00
Jacek Sieka 16802c0e52
Fix minor exception effect issues (#335)
Makes code compatible with
https://github.com/status-im/nim-chronos/pull/166 without requiring it.
2021-03-23 07:47:55 +01:00
Kim De Mey be5e088b21
Move parsing of nat cli option out of setupAddress (#331)
* Move parsing of nat cli option out of setupAddress

* Change some proc to func
2021-03-05 21:23:54 +01: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
Zahary Karadjov e8c9691b35
awaitWithTimeout for Future[void] 2021-02-04 16:45:50 +02: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 4e58eb48ce Add comments on enrAutoUpdate and add metric 2021-02-01 20:30:55 +02: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 d33d27c2ee Small improvements and cleanup 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
Jacek Sieka 51a8795e56
one upnp is enough (#324)
we shouldn't have to recreate the upnp interface every time
2021-01-26 14:12:04 +01:00
kdeme 181bbadcbc
Add more message related metrics 2021-01-13 21:44:17 +01:00
kdeme aa7442c9ff
dcli: actually use the provided listen address 2021-01-11 15:01:02 +01:00
kdeme 9cedbc0cc8 Move code into seedTable and populateTable proc 2021-01-07 10:20:40 +01:00
kdeme ac58a1f35c Only do discovery queries to refresh the table 2021-01-07 10:20:40 +01:00
Jacek Sieka 0f48ccecc0 sqlite: manual checkpointing 2020-12-18 19:30:53 +02:00
kdeme 12ec608efd
Put a limit on the nodes returned on a findnode request 2020-12-17 17:06:42 +01:00
kdeme 21423fca42
Use of discv5.1 findnode request with multiple distances 2020-12-17 15:42:04 +01:00
kdeme a506739b23
Add query proc and use this for recurrent queries
This query proc is similar to the original (faulty) lookup proc.
But as we don't need to look for specific targets, it can be
used still as it gives a quicker and broader search resulting
in more nodes.
2020-12-17 15:23:02 +01:00
kdeme e1acc1ae2d
Avoid sending more requests to node that timed out + request metrics 2020-12-16 00:07:49 +01:00
kdeme 68c9b7b3ad
Fix lookup to sort and query closest nodes 2020-12-15 13:24:57 +01:00
Kim De Mey 0820dbba46
Use one instead of deprecated oneIndex (#317) 2020-12-15 12:41:53 +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 Ratsimbazafy 3b15abab10 Address review comment 2020-11-29 11:00:09 +02:00
Mamy André-Ratsimbazafy 482ea988c0 Add support for array[N, byte] in SQLite queries 2020-11-29 11:00:09 +02:00
Zahary Karadjov 49c40c9b95
Restore a commit accidentally omitted from a merged branch 2020-11-27 20:49:08 +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
Kim De Mey b88fef203b
Add info log line in case of no external IP (#313) 2020-11-26 18:19:13 +01:00
Jacek Sieka 114680453f
wait for cancellation to be processed on timeout (#311) 2020-11-17 15:36:41 +01:00
kdeme 18430ef127
Add empty talkreq command to dcli 2020-11-13 12:45:39 +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 3626755529
Improve discovery v5.1 logging (#306) 2020-10-23 16:41:44 +02:00
Kim De Mey 6bdf1b4b0f
Simplify UseDiscv51 compile flag (#305) 2020-10-19 21:04:53 +02:00
Zahary Karadjov 345dac702b Don't use destructors 2020-10-16 21:21:00 +03:00
kdeme cf586c363f Random message size and message size checks 2020-10-16 21:20:47 +03:00
kdeme 9b971a0e14 Improve error logging messages
As we don't need to differentate between errors with an enum
anymore thanks to refactor.
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 76c10c9b79 Minimum size of random message fix for interop 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 820a73f96f Store session secrets only on succesful decodeHandshakePacket 2020-10-16 21:20:47 +03:00
kdeme a10ee4cc42 Fix topicquery value 2020-10-16 21:20:47 +03:00
kdeme 44b30ef0cb Add all message types and a basic implementation of talkreq/talkresp 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
Clyybber 13089cad4c Fix compilation for 1.4
Since proc params are now turned into syms during sem
we need to "refresh" them for use in another context
2020-10-16 20:06:59 +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
Zahary Karadjov c103721391
Add support for multiple keyspaces in the Sqlite keystore 2020-10-12 04:02:33 +03:00
Zahary Karadjov de2d43a7e7 Remove some unused code from NBC by making it RLPx-specific 2020-10-05 17:28:58 +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
jangko 6c0bc31ad6
add 'BloomFilter.init' implementation 2020-09-30 12:04:23 +07:00
jangko 0194fb85eb
make 'bloom.incl(h256)' public 2020-09-30 11:57:57 +07:00
jangko 2f37870b6b
make 'bloom.contains' public 2020-09-30 11:01:50 +07:00
Jacek Sieka 3ddb498f2a
close sqlite transactions earlier (#294)
If the database is locked for reading, as it is when step returns ROW,
writes cannot checkpoint the wal leading to ever-increasing wal sizes
and a long delay at shutdown.

By resetting the transaction early, writes become more independent of
reads, memory is released earlier and wal can be checkpointed.
2020-09-21 08:21:47 +02:00
tersec ea0dbb256e
support closing kvstore databases (#293)
* support closing kvstore databases

* clear MemStore databases on close
2020-09-11 13:05:52 +00:00
Kim De Mey c9caafb2a4
Replace memory db with lrucache for temporary storage of sessions (#292) 2020-09-10 14:49:48 +02:00
Dustin Brody 64d880b24d
tweak phrasing to trigger CI to run again 2020-08-24 13:34:45 +02:00
Dustin Brody 9c9b9d5e2e
WAL pragma setting for in-memory databases results in "memory", not "wal" 2020-08-24 13:08:35 +02:00
Dustin Brody e2ccbbb418
use sqlite3 write-ahead logging 2020-08-24 12:37:40 +02:00
Zahary Karadjov 73c1bb817c
Adapt to latest snappy; Avoid decompression bombs 2020-08-19 14:14:59 +03:00
Zahary Karadjov 5eff071c8e Delegate traceAsyncErrors to Chronicles 2020-08-16 00:52:22 +03:00
jangko f2f988d6d7
fix keyfile using newest scrypt api 2020-08-03 09:28:46 +07:00
jangko 7afa22cf41
add scrypt kdf to keyfile and implement test for it 2020-07-27 19:34:36 +07: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
kdeme 33f72e77bc
Add duplicate and distance checks in Nodes message 2020-07-15 11:15:50 +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 0888667ac0
Comments and cleanup (#276)
* Fix dcli + add more comments

* Fix pong enr sequence number + varia cleanup

* Send randomData in case no handshake was done yet. Fix #277
2020-07-12 17:25:18 +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
Eugene Kabanov e64efc5dbb
Fix LSWAP problem. (#275) 2020-07-10 23:30:34 +02:00
Kim De Mey 7f77ba2308
Fix formatFloat issue (#273) 2020-07-10 14:17:06 +02:00
kdeme eeb958e834
Add comments [skip ci] 2020-07-08 14:56:56 +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 95a09fdf7f
Get rid of some duplicate code 2020-07-08 12:14:00 +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
jangko b5cabdfde4
add getForkId interface to AbstractChainDB 2020-07-02 11:09:48 +07:00
kdeme ffb7923370
Use different try/except construct to enforce returning on error 2020-06-30 21:58:23 +02:00
kdeme 23aa13b03d
Return on getMessage failure and do address conversion afterwards 2020-06-30 15:33:33 +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
Kim De Mey 0d591c6423
Merge pull request #247 from status-im/routing-table
Routing table work
2020-06-24 22:29:41 +02:00
narimiran ebabd6f76d more fixes 2020-06-24 22:20:50 +02:00
Miran 0424a66aa2
fix deprecated 'rand' (#259) 2020-06-24 16:06:07 +02:00
kdeme e28f3f987c
routing table: resolve some TODOs 2020-06-24 12:29:59 +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
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