• 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