-
Notifications
You must be signed in to change notification settings - Fork 129
[Manta] Asset-Manager and XCM #382
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
Conversation
runtime/primitives/src/assets.rs
Outdated
| if let Some(asset_loc) = AssetInfoGetter::get_asset_location(id.borrow().clone()) { | ||
| if let Some(location) = asset_loc.into() { | ||
| Ok(location) | ||
| } else { | ||
| Err(()) | ||
| } | ||
| } else { | ||
| Err(()) | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and_then will return Option<Option< MultiLocation>>, ok_or returns a type like Err(()) or Ok(None) or Ok(Some(_)).
AssetInfoGetter::get_asset_location(id.borrow().clone()).and_then(Into::into).flatten().ok_or(())or
AssetInfoGetter::get_asset_location(id.borrow().clone()).map(Into::into).flatten().ok_or(())* naive test pass
bhgomes
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fine from me. Still not clear on the distinction between min_balance and is_sufficient and there are still some open comments by Jamie.
The semantics is pretty subtle here, I added it to the new comments: /// * `is_sufficient`: whether this asset can be used as reserve asset,
/// to the first approximation. More specifically, 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).
|
|
Please resolve some clippy warnings. |
|
And do fmt. |
Dengjianping
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Description
closes: #297
Manta Asset-Manager and XCM code.
Manta/Calamari Asset Design:
u32typedAssetId, this include both XCM assets, Manta/Calamari’s native token, and customized assets in Manta/Calamari (in the future)Pallet-Asset-Manageris the centralized interface for asset management, it supports:AssetLocationof an existing assetUnitPerSecondof an existing assetManta/Calamari XCM Fee Payment Mechanism:
TraderofXcmConfig(FixedRateOfFungible)buy_weight(weight, payment), the first asset inpayment). We maintain aUnitPerSecondrate for each asset we support inpallet-asset-manager. During a single XCM execution, we expect that the user should use the same kind of assets to buy weight. If a user use the different kind of asset to buy weights during a single XCM execution, we only handling the refund of the first kind of asset being used to buy weights. (seeFirstAssetTradercode)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.
mantaordolphin) with right title (start with [Manta] or [Dolphin]),Files changedin the Github PR explorer.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 updatedversionfor every crate.BaseFilter. Ensure every extrinsic works from front-end. If there's corresponding tool, ensure both work for each other.