Unverified Commit 321fe03a authored by Hero Bird's avatar Hero Bird Committed by GitHub

Implementation of ink! env (revision 3) (#312)

* [core] initial implementation of env revision 3

* add engine abstraction layer and implement api functions

* add support for dispatch_call to env3

* add missing invoke_runtime to api.rs

* [core] fix restore_contract docs

* [core] initial implementation of off-chain environment

* [core] clean-up of env3 fundamental types

* [core] add WasmEnv::reset_buffer

* show test submodule of env3 when compiling with rustdoc

* [core] initial implementation of the off-chain env instance

Also many other adjustments.

* [core] further enhancements to off-chain env

* [core] implement untyped Env for off-chain environment

* [core] implemented a good chunk of TypedEnv for the off-chain environment

* [core] minor improvements to env3

* [core] further improvements and additions to test-api of env3

* [core] remove former test-api file

* [core] env3: add support for ext_tombstone_deposit

* [core] env3: add setting of rent allowance in off-chain env

* [core] env3: remove buffer.rs

* [core] env3: remove property.rs

* [core] env3: mark some TypedEnv methods as not-todo

* [core] env3: enable off-chain api for non test/doc builds

* [core] env3: use a static buffer instead of Vec<u8>

* [core] env3: move static buffer into its own module

* fix doc comment
Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>

* [core] env3: add missing license header

* [core] env3: remove deprecated doc note

* [core] env3: add off-chain {set/get}_runtime_storage

* [core] env3: add off-chain invoke_runtime dispatch

This also enables support for registering custom runtime call handlers.

* [core] env3: slightly improve env3::random docs comment

* [core] env3: move off-chain errors under EnvError

* [core] env3: add ext_random support for the off-chain environment

* [core] env3: minor clean ups

* [core] env3: improve TypedEncoded::assign

* [core] env3: un-mut some variables

* [core] env3: fix some clippy warnings

* [core] env3: add past_printlns to off-chain test api

* [core] env3: minor refactoring

* [core] env3: apply rustfmt

* [core] env3: clean up of call and instantiate contract

* [core] env3: rename moment -> time_stamp

* [core] env3: make get_runtime_storage return a Result instead of RetCode

* [core] env3: remove unneeded import

* [core] env3: add some trait impls for EnvTypes::Hash

* [core] env3: remove last remaining usages of RetCode

* [core] env3: refactor some errors

* [core] env3: document the EnvError enum

* [core] env3: add impls for fire methods on call and create builders

* [core] env3: add doc comment to past_printlns

* [core] env3: apply rustfmt

* [core] env3: update license headers

* [core] env3: support querying and emitting of events in off-chain env

* [core] env3: missing license header adjustment

* [core] env3: apply rustfmt

* [core] env3: rename some methods in off-chain test-api

* [core] env3: add doc comment to test::emitted_events

* [core] env3: add stub for test::advance_block

* [core] env3: rename some more test API methods

* [core] env3: initialize entropy of block randomly

* [core] env3: extend EnvTypes trait bounds

This change makes the trait bounds more similar to what Substrate defines.

* [core] env3: document SimpleArithmetic trait

* [core] env3: add From<u32> to SimpleArithmetic trait

* [core] env3: made some trait bounds more explicit in SimpleArithmetic trait

* [core] env3: add comment describing potential future extensions to SimpleArithmetic trait

* [core] env3: rename EnvTypes::Moment to TimeStamp

* [core] env3: add block_time to ChainSpec

* [core] env3: remove CodeDb again

Not needed right now. Maybe re-added at a later point.

* [core] env3: apply rustfmt

* [core] env3: implement off-chain test::advance_block

* [core] env3: fix bug in off-chain test::advance_block impl

* [core] env3: made SimpleArithmetic trait more explicit towards Output types

* [core] env3: add default initialization routines for off-chain environment

* [core] env3: remove test::create_user_account for now

* [core] env3: fix missing renaming from Moment -> TimeStamp

* [core] env3: impl PartialEq and Eq for off-chain error types

* [core] env3: add test::run_test for off-chain testing with default setup

* [core] env3: fix several minor bugs with the off-chain environment

* [core] convert key.rs tests to new env3

* [core] remove commented out code in key.rs tests

* [core] evn3: add test::get_contract_storage_rw

* [core] use env3 instead of env1 in storage cells

* [core] integrate env3 into storage::TypedChunk

* [core] remove storage::RawChunk and NonCloneMarker

* [core] adjust SyncChunk slightly for TypedChunk modifications

* [core] simplify transitioned env3 tests for TypedChunk

* [core] transition tests for SynChunk to env3

* [core] transition storage::Stash tests to env3

* [core] transition storage::HashMap tests to env3

* [core] transition storage::BinaryHeap tests to env3

* [lang] remove the entire ink! lang crate

It has been deprecated for a whole while.

* [model] remove ink! model crate entirely

It has been deprecated for a whole while.

* [core] remove the old env1 sub-module of ink_core

It has been deprecated for a whole while.

* [examples] remove model examples

* [examples] remove lang examples

* [examples] remove core examples

* remove "If given too few endowment" from docs
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* fix doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* fix doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* [lang2] initial steps towards basing on env3 instead of env2

With this commit `cargo contract build` already works.
However, cargo test etc. are still broken.

* [lang2] make macros work for `cargo test`

* [core, lang2] make contracts compile as ink-as-dependency

* [lang2] make events work for ink_lang2 on env3

* [lang2] remove AccessEnv - no longer needed

* [core] remove env2

* [lang2] fix tests

- Fix warning in ink_lang2
- Remove no longer needed test case
- Adjust some passing tests after default module import removal

* [*] apply rustfmt

* [lang2] silence unused warning for now

* [core] rename {create|Create}* to {instantiate|Instantiate}*

- CreateBuilder -> InstantiateBuilder
- CreateParams -> InstantiateParams
- create -> instantiate

* [core] rename endowment -> transferred_value for CallBuilder/Params

* [examples] adjust Delegator contracts for recents changes

* [core] rename now_in_ms -> block_timestamp

* [core] follow-up of the call renamings (transferred_value)

* [lang2] rename now_in_ms -> block_timestamp

* [examples] move examples out of the examples/lang2 folder

* [examples] fix runtime-storage example contract

* [examples] fix Flipper contract

* [examples] fix Incrementer contract

* [examples] fix Erc20 contract

* [utils] add Key and byte_utils to ink_utils

* [utils -> primitives] rename ink_utils -> ink_primitives

* [*] move all links from ink_utils -> ink_primitives

* [primitives] update Cargo.toml description

* [*] use ink_primitives::Key remove ink_core::Key

* [primitives] refactor new crate, make it more usable in ink! context

* [*] relink to ink_primitives for Key usage

* [abi] refactor macros and relink to ink_primitives::Key

* [lang2] fix usage of renamed Create{Builder, Params}

* [examples] fix examples under recent changes with ink_primitives

* [*] apply rustfmt

* [lang2/macro] remove deprecated feature usage of proc_macro_hygiene

* [examples] remove deprecated proc_macro_hygiene feature

* [core] remove test_utils

* [core] rename env3 to env

* [*] rename all usages of env3 to env

* [core] fix feature usage in num-traits of ink_core Cargo.toml

* [*] update README

* [primitives] conditionally compile type_metadata from ink_primitives

* [core] make env::get_contract_storage return Option<Result<T>>

* [core] fix some faulty doc comments

* [ci] fix GitLab CI

* [primitives] fix no_std compilation

* [primitives] fix warning

* [core] make `rand` dependency optional for `std` crate feature

* [core] remove the test-env crate feature from the ink_core crate

* [core,primitives] move some tests from primitives to core

* [lang] move lang2/ to lang/

* [*] rename all instances of ink_lang2 or lang2 to ink_lang or lang

* [lang/macro] fix ink_primitives dependency

* [*] apply rustfmt

* [core] fix clippy warning

* [ci] eliminate README from examples CI checks

* [examples] apply rustfmt

* [lang/macro] improve event codegen

* [core] rename TimeStamp/time_stamp to Timestamp/timestamp

* [lang] remove unused extern crate alloc

* [core] rename env::address to env::account_id

* [lang] perform renamings on ink_lang::EnvAccess but with deprecation instead of removal

* [core] fix missing time_stamp renamings

* [lang] fix missing TimeStamp renamings

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename create_contract -> instantiate_contract
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename create_contract -> instantiate_contract
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* impr
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename endowment -> transferred_value
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* improve doc comment
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename create_contract -> instantiate_contract
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename create_contract -> instantiate_contract
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename time stamp to timestamp
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* rename SRML to env in docs
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* remove SRML word from docs
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* remove SRML word from docs
Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>

* [lang] fix doc comment for filtered_keys in restore_contract

* [core] rename create_contract -> instantiate_contract

* [core] rename create_contract -> instantiate_contract

* [core] fix some renamings around endowment -> transferred_value

* [lang] rename create_contract -> instantiate_contract follow-up

* [core] apply rustfmt

* [core] improve restore_contract doc comment

* [core, lang] link to ink_core::env::* doc comments from all api places

* [core] apply rustfmt
Co-authored-by: Michael Müller's avatarMichael Müller <mich@elmueller.net>
Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
parent 6fd834d0
Pipeline #77049 passed with stages
in 12 minutes and 9 seconds