- 08 Sep, 2022 1 commit
-
-
Steve Degosserie authored
* PSP22 chain extension example * Format code * Format code * Format code * Rename example folder * Code & README cleanup * ink version bump and reformat * Split call function into smaller functions * Added some comments * Implemented decrease_allowance * Removed unnecessary local package versions * Apply suggestions from code review Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com> * Resolve issues mentioned in review * Amend to the latest changes in chain extensions * Reformat * Adjust to review comments. * Move `Ok` out of match. Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com> * Comments & formatting * Fix up comment style Co-authored-by:
Adam Wierzbicki <adam.wierzbicki@parity.io> Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com>
-
- 06 Sep, 2022 1 commit
-
-
Michael Müller authored
cd crates/lang/ export TRYBUILD=overwrite cargo test --verbose --all-features --no-fail-fast
-
- 05 Sep, 2022 3 commits
-
-
GreenBaneling | Supercolony authored
* Import new unstable functions with transparent hashing. Updated the API to work with the generic key `K: Encode` instead of the old `Key`. Also, the change contains optimization to reduce the size of contracts. In most cases, it is `#[inline(always)]`; but `return_value` also got small optimization; removed usage of `extract_from_slice` where it is not needed. * primitives crate: Removed old 32 bytes `Key`. Replaced it with `u32`. Added `KeyComposer`, it is a helper struct that does all manipulation with the storage key. It allows concat two storage keys into one, compute storage key for fields based on the filed, struct, enum, variants names. Removed all tests and benches. Didn't add it for new primitives because the key is standard `u32` and all keys are calculated during compilation. storage crate: Removed `SpreadLayout`, `PackedLayout`, `SpreadAllocate`, `PackedAllocate`, and all related helper functions. Removed `Packed` struct cause it is the default behavior for storage right now. Added `Lazy` struct that allows `get`/`set` value from/into the storage. It is similar to `Mapping` but works with one storage key and one value. Introduced new main traits to work with storage in `storage/src/traits/storage.rs`. Also added a new `OnCallInitializer` trait to improve the flow with upgradable contracts and support initialization on demand by default. Added `pull_or_init` macro that inits the storage struct if it is impossible to load it. It also can be used as optimization for contracts without an explicit constructor. Replaced implementation of old traits for main primitives with a new one. Added blanket implementation of new traits for structures that are `Packed` by default. It reduces the amount of code and adds support of generic structures but adds problems with tuples(now tuples implement new traits only if inner items are `Packed`). Introduced `AutoKey` and `ManualKey` that allows specifying which key the user wants to use. Added support of it into all traits and structures. Refactored `Mapping` to follow new rules. * metadata crate: Updated storage layout in the metadata. Introduces the concept of roots and leafs. Root defines the storage key for all sub-tree until there will be another Root. Leafs are common types that are part of the sub-tree and serialized/deserialized together into one storage key. Replaced 32 bytes storage key with `u32`. Added validation that all root storage keys don't overlap. Maybe better to add that error or reuse that validator on the `cargo-contract` side to show a more user-friendly error. `RootLayout` and validator are used in codegen(next commit). The contract is wrapped into `RootLayout`, and we do validation for that tree. Metadata now contains name for each struct/enum/variant/field. It is useful information because now the storage key is calculated based on the name of struct/enum/variant/field. storage crate: Added a new helper crate `storage/codegen`. It contains some useful functional that is used in `ink_storage_derive` and in `ink_lang_codegen` crates. It has a method that returns all types of the struct/enum/unit and a method that finds "salt" in the generics of the struct/enum. It uses magic constant "KeyHolder"(about that you can read in issue) to find salt, so I tried to have only one place where we are using that constant. Replaced derive implementation of old trait with new one. You can check the tests to see how the implementation looks like. `Storable` recursively call `encode` and `decode` for all fields. `KeyHolder` return key of the salt. `Item` uses `AutoKey` or key specified by the user. I want to highlight that `PreferredKey` only is used with the `AutoItem` trait. If `PreferredKey` is `AutoKey`, then `AutoItem<AutoGenerated>` select auto-generated key, otherwise preferred. So `AutoItem` trait decides that key to use. It is why derive macro only set `PreferredKey`. Updated drive for `StorageLayout`, now it uses `u32` and pass name of the struct into metadata. * Removed `initialize_contract` and related to initialization stuff. Now the codegen uses `pull_or_init` in the `call`. Updated `execute_constructor` to work with new storage methods. Allowed usage of generics during the declaration of the primary contract storage. Users can specify the default storage key with `KeyHolder` via generic. Added parser for `storage_item` macro with its config. * Removed the old codegen related to spread and packed layout. If some object implements `Decode` and `Encode`, it is `Packed`, and it uses the blanket implementation of new traits. In dispatch, codegen started to use a new method to work with storage. In metadata codegen added usage of new `RootLayout`. We wrap the contract into that layout because the contract has its storage key for all inner fields by default. Also added a run of validation logic during metadata generation. Added `storage_item` macro. It transforms all types from autokey into manual key(if types support it). It calculates the storage key based on the name(it uses the `KeyComposer::compute_key` function from the primitives crate). Also, macro generates an additional `Check` structure that includes all raw fields. It helps show correct errors to the user in case of typos, wrong types, etc. * Updated all examples to use a new API. Simplified delegate call example very well causes of new `OnCallInitializer` trait and support of manual specifying key. * UI tests for a new codegen. Can't highlight something unusual here=) * Apply all suggestion from the review * Make CI happy * Fix tests * Fix tests * Fix tests * Fix tests * Apply suggestions: - In most cases it is comments=) - Moved `pull_or_init` on one level upper. - Put the tests into the `impls/mod.rs` * Fix doc * Add comment to autoref specialisation * Suggestion from the review * Revert back u8 * Remove unwrap * Collapse if let * Fixed overflow for enums * Fixing comments * Renamed `Item` to `StorableHint` and `AutoItem` to `AutoStorableHint` * Fix test * Renamed key_holder. Add UI test for double storage_item. Applied suggestion from the review. * Nightly fmt * Remove `Packed` path * Fix doc test * Apply suggestions from hte review * Fixed build * Fix build * Removed `initialize_contract` from linting and deleted all tests * Fix doc link * Fix mapping example * Applied suggestion. Removed `delegate-call` example with `OnCallInitializer` * Removed `delegate-calls` from the CI. Replaced it with `set-code-hash` * fix test * fix test * Fix CI to use stable for contract build * Fix CI to use stable for examples
-
dependabot[bot] authored
Updates the requirements on [impl-serde](https://github.com/paritytech/parity-common) to permit the latest version. - [Release notes](https://github.com/paritytech/parity-common/releases) - [Commits](https://github.com/paritytech/parity-common/compare/impl-serde-v0.3.1...impl-serde-v0.4.0 ) --- updated-dependencies: - dependency-name: impl-serde dependency-type: direct:production ... Signed-off-by:
dependabot[bot] <support@github.com> Signed-off-by:
dependabot[bot] <support@github.com> Co-authored-by:
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-
German authored
* remove single whitespace prefix from comments and docs * format code to please CI * elided lifetime + tests * adds comments to tests * add docs for public function
-
- 02 Sep, 2022 2 commits
-
-
Sasha Gryaznov authored
* allow reentrancy * make allow_reentry the parameter of the Transaction * Update examples/multisig/lib.rs Co-authored-by:
Alexander Theißen <alex.theissen@me.com> * re-entrancy vulnerabilities note * ci fixes Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
Michael Müller authored
-
- 01 Sep, 2022 2 commits
-
-
Michael Müller authored
-
Michael Müller authored
-
- 31 Aug, 2022 1 commit
-
-
Michael Müller authored
Needed for `if version == MetadataVersion::V4 { }` in `smart-bench`.
-
- 30 Aug, 2022 5 commits
-
-
Michael Müller authored
-
Michael Müller authored
* Use nightly for `clippy` and `rustfmt` * Fix typo * Fix formatting * Use `cargo clippy` for `dylint`
-
Michael Müller authored
-
Michael Müller authored
* Fix some text * Add more content to `ARCHITECTURE.md` * Update ARCHITECTURE.md Co-authored-by:
Andrew Jones <ascjones@gmail.com> Co-authored-by:
Andrew Jones <ascjones@gmail.com>
-
Michael Müller authored
-
- 29 Aug, 2022 1 commit
-
-
Hernando Castano authored
* Update the release checklist This simplies the release checklist a bit by using both `cargo-unleash` and `cargo-release`. `cargo-release` has been way more reliable for publishing the ink! workspace than `cargo-unleash`, but we still use `cargo-unleash` to clean up our `dev-dependencies`. In the future it would be cool to automate more of the release process, such as tag creation and publishing, through `cargo-release`. * Remove steps related to `dev-dependencies` With #1367 these shouldn't be required anymore. * Add missing punctuation Co-authored-by:
Michael Müller <mich@elmueller.net> Co-authored-by:
Michael Müller <mich@elmueller.net>
-
- 26 Aug, 2022 1 commit
-
-
Hernando Castano authored
* Remove `version` from dev-dependencies Looks like Cargo decides to either use a local or published package depending on the context (i.e `path` vs. `version`) Since we never publish `dev-dependencies` we can stick to always using a local version (`path`). Cargo book reference: - https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#multiple-locations * Sort `dev-dependencies` alphabetically
-
- 25 Aug, 2022 1 commit
-
-
Hernando Castano authored
* Mention that a new `cargo-contract` release needs to be used * Update CI to use released `cargo-contract` version
-
- 24 Aug, 2022 3 commits
-
-
Hernando Castano authored
-
Hernando Castano authored
* Add release notes for `v4.0.0-alpha.1` * Mention breaking changes in changelog * Bump version to `4.0.0-alpha.1` * Fix header levels after merge * Fix some formatting * Add some notes about the breaking changes * Add links to PRs * Add note about linting move * Bump `ink_linting` crate to `4.0.0-alpha.1` * Remove `nightly` usage from delegator build script * Use dashes instead of minus signs Co-authored-by:
Michael Müller <mich@elmueller.net> * Beef up description of linter PR Co-authored-by:
Michael Müller <mich@elmueller.net> * Move compatibility section to top of release notes * Explicitly use `stable` channel Our Docker images still default to `nightly` * Build contracts with `stable` toolchain * Install `rust-src` component before building examples * Run the rest of the CI stages again Co-authored-by:
Michael Müller <mich@elmueller.net>
-
Alexander Theißen authored
* Move linting into ink repo * Fix CI * Apply suggestions from code review Co-authored-by:
Alexander Samusev <41779041+alvicsam@users.noreply.github.com> * Update .gitlab-ci.yml Co-authored-by:
Alexander Samusev <41779041+alvicsam@users.noreply.github.com> * Update linting/Cargo.toml Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com> * Update linting/Cargo.toml Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com> Co-authored-by:
Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com>
-
- 23 Aug, 2022 3 commits
-
-
Hernando Castano authored
* Rename `RELEASES` to `CHANGELOG` We're following the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) conventions anyways, so the name makes more sense. * Reduce header sizes by one level
-
Hernando Castano authored
* Add `version` field to `InkProject` * Use `InkProject` directly in metadata codegen * Remove old metadata versions from version enum These versions can't be constructed using this version of the crate anyways, so it doesn't really make sense to keep them. * Manually implement `Default` We should change to using the derive macros once our CI's nightly compiler version gets updated. * Add metadata `V4` version option * Use my branch of `cargo-contract` in CI * Remove deprecated `V3` metadata We're never able to construct this variant with this crate anymore, so it doesn't make sense to keep it.
-
Sergejs Kostjucenko authored
* pin gha versions * pin gha version * fix hash
-
- 16 Aug, 2022 2 commits
-
-
Michael Müller authored
* Update to new `ChainExtension` API * Update unreleased notes
-
Michael Müller authored
-
- 15 Aug, 2022 1 commit
-
-
Alexander Theißen authored
* Use stable way of aborting * Trigger CI
-
- 12 Aug, 2022 1 commit
-
-
Michael Müller authored
* Add initial architecture document * Apply suggestions from code review Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com> * Move text to `codegen` crate docs * Update text * Add 'v1' and 'v2' to spellcheck dic * Add text about execution environment * Apply suggestions from code review Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com> * Minor clarification Co-authored-by:
Hernando Castano <HCastano@users.noreply.github.com>
-
- 09 Aug, 2022 2 commits
-
-
Kanishka authored
* add payment-channel example * code review changes * fix typo * fix typo * review changes * review changes * Clean up invalid `close` test a little Co-authored-by:
Hernando Castano <hernando@hcastano.com>
-
Hernando Castano authored
-
- 04 Aug, 2022 1 commit
-
-
Alexander Theißen authored
-
- 03 Aug, 2022 1 commit
-
-
Michael Müller authored
-
- 28 Jul, 2022 2 commits
-
-
Michael Müller authored
cd crates/lang/ export TRYBUILD=overwrite cargo test --verbose --all-features --no-fail-fast
-
Michael Müller authored
cd crates/lang/ export TRYBUILD=overwrite cargo test --verbose --all-features --no-fail-fast
-
- 25 Jul, 2022 2 commits
-
-
Hernando Castano authored
* Update UI tests * Apease Clippy
-
Hernando Castano authored
* Use failing values from fuzzer in test * Check for `isize` overflows instead of `usize` overflows This is what the `Layout::from_size_align()` method is expecting. * Explicitly handle case where we crate an invalid `Layout` Instead of manually doing the check ourselves we'll let `Layout`'s API tell us if something is invalid. * Change a few other tests to only use valid `Layout`s * Remove test which checks for overflow in single allocation Now that I know that `Layout`'s can only be crated with `size`es of `isize::MAX` instead of `usize::MAX` I realized this test doesn't make sense. We will never be able to create a single allocation which can overflow our heap (which is of size `usize::MAX`). During this I also realized that because of the `Layout` requirements this test was never actually fed any valid inputs (all inputs that got through the first check were greater than `isize::MAX`, which then stopped a `Layout` from being created). * Switch from `usize` to `isize` in one of the tests * Change one other test to also use `isize` * Put back original test configuration check * Remove unused expect message * Remove outdated comment
-
- 22 Jul, 2022 1 commit
-
-
Hernando Castano authored
Looks like my search and replace onliner was too strict.
-
- 20 Jul, 2022 2 commits
-
-
Michael Müller authored
-
Michael Müller authored
* Fix `clippy::question_mark` * Fix `clippy::match_like_matches_macro` * Update test fixtures cd crates/lang/ export TRYBUILD=overwrite cargo test --verbose --all-features --no-fail-fast
-
- 18 Jul, 2022 1 commit
-
-
dependabot[bot] authored
Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 1.4.0 to 2.0.0. - [Release notes](https://github.com/Swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/Swatinem/rust-cache/compare/v1.4.0...v2.0.0 ) --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by:
dependabot[bot] <support@github.com> Co-authored-by:
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
-