Skip to content

StableAsset


Calls


create_pool

Attributes

Name Type
pool_asset T::AssetId
assets Vec<T::AssetId>
precisions Vec<T::AtLeast64BitUnsigned>
mint_fee T::AtLeast64BitUnsigned
swap_fee T::AtLeast64BitUnsigned
redeem_fee T::AtLeast64BitUnsigned
initial_a T::AtLeast64BitUnsigned
fee_recipient T::AccountId
yield_recipient T::AccountId
precision T::AtLeast64BitUnsigned

Python

call = substrate.compose_call(
    'StableAsset', 'create_pool', {
    'assets': [
        {
            'DexShare': (
                {
                    'Erc20': '[u8; 20]',
                    'ForeignAsset': 'u16',
                    'LiquidCrowdloan': 'u32',
                    'StableAssetPoolToken': 'u32',
                    'Token': (
                        'ACA',
                        'AUSD',
                        'DOT',
                        'LDOT',
                        'TAP',
                        'KAR',
                        'KUSD',
                        'KSM',
                        'LKSM',
                        'TAI',
                        'BNC',
                        'VSKSM',
                        'PHA',
                        'KINT',
                        'KBTC',
                    ),
                },
                {
                    'Erc20': '[u8; 20]',
                    'ForeignAsset': 'u16',
                    'LiquidCrowdloan': 'u32',
                    'StableAssetPoolToken': 'u32',
                    'Token': (
                        'ACA',
                        'AUSD',
                        'DOT',
                        'LDOT',
                        'TAP',
                        'KAR',
                        'KUSD',
                        'KSM',
                        'LKSM',
                        'TAI',
                        'BNC',
                        'VSKSM',
                        'PHA',
                        'KINT',
                        'KBTC',
                    ),
                },
            ),
            'Erc20': '[u8; 20]',
            'ForeignAsset': 'u16',
            'LiquidCrowdloan': 'u32',
            'StableAssetPoolToken': 'u32',
            'Token': (
                'ACA',
                'AUSD',
                'DOT',
                'LDOT',
                'TAP',
                'KAR',
                'KUSD',
                'KSM',
                'LKSM',
                'TAI',
                'BNC',
                'VSKSM',
                'PHA',
                'KINT',
                'KBTC',
            ),
        },
    ],
    'fee_recipient': 'AccountId',
    'initial_a': 'u128',
    'mint_fee': 'u128',
    'pool_asset': {
        'DexShare': (
            {
                'Erc20': '[u8; 20]',
                'ForeignAsset': 'u16',
                'LiquidCrowdloan': 'u32',
                'StableAssetPoolToken': 'u32',
                'Token': (
                    'ACA',
                    'AUSD',
                    'DOT',
                    'LDOT',
                    'TAP',
                    'KAR',
                    'KUSD',
                    'KSM',
                    'LKSM',
                    'TAI',
                    'BNC',
                    'VSKSM',
                    'PHA',
                    'KINT',
                    'KBTC',
                ),
            },
            {
                'Erc20': '[u8; 20]',
                'ForeignAsset': 'u16',
                'LiquidCrowdloan': 'u32',
                'StableAssetPoolToken': 'u32',
                'Token': (
                    'ACA',
                    'AUSD',
                    'DOT',
                    'LDOT',
                    'TAP',
                    'KAR',
                    'KUSD',
                    'KSM',
                    'LKSM',
                    'TAI',
                    'BNC',
                    'VSKSM',
                    'PHA',
                    'KINT',
                    'KBTC',
                ),
            },
        ),
        'Erc20': '[u8; 20]',
        'ForeignAsset': 'u16',
        'LiquidCrowdloan': 'u32',
        'StableAssetPoolToken': 'u32',
        'Token': (
            'ACA',
            'AUSD',
            'DOT',
            'LDOT',
            'TAP',
            'KAR',
            'KUSD',
            'KSM',
            'LKSM',
            'TAI',
            'BNC',
            'VSKSM',
            'PHA',
            'KINT',
            'KBTC',
        ),
    },
    'precision': 'u128',
    'precisions': ['u128'],
    'redeem_fee': 'u128',
    'swap_fee': 'u128',
    'yield_recipient': 'AccountId',
}
)

