Skip to content

Subaccounts


Calls


transfer

Transfers amount of currency from subaccount to 'destination' account. If subacc_type is Bailsman and it's total collateral value becomes less than minimal bailsman collateral value - subaccount will be unregistered as bailsman. Destination should not be subaccount.

Attributes

Name Type
subacc_type SubAccType
destination T::AccountId
asset Asset
amount T::Balance

Python

call = substrate.compose_call(
    'Subaccounts', 'transfer', {
    'amount': 'u128',
    'asset': 'u64',
    'destination': 'AccountId',
    'subacc_type': (
        'Bailsman',
        'Trader',
        'Borrower',
    ),
}
)

transfer_from_subaccount

Transfers amount of currency from subaccount to main account. If subacc_type is Bailsman and it's total collateral value becomes less than minimal bailsman collateral value - subaccount will be unregistered as bailsman.

Attributes

Name Type
subacc_type SubAccType
asset Asset
amount T::Balance

Python

call = substrate.compose_call(
    'Subaccounts', 'transfer_from_subaccount', {
    'amount': 'u128',
    'asset': 'u64',
    'subacc_type': (
        'Bailsman',
        'Trader',
        'Borrower',
    ),
}
)

transfer_to_subaccount

Transfers value amount of currency from main account to subacc_type subaccount

Attributes

Name Type
subacc_type SubAccType
asset Asset
value T::Balance

Python

call = substrate.compose_call(
    'Subaccounts', 'transfer_to_subaccount', {
    'asset': 'u64',
    'subacc_type': (
        'Bailsman',
        'Trader',
        'Borrower',
    ),
    'value': 'u128',
}
)

Events


RegisterBailsman

Register bailsman subaccount as bailsman - first element is subaccount owner's AccountId - second element is subaccount of type Bailsman [owner, subaccount]

Attributes

Name Type Composition
None T::AccountId AccountId
None T::AccountId AccountId

SubaccountCreated

New subaccount created - first element is subaccount owner's AccountId - second element is AccountId of created subaccount - last element is a type of created subaccount [owner, subaccount, type]

Attributes

Name Type Composition
None T::AccountId AccountId
None T::AccountId AccountId
None SubAccType ('Bailsman', 'Trader', 'Borrower')

Storage functions


OwnerAccount

Pallet storage - a map storing a tuple (AccountId, SubAccType) for each existing subaccount. First element in stored tuple is AccountId of main user account, owning the subaccount and second is SubAccType of key subaccount

Python

result = substrate.query(
    'Subaccounts', 'OwnerAccount', ['AccountId']
)

Return value

('AccountId', ('Bailsman', 'Trader', 'Borrower'))

Subaccount

Pallet storage - double map storing subaccounts as AccountId where user's main AccountId and SubAccType used as keys

Python

result = substrate.query(
    'Subaccounts', 'Subaccount', [
    'AccountId',
    ('Bailsman', 'Trader', 'Borrower'),
]
)

Return value

'AccountId'

Errors


AccountInWhiteList

Cannot create a subaccount: account in whitelist


AccountIsNotMaster

Account is not a master account. Transfers to external subaccounts prohibited.


AlreadyHasSubaccount

Cannot create a subaccount: user already has subaccount of this type


Debt

Debt not allowed to be creating in this operation


EntropyError

Entropy is not allow to generate subaccount. Try one more time.


NoSubaccountOfThisType

Cannot delete subaccount or transfer from it: no subaccount of this type


TransfersAreDisabled

Transfers are disabled