1. May 03, 2024
  2. May 02, 2024
  3. Apr 29, 2024
  4. Apr 26, 2024
  5. Apr 25, 2024
    • Svyatoslav Nikolsky's avatar
      Add option to only relay free headers to substrate-relay (#2884) · 2573d65e
      Svyatoslav Nikolsky authored
      * added FreeHeadersInterval to pallet-bridge-grandpa configuration
      
      * added is_free_execution_expected parameter to the submit_finality_proof_ex + check it from the transaction extension
      
      * move transaction extensions to a separate folder
      
      * move grandpa call result check from RefundTransactionExtensionAdapter to RefundBridgedGrandpaMessages
      
      * added RefundBridgedMessages to refund and bump priority of standalone messages transactions
      
      * check_obsolete_submit_finality_proof may now boost transaction priority (this is not used yet - see next commit)
      
      * added CheckAndBoostBridgeGrandpaTransactions that checks whether bridge GRANDPA transactions are obsolete and, if not, it may apply priority boost to
      
      * relayer may be slashed to explicit account
      
      * slash registered relayer if it has submitted failed GRANDPA transaction
      
      * allow accepting some parachain headers for free
      
      * added FreeParachainUpdateForFreeRelayHeader
      
      * fix benchmarks compilation
      
      * added WeightInfoExt for pallet-bridge-grandpa to include extra wight coming from CheckAndBoostBridgeGrandpaTransactions
      
      * added free_headers_interval to the (runtime) FinalityApi of the chain
      
      * added --only-free-headers CLI parameter (not used yet) to finality and complex relay
      
      * actually use HeadersToRelay::Free in finality-relay
      
      * actually support only-free-headers mode in parachains relay
      
      * removed inactual comment (free_source_headers_interval is cached at relay level)
      
      * added comment re free-headers-only support in on-demand parachains relay
      
      * added --only-free-headers support to standalone parachains relay
      
      * fixed dependency in runtime-codegen
      
      * update RBH and WBH runtimes + ask for free execution if we are running in HeadersToRelay::Free mode
      
      * add missing standalone RBH<>WBH finality relay
      
      * also refund for submitting initial parachain head
      
      * make FreeHeadersRemaining an Option => we know that when we are outside of tx body, it is `None` and otherwise it is `Some`
      
      * add some traces to relay
      
      * add more traces to pallets
      
      * check for reorgs in signed ext for parachains module
      
      * fix benchmarks compilation
      
      * free interval instead of fixed free headers
      
      * updated relays for new free headers criteria
      
      * fixed trace
      
      * CannotAcceptMoreFreeHeaders -> FreeHeadersLimitExceded
      
      * additional_call_result_check -> check_call_result_ex
      
      * is_granda_call_succeeded -> is_grandpa_call_successful
      
      * move tx priority boost from check_obsolete_submit_finality_proof to extension
      
      * lost changes
      
      * dec counter when importing new para header
      
      * limit maximal "free" parachain head size
      
      * added grandpa_and_parachain_pallets_share_free_headers_counter test
      
      * with free intervals (instead of fixed free headers) we need to check `improved_by` from extension code
      
      * fix test name
      
      * added CheckAndBoostBridgeParachainsTransactions to boost parachain transactions priority
      
      * check parachain id in CheckAndBoostBridgeParachainsTransactions
      
      * use submit_parachain_head_call_ex in tests
      
      * removed commented code
      
      * changed condition for consistency
      
      * include overweight from runtime signed extensions into submit_parachain_heads call weight
      
      * fixed comment
      
      * removed obsolete code comment
      
      * added important comment + test
      
      * some fixes
      
      * fix no-std compile
      
      * again fix lost change
      
      * use submit_parachain_heads_ex for Rococo<>Westend bridge
      
      * fix for mandatory + interval check in ext
      
      * deleted moved files (merge conflict)
      
      * update polkadot-sdk refs + fix compilation
      
      * removed another moved file
      
      * bump chain versions
      
      * bump relayer version
      
      * lock up
      v1.5.0
      2573d65e
  6. Apr 23, 2024
  7. Apr 22, 2024
  8. Apr 20, 2024
  9. Apr 19, 2024
  10. Apr 18, 2024
  11. Apr 15, 2024
  12. Apr 11, 2024
  13. Apr 10, 2024
  14. Apr 09, 2024
    • Serban Iorga's avatar
      Backport changes from polakdot-sdk (#2920) · cfe1e7de
      Serban Iorga authored
      * Migrate fee payment from `Currency` to `fungible` (#2292)
      
      Part of https://github.com/paritytech/polkadot-sdk/issues/226
      Related https://github.com/paritytech/polkadot-sdk/issues/1833
      
      - Deprecate `CurrencyAdapter` and introduce `FungibleAdapter`
      - Deprecate `ToStakingPot` and replace usage with `ResolveTo`
      - Required creating a new `StakingPotAccountId` struct that implements
      `TypedGet` for the staking pot account ID
      - Update parachain common utils `DealWithFees`, `ToAuthor` and
      `AssetsToBlockAuthor` implementations to use `fungible`
      - Update runtime XCM Weight Traders to use `ResolveTo` instead of
      `ToStakingPot`
      - Update runtime Transaction Payment pallets to use `FungibleAdapter`
      instead of `CurrencyAdapter`
      - [x] Blocked by https://github.com/paritytech/polkadot-sdk/pull/1296
      
      ,
      needs the `Unbalanced::decrease_balance` fix
      
      (cherry picked from commit bda4e75ac49786a7246531cf729b25c208cd38e6)
      
      * Upgrade `trie-db` from `0.28.0` to `0.29.0` (#3982)
      
      - What does this PR do?
      1. Upgrades `trie-db`'s version to the latest release. This release
      includes, among others, an implementation of `DoubleEndedIterator` for
      the `TrieDB` struct, allowing to iterate both backwards and forwards
      within the leaves of a trie.
      2. Upgrades `trie-bench` to `0.39.0` for compatibility.
      3. Upgrades `criterion` to `0.5.1` for compatibility.
      - Why are these changes needed?
      Besides keeping up with the upgrade of `trie-db`, this specifically adds
      the functionality of iterating back on the leafs of a trie, with
      `sp-trie`. In a project we're currently working on, this comes very
      handy to verify a Merkle proof that is the response to a challenge. The
      challenge is a random hash that (most likely) will not be an existing
      leaf in the trie. So the challenged user, has to provide a Merkle proof
      of the previous and next existing leafs in the trie, that surround the
      random challenged hash.
      
      Without having DoubleEnded iterators, we're forced to iterate until we
      find the first existing leaf, like so:
      ```rust
              // ************* VERIFIER (RUNTIME) *************
              // Verify proof. This generates a partial trie based on the proof and
              // checks that the root hash matches the `expected_root`.
              let (memdb, root) = proof.to_memory_db(Some(&root)).unwrap();
              let trie = TrieDBBuilder::<LayoutV1<RefHasher>>::new(&memdb, &root).build();
      
              // Print all leaf node keys and values.
              println!("\nPrinting leaf nodes of partial tree...");
              for key in trie.key_iter().unwrap() {
                  if key.is_ok() {
                      println!("Leaf node key: {:?}", key.clone().unwrap());
      
                      let val = trie.get(&key.unwrap());
      
                      if val.is_ok() {
                          println!("Leaf node value: {:?}", val.unwrap());
                      } else {
                          println!("Leaf node value: None");
                      }
                  }
              }
      
              println!("RECONSTRUCTED TRIE {:#?}", trie);
      
              // Create an iterator over the leaf nodes.
              let mut iter = trie.iter().unwrap();
      
              // First element with a value should be the previous existing leaf to the challenged hash.
              let mut prev_key = None;
              for element in &mut iter {
                  if element.is_ok() {
                      let (key, _) = element.unwrap();
                      prev_key = Some(key);
                      break;
                  }
              }
              assert!(prev_key.is_some());
      
              // Since hashes are `Vec<u8>` ordered in big-endian, we can compare them directly.
              assert!(prev_key.unwrap() <= challenge_hash.to_vec());
      
              // The next element should exist (meaning there is no other existing leaf between the
              // previous and next leaf) and it should be greater than the challenged hash.
              let next_key = iter.next().unwrap().unwrap().0;
              assert!(next_key >= challenge_hash.to_vec());
      ```
      
      With DoubleEnded iterators, we can avoid that, like this:
      ```rust
              // ************* VERIFIER (RUNTIME) *************
              // Verify proof. This generates a partial trie based on the proof and
              // checks that the root hash matches the `expected_root`.
              let (memdb, root) = proof.to_memory_db(Some(&root)).unwrap();
              let trie = TrieDBBuilder::<LayoutV1<RefHasher>>::new(&memdb, &root).build();
      
              // Print all leaf node keys and values.
              println!("\nPrinting leaf nodes of partial tree...");
              for key in trie.key_iter().unwrap() {
                  if key.is_ok() {
                      println!("Leaf node key: {:?}", key.clone().unwrap());
      
                      let val = trie.get(&key.unwrap());
      
                      if val.is_ok() {
                          println!("Leaf node value: {:?}", val.unwrap());
                      } else {
                          println!("Leaf node value: None");
                      }
                  }
              }
      
              // println!("RECONSTRUCTED TRIE {:#?}", trie);
              println!("\nChallenged key: {:?}", challenge_hash);
      
              // Create an iterator over the leaf nodes.
              let mut double_ended_iter = trie.into_double_ended_iter().unwrap();
      
              // First element with a value should be the previous existing leaf to the challenged hash.
              double_ended_iter.seek(&challenge_hash.to_vec()).unwrap();
              let next_key = double_ended_iter.next_back().unwrap().unwrap().0;
              let prev_key = double_ended_iter.next_back().unwrap().unwrap().0;
      
              // Since hashes are `Vec<u8>` ordered in big-endian, we can compare them directly.
              println!("Prev key: {:?}", prev_key);
              assert!(prev_key <= challenge_hash.to_vec());
      
              println!("Next key: {:?}", next_key);
              assert!(next_key >= challenge_hash.to_vec());
      ```
      - How were these changes implemented and what do they affect?
      All that is needed for this functionality to be exposed is changing the
      version number of `trie-db` in all the `Cargo.toml`s applicable, and
      re-exporting some additional structs from `trie-db` in `sp-trie`.
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      (cherry picked from commit 4e73c0fcd37e4e8c14aeb83b5c9e680981e16079)
      
      * Update polkadot-sdk refs
      
      * Fix Cargo.lock
      
      ---------
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      Co-authored-by: default avatarFacundo Farall <[email protected]>
      cfe1e7de
  15. Apr 02, 2024
  16. Apr 01, 2024
  17. Mar 27, 2024
    • Serban Iorga's avatar
      Fix polkadot-sdk CI failures (#2901) · 95660136
      Serban Iorga authored
      * taplo
      
      * markdown
      
      * publish = false
      
      * feature propagation
      95660136
    • Serban Iorga's avatar
      Leftover (#2900) · 1e4fd28e
      Serban Iorga authored
      1e4fd28e
    • Serban Iorga's avatar
      Backport changes from polkadot-sdk (#2899) · a7a47eae
      Serban Iorga authored
      
      
      * Fix spelling mistakes across the whole repository (#3808)
      
      **Update:** Pushed additional changes based on the review comments.
      
      **This pull request fixes various spelling mistakes in this
      repository.**
      
      Most of the changes are contained in the first **3** commits:
      
      - `Fix spelling mistakes in comments and docs`
      
      - `Fix spelling mistakes in test names`
      
      - `Fix spelling mistakes in error messages, panic messages, logs and
      tracing`
      
      Other source code spelling mistakes are separated into individual
      commits for easier reviewing:
      
      - `Fix the spelling of 'authority'`
      
      - `Fix the spelling of 'REASONABLE_HEADERS_IN_JUSTIFICATION_ANCESTRY'`
      
      - `Fix the spelling of 'prev_enqueud_messages'`
      
      - `Fix the spelling of 'endpoint'`
      
      - `Fix the spelling of 'children'`
      
      - `Fix the spelling of 'PenpalSiblingSovereignAccount'`
      
      - `Fix the spelling of 'PenpalSudoAccount'`
      
      - `Fix the spelling of 'insufficient'`
      
      - `Fix the spelling of 'PalletXcmExtrinsicsBenchmark'`
      
      - `Fix the spelling of 'subtracted'`
      
      - `Fix the spelling of 'CandidatePendingAvailability'`
      
      - `Fix the spelling of 'exclusive'`
      
      - `Fix the spelling of 'until'`
      
      - `Fix the spelling of 'discriminator'`
      
      - `Fix the spelling of 'nonexistent'`
      
      - `Fix the spelling of 'subsystem'`
      
      - `Fix the spelling of 'indices'`
      
      - `Fix the spelling of 'committed'`
      
      - `Fix the spelling of 'topology'`
      
      - `Fix the spelling of 'response'`
      
      - `Fix the spelling of 'beneficiary'`
      
      - `Fix the spelling of 'formatted'`
      
      - `Fix the spelling of 'UNKNOWN_PROOF_REQUEST'`
      
      - `Fix the spelling of 'succeeded'`
      
      - `Fix the spelling of 'reopened'`
      
      - `Fix the spelling of 'proposer'`
      
      - `Fix the spelling of 'InstantiationNonce'`
      
      - `Fix the spelling of 'depositor'`
      
      - `Fix the spelling of 'expiration'`
      
      - `Fix the spelling of 'phantom'`
      
      - `Fix the spelling of 'AggregatedKeyValue'`
      
      - `Fix the spelling of 'randomness'`
      
      - `Fix the spelling of 'defendant'`
      
      - `Fix the spelling of 'AquaticMammal'`
      
      - `Fix the spelling of 'transactions'`
      
      - `Fix the spelling of 'PassingTracingSubscriber'`
      
      - `Fix the spelling of 'TxSignaturePayload'`
      
      - `Fix the spelling of 'versioning'`
      
      - `Fix the spelling of 'descendant'`
      
      - `Fix the spelling of 'overridden'`
      
      - `Fix the spelling of 'network'`
      
      Let me know if this structure is adequate.
      
      **Note:** The usage of the words `Merkle`, `Merkelize`, `Merklization`,
      `Merkelization`, `Merkleization`, is somewhat inconsistent but I left it
      as it is.
      
      ~~**Note:** In some places the term `Receival` is used to refer to
      message reception, IMO `Reception` is the correct word here, but I left
      it as it is.~~
      
      ~~**Note:** In some places the term `Overlayed` is used instead of the
      more acceptable version `Overlaid` but I also left it as it is.~~
      
      ~~**Note:** In some places the term `Applyable` is used instead of the
      correct version `Applicable` but I also left it as it is.~~
      
      **Note:** Some usage of British vs American english e.g. `judgement` vs
      `judgment`, `initialise` vs `initialize`, `optimise` vs `optimize` etc.
      are both present in different places, but I suppose that's
      understandable given the number of contributors.
      
      ~~**Note:** There is a spelling mistake in `.github/CODEOWNERS` but it
      triggers errors in CI when I make changes to it, so I left it as it
      is.~~
      
      (cherry picked from commit 002d9260f9a0f844f87eefd0abce8bd95aae351b)
      
      * Fix
      
      ---------
      
      Co-authored-by: default avatarDcompoze <[email protected]>
      a7a47eae
    • Serban Iorga's avatar
  18. Mar 26, 2024
  19. Mar 25, 2024