mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 18:41:03 +00:00
seal: Fix and improve error reporting (#6773)
* seal: Rework ext_transfer, ext_instantiate, ext_call error handling * Deny calling plain accounts (must use transfer now) * Return proper module error rather than ad-hoc strings * Return the correct error codes from call,instantiate (documentation was wrong) * Make ext_transfer fallible again to make it consistent with ext_call * seal: Improve error messages on memory access failures * seal: Convert contract trapped to module error * seal: Add additional tests for transfer, call, instantiate These tests verify that those functions return the error types which are declared in its docs. * Make it more pronounced that to_execution_result handles trap_reason * Improve ReturnCode docs * Fix whitespace issues in wat files * Improve ReturnCode doc * Improve ErrorOrigin doc and variant naming * Improve docs on ExecResult and ExecError * Encode u32 sentinel value as hex * with_nested_context no longer accepts an Option for trie * Fix successful typo * Rename InvalidContractCalled to NotCallable
This commit is contained in:
committed by
GitHub
parent
0553dabe32
commit
6671d017d6
@@ -95,6 +95,7 @@ use crate::wasm::{WasmLoader, WasmVm};
|
||||
|
||||
pub use crate::gas::{Gas, GasMeter};
|
||||
pub use crate::exec::{ExecResult, ExecReturnValue};
|
||||
pub use crate::wasm::ReturnCode as RuntimeReturnCode;
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
use serde::{Serialize, Deserialize};
|
||||
@@ -420,9 +421,30 @@ decl_error! {
|
||||
/// the subsistence threshold. No transfer is allowed to do this in order to allow
|
||||
/// for a tombstone to be created. Use `ext_terminate` to remove a contract without
|
||||
/// leaving a tombstone behind.
|
||||
InsufficientBalance,
|
||||
BelowSubsistenceThreshold,
|
||||
/// The newly created contract is below the subsistence threshold after executing
|
||||
/// its contructor. No contracts are allowed to exist below that threshold.
|
||||
NewContractNotFunded,
|
||||
/// Performing the requested transfer failed for a reason originating in the
|
||||
/// chosen currency implementation of the runtime. Most probably the balance is
|
||||
/// too low or locks are placed on it.
|
||||
TransferFailed,
|
||||
/// Performing a call was denied because the calling depth reached the limit
|
||||
/// of what is specified in the schedule.
|
||||
MaxCallDepthReached,
|
||||
/// The contract that was called is either no contract at all (a plain account)
|
||||
/// or is a tombstone.
|
||||
NotCallable,
|
||||
/// The code supplied to `put_code` exceeds the limit specified in the current schedule.
|
||||
CodeTooLarge,
|
||||
/// No code could be found at the supplied code hash.
|
||||
CodeNotFound,
|
||||
/// A buffer outside of sandbox memory was passed to a contract API function.
|
||||
OutOfBounds,
|
||||
/// Input passed to a contract API function failed to decode as expected type.
|
||||
DecodingFailed,
|
||||
/// Contract trapped during execution.
|
||||
ContractTrapped,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user