1. Aug 22, 2022
    • Sasha Gryaznov's avatar
      [contracts] `define_env!` re-write as a proc macro (#11888) · c930cd0d
      Sasha Gryaznov authored
      * define_env proc macro basics + can_satisfy part ready
      
      * expand_impls part done
      
      * fix of the &FunctionType bug
      
      * pallet is compiled
      
      * updated host fn definition syntax
      
      * docs comments allowed to host fn definitions
      
      * all 53 host funcs re-defined by the new macro
      
      * unstable feat fix
      
      * cleanup
      
      * legacy mbe macros cleaned up
      
      * Added Env ident to macro attribute; all tests pass!
      
      * \#[v(..)] -> \#[version(..)]
      
      * some tiny corrections
      
      * save
      
      * builds with non-magic rt; tests fail
      
      * tests pass
      
      * refactored errors + added docs
      
      * merge err fixed
      
      * fixes on @ascjones review, all except moving away from `pub mod env` syntax
      
      * debug printing cleared
      
      * clippy fix
      c930cd0d
  2. Aug 20, 2022
  3. Aug 19, 2022
  4. Aug 18, 2022
    • Bastian Köcher's avatar
      Introduce trie level cache and remove state cache (#11407) · 73d9ae32
      Bastian Köcher authored
      * trie state cache
      
      * Also cache missing access on read.
      
      * fix comp
      
      * bis
      
      * fix
      
      * use has_lru
      
      * remove local storage cache on size 0.
      
      * No cache.
      
      * local cache only
      
      * trie cache and local cache
      
      * storage cache (with local)
      
      * trie cache no local cache
      
      * Add state access benchmark
      
      * Remove warnings etc
      
      * Add trie cache benchmark
      
      * No extra "clone" required
      
      * Change benchmark to use multiple blocks
      
      * Use patches
      
      * Integrate shitty implementation
      
      * More stuff
      
      * Revert "Merge branch 'master' into trie_state_cache"
      
      This reverts commit 947cd8e6d43fced10e21b76d5b92ffa57b57c318, reversing
      changes made to 29ff0364
      
      .
      
      * Improve benchmark
      
      * Adapt to latest changes
      
      * Adapt to changes in trie
      
      * Add a test that uses iterator
      
      * Start fixing it
      
      * Remove obsolete file
      
      * Make it compile
      
      * Start rewriting the trie node cache
      
      * More work on the cache
      
      * More docs and code etc
      
      * Make data cache an optional
      
      * Tests
      
      * Remove debug stuff
      
      * Recorder
      
      * Some docs and a simple test for the recorder
      
      * Compile fixes
      
      * Make it compile
      
      * More fixes
      
      * More fixes
      
      * Fix fix fix
      
      * Make sure cache and recorder work together for basic stuff
      
      * Test that data caching and recording works
      
      * Test `TrieDBMut` with caching
      
      * Try something
      
      * Fixes, fixes, fixes
      
      * Forward the recorder
      
      * Make it compile
      
      * Use recorder in more places
      
      * Switch to new `with_optional_recorder` fn
      
      * Refactor and cleanups
      
      * Move `ProvingBackend` tests
      
      * Simplify
      
      * Move over all functionality to the essence
      
      * Fix compilation
      
      * Implement estimate encoded size for StorageProof
      
      * Start using the `cache` everywhere
      
      * Use the cache everywhere
      
      * Fix compilation
      
      * Fix tests
      
      * Adds `TrieBackendBuilder` and enhances the tests
      
      * Ensure that recorder drain checks that values are found as expected
      
      * Switch over to `TrieBackendBuilder`
      
      * Start fixing the problem with child tries and recording
      
      * Fix recording of child tries
      
      * Make it compile
      
      * Overwrite `storage_hash` in `TrieBackend`
      
      * Add `storage_cache` to  the benchmarks
      
      * Fix `no_std` build
      
      * Speed up cache lookup
      
      * Extend the state access benchmark to also hash a runtime
      
      * Fix build
      
      * Fix compilation
      
      * Rewrite value cache
      
      * Add lru cache
      
      * Ensure that the cache lru works
      
      * Value cache should not be optional
      
      * Add support for keeping the shared node cache in its bounds
      
      * Make the cache configurable
      
      * Check that the cache respects the bounds
      
      * Adds a new test
      
      * Fixes
      
      * Docs and some renamings
      
      * More docs
      
      * Start using the new recorder
      
      * Fix more code
      
      * Take `self` argument
      
      * Remove warnings
      
      * Fix benchmark
      
      * Fix accounting
      
      * Rip off the state cache
      
      * Start fixing fallout after removing the state cache
      
      * Make it compile after trie changes
      
      * Fix test
      
      * Add some logging
      
      * Some docs
      
      * Some fixups and clean ups
      
      * Fix benchmark
      
      * Remove unneeded file
      
      * Use git for patching
      
      * Make CI happy
      
      * Update primitives/trie/Cargo.toml
      
      Co-authored-by: default avatarKoute <[email protected]>
      
      * Update primitives/state-machine/src/trie_backend.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * Introduce new `AsTrieBackend` trait
      
      * Make the LocalTrieCache not clonable
      
      * Make it work in no_std and add docs
      
      * Remove duplicate dependency
      
      * Switch to ahash for better performance
      
      * Speedup value cache merge
      
      * Output errors on underflow
      
      * Ensure the internal LRU map doesn't grow too much
      
      * Use const fn to calculate the value cache element size
      
      * Remove cache configuration
      
      * Fix
      
      * Clear the cache in between for more testing
      
      * Try to come up with a failing test case
      
      * Make the test fail
      
      * Fix the child trie recording
      
      * Make everything compile after the changes to trie
      
      * Adapt to latest trie-db changes
      
      * Fix on stable
      
      * Update primitives/trie/src/cache.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * Fix wrong merge
      
      * Docs
      
      * Fix warnings
      
      * Cargo.lock
      
      * Bump pin-project
      
      * Fix warnings
      
      * Switch to released crate version
      
      * More fixes
      
      * Make clippy and rustdocs happy
      
      * More clippy
      
      * Print error when using deprecated `--state-cache-size`
      
      * 🤦
      
      
      
      * Fixes
      
      * Fix storage_hash linkings
      
      * Update client/rpc/src/dev/mod.rs
      
      Co-authored-by: default avatarArkadiy Paronyan <[email protected]>
      
      * Review feedback
      
      * encode bound
      
      * Rework the shared value cache
      
      Instead of using a `u64` to represent the key we now use an `Arc<[u8]>`. This arc is also stored in
      some extra `HashSet`. We store the key are in an extra `HashSet` to de-duplicate the keys accross
      different storage roots. When the latest key usage is dropped in the lru, we also remove the key
      from the `HashSet`.
      
      * Improve of the cache by merging the old and new solution
      
      * FMT
      
      * Please stop coming back all the time :crying:
      
      * Update primitives/trie/src/cache/shared_cache.rs
      
      Co-authored-by: default avatarArkadiy Paronyan <[email protected]>
      
      * Fixes
      
      * Make clippy happy
      
      * Ensure we don't deadlock
      
      * Only use one lock to simplify the code
      
      * Do not depend on `Hasher`
      
      * Fix tests
      
      * FMT
      
      * Clippy 🤦
      
      
      
      Co-authored-by: default avatarcheme <[email protected]>
      Co-authored-by: default avatarKoute <[email protected]>
      Co-authored-by: default avatarArkadiy Paronyan <[email protected]>
      73d9ae32
    • Doordashcon's avatar
      Replace `T::AccountId` with `<T::Lookup as StaticLookup>::Source` (#11670) · d46f6f0d
      Doordashcon authored
      
      
      * initial
      
      * update
      
      * update
      
      * update
      
      * cargo fmt
      
      * update
      
      * update benchmarks
      
      * AccountIdLookupOf<T>
      
      * cargo fmt
      
      * fix conflits
      
      * cargo fmt
      
      * update
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      d46f6f0d
  5. Aug 17, 2022
  6. Aug 16, 2022
  7. Aug 15, 2022
  8. Aug 14, 2022
  9. Aug 13, 2022
    • Shawn Tabrizi's avatar
      Add Benchmarking Instance to Pallets (#12026) · e5ed764d
      Shawn Tabrizi authored
      * benchmark instance
      
      * add benchmark instance to conviction voting
      
      * instance on bags list
      
      * fmt
      e5ed764d
    • Shawn Tabrizi's avatar
      Fix Gov V2 Benchmarks (#12022) · 2950340e
      Shawn Tabrizi authored
      * better benchmark log
      
      * Update lib.rs
      
      * fix gov2 benchmarks
      
      * saturating math + fmt
      
      * add comment
      2950340e
    • Tsvetomir Dimitrov's avatar
      Runtime API versioning (#11779) · 2bff2f84
      Tsvetomir Dimitrov authored
      * Runtime API versioning
      
      Related to issue #11577
      
      Add support for multiple versions of a Runtime API. The purpose is to
      have one main version of the API, which is considered stable and
      multiple unstable (aka staging) ones.
      
      How it works
      ===========
      Some methods of the API trait can be tagged with `#[api_version(N)]`
      attribute where N is version number bigger than the main one. Let's call
      them **staging methods** for brevity.
      
      The implementor of the API decides which version to implement.
      
      Example (from https://github.com/paritytech/substrate/issues/11577#issuecomment-1145347025
      
      ):
      
      ```
      decl_runtime_apis! {
          #{api_version(10)]
          trait Test {
               fn something() -> Vec<u8>;
               #[api_version(11)]
               fn new_cool_function() -> u32;
          }
      }
      ```
      
      ```
      impl_runtime_apis! {
          #[api_version(11)]
          impl Test for Runtime {
               fn something() -> Vec<u8> { vec![1, 2, 3] }
      
               fn new_cool_function() -> u32 {
                   10
               }
          }
      }
      ```
      
      Version safety checks (currently not implemented)
      =================================================
      By default in the API trait all staging methods has got default
      implementation calling `unimplemented!()`. This is a problem because if
      the developer wants to implement version 11 in the example above and
      forgets to add `fn new_cool_function()` in `impl_runtime_apis!` the
      runtime will crash when the function is executed.
      
      Ideally a compilation error should be generated in such cases.
      
      TODOs
      =====
      
      Things not working well at the moment:
      [ ] Version safety check
      [ ] Integration tests of `primitives/api` are messed up a bit. More
      specifically `primitives/api/test/tests/decl_and_impl.rs`
      [ ] Integration test covering the new functionality.
      [ ] Some duplicated code
      
      * Update primitives/api/proc-macro/src/impl_runtime_apis.rs
      
      Code review feedback and formatting
      
      Co-authored-by: default avatarasynchronous rob <[email protected]>
      
      * Code review feedback
      
      Applying suggestions from @bkchr
      
      
      
      * fmt
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Code review feedback
      
      * dummy trait -> versioned trait
      
      * Implement only versioned traits (not compiling)
      
      * Remove native API calls (still not compiling)
      
      * fmt
      
      * Fix compilation
      
      * Comments
      
      * Remove unused code
      
      * Remove native runtime tests
      
      * Remove unused code
      
      * Fix UI tests
      
      * Code review feedback
      
      * Code review feedback
      
      * attribute_names -> common
      
      * Rework `append_api_version`
      
      * Code review feedback
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Code review feedback
      
      * Code review feedback
      
      * Code review feedback
      
      * Use type alias for the default trait - doesn't compile
      
      * Fixes
      
      * Better error for `method_api_ver < trait_api_version`
      
      * fmt
      
      * Rework how we call runtime functions
      
      * Update UI tests
      
      * Fix warnings
      
      * Fix doctests
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Fix formatting and small compilation errors
      
      * Update primitives/api/proc-macro/src/impl_runtime_apis.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      Co-authored-by: default avatarasynchronous rob <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      2bff2f84
  10. Aug 12, 2022
  11. Aug 11, 2022
  12. Aug 10, 2022
  13. Aug 09, 2022
    • Nazar Mokrynskyi's avatar
      Network sync refactoring (part 6) (#11940) · a685582b
      Nazar Mokrynskyi authored
      * Extract `NetworkKVProvider` trait in `sc-authority-discovery` and remove unnecessary dependency
      
      * Extract `NetworkSyncForkRequest` trait in `sc-finality-grandpa`
      
      * Relax requirements on `SyncOracle` trait, remove extra native methods from `NetworkService` that are already provided by trait impls
      
      * Move `NetworkSigner` trait from `sc-authority-discovery` into `sc-network-common` and de-duplicate methods on `NetworkService`
      
      * Move `NetworkKVProvider` trait from `sc-authority-discovery` into `sc-network-common` and de-duplicate methods on `NetworkService`
      
      * Minimize `sc-authority-discovery` dependency on `sc-network`
      
      * Move `NetworkSyncForkRequest` trait from `sc-finality-grandpa` to `sc-network-common` and de-duplicate methods in `NetworkService`
      
      * Extract `NetworkStatusProvider` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkPeers` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkEventStream` trait and de-duplicate methods on `NetworkService`
      
      * Move more methods from `NetworkService` into `NetworkPeers` trait
      
      * Move `NetworkStateInfo` trait into `sc-network-common`
      
      * Extract `NetworkNotification` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkRequest` trait and de-duplicate methods on `NetworkService`
      
      * Remove `NetworkService::local_peer_id()`, it is already provided by `NetworkStateInfo` impl
      
      * Extract `NetworkTransaction` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkBlock` trait and de-duplicate methods on `NetworkService`
      
      * Remove dependencies on `NetworkService` from most of the methods of `sc-service`
      
      * Address simple review comments
      a685582b
    • Koute's avatar
      Restore `wasmtime`'s default stack size limit to 1MB (#11993) · 9c56e79c
      Koute authored
      * Restore `wasmtime`'s default stack size limit to 1MB
      
      * Add extra comments
      
      * Enforce different maximum call depth in release mode
      
      * Split the call depth limit in two
      9c56e79c
  14. Aug 08, 2022