* seal: Do not allow transfers to bring total balance below subsistence deposit
This also reworks the rent system to take the total balance into account
when evaluating whether the account is above the subsistence deposit.
* Fix nits from review
* Fix typo
* Do not enforce subsistence when called from EOA
* Rename CallOrigin to TransactorKind
* Add debug asserts to check the invariants of a plain account transactor
* Fix typo
Co-authored-by: Sergei Shulepov <sergei@parity.io>
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Add a simple direct storage access module
* WIP
* Completely migrate to the transactional system.
* Format
* Fix wasm compilation
* Get rid of account_db module
* Make deposit event eager
* Make restore_to eager
* It almost compiles.
* Make it compile.
* Make the tests compile
* Get rid of account_db
* Drop the result.
* Backport the book keeping.
* Fix all remaining tests.
* Make it compile for std
* Remove a stale TODO marker
* Remove another stale TODO
* Add proof for `terminate`
* Remove a stale comment.
* Make restoration diverging.
* Remove redudnant trait: `ComputeDispatchFee`
* Update frame/contracts/src/exec.rs
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
* Introduce proper errors into the storage module.
* Adds comments for contract storage module.
* Inline `ExecutionContext::terminate`.
* Restore_to should not let sacrifice itself if the contract present on the stack.
* Inline `transfer` function
* Update doc - add "if succeeded"
* Adapt to TransactionOutcome changes
* Updates the docs for `ext_restore_to`
* Add a proper assert.
* Update frame/contracts/src/wasm/runtime.rs
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Alexander Theißen <alexander.theissen@parity.io>
* Don't store the storage size offset in the contract itself.
* Clean the AccountDb code a bit
* Use `storage_size: 0` when creating AliveContractInfo
* Count empty storage items.
* Update frame/contracts/src/account_db.rs
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
* Use more clear wording.
Co-authored-by: Alexander Theißen <athei@users.noreply.github.com>
* Change the order of decrement and increment for storage size
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
Co-authored-by: Alexander Theißen <athei@users.noreply.github.com>
* Small follow-up docs improvements in rent module
* Update frame/contracts/src/rent.rs
Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>
* Use a shorter version of the sentence
Co-authored-by: thiolliere <gui.thiolliere@gmail.com>
* contracts: during execution -> contract trapped during execution
This message confused many people so we are improving it to make clear what happened.
* contracts: rename Event::Contract -> Event::ContractExecution
* contracts: fix tests after ContractExecution renaming
* contracts: Add Evicted and Restored events
* fix doc comment
* wrap to not go over (soft) 100 column line limit
* add event deposit for eventual eviction upon pay_rent
* contracts: adjust tests for the new events
* emit Evicted event immediately and add tombstone flag bool
* In progress, runtime io must switch to future proof root +
child_specific (unique id) + u32 type.
* Switch interface, sr-io seems ok, rpc could use similar interface to
sr-io, genesis json broken if there is child trie in existing encoding
genesis.
* test from previous implementation.
* fix proving test.
* Restore Keyspacedb from other branch, only apply to child trie.
* Removing unneeded child_info from child root (child info are stored
if things changed, otherwhise the root does not change).
* Switch rpc to use same format as ext: more future proof.
* use root from child info for trie backend essence.
* Breaking long lines.
* Update doc and clean pr a bit.
* fix error type
* Restore removed doc on merge and update sr-io doc.
* Switch child storage api to use directly unique id, if managed id
where to be put in place, the api will change at this time.
* Clean deprecated host interface from child.
* Removing assertion on child info (can fail depending on root
memoization).
* merging child info in the overlay when possible.
* child iteration by prefix using child_info.
* Using ChainInfo in frame support. ChainInfo gets redesign to avoid
buffers allocation on every calls.
* Add length of root to the data of child info.
* comments
* Encode compact.
* Remove child info with root.
* Fix try_update condition.
* Comment Ext child root caching.
* Replace tuples by struct with field
* remove StorageTuple alias.
* Fix doc tests, and remove StorageOverlay and ChildStorageOverlay
aliases.
* Adding script for rename, could be applicable for nodes on top of it, too
* add stderr and gitlab ci features
* apply script
* fix now minor details in expected stderr
* Update the Cargo.lock
* fix name: sc-transaction -> sc-tracing
* fix rename in script, too