- Mar 18, 2024
-
-
Squirrel authored
This PR removes sp-std crate from substrate/primitives sub-directories. For now crates that have `pub use` of sp-std or export macros that would necessitate users of the macros to `extern crate alloc` have been excluded from this PR. There should be no breaking changes in this PR. --------- Co-authored-by: Koute <[email protected]>
-
- Feb 22, 2024
-
-
Adrian Catangiu authored
As part of BEEFY worker/voter initialization the task waits for certain chain and backend conditions to be fulfilled: - BEEFY consensus enabled on-chain & GRANDPA best finalized higher than on-chain BEEFY genesis block, - backend has synced headers for BEEFY mandatory blocks between best BEEFY and best GRANDPA. During this waiting time, any messages gossiped on the BEEFY topic for current chain get enqueued in the gossip engine, leading to RAM bloating and output warning/error messages when the wait time is non-negligible (like during a clean sync). This PR adds logic to pump the gossip engine while waiting for other things to make sure gossiped messages get consumed (practically discarded until worker is fully initialized). Also raises the warning threshold for enqueued messages from 10k to 100k. This is in line with the other gossip protocols on the node. Fixes https://github.com/paritytech/polkadot-sdk/issues/3390 --------- Signed-off-by: Adrian Catangiu <[email protected]>
-
- Feb 08, 2024
-
-
drskalman authored
This is the significant step to make BEEFY client able to handle both ECDSA and (ECDSA, BLS) type signature. The idea is having BEEFY Client generic on crypto types makes migration to new types smoother. This makes the BEEFY Keystore generic over AuthorityId and extends its tests to cover the case when the AuthorityId is of type (ECDSA, BLS12-377) --------- Co-authored-by: Davide Galassi <[email protected]> Co-authored-by: Robert Hambrock <[email protected]>
-
- Jan 22, 2024
-
-
Davide Galassi authored
Step towards https://github.com/paritytech/polkadot-sdk/issues/1975 As reported https://github.com/paritytech/polkadot-sdk/issues/1975#issuecomment-1774534225 I'd like to encapsulate crypto related stuff in a dedicated folder. Currently all cryptographic primitive wrappers are all sparsed in `substrate/core` which contains "misc core" stuff. To simplify the process, as the first step with this PR I propose to move the cryptographic hashing there. The `substrate/crypto` folder was already created to contains `ec-utils` crate. Notes: - rename `sp-core-hashing` to `sp-crypto-hashing` - rename `sp-core-hashing-proc-macro` to `sp-crypto-hashing-proc-macro` - As the crates name is changed I took the freedom to restart fresh from version 0.1.0 for both crates --------- Co-authored-by: Robert Hambrock <[email protected]>
-
- Jan 06, 2024
-
-
Serban Iorga authored
Related to https://github.com/paritytech/polkadot-sdk/issues/2787 Adding BEEFY support to the kitchensink chain in order to be able to extend the current warp sync zombienet tests with BEEFY enabled
-
- Nov 23, 2023
-
-
Bastian Köcher authored
This moves the macro related re-exports to `__private` to make it more obvious for downstream users that they are using an internal api. --------- Co-authored-by: command-bot <>
-
- Nov 14, 2023
-
-
drskalman authored
BEEFY ECDSA signatures are on keccak has of the messages. As such we can not simply call `EcdsaBlsPair::verify(signature.as_inner_ref(), msg, self.as_inner_ref())` because that invokes ecdsa default verification which perfoms blake2 hash which we don't want. This bring up the second issue makes: This makes `sign` and `verify` function in `pair_crypto` useless, at least for BEEFY use case. Moreover, there is no obvious clean way to generate the signature given that pair_crypto does not exposes `sign_prehashed`. You could in theory query the keystore for the pair (could you?), invoke `to_raw` and re-generate each sub-pair and sign using each. But that sounds extremely anticlimactic and will be frow upon by auditors . So I appreciate any alternative suggestion. --------- Co-authored-by: Davide Galassi <[email protected]> Co-authored-by: Robert Hambrock <[email protected]>
-
- Oct 24, 2023
-
-
drskalman authored
Next step in process of making BEEFY being able to generate both ECDSA and BLS signature after #1705. It allows BEEFY to use a pair of ECDSA and BLS key as a AuthorityId. --------- Co-authored-by: Davide Galassi <[email protected]> Co-authored-by: Robert Hambrock <[email protected]>
-
- Aug 25, 2023
-
-
Adrian Catangiu authored
When detecting pallet-beefy consensus reset, just reinitialize the worker and continue without bringing down the task (and possibly the node). Signed-off-by: Adrian Catangiu <[email protected]>
-
- Aug 02, 2023
-
-
drskalman authored
* Merged BEEFY primitives with generic signature and keyset commitment support from old pull to current code * - Add bls-experimental feature to application-crypto and beefy primitives - Fix remaining crypto -> ecdsa_crypto - code build but not tests * Make beefy primitive tests compile * move bls related beefy primitives code and test behind bls-experimental flag * Make BEEFY clients complies with BEEFY API depending on AuthorityId * - Rename `BeefyAuthoritySet.root` → `BeefyAuthoritySet.keyset_commitment`. - Remove apk proof keyset_commitment from `BeefyAuthoritySet`. - Fix failing signed commitment and signature to witness test. - Make client compatible with BeefyAPI generic on AuthorityId. - `crypto` → `ecdsa_crypto` in BEEFY client and frame. * Commit Cargo lock remove ark-serialize from BEEFY primitives * Use Codec instead of Encode + Decode in primitives/consensus/beefy/src/lib.rs Co-authored-by: Davide Galassi <[email protected]> * - Make `BeefyApi` generic over Signature type. - Make new `BeeyApi` functinos also generic over AuthorityId and Signature * Unmake BeefyAPI generic over Signature. Recover Signature type from AuthId. * - dont use hex or hex-literal use array-bytes instead in beefy primitives and bls crypto. - CamelCase ECDSA and BLS everywhere. * Move the definition of BEEFY key type from `primitives/beefy` to `crypto.rs` according to new convention. * - Add bls377_generate_new to `sp-io` and `application_crypto::bls`. - Add `bls-experimental` to `sp-io` Does not compile because PassByCodec can not derive PassBy using customly implemented PassByIner. * Implement PassBy for `bls::Public` manually * fix Beefy `KEY_TYPE` in `frame/beefy` tests to come from `sp-core::key_types` enum * specify both generic for `hex2array_unchecked` in `sp-core/bls.rs` * Rename `crypto`→`ecdsa_crypto` in `primitives/consensus/beefy/src/test_utils.rs` docs * remove commented-out code in `primitives/consensus/beefy/src/commitment.rs` Co-authored-by: Davide Galassi <[email protected]> * Fix inconsistency in panic message in `primitives/io/src/lib.rs` Co-authored-by: Davide Galassi <[email protected]> * Remove redundant feature activation in `primitives/io/Cargo.toml` Co-authored-by: Davide Galassi <[email protected]> * - make `w3f-bls` a dev-dependancy only for beefy primitives. - clean up comments. Co-authored-by: Davide Galassi <[email protected]> * export BEEFY KEY_TYPE from primitives/consensus/beefy make `frame/consensus/beefy` in dependent of sp_crypto_app use consistent naming in the beefy primitive tests. * - implement `BeefyAuthorityId` for `bls_crypto::AuthorityId`. - implement `bls_verify_works` test for BEEFY `bls_crypto`. * Remove BEEFY `ecdsa_n_bls_crypto` for now for later re-introduction * Make commitment and witness BEEFY tests not use Keystore. * put `bls_beefy_verify_works` test under `bls-experimental` flag. * bump up Runtime `BeefyAPI` to version 3 due to introducing generic AuthorityId. * reuse code and encapsulate w3f-bls backend in sp-core as most as possible Co-authored-by: Davide Galassi <[email protected]> * Make comments in primities BEEFY `commitment.rs` and `witness.rs``tests convention conforming * Use master dep versions * Trivial change. Mostly to trigger CI * Apply suggestions from code review Co-authored-by: André Silva <[email protected]> * Fix Cargo.toml * Trigger CI with cumulus companion * Trigger CI after polkadot companion change --------- Co-authored-by: Davide Galassi <[email protected]> Co-authored-by: André Silva <[email protected]>
-
- May 31, 2023
-
-
Adrian Catangiu authored
`Hash` is no longer part of `pallet_mmr::Config`, but this code would still build because it assumes we're referring to underlying `<pallet_mmr::Config as frame_system::Config>::Hash` which is not what we want when using different hashing between `frame_system` and `pallet_mmr`. Disambiguate by using correct `pallet_mmr::Config::Hashing` type. Signed-off-by: acatangiu <[email protected]>
-
- May 17, 2023
-
-
Bigna Härdi authored
* add serde_full feature flag add serde_full to sp_runtime add space to toml add serde_full to application-crypto add serde_full to arithmetic fix arithmetic add serde full to beefy add serde full to consensus add serde_full to core add serdefull to finality grandpa add serde_full to several primitives crates make rpc no_std compatible add scale info to runtime make serializer no_std compatible add serde full to storage add full serde to version add serde full to weights add all serde_full features add . to comment add missing impl-serde fix no-std build fix build add full_crypto to serde_full serde_full also implements crypto full_serde does not work with full_crytpo. needs std no no_std serde impl possible also for crypto std is necessary no serde full for application crypto fix arithmetic fix tomls fix some things impl fmt for Signature add serialize to Public add impl_maybe_marker_serde_full fix sp-application-crypto toml add serde feature flag fix clippy fix toml grandpa fix grandpa rename if_std to if_serde keystore is not no_std compatible make keystore vrf no_std compatible fix nopos-elections fix rpc fix serializer fix test-primitives fix version add comment add serde full only import for format string remove all(serde_full and full_crypot) as serde_full enforces full_crypto make comment better readable even better comment clean up rpc toml clean up toml clean up serializer toml clean up storage toml fix std build update .lock fix sp-version move sp_std import test extern crate alloc replace sp_std with core add missing core sp_core: serde feature do not enforce full crypto application-crypto: serde feature do not enforce full crypto rename serde_full to serde add dep:serde and alloc to default feature add full_crypto and remove unnecessary debu/fmt impls for serde update comment remove obolsete change in display AccountId32 remove extra changes minimize diff revert keystore changes remove std from keystore remove full-crypto feature fix serde import fix comment fix feature = serde * rename serde_full to serde * move #[doc(hidden)] back * remove feature = full crypto require frm MultiSigner * reorder serde and scale_info import * fix bs58 missing alloc import in serde feature * add `from_string` to serde feature and add unimplemented * remove serde feature from fixed_point display * Remove serde/alloc Co-authored-by: Davide Galassi <[email protected]> * Update primitives/consensus/babe/Cargo.toml Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/arithmetic/src/fixed_point.rs Co-authored-by: Bastian Köcher <[email protected]> * revert `from_string`fixed impl back to std only * remove duplicate runtime string impl * use sp_std::alloc * remove no_std compatible rpc * remove no_std compatibility from serializer * rename mpl_maybe_marker_serde to std_or_serde * update .lock * add sp-std to executor * fix sp-std import * fix sp_std::format import * use crate import * add serde feature * Update primitives/core/src/lib.rs --------- Co-authored-by: Davide Galassi <[email protected]> Co-authored-by: Bastian Köcher <[email protected]>
-
- Apr 11, 2023
-
-
Alexandru Vasile authored
* impl_runtime_apis: Generate getters for `metadata_at` functions Signed-off-by: Alexandru Vasile <[email protected]> * runtime: Implement new `Metadata` runtime trait Signed-off-by: Alexandru Vasile <[email protected]> * runtime: Move `metadata_at` functions to construct_runtime macro Signed-off-by: Alexandru Vasile <[email protected]> * contruct_runtime: Use `OpaqueMetadata` from hidden imports Signed-off-by: Alexandru Vasile <[email protected]> * Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Add tests for the new API Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Helper to extract documentation literals Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Helper to filter all `cfg` attributes Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Generate documentation getters for metadata Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Avoid trait collision with snake case methods Signed-off-by: Alexandru Vasile <[email protected]> * proc-macro/tests: Check doc getters Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Generate metadata for runtime methods Signed-off-by: Alexandru Vasile <[email protected]> * primitives/api: Export scale-info and frame-metadata Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Generate metadata for runtime traits Signed-off-by: Alexandru Vasile <[email protected]> * frame/runtime: Expose metadata v15 internally Signed-off-by: Alexandru Vasile <[email protected]> * test: Use metadata v15 from `lexnv/md_v15_test` branch Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Generate crate access one module up Signed-off-by: Alexandru Vasile <[email protected]> * frame: Implement `runtime_metadata` for mocks and tests Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Fix warnings Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Add no-docs flag Signed-off-by: Alexandru Vasile <[email protected]> * frame: Adjust more tests Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Check runtime metadata correctness Signed-off-by: Alexandru Vasile <[email protected]> * frame/benchmarking: Adjust benchmarks Signed-off-by: Alexandru Vasile <[email protected]> * frame/benchmarks: Adjust more benchmarks Signed-off-by: Alexandru Vasile <[email protected]> * primitives/api: Fix clippy Signed-off-by: Alexandru Vasile <[email protected]> * primitives/proc-macro: Generate runtime metadata on the `decl_runtime_apis` Signed-off-by: Alexandru Vasile <[email protected]> * frame: Abuse Deref to resolve `runtime_metadata` Signed-off-by: Alexandru Vasile <[email protected]> * Revert "frame: Implement `runtime_metadata` for mocks and tests" This reverts commit b7f41aa189218589392a6e713ea9488e93c4db45. Revert "frame: Adjust more tests" This reverts commit 3cba5982c7f45552e76335e96c430aecbc42d8c6. Revert "frame/benchmarking: Adjust benchmarks" This reverts commit 60b382ada486c791ffceeb65da587e949b90ec5d. Signed-off-by: Alexandru Vasile <[email protected]> Revert "frame/benchmarks: Adjust more benchmarks" This reverts commit eb75c477179b1a27347a5554c5732ef26a00d7e8. * primitives/proc-macro: Remove unused imports and function Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Adjust runtime metadata test Signed-off-by: Alexandru Vasile <[email protected]> * primitives/tests: Remove doc getter test Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Enable `no-metadata-docs` feature from `sp-api` Signed-off-by: Alexandru Vasile <[email protected]> * primitives/tests: Add `TypeInfo` for test::extrinsic Signed-off-by: Alexandru Vasile <[email protected]> * primitives/api: Expose scale-info and frame-metadata Signed-off-by: Alexandru Vasile <[email protected]> * Update frame-metadata to include v15 Signed-off-by: Alexandru Vasile <[email protected]> * Fix merge conflicts Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata_ir: Add IR for runtime API metadata Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata_ir: Convert IR to V15 Signed-off-by: Alexandru Vasile <[email protected]> * primitives/api: Collect IR metadata for runtime API Signed-off-by: Alexandru Vasile <[email protected]> * primitives/api: Move `metadata_ir` from frame/support Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Adjust `metadata_versions` test Signed-off-by: Alexandru Vasile <[email protected]> * primitives/runtime_metadata: Exclude default type parameters from methods Signed-off-by: Alexandru Vasile <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/src/metadata_ir/types.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/src/metadata_ir/mod.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/utils.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * primitives: Fix build Signed-off-by: Alexandru Vasile <[email protected]> * primitives/metadata-ir: Move IR to dedicated crate Signed-off-by: Alexandru Vasile <[email protected]> * primitives: Reexport metadata-ir and frame-metadata Signed-off-by: Alexandru Vasile <[email protected]> * frame: Use apis field instead of runtime Signed-off-by: Alexandru Vasile <[email protected]> * Better documentation for the `Deref` abstraction Signed-off-by: Alexandru Vasile <[email protected]> * ui-tests: Check empty `impl_runtime_apis` Signed-off-by: Alexandru Vasile <[email protected]> * primitives: Remove unneeded bounds on generic params Signed-off-by: Alexandru Vasile <[email protected]> * primitives: Rename `collect_where_bounds` to `get_argument_type_param` Signed-off-by: Alexandru Vasile <[email protected]> * primitives: Generate crate access per fn call Signed-off-by: Alexandru Vasile <[email protected]> * Revert "primitives: Remove unneeded bounds on generic params" This reverts commit 5178e38cf21cfb481156eefd628d62989201d59a. * metadata-ir: Add no-std Signed-off-by: Alexandru Vasile <[email protected]> * primitives: Adjust where bounds Signed-off-by: Alexandru Vasile <[email protected]> * Change `frame-metadata` branch to "origin/main" Signed-off-by: Alexandru Vasile <[email protected]> * Update to `main` from origin Signed-off-by: Alexandru Vasile <[email protected]> * Update frame-metadata to crates.io v15.1 Signed-off-by: Alexandru Vasile <[email protected]> * Revert "ui-tests: Check empty `impl_runtime_apis`" This reverts commit cf78a7190ad9cba3c3bb2e78dc3d0dc382b2fea9. * Move ui test to primitives/ui Signed-off-by: Alexandru Vasile <[email protected]> * Update frame/support/test/tests/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/proc-macro/src/runtime_metadata.rs Co-authored-by: Bastian Köcher <[email protected]> * Test already covered by `empty_impl_runtime_apis_call.stderr` This reverts commit 3bafb294cbe9745569bf5e5a1a2e6b4a4c1aadc5. * Retriger CI Signed-off-by: Alexandru Vasile <[email protected]> * Import `TokenStream` as `TokenStream2` Signed-off-by: Alexandru Vasile <[email protected]> --------- Signed-off-by: Alexandru Vasile <[email protected]> Co-authored-by: parity-processbot <> Co-authored-by: Bastian Köcher <[email protected]>
-
- Mar 20, 2023
-
-
Davide Galassi authored
* Remove bloat about remote keystore * Update docs and remove unused 'KeystoreRef' trait * Use wherever possible, MemoryKeystore for testing * Remove unrequired fully qualified method syntax for Keystore
-
- Mar 17, 2023
-
-
Davide Galassi authored
* Remove 'supported_keys' 'sign_with_any' and 'sign_with_all' from keystore trait * Remove the aync keystore * Renaming: - SyncCryptoStore -> Keystore - SyncCryptoStorePtr -> KeystorePtr - KeyStore -> MemoryKeystore * Fix authority discovery worker and tests * Rename 'insert_unknown' to 'insert' * Remove leftover
-
- Mar 03, 2023
-
-
Robert Hambrock authored
-
- Feb 28, 2023
-
-
Davide Galassi authored
* Move beefy primitives to consensus dir * Move beefy gadget to client consensus folder * Rename beefy crates
-