mint

Attributes

Name Type
pool_id StableAssetPoolId
amounts Vec<T::Balance>
min_mint_amount T::Balance

Python

call = substrate.compose_call(
    'StableAsset', 'mint', {
    'amounts': ['u128'],
    'min_mint_amount': 'u128',
    'pool_id': 'u32',
}
)

modify_a

Attributes

Name Type
pool_id StableAssetPoolId
a T::AtLeast64BitUnsigned
future_a_block BlockNumberFor<T>

Python

call = substrate.compose_call(
    'StableAsset', 'modify_a', {
    'a': 'u128',
    'future_a_block': 'u32',
    'pool_id': 'u32',
}
)

modify_fees

Attributes

Name Type
pool_id StableAssetPoolId
mint_fee Option<T::AtLeast64BitUnsigned>
swap_fee Option<T::AtLeast64BitUnsigned>
redeem_fee Option<T::AtLeast64BitUnsigned>

Python

call = substrate.compose_call(
    'StableAsset', 'modify_fees', {
    'mint_fee': (None, 'u128'),
    'pool_id': 'u32',
    'redeem_fee': (None, 'u128'),
    'swap_fee': (None, 'u128'),
}
)

modify_recipients

Attributes

Name Type
pool_id StableAssetPoolId
fee_recipient Option<T::AccountId>
yield_recipient Option<T::AccountId>

Python

call = substrate.compose_call(
    'StableAsset', 'modify_recipients', {
    'fee_recipient': (
        None,
        'AccountId',
    ),
    'pool_id': 'u32',
    'yield_recipient': (
        None,
        'AccountId',
    ),
}
)

redeem_multi

Attributes

Name Type
pool_id StableAssetPoolId
amounts Vec<T::Balance>
max_redeem_amount T::Balance

Python

call = substrate.compose_call(
    'StableAsset', 'redeem_multi', {
    'amounts': ['u128'],
    'max_redeem_amount': 'u128',
    'pool_id': 'u32',
}
)

redeem_proportion

Attributes

Name Type
pool_id StableAssetPoolId
amount T::Balance
min_redeem_amounts Vec<T::Balance>

Python

call = substrate.compose_call(
    'StableAsset', 'redeem_proportion', {
    'amount': 'u128',
    'min_redeem_amounts': ['u128'],
    'pool_id': 'u32',
}
)

redeem_single

Attributes

Name Type
pool_id StableAssetPoolId
amount T::Balance
i PoolTokenIndex
min_redeem_amount T::Balance
asset_length u32

Python

call = substrate.compose_call(
    'StableAsset', 'redeem_single', {
    'amount': 'u128',
    'asset_length': 'u32',
    'i': 'u32',
    'min_redeem_amount': 'u128',
    'pool_id': 'u32',
}
)

swap

Attributes

Name Type
pool_id StableAssetPoolId
i PoolTokenIndex
j PoolTokenIndex
dx T::Balance
min_dy T::Balance
asset_length u32

Python

call = substrate.compose_call(
    'StableAsset', 'swap', {
    'asset_length': 'u32',
    'dx': 'u128',
    'i': 'u32',
    'j': 'u32',
    'min_dy': 'u128',
    'pool_id': 'u32',
}
)

Events


AModified

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
value T::AtLeast64BitUnsigned u128
time BlockNumberFor<T> u32

BalanceUpdated

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
old_balances Vec<T::Balance> ['u128']
new_balances Vec<T::Balance> ['u128']

CreatePool

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
swap_id T::AccountId AccountId
pallet_id T::AccountId AccountId

FeeCollected

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
old_balances Vec<T::Balance> ['u128']
new_balances Vec<T::Balance> ['u128']
old_total_supply T::Balance u128
new_total_supply T::Balance u128
who T::AccountId AccountId
amount T::Balance u128

