mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 22:07:58 +00:00
seal: Rework contracts API (#6573)
* Transition getter functions to not use scratch buffer * Remove scratch buffer from ext_get_storage * Remove scratch buffer from ext_call * Remove scratch buffer from ext_instantiate * Add ext_input and remove scratch buffer * Rework error handling (changes RPC exposed data) * ext_return passes a flags field instead of a return code * Flags is only for seal and not for the caller * flags: u32 replaced status_code: u8 in RPC exposed type * API functions use a unified error type (ReturnCode) * ext_transfer now traps on error to be consistent with call and instantiate * Remove the no longer used `Dispatched` event * Updated inline documentation * Prevent skipping of copying the output for getter API * Return gas_consumed from the RPC contracts call interface * Updated COMPLEXTITY.md * Rename ext_gas_price to ext_weight_to_fee * Align comments with spaces * Removed no longer used `ExecError` * Remove possible panic in `from_typed_value` * Use a struct as associated data for SpecialTrap::Return * Fix nits in COMPLEXITY.md * Renamed SpecialTrap to TrapReason * Fix test * Finish renaming special_trap -> trap_reason * Remove no longer used get_runtime_storage * fixup! Remove no longer used get_runtime_storage * Removed tabs for comment aligment
This commit is contained in:
committed by
GitHub
parent
a4427f3635
commit
25de5b5c78
@@ -92,10 +92,12 @@ pub struct CallRequest<AccountId, Balance> {
|
||||
pub enum RpcContractExecResult {
|
||||
/// Successful execution
|
||||
Success {
|
||||
/// Status code
|
||||
status: u8,
|
||||
/// The return flags
|
||||
flags: u32,
|
||||
/// Output data
|
||||
data: Bytes,
|
||||
/// How much gas was consumed by the call.
|
||||
gas_consumed: u64,
|
||||
},
|
||||
/// Error execution
|
||||
Error(()),
|
||||
@@ -104,9 +106,14 @@ pub enum RpcContractExecResult {
|
||||
impl From<ContractExecResult> for RpcContractExecResult {
|
||||
fn from(r: ContractExecResult) -> Self {
|
||||
match r {
|
||||
ContractExecResult::Success { status, data } => RpcContractExecResult::Success {
|
||||
status,
|
||||
ContractExecResult::Success {
|
||||
flags,
|
||||
data,
|
||||
gas_consumed
|
||||
} => RpcContractExecResult::Success {
|
||||
flags,
|
||||
data: data.into(),
|
||||
gas_consumed,
|
||||
},
|
||||
ContractExecResult::Error => RpcContractExecResult::Error(()),
|
||||
}
|
||||
@@ -309,7 +316,7 @@ mod tests {
|
||||
let actual = serde_json::to_string(&res).unwrap();
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
test(r#"{"success":{"status":5,"data":"0x1234"}}"#);
|
||||
test(r#"{"success":{"flags":5,"data":"0x1234","gas_consumed":5000}}"#);
|
||||
test(r#"{"error":null}"#);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user