Commit Graph
21 Commits
Author SHA1 Message Date
Sergey Pepyakin 66432490fa Place call data into a newly allocated pages (#502) 2018-08-07 16:40:25 +02:00
Sergey Pepyakin 45131e95f8 Make contract a separate runtime module (#345)
* decl_module and extract runtime mod

* Invert dependency staking←→contract

* Remove CodeOf

* Remove StorageOf and move double_map

* Comment staking test

* Clean

* Add gas_price and gas_limit

* Commit.

* Renames

* Params

* WIP

* Rename transfer to call

* WIP

* Rebuild binaries.

* WIP

* Backport ctro changes

* Call wiring

* Commit overlay.

* Rename merge → commit, into_state → ..._change_set

* WIP

* Contract creation routines

* Set code of the created account.

* Fix the ID of `create` Call

* Fix most of the warning.

* Add the simplest test in the contract crate

* Transfers work!

* Add contract_create test.

* Clean

* Add top-level create test

* Clean a bit.

* Pass gas_limit and data via create.

* Introduce OnAccountKill callback in staking

* Hook up OnAccountKill

* Comments

* Pay for gas.

* Refund unused gas in call

* Tests for zero call and zero endownment.

* Add todo about rewriting docs

* Pay for gas in create transactions

* Fix refunds

* Clean unrelevant comments

* fixup! Fix refunds

* fixup! Clean unrelevant comments

* Move DetermineContractAddress to contract

Also restore account removal test

* fixup! Clean unrelevant comments

* Inline effect_transfer, remove effect_create

Remove account_db!

* Use own new_test_ext.

* Don't account for liability

* Add some docs

* Move contract_fee into contract module

* Take GasMeter in vm::execute

* Use GasMeter throughout contract module for meter

* gas module refactoring

* Clean

* Add base call fee

* note about gas price should be taken from storage

* Add base fee for create

* Rename send → call

* Clean

* Take fee expressed in dots in gas

* Add Checked{Add,Sub,Mul,Div} to SimpleArithmetic

* Make Gas generic

* Store {call,create}_base_fee in storage

* Clean

* Rename buy_gas

* Store gas_price in the storage

* Remove unneeded comment.

* Bail out if contract already has code.

* Todos

* Refund even if top-level contract fails.

* Fix error msg

* Fix caller issue

* Extract tests module

* Add max_depth var in storage

* Remove left over gas_left

* Refactor exec

* Add test oog test.

* set_free_balance_creating

* Docs and comments.

* Update storage roots because of ContractFee move

* Rebuild binaries.

* Simplify vm code.

* Wrapping.

* Refactor a bit.

* Typo

* UpdateBalanceOutcome enum

* Style grumbles.

* Rebuild binaries.

* Always consume the given amount of gas.

* [skip ci] endownment → endowment

* Rename `AccountId` generic in on_account_kill

* Fix Cargo.lock

* Refine docs for gas meter.

* [skip ci] Add comments for gas module

* Directly assign to `return_data` at declaration

* Use slices instead of vecs to pass the input data

* Add todo about passing return data without copy

* Use checked_add instead of add with overflow

* Use return_data directly.

* Rebuild binaries.

* Rebuild binaries.
2018-07-29 14:55:55 +01:00
Sergey Pepyakin a649fee20a Use create instead of open for export blocks (#356) 2018-07-17 22:52:42 +02:00
Sergey Pepyakin e1c90b573b Use --export-table from the latest LLD [2] (#325)
* It turned out that "table" was renamed.

To `__indirect_function_table`.

* Rebuild binaries.
2018-07-15 20:12:34 +02:00
Sergey Pepyakin 8cafabc4bd Use --export-table from the latest LLD (#316)
* Remove unused build.sh

* Don't use wasm-export-table anymore.

* Rebuild binaries.

* Fix build script.
2018-07-15 14:09:29 +02:00
Sergey Pepyakin 042ded7cc5 Fix for nightly 2018-07-10 (#296)
* Use [alloc_error_handler] instead of oom lang item

* Same fix for basic_add

* Drive by fix for duplicate generic parameter

* Rebuild binaries.
2018-07-11 15:40:33 +02:00
Sergey Pepyakin f1834971a4 Update pwasm to the latest nightly (#290)
- Update parity-wasm to 0.31
- Update pwasm-utils to 0.3.1
- Update usages of btree map in runtime-std
2018-07-09 19:18:01 +02:00
Sergey Pepyakin 0bcd6a2f1a Bump wasmi to 0.3.0 (#278) 2018-07-04 15:47:16 +02:00
Sergey Pepyakin 51b819f9c4 Prevent account storage leakage (#270)
* WIP

* Iteration over all keys with the specified prefix

* Add clear_prefix in runtime-io

* Introduce a custom storage impl: Double Map

* Remove prefix

* Impl for_keys_with_prefix for light client

* Fix wasm_executor

* Test storage removal leads to removal of stroage

* Check for ok result in storage tests.

* Add docs.

* Remove commented code under decl_storage!

* Add clear_prefix test in runtime-io

* Add test for wasm_executor

* Prefix walking test.

* Rebuild binaries.
2018-07-03 20:52:08 +02:00
Sergey Pepyakin daa596cda9 Restore previous version of ext_sandbox_invoke (#236)
* Restore previous version of ext_sandbox_invoke.

* Rebuild binaries.
2018-06-25 12:12:27 +02:00
Sergey Pepyakin 711306e524 Argument passing and returning values when invoking sandboxed funcs (#189) 2018-06-19 16:24:08 +03:00
Sergey Pepyakin ddd7217911 Refactor build scripts. 2018-06-08 19:59:15 +03:00
Sergey Pepyakin 977b349ca0 Build parachains (#207)
* Fix build of test-chains.

* Add test-chains into build and publish scripts
2018-06-08 12:52:58 +02:00
Sergey Pepyakin 83ef29a025 Extract smart-contract runtime into the separate crate (#179)
* Apply inversion of control to contract module.

* Extract contract to it's own crate.

* Rebuild binaries.
2018-06-05 14:18:08 +02:00
Sergey Pepyakin 6481e6eb11 Use #[panic_implementation] attribute that was landed in the recent nightly (#199)
* Use [panic_implementation] instead of lang item

* Rebuild binaries.
2018-06-04 19:11:42 +02:00
Sergey Pepyakin bc3242ca77 Contracts: Memory and Module instance teardowns (#171)
* Add teardowns.

* Rebuild binaries.
2018-05-24 13:18:55 +01:00
Sergey Pepyakin dcbc0f759e Contracts: Make Balance Slicable. (#168)
* Make Trait::Balance: Slicable

* Rebuild binaries.
2018-05-23 16:03:54 +01:00
Sergey Pepyakin 912a4dcbdd Smart-contract inspection and instrumentation. (#165)
* Extract mock module.

* Wasm smart-contract instrumentation

* Rebuild binaries.

* Memory limits and tests.
2018-05-23 13:45:57 +02:00
Sergey Pepyakin 81f133f36d Sandboxing and the simplest smart-contract runtime (#140)
* Add primitives for sandboxing.

* Add sandbox module.

* Implement the runtime part of the sandbox.

* Rebuild binaries.

* Implement smart-contract execution.

* Add more documentation.
2018-05-01 20:32:01 +02:00
Sergey Pepyakin 5c27e85e3b Refactor Externalities to AccountDb. (#112)
* Refactor Externalities to AccountDb.

* Recompile wasm.
2018-04-11 14:24:57 +02:00
Sergey Pepyakin 521a1abf89 Fix wasm build (#102)
* Reserve pages for heap at initialization time

Since it is freshly allocated memory it won't collide with stack, data or whatever else.

* Compile all wasm files with LTO.

Modules compiled without LTO contain undesired imports and outright invalid (e.g. type mismatches inside the wasm).
2018-03-21 15:44:14 +08:00