Commit ee2b68e0 authored by Sergey Pepyakin's avatar Sergey Pepyakin Committed by Gav Wood
Browse files

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
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment