Commit Graph

190 Commits

Author SHA1 Message Date
Zahary Karadjov bf1147291b implement #60 2019-01-05 16:03:39 +02:00
Ștefan Talpalaru 7c185b1731 fix breakage with Nim HEAD 2019-01-04 16:20:05 +02:00
Bruno Škvorc b21e381dfa
Update README.md 2019-01-02 14:53:43 +01:00
Zahary Karadjov 8981d98786 make it impossible to run a network node without PeerPool 2018-12-28 18:44:37 +02:00
Zahary Karadjov 99b6b86414 Use chronicles in kademlia and discovery 2018-12-28 12:25:28 +02:00
Zahary Karadjov bddec91d05 minor fixes 2018-12-19 12:25:35 +02:00
Ștefan Talpalaru 7384ab25d5
Merge branch 'segfault' 2018-12-18 14:25:50 +01:00
Ștefan Talpalaru be476feeec
better error handling
- changed the logging level of some messages that should not appear by
  default in a debug build
- most errors in persistWorkItem() are gracefully recovered from
- fixed the handling of out of order blocks
- dropped work items with fewer blocks than what we requested
- getBestBlockNumber(): log and allow exceptions from getBlockHeaders()
- obtainBlocksFromPeer(): moved here the check for block numbers being
  in sequence (from nimbus/p2p/chain.nim)