FeeModified

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
mint_fee T::AtLeast64BitUnsigned u128
swap_fee T::AtLeast64BitUnsigned u128
redeem_fee T::AtLeast64BitUnsigned u128

Minted

Attributes

Name Type Composition
minter T::AccountId AccountId
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
input_amounts Vec<T::Balance> ['u128']
min_output_amount T::Balance u128
balances Vec<T::Balance> ['u128']
total_supply T::Balance u128
fee_amount T::Balance u128
output_amount T::Balance u128

RecipientModified

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
fee_recipient T::AccountId AccountId
yield_recipient T::AccountId AccountId

RedeemedMulti

Attributes

Name Type Composition
redeemer T::AccountId AccountId
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
output_amounts Vec<T::Balance> ['u128']
max_input_amount T::Balance u128
balances Vec<T::Balance> ['u128']
total_supply T::Balance u128
fee_amount T::Balance u128
input_amount T::Balance u128

RedeemedProportion

Attributes

Name Type Composition
redeemer T::AccountId AccountId
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
input_amount T::Balance u128
min_output_amounts Vec<T::Balance> ['u128']
balances Vec<T::Balance> ['u128']
total_supply T::Balance u128
fee_amount T::Balance u128
output_amounts Vec<T::Balance> ['u128']

RedeemedSingle

Attributes

Name Type Composition
redeemer T::AccountId AccountId
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
input_amount T::Balance u128
output_asset T::AssetId {'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'DexShare': ({'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'Erc20': '[u8; 20]', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16', 'StableAssetPoolToken': 'u32'}, {'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'Erc20': '[u8; 20]', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16', 'StableAssetPoolToken': 'u32'}), 'Erc20': '[u8; 20]', 'StableAssetPoolToken': 'u32', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16'}
min_output_amount T::Balance u128
balances Vec<T::Balance> ['u128']
total_supply T::Balance u128
fee_amount T::Balance u128
output_amount T::Balance u128

TokenSwapped

Attributes

Name Type Composition
swapper T::AccountId AccountId
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
input_asset T::AssetId {'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'DexShare': ({'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'Erc20': '[u8; 20]', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16', 'StableAssetPoolToken': 'u32'}, {'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'Erc20': '[u8; 20]', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16', 'StableAssetPoolToken': 'u32'}), 'Erc20': '[u8; 20]', 'StableAssetPoolToken': 'u32', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16'}
output_asset T::AssetId {'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'DexShare': ({'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'Erc20': '[u8; 20]', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16', 'StableAssetPoolToken': 'u32'}, {'Token': ('ACA', 'AUSD', 'DOT', 'LDOT', 'TAP', 'KAR', 'KUSD', 'KSM', 'LKSM', 'TAI', 'BNC', 'VSKSM', 'PHA', 'KINT', 'KBTC'), 'Erc20': '[u8; 20]', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16', 'StableAssetPoolToken': 'u32'}), 'Erc20': '[u8; 20]', 'StableAssetPoolToken': 'u32', 'LiquidCrowdloan': 'u32', 'ForeignAsset': 'u16'}
input_amount T::Balance u128
min_output_amount T::Balance u128
balances Vec<T::Balance> ['u128']
total_supply T::Balance u128
output_amount T::Balance u128

YieldCollected

Attributes

Name Type Composition
pool_id StableAssetPoolId u32
a T::AtLeast64BitUnsigned u128
old_total_supply T::Balance u128
new_total_supply T::Balance u128
who T::AccountId AccountId
amount T::Balance u128

Storage functions


PoolCount

Python

result = substrate.query(
    'StableAsset', 'PoolCount', []
)

Return value

'u32'

Pools

Python

result = substrate.query(
    'StableAsset', 'Pools', ['u32']
)

Return value

