Contract runtime polishing (#601)
* Rename ext_transfer → ext_call There are several tests where gas was changed. This is due to shrinking the name and consequently a size of contracts. * Fix macros Specifically, make fixes that allows to use a function without arguments (apart from ctx). For example: ```rust ext_return_42(ctx) -> u32 => { Ok(42) } ``` Also, add impl ConvertibleToWasm for u64. * Implement passing input data buffer from top-level This allows the transaction initiator to pass some input data that can be accessed from the executed contract. However, this only works for the top-level contract. The contract still cannot pass input data to the callee contract. The reason for that is that API doesn't support this presently. This will be addressed in the following commits. * Input data passing thru `ext_call` `ext_call` now takes a buffer (or more specifically, pointer to the start of and size of a buffer). This allows contracts to pass input data while calling into other contracts. * Input data passing thru `ext_create` Same as previous commit but for `ext_create`. * Trap on decoding error instead of panicking * Don't cascade failure in ext_call Instead, if callee doesn't complete successfuly, return a non-zero status code. This will prevent cascading traps up to the top-level. Due to this some tests were altered so that they now expect successful transfer instead of a failure. * Don't cascade failure in ext_create Same as previous commit but for ext_create. * Specify how much gas to allot for a call * Specify how much gas to allot for a create * Update tests.rs
parent
c54321a7
Please register or sign in to comment