- sendMsg(): log and catch exceptions in callers
2018-12-17 23:35:45 +01:00
kdeme 8cad437112 Fix, improve and enable tshh_connect + other improvements:
- minePow fix
- random padding
- random IV (phew!)
- other small changes + comments
2018-12-06 14:30:55 +02:00
Zahary Karadjov c4c596a90f small fixes needed for the beacon node build 2018-11-29 03:10:05 +02:00
kdeme 420298dca0 Address PR #52 review comments 2018-11-28 20:16:21 +02:00
Zahary Karadjov ccea6dc7b6 Whisper post-review changes (PR #52) 2018-11-28 02:23:03 +02:00
deme 1e5eeec6bb Untie filter code from EthereumNode + add unit tests 2018-11-27 13:56:25 +02:00
deme bc9db02411 Add more unit tests, change unnecessary vars to let and some general cleanup 2018-11-27 13:56:25 +02:00
deme 3d2abbdfdd Add access to set/get the message padding + tests 2018-11-27 13:56:25 +02:00
deme 4f53236233 Filter queue and other improvements:
- Add filter queue and getFilterMessages
- Improve some procs that can return failures
- Add + improve tests
2018-11-27 13:56:25 +02:00
deme 8c273b2a2d Improvements and some cleanup
- Added sendP2PMessage + test
- Timeout on waiting for status message
2018-11-27 13:56:25 +02:00
deme 70fc6874be Add Whisper implementation 2018-11-27 13:56:25 +02:00
Zahary Karadjov dbf7d8b3ff Embed protocol metadata within the p2p trace; Placeholder for the traffic visualization plugin 2018-11-26 19:50:13 +02:00
deme 4792e18c56 Add addPeer proc and more comments 2018-11-13 14:18:59 +02:00
deme f62ca5607d Fix segfault when there is no peer_pool (no connectToNetwork() ran).
e.g. tserver test would segfault.
2018-11-13 14:18:59 +02:00
deme 19cd8201b0 Resolving several connection issues:
- Adding peers to peer pool on incoming connection
- Exclude bootnodes from nodes to connect to
- Check if peer is already connected to before adding to peer pool
- Check if peer is still connected to before removing from peer pool
2018-11-13 14:18:59 +02:00
Zahary Karadjov 58d6c9c208 Fix a tricky handshake ordering issue reported by kdeme 2018-11-11 14:07:02 +02:00
Zahary Karadjov eca93509b4 Support for creating JSON dumps of all P2P network traffic
Enable by compiling with -d:p2pdump. A chronicles log file named
p2p_messages.json will be created in the working directory. This
file will be consumed by the upcoming Chronicles Tail GUI (more
details will be provided on the wiki of this repo).

Other changes:

* Removes the use of package_visible_types (only partially so far)
* Simplifies the new Snappy code a little bit
2018-11-10 02:18:00 +02:00
andri lim 7787e27427 cosmetics changes 2018-11-09 14:45:35 +02:00
andri lim c3a49d187d fixes wrong logic 2018-11-09 14:45:35 +02:00
andri lim e8bd614021 improve readability 2018-11-09 14:45:35 +02:00
andri lim 21105f1558 cosmetics changes 2018-11-09 14:45:35 +02:00
andri lim f590bf0154 add snappy compression 2018-11-09 14:45:35 +02:00
deme f91091de44 Fix import of shh_protocol 2018-11-04 12:31:03 +02:00
cheatfate 84184221ad Fix #47. 2018-10-22 11:52:14 +03:00
Zahary Karadjov 8b4bbd29af Adopt to the latest version of RLPx 2018-10-21 01:40:00 +03:00
Jacek Sieka 7342c46fd9 whisper: updates
* add some logging
* add some error and bounds checking
* move tests where they belong
* add symmetric encryption
* add signature public key recovery
2018-10-21 01:35:35 +03:00
Zahary Karadjov 3c97296ef8 Working definition of an SHH RLPX protocol 2018-10-21 01:35:35 +03:00
Jacek Sieka 7fdd574a37 whisper: add primitives (WIP)
Work-in-progress dump of initial whisper support

* payload encoding / decoding (missing 256-bit GCM mode)
* missing tests
* missing p2p integration
2018-10-21 01:35:35 +03:00
Zahary Karadjov 7828ef0481 Initial implementation of the LES protocol and its flow control.
This also restores the old module structure of having separate
`peer_pool` and `rlpx` modules. This is made possible by the
new Nim package `package_visible_types` (please refer to its
README for an explanation).

Also introduces more error handling in the low-level RLPx routines.
All detected errors will result in immediate disconnection of the
corresponding peer, which may be detected in the protocols though
the `onPeerDisconnected` event handler.
2018-10-16 02:52:11 +03:00
Zahary Karadjov b38804f873 This commit only moves files around (no need for review)
In the next commit, I'm going to squash all the changes in the LES.
This commit just sets the directory tree to its final state, so the
diffs in the follow up commits are easier to review.

Please note that eth.nim was renamed to eth_protocol.nim, because
it's not advisable to have a module name that shares the name of
a protocol identifier (this creates hard to figure out ambiguity
errors)
2018-10-15 16:49:49 +03:00
Yuriy Glukhov e5ff8aea2a
Merge pull request #42 from status-im/sync
Proper sync part 1
2018-10-04 11:03:11 +03:00
Yuriy Glukhov e64ab468ae Blocks ordering 2018-10-02 14:40:08 +03:00
Yuriy Glukhov 7f14c435d6 Proper sync part 1 2018-10-01 14:33:59 +03:00
Zahary Karadjov badc616be8 Deal with the refactoring in status-im/nim-rlp#20 2018-09-26 17:21:49 +03:00
Yuriy Glukhov d808d9dc1a P2P fixes, optional discovery 2018-09-25 17:42:10 +03:00
Yuriy Glukhov f89d2eee5f Specify debug enode through env var. Fail less often in discovery 2018-09-20 22:28:53 +03:00
Zahary Karadjov 2785dcdd19 Don't use HTTP dependencies in Nimble due to nim-lang/nimble#543 2018-09-15 23:52:15 +03:00
Zahary Karadjov d30dce9d53 Fix compilation issues when using peer.networkState 2018-09-12 18:28:50 +03:00
Yuriy Glukhov f815c73963 Reply empty nodeData 2018-09-10 19:22:31 +03:00
Yuriy Glukhov b5c898dc1e Fixed requested block range, more reliable block downloader 2018-09-07 13:37:11 +03:00
Yuriy Glukhov 573ca08643 Fixed occasional assertion failure on bonding 2018-09-07 13:37:11 +03:00
Yuriy Glukhov 892467b5a8 Less verbosity about some errors 2018-09-07 13:37:11 +03:00
Jacek Sieka 9392ae1d53
appveyor: fix version check 2018-09-06 12:02:24 -06:00