• Alexander Theißen's avatar
    contracts: Add storage deposits (#10082) · 68634766
    Alexander Theißen authored
    
    
    * Frame no longer needs to be mutable (refactoring artifact)
    
    * Remove Contract/Tombstone deposit
    
    * Add StorageMeter
    
    * cargo fmt
    
    * Fix weight annotation
    
    * cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --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
    
    * Simplify keep check for contract accounts
    
    - Make sure that the "base deposit" for each contract >= ed
    - Remove now obsolete checks when sneding away free balance
    
    * Remove unused imports and functions
    
    * Rename storage_limit to storage_deposit_limit
    
    * cargo fmt
    
    * Fix typo
    
    Co-authored-by: default avatarMichael Müller <[email protected]>
    
    * Finish up rename of storage_limit
    
    * Fix rpc tests
    
    * Make use of `StorageDepositLimitTooHigh`
    
    * Add tests and fix bugs discovered by tests
    
    * Add storage migration
    
    * Don't use u128 in RPC
    
    * Fix weight of migration
    
    * Rename `endowment` to `value`
    
    * Fix bug where contract couldn't get funded by a storage deposit
    
    - Make sure that contract gets funded from deposits before value is transferred
    - Don't reserve value at origin because otherwise funding isn't possible
    	- Just transfer free balance and reserve it after the transfer
    - When refunding make sure that this refund can't dust the contract
    	- Can only happen after a runtime upgrade where costs where upped
    - Add more tests
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    
    * Remove unused `fn storage_meter`
    
    * Fix copy pasta doc error
    
    * Import `MaxEncodeLen` from codec
    
    * Beautify RPC trait bounds
    
    * Add re-instrument behaviour to dispatchable doc
    
    * Make sure a account won't be destroyed a refund after a slash
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    
    * Update `Storage::write` docs
    
    * Improve doc
    
    * Remove superflous conditional
    
    * Typos
    
    * Remove superflous clone (refactoring artifact)
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    
    Co-authored-by: default avatarParity Bot <[email protected]>
    Co-authored-by: default avatarMichael Müller <[email protected]>
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    68634766