Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

existence_requirement argument for FungibleLedger trait functions #638

Merged
merged 50 commits into from
Jul 11, 2022

Conversation

ghzlatarev
Copy link
Contributor

@ghzlatarev ghzlatarev commented Jun 30, 2022

Description

closes: #637

  • Add existence_requirement enum argument to three of the functions in FungibleLedger trait: burn, can_withdraw, transfer
  • For MantaPay cases KeepAlive is now used everywhere, whereas before some calls were with KeepAlive and others were AllowDeath
  • For XCM cases AllowDeath is used, as was prior to this PR.
  • Renamed can_withdraw to can_reduce_by_amount and removed all related error codes. There's only 1 error code now CannotReduceMoreThan(Balance)
  • The reason for renaming was that it no longer uses fungible/s can_withdraw but reducible_amount because it accepts a keep_alive argument.
  • In our burn function, which uses fungble/s burn_from the existence_requirement is checked in the can_reduce_by_amount prior to calling burn_from, which doesn't accept the existence_requirement argument, but uses AllowDeath internally. In the case of a user selecting KeepAlive the function can exit early.
  • Added more integration tests to cover new cases.

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

  • Linked to Github issue with discussion and accepted design OR have an explanation in the PR that describes this work.
  • Wrote unit tests.
  • Updated relevant documentation in the code.
  • Added one line describing your change in <branch>/CHANGELOG.md
  • Re-reviewed Files changed in the Github PR explorer.
  • If runtime changes, need to update the version numbers properly:
    • authoring_version: The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.
    • spec_version: The version of the runtime specification. A full node will not attempt to use its native runtime in substitute for the on-chain Wasm runtime unless all of spec_name, spec_version, and authoring_version are the same between Wasm and native.
    • impl_version: The version of the implementation of the specification. Nodes are free to ignore this; it serves only as an indication that the code is different; as long as the other two versions are the same then while the actual code may be different, it is nonetheless required to do the same thing. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the impl_version changing.
    • transaction_version: The version of the extrinsics interface. This number must be updated in the following circumstances: extrinsic parameters (number, order, or types) have been changed; extrinsics or pallets have been removed; or the pallet order in the construct_runtime! macro or extrinsic order in a pallet has been changed. You can run the metadata_diff.yml workflow for help. If this number is updated, then the spec_version must also be updated
  • Verify benchmarks & weights have been updated for any modified runtime logics
  • If importing a new pallet, choose a proper module index for it, and allow it in BaseFilter. Ensure every extrinsic works from front-end. If there's corresponding tool, ensure both work for each other.
  • If needed, update our Javascript/Typescript APIs. These APIs are officially used by exchanges or community developers.
  • If modifying existing runtime storage items, make sure to implement storage migrations for the runtime and test them with try-runtime. This includes migrations inherited from upstream changes, and you can search the diffs for modifications of #[pallet::storage] items to check for any.

ghzlatarev and others added 30 commits May 20, 2022 18:48
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
@ghzlatarev ghzlatarev marked this pull request as ready for review July 1, 2022 07:02
@ghzlatarev ghzlatarev requested review from Garandor, bhgomes, Dengjianping and stechu and removed request for Garandor and bhgomes July 1, 2022 07:02
primitives/src/assets.rs Show resolved Hide resolved
pallets/manta-pay/src/lib.rs Show resolved Hide resolved
Signed-off-by: Georgi Zlatarev <georgi.zlatarev@manta.network>
Garandor
Garandor previously approved these changes Jul 7, 2022
Copy link
Contributor

@Garandor Garandor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A question, but the logic LGTM

pallets/manta-pay/src/lib.rs Show resolved Hide resolved
@bhgomes bhgomes added this to the v3.2.1 milestone Jul 8, 2022
Signed-off-by: Brandon H. Gomes <bhgomes@pm.me>
Garandor
Garandor previously approved these changes Jul 8, 2022
Dengjianping
Dengjianping previously approved these changes Jul 8, 2022
Copy link
Contributor

@Dengjianping Dengjianping left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@bhgomes bhgomes dismissed stale reviews from Dengjianping and Garandor via 5a9befd July 8, 2022 22:44
Copy link
Contributor

@Dengjianping Dengjianping left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@ghzlatarev ghzlatarev merged commit 8ab34fc into manta Jul 11, 2022
@ghzlatarev ghzlatarev deleted the ghzlatarev/fungible-ledger-keep-alive-arg branch July 11, 2022 08:04
@Apokalip Apokalip added the L-added Log: Issues and PRs related to addition label Jul 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
L-added Log: Issues and PRs related to addition
Projects
None yet
Development

Successfully merging this pull request may close these issues.

keep_alive argument for FungibleLedger trait functions
5 participants