Commit Graph
59 Commits
Author SHA1 Message Date
Tomasz Drwięga 9ad06d57fc Extract specific transaction pool errors. (#1930)
* Extract specific transaction pool errors.

* Convert error codes to constants.
2019-03-07 10:53:53 +01:00
Tomasz Drwięga 63ec8b335b Refactor state machine to avoid repetitions (#1844)
* Refactor state-machine stuff.

* Fix tests.

* Fix core/client tests.
2019-02-22 13:49:36 +01:00
Tomasz Drwięga 9a2f1b2007 Fix linked map for trait types and Option (#1809)
* Fix linked map for traits.

* Fix Option<_> variant.

*  Improve naming a tad

* Rebuild runtime

* Encapsulate private data in the inner module.

* Bump impl version.

* Fix deriving codec in srml-example.

* Fix derivation without importing parity-codec-derive.

* Fix config() for map.
2019-02-18 19:23:00 +01:00
Tomasz Drwięga 9e2710246f EnumerableStorageMap (#1763)
* Refactor decl_storage a bit to allow easier impl of linked map.

* A bunch of refactorings for storage generation.

- Rename StorageMap and ChildrenStorageMap to avoid confusion with generator::StorageMap.
- Separate implementation from the procedural macro code to clean it up.
- Make sure that genesis is initialised using the `StorageValue/StorageMap`
  generated implementations instead of going RAW.

* WiP: Writing test.

* Basic implementation.

* Implement enumeration.

* Fix non-std issues.

* fix warning

* Fix test-client.

* Address review grumbles - part 1

* Avoid cloning the key, relax Storage requirements.

* Rebuild runtime.

* Remove dangling todo.
2019-02-13 08:52:52 +01:00
Tomasz Drwięga 51a98f5c94 Unify bad signature error (#1717)
* Unify bad signature message.

* Update runtime.
2019-02-09 19:44:52 +01:00
Tomasz Drwięga 83f9e1e720 Allow modules to indicate full block. (#1687)
* Add transaction skipping.

* Update runtime.
2019-02-08 15:35:48 +01:00
Tomasz Drwięga 4e3eace15f Limit transaction pool size (#1676)
* Avoid excessive hashing. Store extrinsic len.

* Implement pool limits.

* Fix issues.

* Make sure we return error in case it doesn't make into the pool.

* Pass parameters from CLI.

* Remove redundant todo.

* Fix tests.
2019-02-06 19:03:05 +01:00
Tomasz Drwięga ecdd33a367 Allow both consensus and runtime to limit block building (#1581)
* Limit block size in runtime,

* Add test for basic authorship.

* Store length of extrinsics instead of computing it.

* Don't rely on note_extrinsic

* Use hashed version of storage and write test.

* Recompile runtime.
2019-02-01 13:58:23 +01:00
Tomasz Drwięga d2cfd7b9dc Allow runtime to return transaction validation error codes (#1534)
* Allow runtime to return more detailed transaction validation errors.

* Re-use ApplyError codes and update test-runtime.

* Fix pool tests.

* Revert using Compact for validity.
2019-01-29 19:06:05 +01:00
Tomasz Drwięga 1b0d90cdf6 Optimize transaction pool pruning (#1524)
* Reuse tags of known transactions, avoid reimporting extrinsics from imported block.

* Fix tests for graph.

* Add more detailed docs.

* Avoid cloning and computing hashes twice.
2019-01-24 15:52:17 +00:00
Tomasz Drwięga 2c3c4ac0e8 Add missing docs to sr-primitives. (#1531) 2019-01-24 13:49:39 +01:00
Tomasz Drwięga e48291acd0 camelcase structs returned over RPC (#1507) 2019-01-21 19:25:58 +01:00
Tomasz Drwięga a69a09a165 Serialize encoded logs. (#1478) 2019-01-19 12:36:14 +01:00
Tomasz Drwięga 34b21d6dd1 Fix serialization of generic unchecked extrinsics. (#1477) 2019-01-19 12:35:30 +01:00
Tomasz Drwięga 677b79765b Fix serialization of extrinsics. (#1402) 2019-01-11 19:24:25 +01:00
Tomasz Drwięga cc3748f034 Hex-encode block number. (#1389) 2019-01-11 11:43:58 +01:00
Tomasz Drwięga 8d4129aa22 Remove unneeded Deserialize impls. (#1370) 2019-01-08 22:44:39 +01:00
Tomasz Drwięga 38cdd0a5c6 Bump jsonrpc to fix hang on exit (#1367)
* Test RPC fix.

* Fix meta in unsubscribe.

* Fix meta in unsubscribe.
2019-01-08 14:46:07 +01:00
Tomasz Drwięga 71343248ca Call a state before block was imported. (#1294)
* Call a state before block was imported.

* Add test to check if it works correctly.
2018-12-20 15:28:14 +01:00
Tomasz Drwięga eba9d1e0a4 Don't call runtime if pool is empty. (#1283) 2018-12-19 12:21:46 +03:00
Tomasz Drwięga c1b08cd9b0 Expose system health via RPC and REST (#1269)
* Implement health endpoint.

* Expose health API.
2018-12-17 11:19:24 +01:00
Tomasz Drwięga d28fda3d84 [RPC] Move runtime version from chain to state (#1243)
* Move runtimeVersion to state, add rudimentary test for subscription.

* Bump to latest jsonrpc.
2018-12-10 19:46:39 +01:00
Tomasz Drwięga 507c13e31c Move pool maintainance to a background task. (#1236)
* Move pool maintainance to a background task.

* Remove commented code.

* Add issue number to TODOs

* Fix warnings and tests.
2018-12-10 14:13:48 +01:00
Tomasz Drwięga 90f6a56b15 Configure max payload for HTTP & WS (#1231) 2018-12-08 13:37:50 +08:00
Tomasz Drwięga 3acafa9d2f Last finalised block PubSub & RPC (#1080)
* Finalised blocks PubSub

* Finalised head RPC.

* Unify spelling.
2018-11-07 13:55:00 +01:00
Tomasz Drwięga 55e53a9898 Use local index for misbehaviour calculation (#934)
* Compute next index for misbehaviour reporting correctly.

* Merge branch 'master' into td-graph-improvements
2018-10-26 19:19:20 +02:00
Tomasz Drwięga 52093c4b7a Runtime version pub sub. (#948) 2018-10-23 08:21:05 +02:00
Tomasz Drwięga 36625faa9f Pool: parallel ready and runtime changes (#922)
* Revert "Revert runtime changes."

This reverts commit 01a7d1aa83c2918dd63b7dc54eb688d544cfc649.

* Parallel queue reads.

* Avoid recursion in best iterator.
2018-10-18 10:37:29 +02:00
Tomasz Drwięga 0c7389e108 Pool: A bunch of tests and fixes (#914)
* Implement Ready/Future events.

* Trigger invalid notification.

* Clearing stale transactions test.

* Fix RPC test.
2018-10-17 16:25:30 +02:00
Tomasz Drwięga a24e61cb29 Longevity handling. (#903) 2018-10-16 09:04:19 +01:00
Tomasz Drwięga 671b0e0007 Tagged transaction queue integration (#893)
* Make the graph generic.

* Adapting pool API for the graph.

* Merge pool & graph.

* Restructure.

* Fix test of transaction pool.

* Get rid of node/transaction-pool.

* Compilation fixes.

* Test7

* Fix compilation of tests.

* Revert runtime changes.

* Add validate_transaction to test-runtime.

* Fix RPC tests.

* Add clearing of the old transactions.

* Trigger pool events.

* Use new queue API.

* Fix wasm build, re-export Hasher.

* No warning if validate transaction fails.

* Get rid of Into<u64> and use As
2018-10-12 13:09:35 +02:00
Tomasz Drwięga ec8dda0dd4 Return correct hash for finalised transactions. (#858) 2018-10-01 17:49:48 +01:00
Tomasz Drwięga e8d88fcb7b Global unique subscription ids. (#848)
* Global unique subscription ids.

* Fix tests.
2018-10-01 16:31:52 +01:00
Tomasz Drwięga 68e3e3ee11 Transactions dependency graph (#787)
* Graph transaction pool.

* Start future implementation.

* Future -> Ready promotions.

* Replacement logic.

* Clear extern crates, add docs.

* Move hash externally.

* Implement remove_invalid

* Implement ready transactions pruning.

* Move & rename.

* Add some logs.

* Clean up deps.

* Use Member trait.

* Add missing docs, elaborate on the proof.

* Expand on docs and proofs.
2018-09-25 15:38:23 +01:00
Tomasz Drwięga 3e63009ac7 Make sure to ban invalid transactions. (#615) (#620) 2018-08-28 16:47:02 +01:00
Tomasz Drwięga 2c21f5ff30 RPC: Block number to block hash (#584)
* Return hash for given block number.

* Add some tests.

* Fix re-import.
2018-08-25 14:11:11 +02:00
Tomasz Drwięga d965e8f08e Time-based transaction banning (#594) (#602)
* Allow replacing transactions.

* Clear old transactions and ban them temporarily.

* Move to a separate module and add some tests.

* Add bound to banned transactions.

* Remove unnecessary block and double PoolRotator.
2018-08-25 00:19:36 +02:00
Tomasz Drwięga 5f124e2e2b RPC: Get block (#564)
* Get block RPC.

* Fix rpc-servers.
2018-08-14 21:41:58 +02:00
Tomasz Drwięga 41b7b2a943 RPC: Pending Extrinsics (#563)
* Expose extrinsics in pool.

* Add test.

* Use latest transaction pool.

* Fix compilation.
2018-08-14 18:51:30 +02:00
Tomasz Drwięga b580d38e51 Reject too large transactions (#558)
* Fix is_valid condition when removing transactions from the pool.

* Less verbosity.

* Reject too large transctions from the pool.

* Bring back the warning level.

* Fix link.
2018-08-14 13:13:18 +02:00
Tomasz Drwięga 08852a1f00 RPC: query historical storage entries (#537)
* Query storage changes from-to block.

* Rewrite to use hashes instead of numbers. Add tests.
2018-08-14 12:52:49 +02:00
Tomasz Drwięga 71bf98ac22 Merge *_at methods. (#515) 2018-08-09 10:12:33 +02:00
Tomasz Drwięga 96b3a8f92f Derivable Encode & Decode (#509)
* Derive macro for simple structs.

* Derive Encode/Decode wherever we can.

* Derive for enums.

* Support discriminant.

* Get rid of some repetition.

* Support custom indices.

* Derive codec for enums wherever possible.

* Fix no_std

* WASM rebuilt

* Avoid excessive import.

* Fix compilation.

* Address review grumbles.
2018-08-08 17:47:22 +02:00
Tomasz Drwięga 5eb7b67c2a Send initial values with subscription. (#493)
* Send initial value for heads.

* Send initial values for subscriptions.
2018-08-03 19:38:13 +02:00
Tomasz Drwięga 503bcb5686 Storage changes subscription (#464)
* Initial implementation of storage events.

* Attaching storage events.

* Expose storage modification stream over RPC.

* Use FNV for hashing small keys.

* Fix and add tests.

* Swap alias and RPC name.

* Fix demo.

* Addressing review grumbles.

* Fix comment.
2018-08-01 15:29:52 +03:00
Tomasz Drwięga 6ed6edc02f Bump jsonrpc. (#410) 2018-07-23 17:44:27 +02:00
Tomasz Drwięga 7ce2a8552f Extrinsics PubSub (#349)
* Extrinsic subscriptions.

* Handle RPC errors better.

* Add tests for extrinsics and unignored others.

* Handle client errors.

* Fix compilation.
2018-07-17 23:57:08 +02:00
Tomasz Drwięga bb8344b76b Handle AccountIndices in transaction pool (#225)
* Merge remote-tracking branch 'origin/master' into gav-xts-dont-panic

* Update wasm.

* consensus, session and staking all panic-safe.

* Democracy doesn't panic in apply.

* Fix tests.

* Extra helper macro, council depanicked.

* Fix one test.

* Fix up all council tests. No panics!

* Council voting depanicked.

* Dispatch returns result.

* session & staking tests updated

* Fix democracy tests.

* Fix council tests.

* Fix up polkadot parachains in runtime

* Fix borked merge

* More Slicable support

Support general `Option` and array types.

* Basic storage types.

* Existential deposit for contract creation

* Basic implemnetation along with removals

* Fix tests.

* externalities builder fix.

* Tests.

* Fix up the runtime.

* Fix tests.

* Add generic `Address` type.

* Initial function integration of Address into Extrinsic.

* Fix build

* All tests compile.

* Fix (some) tests.

* Fix signing.

* Push error.

* transfer can accept Address

* Make Address generic over AccountIndex

* Fix test

* Make Council use Address for dispatch.

* Fix build

* Bend over backwards to support braindead derive.

* Repot some files.

* Fix tests.

* Fix grumbles

* Remove Default bound

* Fix build for new nightly.

* Make `apply_extrinsic` never panic, return useful Result.

* More merge hell

* Doesn't build, but might do soon

* Serde woes

* get substrate-runtime-staking compiling

* Polkadot builds again!

* Fix all build.

* Fix tests & binaries.

* Reserve some extra initial byte values of address for future format changes

* Make semantic of `ReservedBalance` clear.

* Fix panic handler.

* Integrate other balance transformations into the new model

Fix up staking tests.

* Fix runtime tests.

* Fix panic build.

* Tests for demonstrating interaction between balance types.

* Repot some runtime code

* Fix checkedblock in non-std builds

* Get rid of `DoLookup` phantom.

* Attempt to make transaction_pool work with lookups.

* Remove vscode settings

* New attempt at making transaction pool work.

* It builds again!

* --all builds

* Fix tests.

* New build.

* Test account nonce reset.

* polkadot transaction pool tests/framework.

* Address grumbles.

* Pool support non-verified transactions.

* Revert bad `map_or`

* Rebuild binaries, workaround.

* Avoid casting to usize early.

* Make verification use provided block_id.

* Fix tests.

* Alter tests to use retry.

* Fix tests & add call to re-verify.

* Semi-refactor.

* Integrate new queue with the rest of the code.

* Fix tests.

* Add reverify_transaction method.

* Use result.
2018-06-26 11:45:57 +02:00
Tomasz Drwięga e6995cc997 Bump error-chain (#245)
* Bump error-chain

* Fix compilation errors
2018-06-25 19:41:33 +02:00
Tomasz Drwięga 1dada4f7a0 Extrinsic pool (#182)
* Use latest version of txpool.

* Initial version of the pool.

* Fix abstraction.

* Implement watchers and notifications.

* Return hash from RPC.

* Remove commented code.

* Remove client dep.

* Fix tests.
2018-05-31 22:49:17 +02:00
Tomasz Drwięga f116f67382 Substrate test client crate & chain subscription test (#139)
* Test client used in RPC tests.

* Use test-client for network tests.

* Expose BlockOrigin and clean up the API.
2018-05-01 16:39:55 +02:00
Tomasz Drwięga e253a4cb9f Chain head subscription (#126)
* Start WebSockets server.

* Expose non-working subscription.

* Dummy subscription for testing.

* Proper implementation with event loop.

* Finalized pubsub.

* Bump clap.

* Fix yml.

* Disable WS logs.

* Remove stale TransactionHash mention

* Fix build from nightly API change.

* Don't panic on invalid port.

* Bind server to random port.

* Send only best blocks.
2018-04-17 13:03:57 +02:00
Tomasz Drwięga 55e74cd426 Update some types and interfaces to match the spec (#24)
* Update primitives.

* Fix validator interface.
2017-12-04 16:51:43 +01:00
Tomasz Drwięga db78e5fb4c RPC & Client (#21)
* Initial version of http server.

* Refactor the structure.

* add unassigned ports info.

* Rename servers to match conventions.

* Add client crate and some proper RPC implementations.

* Style & docs.
2017-11-15 19:29:14 +01:00
Tomasz Drwięga 0ceebe6625 camel case and deny (#20) 2017-11-13 20:51:30 +01:00
Tomasz Drwięga 2fa0239dab State machine crate and rust impl of executor (#17)
* Executor.

* Rust contracts implementation.

* Add documentation and fix transfer data.

* Fix auth contract interface.

* Add some executor tests.

* Validator set contract.
2017-11-12 16:53:11 +01:00
Tomasz Drwięga e9177294f6 Initial validator trait. (#14)
* Initial validator trait.

* Add missing docs warning.

* Fix formatting.

* Fix validator output and serialization.

* Get rid of redundant ValidationCode type.
2017-11-12 16:48:35 +01:00
Tomasz Drwięga ff626bd5a1 Travis build. (#12) 2017-11-10 15:12:41 +01:00
Tomasz Drwięga dbb123d09c Uint & Hash types. (#10)
* Uint & Hash types.

* Fix author

* Rename crate to primitives.
2017-11-10 13:34:36 +01:00