Skip to content
  1. Jul 07, 2022
    • Adrian Catangiu's avatar
      pallet-mmr: handle forks without collisions in offchain storage (#11594) · 27b53822
      Adrian Catangiu authored
      
      
      * pallet-mmr: fix some typos
      
      * pallet-mmr: make the MMR resilient to chain forks
      
      * pallet-mmr: get hash for block that added node
      
      * beefy-mmr: add debug logging
      
      * add explanatory comment
      
      * account for block offset of pallet activation
      
      * add support for finding all nodes added by leaf
      
      * minor improvements
      
      * add helper to return all nodes added to mmr with a leaf append
      
      * simplify leaf_node_index_to_leaf_index
      
      summing the (shifted) differences in peak positions adds up to the (shifted) final position, so
      don't need to fold over positions.
      
      * dead fish: this also doesn't work
      
      The idea was to keep a rolling window of `(parent_hash, pos)` leaf
      entries in the offchain db, with the window matching the one
      that provides `block_num -> block_hash` mappings in `frame_system`.
      
      Once a leaf exits the window it would be "canonicalized" by switching
      its offchain db key from `(parent_hash, pos)` to simple `pos`.
      
      This doesn't work however because there's no way to get leaf contents
      from offchain db while in runtime context.. so no way to get+clear+set
      leaf to change its key in offchain db.
      
      Ideas:
      1. move the "canonicalization" logic to offchain worker
      2. enhance IndexingApi with "offchain::move(old_key, new_key)"
         This is weird, but correct, deterministic and safe AFAICT, so
         it could be exposed to runtime.
      
      * simplify rightmost_leaf_node_index_from_pos
      
      * minor fix
      
      * move leaf canonicalization to offchain worker
      
      * move storage related code to storage.rs
      
      * on offchain reads use canonic key for old leaves
      
      * fix offchain worker write using canon key
      
      * fix pallet-mmr tests
      
      * add documentation and fix logging
      
      * add offchain mmr canonicalization test
      
      * test canon + generate + verify
      
      * fix pallet-beefy-mmr tests
      
      * implement review suggestions
      
      * improve test
      
      * pallet-mmr: add offchain pruning of forks
      
      * pallet-mmr: improve offchain pruning
      
      Instead of keeping pruning map as single blob in offchain db,
      keep individual parent-hash lists with block-num identifier as part
      of the offchain key.
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * pallet-mmr: improve MMRStore<OffchainStorage>::get()
      
      Do the math and retrieve node using correct (canon or non-canon)
      offchain db key, instead of blindly looking in both canon and non-canon
      offchain db locations for each node.
      
      Still fallback on looking at both if for any reason it's not where
      expected.
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * pallet-mmr: storage: improve logs
      
      * fix tests: correctly persist overlay
      
      runtime indexing API works on overlay, whereas offchain context
      bypasses overlay, so for loops > canon-window, canon would fail.
      
      * pallet-mmr: fix numeric typo in test
      
      * add comment around LeafData requirements
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      Co-authored-by: default avatarRobert Hambrock <[email protected]>
      27b53822
    • Arkadiy Paronyan's avatar
  2. Jul 05, 2022
  3. Jun 30, 2022
  4. Jun 29, 2022
  5. Jun 28, 2022
    • Koute's avatar
      Prevent unsoundness in environments with broken `madvise(MADV_DONTNEED)` (#11722) · 3d89fa36
      Koute authored
      * Prevend unsoundness in environments with broken `madvise(MADV_DONTNEED)`
      
      * Add the `std` feature to `rustix` dependency
      
      Apparently not having this breaks compilation on non-nightly toolchains.
      
      * Autodetect the page size when checking whether `madvise` works
      
      * Only make sure that the madvice check doesn't return `Err`
      3d89fa36
  6. Jun 27, 2022
  7. Jun 24, 2022
  8. Jun 23, 2022
    • Vladimir Istyufeev's avatar
    • Sasha Gryaznov's avatar
      [contracts] Implement transparent hashing for contract storage (#11501) · 68ea2ab0
      Sasha Gryaznov authored
      
      
      * save
      
      * builds and old tests pass
      
      save:  temporary value dropped while borrowed
      
      save: finally builds
      
      test updated but still fails
      
      * type names enhanced
      
      * VarSizedKey bounded to new Config param
      
      * improved wasm runtime updated funcs
      
      * unstable-interface tests fixed
      
      * benchmarks fixed
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAlexander Theißen <[email protected]>
      
      * fixes on feedback
      
      * fixes on feedback applied + make it build
      
      * benchmarks build but fail (old)
      
      * "Original code too large"
      
      * seal_clear_storage bench fixed (code size workaround hack removal tbd)
      
      * bench_seal_clear_storage pass
      
      * bench_seal_take_storage ... ok
      
      * added new seal_set_storage + updated benchmarks
      
      * added new seal_get_storage + updated benchmarks
      
      * added new seal_contains_storage + updated benchmarks
      
      * added tests for _transparent exec functions
      
      * wasm test for clear_storage
      
      * wasm test for take_storage
      
      * wasm test for new set_storage
      
      * wasm test for new get_storage
      
      * wasm test for new contains_storage
      
      * CI fix
      
      * ci fix
      
      * ci fix
      
      * ci fix
      
      * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * fixes according to the review feedback
      
      * tests & benchmarks fixed
      
      * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * refactoring
      
      * fix to runtime api
      
      * ci fix
      
      * ctx.get_storage() factored out
      
      * ctx.contains_storage() factored out
      
      * number of batches reduced for transparent hashing storage benchmarks
      
      * contracts RPC & pallet::get_storage to use transparent hashing
      
      * node and rpc updated to use get_storage with VarSizedKey
      
      * refactored (more concize)
      
      * refactored contains_storage (DRYed)
      
      * refactored contains_storage (DRYed)
      
      * fix rpc
      
      * fmt fix
      
      * more fixes in rpc
      
      * rollback `Pallet:get_storage` to Vec<u8> and rpc and node parts related to it
      
      * added `KeyDecodingFailed` error
      
      * Revert weird "fmt fix"
      
      This reverts commit c582cfff4b5cb2c9929fd5e3b45519bb24aeb657.
      
      * node-executor basic test update
      
      * fix node-executor basic test
      
      * benchmarks fix
      
      * more benchmarks fix
      
      * FixedSizedKey is hidden from pub, VarSizedKey is exported as StorageKey
      
      * ci fix
      
      * set_storage benchmark fix
      
      * ci fix
      
      * ci fix
      
      * comments improved
      
      * new error code to rpc: KEY_DECODING_FAILED
      
      * Put `rusty-cachier` before PR merge into `master` for `cargo-check-benches` job
      
      * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * minor optimization
      
      Co-authored-by: default avatarAlexander Theißen <[email protected]>
      Co-authored-by: default avatarParity Bot <[email protected]>
      Co-authored-by: Vladimir Istyufeev's avatarVladimir Istyufeev <[email protected]>
      Co-authored-by: command-bot <>
      68ea2ab0
    • Doordashcon's avatar
      make pallet-tips & pallet-bounties instantiable (#11473) · 7d2ecc89
      Doordashcon authored
      
      
      * make pallet-tips & pallet-bounties instantiable
      
      * update test
      
      * add default instance
      
      * update
      
      * cargo fmt
      
      * update
      
      * update
      
      * update
      
      * update
      
      * fix merge
      
      * fix tests
      
      * bounties benchmarking instantiable
      
      * fix benchmarks
      
      * make tips benchmarks instantible
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      7d2ecc89
  9. Jun 22, 2022
  10. Jun 21, 2022
  11. Jun 20, 2022
  12. Jun 19, 2022
  13. Jun 18, 2022
  14. Jun 17, 2022
  15. Jun 16, 2022
  16. Jun 15, 2022
    • Georges's avatar
      combine iteratons and tolerance in sp-npos-elections API (#11498) · b71e1804
      Georges authored
      
      
      * Initial implementation of mms
      
      * Some more attempts at `mms`
      
      * Functioning `MMS` algorithm implementation.
      Adding some tests too
      
      * More tests and typos fixed.
      
      * Adding fuzzer for `mms`
      (but could not test it on Mac M1)
      
      * Missing imports
      
      * Fixing rustdoc
      
      * More accurate implementation of `mms`
      
      * Removing the fuzzer `mms` implementation
      
      * Implementing `NposSolver` for `MMS`
      had to add the `Clone` trait, maybe I could see if I can get rid of it.
      
      * Fixing rust docs by adding () to resolve ambiguity
      
      * Amending `unwrap` to `expect`
      removing unneeded `Clone` trait
      
      * Removing redundant `mms3.rs`
      
      * Implementing `BalancingConfig` and rustdoc changes
      
      * Implementing `weight` for `MMS`
      
      * Implementing `weight` for `MMS`
      
      * Fixing post merge
      
      * Initial implementation of mms
      
      * Some more attempts at `mms`
      
      * Functioning `MMS` algorithm implementation.
      Adding some tests too
      
      * More tests and typos fixed.
      
      * Adding fuzzer for `mms`
      (but could not test it on Mac M1)
      
      * Missing imports
      
      * Fixing rustdoc
      
      * More accurate implementation of `mms`
      
      * Removing the fuzzer `mms` implementation
      
      * Implementing `NposSolver` for `MMS`
      had to add the `Clone` trait, maybe I could see if I can get rid of it.
      
      * Amending `unwrap` to `expect`
      removing unneeded `Clone` trait
      
      * Fixing rust docs by adding () to resolve ambiguity
      
      * Removing redundant `mms3.rs`
      
      * Implementing `BalancingConfig` and rustdoc changes
      
      * Implementing `weight` for `MMS`
      
      * Implementing `weight` for `MMS`
      
      * Fixing post merge
      
      * Removing left over from rebase
      
      * Fixing tests
      
      * Removing unneeded import
      
      * Removing unneeded functions
      
      * Removing useless imports
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      b71e1804
    • Sebastian Kunert's avatar
      Remove `without_storage_info` from pallet `transaction-storage` (#11668) · 2248d191
      Sebastian Kunert authored
      * Introduce BoundedVec
      
      * Fix typos
      
      * Add comments to the bounds
      
      * Remove migration
      
      * Improve bound value access syntax
      2248d191
  17. Jun 14, 2022