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

Fix AssetManager's update_asset_metadata #461

Merged
merged 8 commits into from Apr 10, 2022
Merged

Conversation

ghzlatarev
Copy link
Contributor

@ghzlatarev ghzlatarev commented Mar 25, 2022

Signed-off-by: ghzlatarev ghzlatarev@gmail.com

Description

closes: #462

  • AssetManager's update_asset_metadata was not actually updating the underlying Assets data, so now the extrinsic is calling the T::AssetRegistrar::update_asset_metadata in order to do so.
  • Added a test case to make sure that metadata items, like symbol, name, decimals are being updated.
  • NextAssetId storage should be set to StartNonNativeAssetId instead of NativeAssetId on genesis. Fix benchmarking, add asset-manager to benchmarking workflow.

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. 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 import 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 offcially 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 inhreited from upstream changes, and you can search the diffs for modifications of #[pallet::storage] items to check for any.

Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
@ghzlatarev ghzlatarev requested review from stechu, Dengjianping and Garandor and removed request for stechu March 25, 2022 19:00
@ghzlatarev ghzlatarev changed the title Fix assetmanager metadata update Fix AssetManager's update_asset_metadata Mar 25, 2022
@ghzlatarev ghzlatarev changed the title Fix AssetManager's update_asset_metadata Fix AssetManager's update_asset_metadata Mar 25, 2022
@ghzlatarev ghzlatarev self-assigned this Mar 25, 2022
@ghzlatarev ghzlatarev added the A-xcm Area: Issues and PRs related to Cross-Consensus Messaging (XCM) label Mar 25, 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!

@stechu
Copy link
Contributor

stechu commented Mar 27, 2022

If you look at AssetRegistrarMetadata's implementation, like:

https://github.com/Manta-Network/Manta/blob/manta/runtime/primitives/src/assets.rs#L30

/// The metadata of a Manta Asset
#[derive(Clone, Default, Eq, Debug, PartialEq, Ord, PartialOrd, Encode, Decode, TypeInfo)]
pub struct AssetRegistarMetadata<Balance> {
	pub name: Vec<u8>,
	pub symbol: Vec<u8>,
	pub decimals: u8,
	pub evm_address: Option<H160>,
	pub is_frozen: bool,
	pub min_balance: Balance,
	/// `is_sufficient`: Whether a non-zero balance of this asset is deposit of sufficient
	/// value to account for the state bloat associated with its balance storage. If set to
	/// `true`, then non-zero balances may be stored without a `consumer` reference (and thus
	/// an ED in the Balances pallet or whatever else is used to control user-account state
	/// growth).
	/// For example, if is_sufficient set to `false`, a fresh account cannot receive XCM tokens.
	pub is_sufficient: bool,
}

This is more than what Pallet-Asset can store. That's why AssetIdMetadata is needed as a storage item.

pallets/asset-manager/src/lib.rs Outdated Show resolved Hide resolved
Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
@ghzlatarev ghzlatarev requested a review from stechu April 4, 2022 12:58
Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
@stechu stechu added this to the v3.1.5 milestone Apr 6, 2022
Copy link
Contributor

@stechu stechu left a comment

Choose a reason for hiding this comment

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

see the detailed comments.

Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
…ault

Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
…manager in Dolphin

Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
@ghzlatarev ghzlatarev requested a review from stechu April 10, 2022 14:24
Signed-off-by: ghzlatarev <ghzlatarev@gmail.com>
@stechu stechu merged commit bbb6cfd into manta Apr 10, 2022
@Garandor Garandor mentioned this pull request Apr 10, 2022
10 tasks
@stechu stechu deleted the ghzlatarev/update-metadata branch June 23, 2022 01:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-xcm Area: Issues and PRs related to Cross-Consensus Messaging (XCM)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Fix AssetManager's update_asset_metadata
3 participants