-
Notifications
You must be signed in to change notification settings - Fork 346
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
Foreign assets creation via token reserve #3104
base: master
Are you sure you want to change the base?
Conversation
WASM runtime size check:Compared to target branchMoonbase runtime: 2280 KB (no changes) ✅ Moonbeam runtime: 2260 KB (no changes) ✅ Moonriver runtime: 2264 KB (no changes) ✅ Compared to latest release (runtime-3400)Moonbase runtime: 2280 KB (+252 KB compared to latest release) Moonbeam runtime: 2260 KB (+248 KB compared to latest release) Moonriver runtime: 2264 KB (+252 KB compared to latest release) |
Coverage Report@@ Coverage Diff @@
## master gonza/foreign-assets-via-token-lock +/- ##
======================================================================
Coverage 74.49% 74.49% 0.00%
Files 375 375
+ Lines 95313 95407 +94
======================================================================
+ Hits 70998 71066 +68
+ Misses 24315 24341 +26
|
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.
I still need to get more context about this feature, will probably ping you later.
Added a few remarks for now.
@@ -121,7 +122,7 @@ pub mod pallet { | |||
pub const PALLET_ID: frame_support::PalletId = frame_support::PalletId(*b"forgasst"); | |||
|
|||
#[pallet::config] | |||
pub trait Config: frame_system::Config + pallet_evm::Config { | |||
pub trait Config: frame_system::Config + pallet_evm::Config + scale_info::TypeInfo { |
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.
pub trait Config: frame_system::Config + pallet_evm::Config + scale_info::TypeInfo { | |
pub trait Config: frame_system::Config + pallet_evm::Config { |
@@ -75,6 +76,11 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { | |||
.saturating_add(T::DbWeight::get().reads(2_u64)) | |||
.saturating_add(T::DbWeight::get().writes(3_u64)) | |||
} | |||
|
|||
fn create_foreign_asset_reserve() -> Weight { | |||
Weight::default() |
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.
We should use proper weights, generating it with release profile is file.
.tx.sudo.sudoAs( | ||
alith.address, | ||
context | ||
.polkadotJs() | ||
.tx.evmForeignAssets.createForeignAsset(assetId, xcmLoc, decimals, symbol, name) |
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.
We can do a normal call as Alith
.tx.sudo.sudoAs( | |
alith.address, | |
context | |
.polkadotJs() | |
.tx.evmForeignAssets.createForeignAsset(assetId, xcmLoc, decimals, symbol, name) | |
.tx.evmForeignAssets.createForeignAsset(assetId, xcmLoc, decimals, symbol, name) |
What does it do?
create_foreign_asset
so that reserves a deposit from the user to be able to create a new foreign assetForeignAssetCreationDeposit
create_foreign_asset
can be executed by any account, by making a deposit in the native token.Disclaimer: the pallet is not in use and the functionality wasn't exposed publicly AFAIK. The changes are still breaking, but most likely harmless.
TODO
What important points reviewers should know?
Some assumptions were made considering the current state of the pallet:
AssetOwner
was meant initially to be a descriptive enum of the possible sources of creation of an asset, but since there were no assets yet created, we only need to distinguish between migrated assets, and the ones created from now on (any account). Naming in this enum might be improved.Is there something left for follow-up PRs?
What alternative implementations were considered?
Using Fungibles was investigated, but the implementation uses ReservableCurrency, following the same pattern as pallet assets.
Are there relevant PRs or issues in other repositories (Substrate, Polkadot, Frontier, Cumulus)?
We should run the migration added here #3020 after this PR is merged.
What value does it bring to the blockchain users?
It should be easier for Parachain teams to register their assets natively in Moonbeam