7

Statemint has an Existential Deposit threshold of 0.1 DOT.

Say an account holds some amount of asset X, and transfers away all its DOT so that it goes below the ED.

What happens to its holdings of asset X? Are they lost forever?

What if a new DOT transaction (above ED) brings the same account back to life? Does it still hold the same amount of asset X, or is it 0 now?

1 Answer 1

7

The DOT transfer that empties the account will simply fail.

First, an asset places a consumer reference on an account:

frame_system::Pallet::<T>::inc_consumers(who).map_err(|_| Error::<T, I>::NoProvider)?;

When one tries to transfer DOT, the Balances pallet checks if it can remove a provider reference:

let allow_death = allow_death && system::Pallet::<T>::can_dec_provider(transactor);

Finally, that function ensures there are no remaining consumers of the account's existance:

a.consumers == 0 || a.providers > 1 // <- returns bool
2
  • thanks for the answer joe! can you clarify which DOT transfer will fail? the one that empties the account, or the one that brings it back to life? Commented May 7, 2022 at 14:46
  • The one that empties it. An account cannot be killed when reference counters exist on the account.
    – Shawn Tabrizi
    Commented May 7, 2022 at 18:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.