Commit Graph

156 Commits

Author SHA1 Message Date
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
Jacek Sieka 98df7916b2
readme: update license 2018-09-05 12:47:38 -06:00
Jacek Sieka 0909540a92
ci: update
readme: fix license, badges
2018-09-04 22:24:14 -06:00
Jacek Sieka 819d021fa2
travis: use cached nim instead of docker 2018-09-02 09:41:09 -06:00
Yuriy Glukhov 0eda6bc91a Download block bodies 2018-08-29 23:34:21 +03:00
Yuriy Glukhov 2c3a183445 Compatibility with newer nim 2018-08-29 18:28:01 +03:00
Yuriy Glukhov 4b5cda9233 Temporary workaround to experimental problem 2018-08-29 18:28:01 +03:00
Yuriy Glukhov 847fac0635 Fixed msg len encoding 2018-08-29 18:28:01 +03:00
Zahary Karadjov 20033b499b Use chronicles instead of 'echo'; Cosmetic renames 2018-08-14 16:45:08 +03:00
Yuriy Glukhov 253bea9c8e More fixes. Block headers download works! 2018-08-14 16:45:08 +03:00
Yuriy Glukhov 7fac4cbf68
Merge pull request #31 from status-im/fix-autobuild
Added eth_common to dependencies
2018-07-31 01:08:04 +03:00
Yuriy Glukhov 695331737a Added eth_common to dependencies 2018-07-31 00:37:56 +03:00
Zahary Karadjov 11fbe60ba4 add some reference links 2018-07-24 00:41:40 +03:00
Zahary Karadjov be7ca479b3 more fleshed out implementation of the blockchain sync procedure 2018-07-24 00:39:41 +03:00
Zahary Karadjov 6351fc38b9 type in eth_common has been renamed to avoid a naming collission in nimbus's gas_costs module 2018-07-23 13:44:56 +03:00
Zahary Karadjov 41e92ca8df The ETH and LES protocols now compile as part of nimbus 2018-07-23 00:32:45 +03:00
Zahary Karadjov 4335052e9f Move the code from rlpx.nim in the base module as it now represents
a wider set of APIs.
2018-07-12 14:14:22 +03:00
Yuriy Glukhov cf6b4d3084 Some fixes 2018-07-10 12:54:27 +03:00
Zahary Karadjov 6ac6397d33 Added documentation 2018-07-09 20:00:34 +03:00
Zahary Karadjov 96cf717778 WIP outline of the Blockchain sync procedure using the ETH wire protocol 2018-07-09 01:26:14 +03:00
Zahary Karadjov 4d17ab1ee5 Added various smaller features
* Perform per-protocol handshakes after connecting

* Initialize the per-protocol Peer and Network states properly

* Add an `EthereumNode` object that can be configured with specific
  capabilities and connected to a specific network.
2018-07-09 01:17:00 +03:00
Zahary Karadjov f1001c45d2 implement the new nextMsg semantics 2018-07-08 19:12:06 +03:00
Zahary Karadjov 9057d18abe Implemented the request/response future resolving logic 2018-07-08 17:25:10 +03:00
Zahary Karadjov 72016046fb Merge peer_pool and server into rlpx
This was done because a cycle was formed between the structures
of the three modules:

- A Peer holds a reference to its Network
- The Network holds a reference to its PeerPool
- The PeerPool keeps a table of connected Peers

I could have resolved the issue by introducing a new types module,
but it would have required all of the currently private fields to
become public (due to lack of package-level visibility in Nim).

Instead I decided to merge the modules because they were relatively
small anyway. Please note that the former `P2PServer` type is now
called `NetworkConnection`. There are slight changes in the APIs
that will be carried out in Nimbus when merging this.
2018-07-06 15:25:21 +03:00
Zahary Karadjov fac8bbd917 WIP refactor the rlpxProtocol macro
* Make all handlers async

* Added a new `requestResponse` construct that allows you to wait
  for the results of a particular request

* Introduced an optional `NetworkState` type for the protocol

* The semantics of `nextMsg` has changed. See the notes in the README
2018-07-06 13:24:01 +03:00
cheatfate 66ff278f33 Fix server.nim was not exported. 2018-06-20 14:41:04 +03:00
Yuriy Glukhov c7d155b24b
Merge pull request #27 from status-im/clientid
Move clientId from constant.
2018-06-19 18:40:16 +03:00
cheatfate 28759422bc Move clientId from constant. 2018-06-19 14:16:36 +03:00
Zahary Karadjov 7b1fc33d59 disable an inappropriate test that was left enabled by accident 2018-06-18 12:28:02 +03:00
Zahary Karadjov 6bd09b1bba remove some dead code 2018-06-18 12:05:38 +03:00
Zahary Karadjov 41d022b7fa fix a compilation errors and some GcSafe warnings 2018-06-18 12:05:38 +03:00
cheatfate 6a961ce0b4 Fix nimble dependency on asyncdispatch2. 2018-06-18 12:05:38 +03:00
cheatfate 24d762da34 Moved eth_p2p to asyncdispatch2.
Fix some warnings at rlpx.nim.
Commented debug echo in rlpx.nim.
2018-06-18 12:05:38 +03:00
Zahary Karadjov 812c6284c0 rename package to eth_p2p to make it consistent with our naming scheme 2018-06-16 21:58:41 +03:00
alexm-status a06bd8789e
Update README.md 2018-05-30 14:35:02 -07:00