Simple Trait to Inspect Metadata (#9893)

* simple trait to inspect metadata

* import vec
This commit is contained in:
Shawn Tabrizi
2021-09-30 12:46:48 -04:00
committed by GitHub
parent 653f299b95
commit 54617ef661
2 changed files with 32 additions and 0 deletions
@@ -60,6 +60,25 @@ impl<T: Config<I>, I: 'static> fungibles::Inspect<<T as SystemConfig>::AccountId
}
}
impl<T: Config<I>, I: 'static> fungibles::InspectMetadata<<T as SystemConfig>::AccountId>
for Pallet<T, I>
{
/// Return the name of an asset.
fn name(asset: &Self::AssetId) -> Vec<u8> {
Metadata::<T, I>::get(asset).name.to_vec()
}
/// Return the symbol of an asset.
fn symbol(asset: &Self::AssetId) -> Vec<u8> {
Metadata::<T, I>::get(asset).symbol.to_vec()
}
/// Return the decimals of an asset.
fn decimals(asset: &Self::AssetId) -> u8 {
Metadata::<T, I>::get(asset).decimals
}
}
impl<T: Config<I>, I: 'static> fungibles::Mutate<<T as SystemConfig>::AccountId> for Pallet<T, I> {
fn mint_into(
asset: Self::AssetId,
@@ -23,6 +23,7 @@ use super::{
};
use crate::dispatch::{DispatchError, DispatchResult};
use sp_runtime::traits::Saturating;
use sp_std::vec::Vec;
mod balanced;
pub use balanced::{Balanced, Unbalanced};
@@ -65,6 +66,18 @@ pub trait Inspect<AccountId> {
) -> WithdrawConsequence<Self::Balance>;
}
/// Trait for reading metadata from a fungible asset.
pub trait InspectMetadata<AccountId>: Inspect<AccountId> {
/// Return the name of an asset.
fn name(asset: &Self::AssetId) -> Vec<u8>;
/// Return the symbol of an asset.
fn symbol(asset: &Self::AssetId) -> Vec<u8>;
/// Return the decimals of an asset.
fn decimals(asset: &Self::AssetId) -> u8;
}
/// Trait for providing a set of named fungible assets which can be created and destroyed.
pub trait Mutate<AccountId>: Inspect<AccountId> {
/// Attempt to increase the `asset` balance of `who` by `amount`.