• Alexander Theißen's avatar
    contracts: Add `salt` argument to contract instantiation (#7482) · c3ca78fa
    Alexander Theißen authored
    
    
    * pallet-contracts: Fix seal_restore_to to output proper module errors
    
    Those errors where part of the decl_error for some time but where
    never actually returned. This allows proper debugging of failed
    restorations. Previously, any error did return the misleading
    `ContractTrapped`.
    
    * Bind UncheckedFrom<T::Hash> + AsRef<[u8]> everywhere
    
    This allows us to make assumptions about the AccoutId
    that are necessary for testing and in order to benchmark
    the module properly.
    
    This also groups free standing functions into inherent functions
    in order to minimize the places where the new bounds need to
    be specified.
    
    * Rework contract address determination
    
    * Do not allow override by runtime author
    * Instantiate gained a new parameter "salt"
    
    This change is done now in expecation of the upcoming code rent
    which needs to change the instantiation dispatchable and
    host function anyways.
    
    The situation in where we have only something that is like CREATE2
    makes it impossible for UIs to help the user to create an arbitrary
    amount of instantiations from the same code.
    
    With this change we have the same functionality as ethereum with
    a CREATE and CREATE2 instantation semantic.
    
    * Remove TrieIdGenerator
    
    The new trait bounds allows us to remove this workaround
    from the configuration trait.
    
    * Remove default parameters for config trait
    
    It should be solely the responsiblity to determine proper values for
    these parameter. As a matter of fact most runtime weren't using these
    values anyways.
    
    * Fix tests for new account id type
    
    Because of the new bounds on the trait tests can't get away by using
    u64 as accound id. Replacing the 8 byte value by a 32 byte value
    creates out quite a bit of code churn.
    
    * Fix benchmarks
    
    The benchmarks need adaption to the new instantiate semantics.
    
    * Fix compile errors caused by adding new trait bounds
    * Fix compile errors caused by renaming storage and rent functions
    * Adapt host functions and dispatchables to the new salt
    * Add tests for instantiate host functions (was not possible before)
    
    * Add benchmark results
    
    * Adapt to the new WeightInfo
    
    The new benchmarks add a new parameter for salt "s" to the instantiate weights
    that needs to be applied.
    
    * Fix deploying_wasm_contract_should_work integration test
    
    This test is adapted to use the new instantiate signature.
    
    * Break overlong line
    
    * Break more long lines
    
    Co-authored-by: default avatarParity Benchmarking Bot <[email protected]>
    c3ca78fa