This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
seal: Remove ext_dispatch_call and ext_get_runtime_storage #6464
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Subset of: #6355
We only want to provide a basic set of APIs because once seal is deployed we cannot remove them. We can always add API later when necessary.
This PR therefore removes the following functions from the API because they either implement niche functionality or are difficult to reason about security wise:
ext_dispatch_call
This is difficult to audit as it can make arbitrary calls into the runtime. For that reason we do not want it to exist in our first deployment. In contrast to regular extrinsic dispatch we do not spawn a new runtime instance for each call executed in this way. This makes this more difficult to reason about. A good example where this is problematic would be a sequence of dispatches that DoS the memory allocator of the runtime.
ext_get_runtime_storage
Rather than having a blanket way of retrieving values from runtime storage we want runtime authors to make use of an upcoming mechanism called Chain Extensions. This will allow runtime authors to augment the API with their own functions that can supply contracts with information specific to their chain.