{
    'a': 'u128',
    'a_block': 'u32',
    'account_id': 'AccountId',
    'assets': [
        {
            'DexShare': (
                {
                    'Erc20': '[u8; 20]',
                    'ForeignAsset': 'u16',
                    'LiquidCrowdloan': 'u32',
                    'StableAssetPoolToken': 'u32',
                    'Token': 'scale_info::54',
                },
                {
                    'Erc20': '[u8; 20]',
                    'ForeignAsset': 'u16',
                    'LiquidCrowdloan': 'u32',
                    'StableAssetPoolToken': 'u32',
                    'Token': 'scale_info::54',
                },
            ),
            'Erc20': '[u8; 20]',
            'ForeignAsset': 'u16',
            'LiquidCrowdloan': 'u32',
            'StableAssetPoolToken': 'u32',
            'Token': (
                'ACA',
                'AUSD',
                'DOT',
                'LDOT',
                'TAP',
                'KAR',
                'KUSD',
                'KSM',
                'LKSM',
                'TAI',
                'BNC',
                'VSKSM',
                'PHA',
                'KINT',
                'KBTC',
            ),
        },
    ],
    'balances': ['u128'],
    'fee_recipient': 'AccountId',
    'future_a': 'u128',
    'future_a_block': 'u32',
    'mint_fee': 'u128',
    'pool_asset': {
        'DexShare': (
            {
                'Erc20': '[u8; 20]',
                'ForeignAsset': 'u16',
                'LiquidCrowdloan': 'u32',
                'StableAssetPoolToken': 'u32',
                'Token': (
                    'ACA',
                    'AUSD',
                    'DOT',
                    'LDOT',
                    'TAP',
                    'KAR',
                    'KUSD',
                    'KSM',
                    'LKSM',
                    'TAI',
                    'BNC',
                    'VSKSM',
                    'PHA',
                    'KINT',
                    'KBTC',
                ),
            },
            {
                'Erc20': '[u8; 20]',
                'ForeignAsset': 'u16',
                'LiquidCrowdloan': 'u32',
                'StableAssetPoolToken': 'u32',
                'Token': (
                    'ACA',
                    'AUSD',
                    'DOT',
                    'LDOT',
                    'TAP',
                    'KAR',
                    'KUSD',
                    'KSM',
                    'LKSM',
                    'TAI',
                    'BNC',
                    'VSKSM',
                    'PHA',
                    'KINT',
                    'KBTC',
                ),
            },
        ),
        'Erc20': '[u8; 20]',
        'ForeignAsset': 'u16',
        'LiquidCrowdloan': 'u32',
        'StableAssetPoolToken': 'u32',
        'Token': (
            'ACA',
            'AUSD',
            'DOT',
            'LDOT',
            'TAP',
            'KAR',
            'KUSD',
            'KSM',
            'LKSM',
            'TAI',
            'BNC',
            'VSKSM',
            'PHA',
            'KINT',
            'KBTC',
        ),
    },
    'precision': 'u128',
    'precisions': ['u128'],
    'redeem_fee': 'u128',
    'swap_fee': 'u128',
    'total_supply': 'u128',
    'yield_recipient': 'AccountId',
}

Constants


APrecision

Value

100

Python

constant = substrate.get_constant('StableAsset', 'APrecision')

FeePrecision

Value

10000000000

Python

constant = substrate.get_constant('StableAsset', 'FeePrecision')

PalletId

Value

'0x6e7574732f737461'

Python

constant = substrate.get_constant('StableAsset', 'PalletId')

PoolAssetLimit

Value

5

Python

constant = substrate.get_constant('StableAsset', 'PoolAssetLimit')

SwapExactOverAmount

Value

100

Python

constant = substrate.get_constant('StableAsset', 'SwapExactOverAmount')

Errors


ArgumentsError


ArgumentsMismatch


InconsistentStorage


InvalidPoolAsset


InvalidPoolValue


Math


MintUnderMin


PoolNotFound


RedeemOverMax


RedeemUnderMin


SwapUnderMin