Commit Graph

385 Commits

Author SHA1 Message Date
Robert Habermeier
a55001ad1d fix deadlock in on_demand 2017-03-23 02:55:25 +01:00
Robert Habermeier
0abbd7ac97 Merge branch 'pip-msg' into lightcli 2017-03-22 22:08:39 +01:00
Robert Habermeier
73b2dd7a59 light client RPC dependencies 2017-03-22 21:09:43 +01:00
Robert Habermeier
e3d6525d83 store cumulative cost in pending request set. 2017-03-22 19:30:42 +01:00
Robert Habermeier
c718b5618e initial light CLI 2017-03-22 18:32:04 +01:00
Robert Habermeier
a0619fc101 Merge branch 'master' into pip-msg 2017-03-22 15:56:09 +01:00
Marek Kotewicz
044d070667 rlp deserialization refactor, 30% faster (#4901)
* fixed naming of rlp modules

* RlpStream cleanup

* appending short rlp lists (0...55 bytes) is 25% faster

* RlpStream does not use bytes module, nor trait Stream

* removed unused code from rlp module

* compiling ethcore-util with new rlp serialization

* compiling parity with new rlp serialization

* fixed compiling ethcore-light with new rlp serialization

* fixed compiling ethsync with new rlp serialization

* moved rlp benches and rlp tests

* rlp deserialization refactor, 30% faster

* removed redundant comment, print

* fixed compiling parity with new rlp deserialization

* removed redundant double-space

* fixed failing test

* updated rlp docs, removed unused traits

* fixed rlp benchmarks

* replace usage of WriteBytesExt with ByteOrder

* removed unused, commented out code

* fixed merge conflict
2017-03-22 14:41:46 +01:00
Robert Habermeier
219eddf33e Merge branch 'master' into pip-msg 2017-03-22 13:14:28 +01:00
Tomasz Drwięga
7e87e9e8ad Updating JSON-RPC crates (#4934)
* New version of jsonrpc.

* Better invalid encoding messages

* Fixing deprecated methods of tokio_core

* Using dedicated branch for jsonrpc

* Bump
2017-03-22 07:02:14 +01:00
Robert Habermeier
384aeda645 Merge branch 'pip-msg' into lightcli 2017-03-21 21:15:24 +01:00
Robert Habermeier
7ad36ee36c Merge remote-tracking branch 'upstream/new-jsonrpc' into pip-msg 2017-03-21 21:15:06 +01:00
Robert Habermeier
bc9c1d4824 use a database in ethcore-light 2017-03-21 20:57:13 +01:00
Robert Habermeier
21771aa1a6 don't keep headers in memory to avoid DoS 2017-03-21 20:23:58 +01:00
Robert Habermeier
d013a13be6 header_chain writes to database 2017-03-21 19:45:52 +01:00
Robert Habermeier
fe52e969b6 Merge branch 'master' into pip-msg 2017-03-21 15:24:47 +01:00
Tomasz Drwięga
958a8f66a0
Merge branch 'master' into new-jsonrpc 2017-03-21 09:35:50 +01:00
Marek Kotewicz
a555686bcd rlp serialization refactor (#4873)
* fixed naming of rlp modules

* RlpStream cleanup

* appending short rlp lists (0...55 bytes) is 25% faster

* RlpStream does not use bytes module, nor trait Stream

* removed unused code from rlp module

* compiling ethcore-util with new rlp serialization

* compiling parity with new rlp serialization

* fixed compiling ethcore-light with new rlp serialization

* fixed compiling ethsync with new rlp serialization

* removed redundant comment, print

* removed redundant double-space

* replace usage of WriteBytesExt with ByteOrder
2017-03-20 19:14:29 +01:00
Robert Habermeier
8be41ad946 Merge branch 'master' into pip-msg 2017-03-17 14:13:10 +01:00
Robert Habermeier
b5527415d6 get on_demand tests to compile 2017-03-16 20:33:45 +01:00
Robert Habermeier
04f106aad8 migrate oneshot::complete to send in on_demand 2017-03-16 20:29:06 +01:00
Robert Habermeier
cbb9314531 use PIP messages in on_demand, old API 2017-03-16 20:23:59 +01:00
Tomasz Drwięga
579cff478d
Fixing deprecated methods of tokio_core 2017-03-16 15:48:08 +01:00
Tomasz Drwięga
491eeb9878
Better invalid encoding messages 2017-03-16 12:48:51 +01:00
Robert Habermeier
599f81daa9 split request filling into fill,complete 2017-03-13 16:06:58 +01:00
Robert Habermeier
f0a587d310 request builder improvements 2017-03-13 13:36:03 +01:00
Marek Kotewicz
3fe3353696 removed redundant FixedHash trait, fixes #4029 (#4866) 2017-03-11 22:58:15 +04:00
Robert Habermeier
64342d200c return only complete headers responses 2017-03-09 17:28:49 +01:00
Robert Habermeier
391eb4b66c get network tests working 2017-03-09 16:55:13 +01:00
Robert Habermeier
8fb0a2d417 move request_builder -> request::builder 2017-03-08 20:11:22 +01:00
Robert Habermeier
aea9b1d6cc request builder tests 2017-03-08 20:07:45 +01:00
Robert Habermeier
d9087dd2b6 roundtrip tests for request types 2017-03-08 19:50:26 +01:00
Robert Habermeier
a1186727af fix cost table RLP encoding 2017-03-08 18:38:25 +01:00
Robert Habermeier
9268a1f59c get tests compiling 2017-03-08 18:27:29 +01:00
Robert Habermeier
9692616958 re-do cost table 2017-03-08 18:01:41 +01:00
Robert Habermeier
bb39f104f4 implement requesting from 2017-03-08 17:37:07 +01:00
Robert Habermeier
ee034185a5 handle response packets 2017-03-08 15:28:46 +01:00
Robert Habermeier
8a3b5c6332 Remote transaction execution (#4684)
* return errors on database corruption

* fix tests, json tests

* fix remainder of build

* buffer flow -> request credits

* proving state backend

* generate transaction proofs from provider

* network messages for transaction proof

* transaction proof test

* test for transaction proof message

* fix call bug

* request transaction proofs from on_demand

* most of proved_execution rpc

* proved execution future
2017-03-08 14:39:44 +01:00
Robert Habermeier
dbd05e6c92 handle request packet in LightProtocol 2017-03-07 20:58:23 +01:00
Robert Habermeier
04291fe71e complete initial request changes 2017-03-07 19:48:07 +01:00
Robert Habermeier
b396b56e34 encode and decode responses 2017-03-07 17:18:26 +01:00
Robert Habermeier
87f3d53607 new requests in provider. 2017-03-06 17:36:56 +01:00
Robert Habermeier
41effadb94 RLP encoding and decoding for requests 2017-03-06 12:21:06 +01:00
Robert Habermeier
bbb50caa89 initial request definitions 2017-03-03 19:25:29 +01:00
Robert Habermeier
af235e564e proved execution future 2017-02-26 15:05:33 +01:00
Robert Habermeier
1ff0abc661 Merge branch 'master' into remote-tx-exec 2017-02-26 13:55:29 +01:00
Robert Habermeier
69e82e15a3 request transaction proofs from on_demand 2017-02-25 20:10:38 +01:00
Robert Habermeier
2b671b8476 test for transaction proof message 2017-02-25 12:43:43 +01:00
Robert Habermeier
4158693470 network messages for transaction proof 2017-02-25 11:07:38 +01:00
Robert Habermeier
92e5982127 generate transaction proofs from provider 2017-02-25 00:27:48 +01:00
Robert Habermeier
ddbdfafc05 buffer flow -> request credits 2017-02-23 23:10:29 +01:00
Robert Habermeier
9316eb4ad3 (most of) parity RPC for light client 2017-02-17 21:38:43 +01:00
Robert Habermeier
3b023c82b7 fetch gas price corpus from network when needed 2017-02-17 17:08:46 +01:00
Robert Habermeier
48cf591e66 integrate cache in on-demand 2017-02-16 20:46:59 +01:00
Robert Habermeier
3b9741e9d8 Implement the basic data cache 2017-02-16 18:07:28 +01:00
Robert Habermeier
2b91c922c1 get signing network ID for light client 2017-02-16 16:08:58 +01:00
Robert Habermeier
e591b4481b warning on detected inconsistency 2017-02-14 19:16:46 +01:00
Robert Habermeier
1d9db578ff ready transactions order documentation 2017-02-14 12:14:02 +01:00
Robert Habermeier
63ad8cb086 store pending transactions only once 2017-02-14 12:12:26 +01:00
Robert Habermeier
e911fc2db9 address grumbles 2017-02-14 12:05:24 +01:00
Robert Habermeier
4f1afccf97 best_block_header function 2017-02-13 16:51:40 +01:00
Robert Habermeier
325c6aaf6a verify raw transactions against Engine 2017-02-09 19:58:29 +01:00
Robert Habermeier
a559dfe9a1 implement send_raw_transaction 2017-02-09 19:17:37 +01:00
Robert Habermeier
baf0dbc6bf LightProvider struct using light transaction queue 2017-02-09 18:42:18 +01:00
Robert Habermeier
6a924770be add several tests + minor bugfixes 2017-02-09 18:10:59 +01:00
Robert Habermeier
33266f78d1 initial transaction queue implementation 2017-02-09 17:36:12 +01:00
Robert Habermeier
869d193d21 Merge branch 'lightrpc' into light-txq 2017-02-08 20:51:11 +01:00
Robert Habermeier
028dbe5fe2 rename get_header to block_header by convention 2017-02-08 20:22:41 +01:00
Robert Habermeier
b3440babe3 light txq skeleton 2017-02-08 19:21:12 +01:00
Robert Habermeier
6c06a1a5ec expunge error types from OnDemand 2017-02-07 17:06:22 +01:00
Robert Habermeier
04fe72face reassign requests indefinitely 2017-02-07 16:49:14 +01:00
Robert Habermeier
b37124991c enforce validity of on_demand requests 2017-02-07 16:13:56 +01:00
Robert Habermeier
9524ebbff1 on-demand contract code request 2017-02-07 15:29:38 +01:00
Robert Habermeier
66692bc0e2 fast paths for block and receipts on_demand 2017-02-06 18:28:13 +01:00
Robert Habermeier
3a7248b964 cht proof checker, use it in on_demand 2017-02-04 17:48:02 +01:00
Robert Habermeier
197695414e correct ready transaction condition 2017-02-04 17:19:39 +01:00
Robert Habermeier
484b93abdc Merge branch 'cht-td' into lightrpc 2017-02-04 17:14:47 +01:00
Robert Habermeier
02142e3a57 Merge branch 'master' into cht-td 2017-02-03 19:56:52 +01:00
Robert Habermeier
e874df5155 hide CHT internals from header chain 2017-02-03 19:50:23 +01:00
Arkadiy Paronyan
312aa72747 Transaction timestamp condition (#4419)
* Transaction timestamp condtiion

* Updated docs

* Updated docs

* Check agains last block timestamp
2017-02-03 19:32:10 +01:00
Robert Habermeier
1baa824d1e use CHT abstraction in provider 2017-02-03 18:47:03 +01:00
Robert Habermeier
fc8e9e39ec CHT builder and prover 2017-02-03 18:38:28 +01:00
Robert Habermeier
1dc957e3a5 allow genesis block to be latest 2017-02-03 16:11:09 +01:00
Robert Habermeier
83de16da88 use encoded::Header in HeaderChain 2017-02-03 15:32:22 +01:00
Arkadiy Paronyan
c012dfc3ef EIP-98: Optional transaction state root (#4296)
* EIP98: Optional receipt state root

* Use if-else

* Fixing tests
2017-01-25 20:22:48 +01:00
Gav Wood
8404edb656 Fix whitespace (#4299)
* Fix whitespace.

* Update copyright years/owner.

* Push release only for tags.
2017-01-25 18:51:41 +01:00
Robert Habermeier
b739704902 ensure write lock isn't held when calling handlers (#4285) 2017-01-24 19:15:59 +00:00
Robert Habermeier
a791cb50a6 Light protocol syncing improvements (#4212)
* remove old lint silencer

* dispatch requests only to peers with higher TD

* dynamic target for sync rounds

* use round pivots instead of frames, fix test

* fix total difficulty calculation for test client

* fix broken reorg algorithm

* fork test, fix ancestor search
2017-01-20 12:41:59 +01:00
Robert Habermeier
3ff9324ec0 LES Peer Info (#4195)
* connected peers function for network service

* get LES peer info in sync API

* new peer info in RPC
2017-01-20 12:41:49 +01:00
Robert Habermeier
5830e03201 Merge pull request #4181 from ethcore/cht-full-nodes
CHT calculations for full nodes
2017-01-19 15:12:44 +01:00
Robert Habermeier
3040a1c83e Merge pull request #4093 from ethcore/better-timeouts
LES: Better timeouts + Track failed requests
2017-01-18 15:04:48 +01:00
Robert Habermeier
536df809c6 tests + documentation 2017-01-16 17:42:39 +01:00
Robert Habermeier
b960152d5b CHT calculations for full nodes 2017-01-16 17:10:30 +01:00
Robert Habermeier
31aae4ed78 move cht module up a level 2017-01-16 16:55:23 +01:00
Robert Habermeier
f0eab337d8 Merge pull request #4036 from ethcore/on-demand-les-request
On demand LES request
2017-01-13 14:36:48 +01:00
Tomasz Drwięga
e11353f94c UnverifiedTransaction type (#4134)
* Introducing ValidSignedTransaction

* Verifiying transactions in engines

* Widening use of VerifiedSignedTransaction

* Renaming Transactions

* Uncommenting banning queue & Fixing tests

* Fixing json tests

* Fixing pre-homestead test

* Fixing imports

* Addressing grumbles

* Fixing test
2017-01-13 08:51:36 +00:00
Robert Habermeier
7dde02b25d Merge branch 'master' into on-demand-les-request 2017-01-12 11:23:47 +01:00
Robert Habermeier
78e670812c fix test compilation 2017-01-11 18:57:38 +01:00
Robert Habermeier
e88c62d37d Merge branch 'master' into better-timeouts 2017-01-11 18:55:16 +01:00
Robert Habermeier
7123f19a75 Test harness for lightsync (#4109)
* make on_connect/disconnect public

* free flow params constructor

* Shared ownership of LES handlers

* light provider impl for test client

* skeleton for testing light sync

* have test_client use actual genesis

* fix underflow in provider

* test harnesses for lightsync

* fix tests

* fix test failure caused by test_client changes
2017-01-11 14:39:03 +01:00
Robert Habermeier
d515ef9a2a test for id_guard behavior 2017-01-09 12:20:44 +01:00
Robert Habermeier
54058e3712 ensure failed requests considered unfulfilled 2017-01-09 11:29:06 +01:00
Robert Habermeier
75b5acf21d use common BasicAccount type 2017-01-05 13:26:14 +01:00
Robert Habermeier
f63faea308 test for request_set and remove idle flag 2017-01-04 18:43:11 +01:00
Robert Habermeier
04282be721 use request set to provide better timeouts 2017-01-04 18:00:12 +01:00
Robert Habermeier
6ad0a0baaa fix test imports 2017-01-04 16:12:58 +01:00
Robert Habermeier
ed98c389ca no_peers test 2017-01-04 14:54:50 +01:00
Robert Habermeier
38ac84f0c7 reassign requests on failure 2017-01-04 14:33:32 +01:00
Robert Habermeier
ca35b345ca separate request dispatch from creation 2017-01-04 13:58:26 +01:00
Robert Habermeier
1d51b6f7e5 handle incoming LES requests 2017-01-04 13:34:50 +01:00
Robert Habermeier
4e94f43644 tests for request module 2017-01-04 12:48:07 +01:00
Robert Habermeier
01977e60aa finish request module, basic dispatch 2017-01-03 19:13:40 +01:00
Robert Habermeier
4dbbc3bc88 beginnings of on_demand request module + verification 2017-01-03 16:18:57 +01:00
Robert Habermeier
ddf2b944b5 on demand request dispatch 2016-12-28 21:46:55 +01:00
Robert Habermeier
4daa645789 dispatch header requests 2016-12-28 16:20:46 +01:00
Robert Habermeier
5309ba45a8 update peer status from announcement 2016-12-28 16:20:35 +01:00
Robert Habermeier
e6324a83f1 Merge branch 'master' into lightsync 2016-12-28 15:53:11 +01:00
Robert Habermeier
c2ad769fb7 Merge branch 'master' into on-demand-les-request 2016-12-28 14:00:33 +01:00
Robert Habermeier
fe1f542c4f Owning views of blockchain data (#3982)
* owning views of blockchain data

* port blockchain and client traits to owning views

* fix ethcore tests

* use strong headers and bodies in ethcore_light

* port ethsync to use owning views

* port rpc to owning views

* port parity informant and blockchain export
2016-12-28 12:44:51 +00:00
Robert Habermeier
428d5db9d1 beginning of on_demand 2016-12-27 16:43:28 +01:00
Robert Habermeier
9b4f90718f Display impl for ReqId 2016-12-27 13:54:51 +01:00
Robert Habermeier
8125b5690c Port try macro to new ? operator. (#3962)
* initial untry sweep

* restore try in ipc codegen, fix inference

* change a few missed try instances
2016-12-27 12:53:56 +01:00
Robert Habermeier
55dbfbf35b address grumbles 2016-12-27 12:24:18 +01:00
Robert Habermeier
0688ccb003 chain_mem_used function on client 2016-12-23 14:54:31 +01:00
Robert Habermeier
bdf90df56f client report and heap size for header chain 2016-12-23 14:50:42 +01:00
Robert Habermeier
d0194f3ad3 Merge branch 'master' into lightsync 2016-12-23 13:39:06 +01:00
Nikolay Volf
af501e6467 Custom attribute for binary serialization (#3922)
* derive(Binary) -> binary

* ethcore types refact

* fixup ethcore

* make binary optional

* fix common types

* fix updater

* remove condition
2016-12-21 15:09:35 +01:00
Robert Habermeier
01b494ca2c Merge branch 'master' into lightsync 2016-12-21 13:42:07 +01:00
Robert Habermeier
4c7dc9f2d8 require only simpler methods on Provider 2016-12-19 14:54:10 +01:00
Robert Habermeier
a48435ca60 Merge branch 'master' into lightsync 2016-12-19 13:15:37 +01:00
Robert Habermeier
ccdf5d5873 increase tick timer and limit peers to one req 2016-12-19 12:28:42 +01:00
Robert Habermeier
2c0f456e4d guard import order 2016-12-16 23:53:20 +01:00
Robert Habermeier
a7505be627 fix deadlocks 2016-12-16 22:09:29 +01:00
arkpar
65f07e5aa7 Renamed some functions 2016-12-16 14:54:26 +01:00
Robert Habermeier
9c7340307e handle events, minimal state machine 2016-12-15 21:51:08 +01:00
Robert Habermeier
72f7391551 add BasicContext trait for handler ticking 2016-12-15 19:25:52 +01:00
Robert Habermeier
5346539ef8 minimal header import and client service 2016-12-15 18:47:26 +01:00
arkpar
2952ea1b85 Delayed transactions 2016-12-15 18:19:19 +01:00
Robert Habermeier
0768a61944 light: add LightChainClient trait 2016-12-14 23:26:15 +01:00
Robert Habermeier
6fb71527e4 light: search for common ancestor with peers 2016-12-13 21:09:57 +01:00
Robert Habermeier
484023b171 light: max requests as 0 on unknown peer 2016-12-13 20:13:55 +01:00
Robert Habermeier
2a01b43bd1 light: block status and CHT module 2016-12-13 20:13:16 +01:00
Robert Habermeier
45ef986c04 light: finish basic header chain and add tests 2016-12-13 14:48:03 +01:00
Robert Habermeier
4173ecf2a5 light: begin header chain 2016-12-12 22:59:05 +01:00
Gav Wood
c0a2d5c8f5 Merge pull request #3796 from ethcore/tx-broadcast
Avoid broadcasting transactions to peers that send them
2016-12-12 04:13:56 +01:00
Tomasz Drwięga
83d9bc189b Fixing test 2016-12-11 21:08:15 +01:00
Gav Wood
58b72c521d
Rename ethcore -> parity in licenses. 2016-12-11 19:31:31 +01:00
Gav Wood
17cc2be4b5
Rename ethcore -> parity in license. 2016-12-11 19:30:54 +01:00
Tomasz Drwięga
b56f12adc6 Merge branch 'master' into tx-broadcast
Conflicts:
	ethcore/light/src/net/context.rs
	ethcore/light/src/net/tests/mod.rs
2016-12-11 17:31:56 +01:00
Robert Habermeier
6724f574d6 Light server improvements and protocol adjustments (#3801)
* light: basic transaction pool

* light: network timeouts

* fix dead code warnings

* les: update to new message format

* fix indentation

* les: hash or number in headers req, not both
2016-12-11 15:40:31 +01:00
Tomasz Drwięga
1e8638608c fixing tests 2016-12-10 22:59:35 +01:00
Tomasz Drwięga
b5020d3c8d Fixing Light context API 2016-12-10 21:25:28 +01:00
Tomasz Drwięga
aaf6da4c00 Returning persistent node id 2016-12-10 16:55:29 +01:00
Gav Wood
0977b82eeb
More fixes. 2016-12-10 13:54:17 +01:00
Gav Wood
7eb30b1249
Fix build. 2016-12-10 13:52:43 +01:00
Gav Wood
82efa2675e
Merge remote-tracking branch 'origin/master' into consistent-id 2016-12-10 13:36:30 +01:00
Gav Wood
5f1fcf95e0
Make *ID names consistent with std Rust (Id) 2016-12-09 23:01:43 +01:00
Robert Habermeier
415fccfffb add ethcore-light cov target 2016-12-09 15:20:45 +01:00
Robert Habermeier
5f37c93659 les: use negotiated protocol version 2016-12-09 15:04:54 +01:00
Robert Habermeier
07d7a37319 les: make peer buffer flow params optional 2016-12-09 01:06:51 +01:00
Robert Habermeier
d53c47aa69 more tracing 2016-12-09 00:35:34 +01:00
Robert Habermeier
e7ce8c9558 light: broadcast status updates to peers 2016-12-08 23:57:09 +01:00
Robert Habermeier
6f5f1f5e26 light: integrate with sync + serve_light CLI 2016-12-08 23:21:47 +01:00
Robert Habermeier
64ebcd0f24 fix contract code response encoding; add test 2016-12-08 16:12:00 +01:00
Robert Habermeier
3e8ee9d423 light IPC feature and mock state proofs 2016-12-08 13:44:17 +01:00
Robert Habermeier
8d16f73795 first few LES tests, fix get_header logic bug 2016-12-08 12:20:18 +01:00
Robert Habermeier
2d1a3ff091 les: generalize network and event contexts with traits 2016-12-07 17:52:10 +01:00
Robert Habermeier
10d75b6de0 light: implement all response handlers 2016-12-07 15:27:04 +01:00
Robert Habermeier
cdc758368a les: flesh out event handler 2016-12-07 13:52:45 +01:00
Robert Habermeier
5db93cd433 light: fix compile errors 2016-12-05 17:09:05 +01:00
Robert Habermeier
a6c2408562 IPC codegen in ethcore-light; remove network dependency 2016-12-05 16:56:21 +01:00
Robert Habermeier
61c3358447 move light to its own crate again 2016-12-05 16:55:33 +01:00
Robert Habermeier
11e6b08f02 Move ethcore-light crate into ethcore/light module 2016-11-09 23:39:56 +01:00
Robert Habermeier
ebff010d16 partial implementation of provider for client types 2016-11-09 23:25:54 +01:00
Robert Habermeier
6c23d53f04 allow dead code temporarily 2016-11-09 18:05:56 +01:00
Robert Habermeier
25d5efac15 making announcements, clean up warnings 2016-11-09 18:05:00 +01:00
Robert Habermeier
c132775bb1 handle announcements 2016-11-09 16:21:09 +01:00
Robert Habermeier
ec1b982b52 errors, punishment, and handshake 2016-11-09 15:36:26 +01:00
Robert Habermeier
ca25deb4e6 implement announcement serialization 2016-11-08 19:00:37 +01:00
Robert Habermeier
440f5e537f implement handshake parsing and creation 2016-11-08 17:13:43 +01:00
Robert Habermeier
4ba4861734 begin status module 2016-11-07 19:16:23 +01:00
Robert Habermeier
051effe9f8 buffer flow basics, implement cost table 2016-11-07 15:40:34 +01:00
Robert Habermeier
d573ef3cc2 remove LESv2 requests 2016-11-06 20:02:15 +01:00
Robert Habermeier
44e36596c9 buffer flow scaffolding 2016-11-06 19:04:30 +01:00
Robert Habermeier
52abbc0643 experiment with answering requests 2016-11-04 23:50:56 +01:00
Robert Habermeier
c1a6dbe75f Move all light client work to own crate 2016-11-04 19:40:11 +01:00