Dust Protection

Since IOTA is feeless and allows microtransactions, such as 1 IOTA, attackers can easily "spam" the network. We refer to this "spamming" as "dust." To avoid this, we only allow microtransactions under 1.000.000 IOTA tokens to another address if it has already been loaded with at least 1.000.000 IOTA tokens.

How does it work?

Dust protection is hardcoded into the core protocol.

Each node must know the balance of each address (apart from zero value addresses). Otherwise you could spend more money than you have.

However, this circumstance could be used as an attack vector, in which one simply "loads" many addresses with 1 IOTA token each, because then all these addresses would have to be stored by the entire network, and so the memory requirement that each node basically needs (even without saving the current history of all transactions) would already grow immeasurably. To clarify the whole thing once again, with 1.000.000 IOTA (countervalue at the time of this article in about 1,40$) - one could already "dust" a million addresses with one IOTA each, and these would have to be saved forever by all nodes. This will be much more expensive for an attacker - and thus factually not "affordable" with the introduction of a "minimum balance", that each address must have according to Chrysalis. Strictly speaking, this value is at least 1.000.000 IOTA per address.

However, it is not impossible to send smaller amounts. Because as soon as an address has this minimum number of value, one can receive with it 10 smaller transactions of any amount, until one must recharge the minimum value again. However, further action is required for this - you have to enable so-called "SigLockedDustAllowanceOutputs".

RFC Link