1. 08 Oct, 2020 1 commit
    • Hero Bird's avatar
      Implement event topic code generation (#510) · 6f701e50
      Hero Bird authored
      * [env] remove unnecessary copy of no longer used mod.rs
      
      * [env, lang] make crates compile again under newest Rust nightly
      
      * [env] on-chain: enhance ScopedBuffer
      
      Add append_encoded and take_appended methods.
      
      * [env] remove old Topics trait
      
      * [env] add new Topics infrastructure
      
      * [env] implement new Topics infrastructure for on/off chain environments
      
      * [env] remove dummy event
      
      * [env] make env::topics::state mod externally accessible
      
      It stays hidden in docs.
      
      * [lang/codegen] generate proper Topics impls for ink! events
      
      * [env] apply rustfmt
      
      * [lang/codegen] fix codegen for events without topics
      
      * [lang/macro] fix UI test
      
      * [env] off-chain: clean-up slightly
      
      * [examples] ERC-20: improve tests for event topics
      
      * [env] remove commented-out line
      
      * [lang/codegen] include event signature into topics
      
      This is the same as it is done for non-anonymous Solidity events.
      The signature of an ink! event is: ContractName::EventName.
      E.g. for ERC-20's Transfer event it is: Erc20::Transfer
      
      * [examples] ERC-20: adjust test for changes with event topics
      
      * [lang/ir] add support for anonymous events
      
      * [lang/codegen] add codegen for anonymous events
      
      * [lang/ir] apply rustfmt
      
      * [lang/macro] comment out failing unit test
      
      Fails due to rustc version mismatch and some recent error display change.
      
      * [examples] apply rustfmt
      6f701e50
  2. 01 Oct, 2020 1 commit
    • Hero Bird's avatar
      Split ink_core crate into ink_env and ink_storage (#500) · cfe52e98
      Hero Bird authored
      * [*] split ink_core into ink_env and ink_storage
      
      The workspace does not yet compile!
      
      * [env] make compile again
      
      * [env] fix doc tests
      
      * [storage] make crate compile again
      
      * [env] fix some doc comment links
      
      * [README] flipper example: remove unused import
      
      * [storage/derive] fix compilation of generated code
      
      * [README] add ink_storage and ink_env doc links
      
      * [env, primitives, storage] fix docs
      
      * [lang] make compile again
      
      * [lang/codegen] use absolute paths in #[ink::test] proc. macro
      
      * [examples] make compile again
      
      * [*] apply rustfmt
      
      * [env] remove unneeded dependencies
      
      * [storage] remove all unneeded dependencies and crate features
      
      * [*] update outdated dependencies
      
      * [env, lang] remove unused dependencies
      
      * [*] fix comments
      
      * [*] fix some intra doc links
      
      * [ci] adjust to split ink_env and ink_storage crates
      
      * [ci] forgot to handle split ink_env and ink_storage in docs
      
      * [storage] fix fuzz tests
      
      * [examples] apply rustfmt
      
      * [examples] apply rustfmt (ERC-721)
      cfe52e98
  3. 30 Sep, 2020 1 commit
  4. 29 Sep, 2020 1 commit
    • Hero Bird's avatar
      Move all ink! crates into the crates directory (#494) · 31276d89
      Hero Bird authored
      * [*] move all ink! crates into crates/ directory
      
      * [ci] adjust .gitab-ci.yml to crates/ directory
      
      * [ci] fix GitLab .gitlab-ci.yml (attempt #2)
      
      * [ci] forgot some lines in attempt #2
      
      * [examples] fix example smart contracts
      
      They need to readjust their paths for the crates/ directory.
      31276d89
  5. 25 Aug, 2020 1 commit
    • Hero Bird's avatar
      Sync with Substrate RC6 (#478) · ba5aed19
      Hero Bird authored
      
      
      * [core] remove get_runtime_storage and invoke_runtime
      
      * [core] invalidate all implementations and usages of ext functions
      
      * [core] adjust ext_ functions in ext.rs
      
      * [core] add ReturnFlags to public API
      
      * [core] remove off-chain impls for get_runtime_storage and invoke_runtime
      
      * [core] rename ext::ext_input -> ext::input
      
      * [core] change return type of get_contract_storage
      
      Previously returned Option<Result<R>> and now returns Result<Option<R>>.
      This change is more pragmatic.
      
      * [core] add conversion from ext::Error to EnvError
      
      * [core] on-chain: add new utilities for static buffer modifications
      
      - EncodeScope: for efficiently appending encoded values
      - ScopedBuffer: for efficiently chunking buffers
      
      * [core] add impls for on-chain property getters
      
      * [core] remove no longer needed utiltiy function
      
      * [core] on-chain: new impl for invoke_contract and eval_contract
      
      * [core] on-chain: new impl for get_contract_storage
      
      * [core] on-chain: new impl for decode_input
      
      We should also rename this to simply "input" later.
      
      * [core] on-chain: new impl for output
      
      Now also uses the new ReturnFlags abstraction.
      
      * [core] on-chain: new impl for instantiate_contract
      
      * [core] on-chain: remove unused API
      
      * [core] on-chain: move EncodeScope and ScopedBuffer to buffer.rs
      
      * [core] on-chain: implement rest of the on-chain API
      
      * [core] add ScopedBuffer::take_bytes
      
      * [core] Add Env::call_chain_extension trait method
      
      * [core] remove unused helper methods
      
      * [core] on-chain: simplify static buffer
      
      - No more length
      - No more encodable
      - Only full range access
      
      * [core] add env::call_chain_extension public API
      
      * [core] rename Env::output -> return_value
      
      * [core] off-chain: adjust a bunch of off-chain methods to new interfaces
      
      * [core] off-chain: adjust get_contract_storage return type
      
      * [core] off-chain: remove RuntimeCallHandler and RuntimeStorage facilities
      
      * [core] off-chain: adjust some tests
      
      * [core] off-chain: remove OffCall utility type
      
      * [core] off-chain: implement chain extension handler
      
      * [core] adjust panic message
      
      * [core] apply rustfmt
      
      * [core] apply clippy suggestion
      
      * [core] off-chain: re-export ChainExtension and ChainSpec types from test API
      
      * [core] on-chain: retain panic messages
      
      * [core] rename ext_ to seal_ for all on-chain functions
      
      * [alloc] fix some warnings and add some minor comments
      
      * [core] add wasm_import_module = "seal0"
      
      * [core] introduce new Seal error codes
      
      * [core] directly return ReturnCode from C-FII
      
      * [core] make transfer return Result
      
      * [core] improve some doc comments
      
      * rename some old errors to their new names
      
      * [core] remove unused env errors and rename some off-chain errors
      
      * [core] fix bug in ReturnFlags::set_reverted (formerly known as set_trapped)
      
      * [core] avoid From impl for () for OffChainError
      
      * [lang] adjust lang layer for changes in core
      
      - Remove invoke_runtime
      - Remove get_runtime_storage
      - Rename gas_price -> weight_to_fee
      - Add ReturnFlags to return_value call
      
      * [core] turn redundant asserts into debug_assert
      
      * [core] be more strict when handling ext::get_storage error
      
      * [core] implement clippy suggestion
      
      * [examples] remove no longer useful runtime-storage contract
      
      We no longer support the get_runtime_storage host function.
      It will eventually be reintroduced at a later point through chain extensions.
      
      * [core] disable chain extensions by default
      
      Can be enabled by experimental crate feature:
      - unstable_chain_extensions
      
      * [lang] apply clippy suggestion to use matches! macro
      
      * [core] fix docs for ext_return
      
      Co-authored-by: Alexander Theißen's avatarAlexander Theißen <alex.theissen@me.com>
      
      * [core] fix return type of api::return_value
      
      Not sure why the compiler didn't mention this return type failure ...
      
      Co-authored-by: Alexander Theißen's avatarAlexander Theißen <alex.theissen@me.com>
      
      * [core] fix doc comment of Env::return_value
      
      * [core] introduce RawReturnCode as a layer between Seal error codes and ink!
      
      * [alloc] make #[alloc_error_handler] private
      
      * [alloc, core] move alloc_handler from ink_alloc to ink_core
      
      * [core] replace useless intermediate ReturnCode type
      
      * [core] rename RawReturnCode -> ReturnCode
      
      * [core] apply rustfmt
      
      * [core] apply rustfmt
      
      * [core] off-chain: rename invoke -> eval for chain extension calling
      
      * [core] use Ptr32 and Ptr32Mut to encapsulate pointer -> u32 conversions
      
      * [core] make new Ptr32 and Ptr32Mut abstractions more type safe
      
      Co-authored-by: Alexander Theißen's avatarAlexander Theißen <alex.theissen@me.com>
      ba5aed19
  6. 03 Feb, 2020 1 commit
    • Hero Bird's avatar
      Implementation of ink! env (revision 3) (#312) · 321fe03a
      Hero Bird authored
      
      
      * [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>
      321fe03a