• Alexander Theißen's avatar
    seal: Add automated weights for contract API calls (#7017) · 443725f0
    Alexander Theißen authored
    
    
    * seal: Add capability to put uninstrumented code (for benchmarks)
    
    Benchmarks should only measure the overhead of the API calls itself.
    For that reason we want to run them without instrumentation.
    
    * seal: Cap the the data length for deposited events
    
    Data used in events has storage implications for archive nodes.
    Those need to keep the events in storage forever. For that reason
    we want to limit the amount of storage that can be used inside events.
    
    * seal: Fix error reporting in the case out of bound sandbox access
    
    * seal: Refactor existing benchmarks
    
    * seal: Convert benchmark file to tabs
    
    * seal: Add benchmarks for functions called by contracts
    
    * seal: Create a default schedule from benchmark generated WeightInfo
    
    * seal: Make use of WeightInfo in extrinsic weight annotations
    
    * seal: Replace the old schedule by the benchmark generated one
    
    * Review: Fix copy paste typo in schedule construction
    
    * Review: Fix stale docs
    
    * Fix whitespace errors
    
    Co-authored-by: default avatarSergei Shulepov <[email protected]>
    
    * Review: Use checked_div in order to be more defensive
    
    * Review: Rename no_charge to already_charged
    
    * Review: Whitelist caller of extrinsics
    
    * Review: Remove trailing whitespace
    
    * Review: Remove confusing "self::" syntax
    
    * Review: Add docs for the benchmark prepration submodule
    
    * Review: Move code generation functions to own module
    
    * Review: Refactor and document benchmark helper functions
    
    * Remove additional empty line
    
    * Added missing comment on caller_funding
    
    * Update frame/contracts/src/benchmarking/code.rs
    
    Co-authored-by: default avatarSergei Shulepov <[email protected]>
    
    * Fix missing sp_std::prelude import in code.rs
    
    * cargo run --release --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark --chain dev --steps 50 --repeat 20 --extrinsic * --execution=wasm --wasm-execution=compiled --output ./bin/node/runtime/src/weights --header ./HEADER --pallet pallet_contracts --heap-pages 4096
    
    * Use weights from the benchmark machine for the substrate node
    
    * Remove prefixes from Schedule members
    
    * Data lengths in the WeightInfo Trait are specified in kilobytes
    
    * Rename ApiWeights to HostFunctionWeights
    
    Co-authored-by: default avatarSergei Shulepov <[email protected]>
    Co-authored-by: default avatarShawn Tabrizi <[email protected]>
    443725f0