Commit Graph

164 Commits

Author SHA1 Message Date
Giles Cope 364ed8bed1 Updated to later version of substrate so that it compiles.
(Referencing substrate this way you only have to search and replace one string to upgrade)
2021-09-17 10:52:23 +01:00
Liu-Cheng Xu 414f81774d Add NextKeys and QueuedKeys for session module (#291)
* Add NextKeys and QueuedKeys for session module

* Fix fmt
2021-08-23 12:16:24 +01:00
Greg Hill 2749bd300b deps: update jsonrpsee 0.3.0 (#289)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-08-03 10:26:29 +01:00
Niklas Adolfsson 08a3e6574d deps: update jsonrpsee 0.2.0 (#285)
* deps: update jsonrpsee 0.2.0

The motivation is to avoid pinning certain alpha versions and to avoid
breaking users builds without having to some `Cargo.lock` updating.

* cargo fmt

* fix tests

* fix a few clippy lints

* cargo fmt
2021-06-08 19:15:12 +02:00
Liu-Cheng Xu 490836fa2d Reorg the order of deps (#284)
* Reorg the order of deps

This patch is simply for easier editor operation when replacing the
substrate deps.

* .
2021-06-06 17:10:34 +01:00
Liu-Cheng Xu cef6d697b8 Expose the rpc client in Client (#267)
When we build a `Client` for a substrate chain, we can only access the
methods exposed in `Client` which does not cover all the RPC interfaces
in the chain, it's not feasible to request the methods like `chain_getKeys`
with `Client` only. The downstream user of this library has to build another
`RpcClient` for the uncovered RPC interfaces, which can be unneccessary.
2021-05-21 11:45:34 +01:00
Niklas Adolfsson 94db874942 update jsonrpsee to 0.2.0-alpha.6 (#266)
* update jsonrpsee to 0.2.0-alpha.5

* downgrade subxt client

* cleanup

* make subxt-client compile again

* update jsonrpsee v0.2.0-alpha.6

* fix build again

* remove needless type hints

* cargo fmt

* address grumbles

* remove remaining type hints

* cargo fmt
2021-05-20 21:48:56 +02:00
Andrew Jones 8bff0bebd4 Remove funty pin, upgrade codec (#265) 2021-04-19 13:03:53 +01:00
Liu-Cheng Xu 0415b5d1f4 Use async-trait (#264)
* Use async-trait

* Use async-trait for store trait too
2021-04-14 16:20:24 +01:00
Niklas Adolfsson 02960a3b0e [jsonrpsee http client]: support tokio1 & tokio02. (#263)
* [jsonrpsee http client]: support tokio1 & tokio02.

* review grumbles: http client make non-optional
2021-04-13 08:28:26 +02:00
Andrew Jones 1a8e0bc63b Release v0.15 (#248)
* Add 0.15.0 changelog section

* Update CHANGELOG.md format

* Bump versions

* Update CHANGELOG.md

* Specify explicit version for client

* Remove unused subxt dev dependency

* Upgrade deps
v0.15.0
2021-03-22 17:37:15 +00:00
Greg Hill cb4bee5c03 return none if subscription returns early (#250)
* return none if subscription returns early

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

* add comment on subscription close

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

* no need for jsonrpsee error enum

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-03-22 10:55:14 +00:00
Andrew Jones 055ebff52d Convert integration tests to use test node process (#253)
* Remove integration-tests feature, use test node process

* Allow tests to run in parallel

* Fmt

* Fix errors

* Fix more errors

* Use test node process in test context

* Remove code for managing accounts for contract tests

* Update contract dispatchables

* Fix up contract calls for 3.0 compat

* Fmt

* Fix up some tests

* Fix some more tests

* Fix some more tests

* Fmt
2021-03-22 10:30:42 +00:00
Andrew Jones 9742c09b27 Remove test-node crate (#254) 2021-03-19 12:42:11 +00:00
Andrew Jones bd885129f3 Spawn test node process for integration tests (#252)
* Move tests to module in own file

* Add test-node-proc crate

* Move test node to main lib, fix compilation errors

* Fmt

* Attempted port scanning

* Use global static port to allocate open ports

* Register missing type sizes

* Fix port scanning and balances test

* Don't wait for blocks on insert_jey test

* Fmt

* Remove unused dependencies

* Download v3.0.0 rust binary

* Move substrate bin to home dir

* Add test instructions to README

* Figure out the $PATH

* Remove path echo

* Add check for missing substrate binary on the PATH

* @niklasad1 review: don't include client feature for tests
2021-03-19 11:28:35 +00:00
Niklas Adolfsson 3b362fb072 update jsonrpsee (#251) 2021-03-16 16:00:32 +00:00
Greg Hill b37d8ecd5a export ModuleError and RuntimeError for downstream usage (#246)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-03-15 09:26:55 +00:00
Greg Hill 568d6ea577 implement variant of subscription that returns finalized storage changes (#237)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-03-10 10:43:38 +00:00
Greg Hill c1d4804ccd implement session handling for unsubscribe in subxt-client (#242)
* implement session handling for unsubscribe in subxt-client

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

* update jsonrpsee to `v0.2.0-alpha.2`

Closes #241

* use new jsonrpsee request message types in subxt client

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2021-03-09 22:29:21 +01:00
Greg Hill 9959f0d299 rpc client methods should be public for downstream usage (#240)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-03-08 13:09:39 +00:00
Greg Hill 201a13aa4e re-export WasmExecutionMethod for downstream usage (#239)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-03-08 10:55:42 +00:00
Niklas Adolfsson a920e34c20 integration with jsonrpsee v2 (#214)
* hacky integration with jsonrpsee v2

* stray todos

* fmt

* add http support

* make test build compile

* Update src/rpc.rs

* bring back set_client

* use crates.io version jsonrpsee

* WIP: workaround for embedded subxt client (#236)

* workaround for embedded subxt client

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

* increase default channel size on subxt client

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

* remove client tests due to inference problem on From

Signed-off-by: Gregory Hill <gregorydhill@outlook.com>

* add comments for missing impls

* more verbose errors

* make subscription notifs buffer bigger

* fmt

Co-authored-by: Greg Hill <gregorydhill@outlook.com>
2021-03-08 10:52:23 +00:00
Andrew Jones c4405c40ad Fix type sizes check (#235) 2021-02-23 17:40:12 +00:00
Greg Hill e524c2d744 expose wasm execution method on subxt client config (#230)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2021-02-19 11:40:35 +00:00
Andrew Jones de859e7396 Add hooks to register event types for decoding (#227)
* Global registration of type segmenters for event decoding

* Perform type sizes check when building client

* Introduce EventTypeRegistry for global runtime type sizes

* Fmt

* Register runtime type sizes on creation of EventTypeRegistry

* Register more default dispatch types

* Add missing type sizes

* fmt

* Fix up register_type_size builder method

* Update doc comments

* Make register_default_type_sizes public

* Don't allow duplicate registered types

* Remove call to supertraits type registration, done manually in Runtime

* Fix tests and warnings

* Fix duplicate type registration

* Fmt

* review: use is_empty()

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Add panic docs

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2021-02-18 10:28:40 +00:00
Andrew Jones 2c8e5211aa Substrate 3.0 (#232)
* Update substrate deps to 3.0.0 and 0.9.0

* Update substrate wasm tools

* Fixing errors for 3.0.0 compat

* Fixing more errors for 3.0.0 compat

* Use MultiAddress for test runtime

* Fmt

* Fix node test

* Pin Funty

* Update AccountInfo struct

* Add comment about funty pin
2021-02-17 16:45:05 +00:00
Andrew Jones 51c48f223a Update license header, bye bye 2020 👋 (#231) 2021-02-11 17:17:24 +00:00
Andrew Jones 032ba029af Release v0.14.0 (#226)
* Update CHANGELOG

* Bump versions

* Update client dep versions
2021-02-08 10:51:52 +00:00
h4x3rotab f3ece6d933 Fix the wrong rpc call in query_storage_at() (#223) 2021-01-27 08:57:47 +00:00
Niklas Adolfsson 4725a33ea2 [ci]: use latest nightly (#222)
* [ci]: use latest nightly

* grumbles

* fix nit; targets -> target
2021-01-20 16:22:50 +00:00
h4x3rotab 3c46002e67 Refactor event type decoding and declaration (#221)
* Refactor event type decoding hand declartion

Fixes #196, #181, #28

## Dyanmic sized types

Before this change, the event decoder assume all the event types
have fixed sizes. Some counterexamples are: Hashes, AuthorityList.

In this change, instead of decoding by skipping the fixed-length bytes,
we introduce `type_segmenter` registry which decodes the raw event
bytes with the actual scale codec. So variable length types can be
handled correctly.

## New attribute for pallet type definition

In the past, trait associated type is the only way to add types to
the EventsDecoder implementation of a pallet. But in reality it's
common that the events in a pallet references some types not defined
in the trait associated types. Some examples are: `IdentificationTuple`
and `SessionIndex` in Session pallet.

In this change, we introduce more attributes to add the types:

```rust
#[module]
trait Pallet: System {
    #![event_type(SomeType)]
    #![event_alias(TypeNameAlias = SomeType)]
    #![event_alias(SomeOtherAlias = TypeWithAssociatedTypes<T>)]
}
```

## Tested

Compile with `nightly-2020-10-01`; smoke test to sync a full
Phala bockchain.

* Format code

* Make rustfmt::skip an outer attribute

* Ignore the sample code

* Alias the event segmenter closure

* Copy AuthorityList from sp_finality_grandpa

* Remove the unused static event type size

* Make segmenter as a trait, resue grandpa::Public

* Wrap PhantomData in struct TypeMarker
2021-01-20 09:41:58 +00:00
Liu-Cheng Xu 5a0201c130 Add Balances Locks (#197)
* Add Balances Locks

* Pass fmt

* Add tests for Balances Locks

In order to write this test, I just added the new staking::BondCall :).

* .

* In case you want to run multiple tests at the same time

* Return Result in integration test
2021-01-15 09:34:35 +00:00
h4x3rotab 754b184363 Add event Phase::Initialization (#215) 2021-01-14 16:51:10 +00:00
Caio c2cc7afbc1 Make type explicit (#217) 2021-01-14 16:50:16 +00:00
Andrew Jones 6175cb70b9 Upgrade dependencies, bumps substrate to 2.0.1 (#219)
* Upgrade dependencies, bumps substrate to 2.0.1

* Upgrade test-node dependencies

* Upgrade client dependencies

* Upgrade proc-macro dependencies

* Revert futures01 dependency

* Upgrade futures

* Remove redundant package specifiers
2021-01-14 16:47:01 +00:00
Caio 5595b1e82f Export extra types (#212) 2021-01-05 17:26:13 +00:00
Zeke Mostov 0a926ef4c4 Enable retrieval of constants from rutnime metadata (#207) 2020-12-17 10:23:46 +00:00
Caio 8a76bebcff Add badge to docs.rs (#203) 2020-12-14 17:26:49 +00:00
Greg Hill 80aff7eb6e register type sizes for u64 and u128 (#200)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2020-12-09 15:09:29 +00:00
Andrew Jones 0b3c8d4523 Remove some substrate dependencies to improve compile time (#194)
* Copy ReadProof and TransactionStatus types

* Define local app crypto types

* Fmt

* Restore logging and add comments
2020-12-03 13:20:50 +00:00
Greg Hill 27c377a9d6 propagate 'RuntimeError's to 'decode_raw_bytes' caller (#189)
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
2020-11-13 17:16:14 +00:00
Qinxuan Chen 7655caac0f Derive Clone for PairSigner (#184)
* Derive `Clone` for `PairSigner`

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Specify the date of nightly toolchain to fix CI

Signed-off-by: koushiro <koushiro.cqx@gmail.com>
2020-10-20 10:57:27 +01:00
David fc2da6b9c7 Release v0.13 (#175)
* Upgrade to substrate 2.0.0

* WIP implement Subcommand manually (see https://github.com/paritytech/substrate/pull/6894#issuecomment-676060197)

* Add pallet-staking/std to the std feature

* Sort out the subcommand impl

* Sort out the module index (ty @ascjones)
Sort out the RefCount type (ty @dvc94ch)
Random tweaks to make test-node more similar to the vanilla node-template

* obey the fmt

* Add changelog and bump versions

* Merge #165 and update CHANGELOG

* Update test-node/runtime/src/lib.rs

Co-authored-by: Demi Marie Obenour <demiobenour@gmail.com>

* Update CHANGELOG.md

Co-authored-by: Demi Marie Obenour <demiobenour@gmail.com>

Co-authored-by: Demi Marie Obenour <demiobenour@gmail.com>
2020-10-05 10:56:27 +02:00
Demi Marie Obenour cd7bb6041b Remove unnecessary Sync requirements (#172)
This is needed for Ledgeracio, as Ledgeracio’s signer is now no longer
`Send`.
2020-09-25 08:18:26 +01:00
Andrew Jones 385d214217 Call a contract (#165)
* Revert contracts put_code test to pure code (not using the macro)

* Test contract instantiate

* Fmt

* Extract put_code and new_client functions

* Generate fresh accounts for contract tests to allow reruns without a chain purge

* Fetch and increment nonce to allow concurrent test runs

* fmt

* Failing contract call test

* Fmt and fix compilation

* Fix error message for contract call

* Fix call test

* Update contract execution event comment

* Remove redundant feature flags, now on module

* Update event data comment

* Use fetch_add

* Fmt
2020-09-24 18:21:51 +02:00
David 8e2a4f06ee Upgrade to substrate 2.0.0 (#173)
* Upgrade to substrate 2.0.0

* WIP implement Subcommand manually (see https://github.com/paritytech/substrate/pull/6894#issuecomment-676060197)

* Add pallet-staking/std to the std feature

* Sort out the subcommand impl

* Sort out the module index (ty @ascjones)
Sort out the RefCount type (ty @dvc94ch)
Random tweaks to make test-node more similar to the vanilla node-template

* obey the fmt

* cleanup

* more cleanup
2020-09-24 12:57:35 +01:00
David 56bd633706 Address review grumbles from #99 (#171)
* Address review grumbles from #99

* obey the fmt
2020-09-22 16:29:29 +01:00
Demi Obenour f9f69b8c3b Staking support (#99)
* Initial Staking API

* Add more staking types

* Reformat

* Remove dead code

* Fix missing documentation

* Reformat

* Staking: use proc macros

* Add partial session support

* Reformat

* Try to implement nomination

This currently fails with compilation errors I do not understand.

* Use the #[module] macro

This fixes a compile error

* Explain undefined method diagnostics

* Use ‘#[module]’ and implement session for Kusama

* Don’t impl ‘Staking’ for all ‘T: System’

* Add staking payout support

* Fix compilation errors and remove useless lifetimes

* Respond to code review

This fixes most of the issues found during review, with the exception of
tests.

* Make signing fallable and asynchronous

This is needed for hardware wallets, which require human confirmation to
sign transactions.  Blocking on a human to sign transactions is not a
good idea, and the signing might fail for many reasons (device
unplugged, authorization not granted, etc).

* Reformat

* Refactor as suggested by Andrew Jones (@ascjones).

* Reformat

* Refactor as suggested by Andrew Jones (@ascjones).

* Trait cleanups

* Make the `Signer` impl require Send + Sync

This is what Ledgeracio needs.

* Use the correct key for staking maps

They use the key type, not ‘PhantomData’.

* Implement set_payee call

* Switch to associated types for Staking

* Implement `set_keys`

This is needed for Ledgeracio.

* Remove impl of Signer for Box<dyn Signer + Send + Sync>

It isn’t needed, since Box implements Deref.

* Fix Polkadot and Kusama ‘SessionKey’ structs

I had failed to include the ‘Parachains’ component, which the default
Substrate runtime doesn’t have.

* Include a copy of `ValidatorId`

This avoids needing to depend on Polkadot.

* Fix syntax error in Cargo.toml

* Fix compile errors

* Add Debug impls

* Fix return type of `BondedStore`

* Use some upstream type definitions

Also add `Default` impls.

* Bump deps and fix build

* Remove last reference to Kusama feature

* Fix compilation errors

* Implement the `concat` in `twox_64_concat`

* Expose properties and per-era preferences

* Era rewards point support

I also did some refactoring.

* Expose clipped exposure

* Era reward points support

* Make `PayoutStakersCall` public

* Add in all default features for debugging

* Chill support and update to latest Substrate

* If property fetch fails, use dummy values

* Fix tests

* Fix header

* Remove some code Ledgeracio does not need

* More deletions

* Remove more code not needed for Ledgeracio

* Remove a pointless change in Cargo.toml

w.r.t. upstream.

* Remove more junk

* Revert contracts put_code test to pure code (not using the macro)

* Test contract instantiate

* Fmt

* WIP

* Add some more submission tests

* Reformat

* More tests

* Cleanup

* Hopefully fix CI

* Remove dead code

* Test chill

* Add missing docs

* Remove unnecessary use

* Revert "Remove unnecessary use"

This reverts commit bc8bc36bde581f1892ea88a778dfe0fe5bff24d7.

* Retry on temporary failures

* Ignore the staking tests on CI

* Obey the fmt

* Run CI with at most one test thread

* Implement tests for staking

* More tests

* Remove unhelpful println!

* Revert changes in contract tests

* Reformat

* Remove spurious diff

* More tests

Co-authored-by: Demi M. Obenour <demiobenour@gmail.com>
Co-authored-by: David Palm <dvdplm@gmail.com>
Co-authored-by: Andrew Jones <ascjones@gmail.com>
2020-09-21 13:15:46 -04:00
Liu-Cheng Xu 0c7454dfcd Display RawEvent data in hex (#168)
So that printing the RawEvent won't comsume more than the whole screen.
2020-09-21 10:32:41 +01:00
Liu-Cheng Xu e843bd670f Add SudoUncheckedWeightCall (#167)
* Add SudoUncheckedWeightCall

* Add test_sudo_unchecked_weight()

* Fix CI

Use nightly fmt.

* .
2020-09-21 09:22:57 +01:00