The problem with mixing currency and data

Colin LeMahieu

Nano has four technological touchstones as a digital currency: it is decentralised, fast, free to use, and energy efficient. Nano also follows the Unix philosophy of “do one thing and do it well”. Simply put, it’s designed to be the most efficient digital currency on the planet. However, a question that often comes up is whether additional data can or should be stored in this currency ledger.

As a payment protocol, nano intentionally provides no support for storing non-currency data. Here we’ll go over why allowing any arbitrary data in the protocol is problematic and why this decision is necessary in order to maximise currency transaction QoS and ensure the smallest feasible data set for running a node.

Nano’s QoS system is tuned to minimise latency and maximise throughput for currency transactions. It makes use of account balances along with other factors to determine which transactions are processed through consensus first. Transactions that do not have currency value will tend to be deprioritised, which means sharing data on the nano network can only ever be done poorly.

Additionally, nano’s ledger is designed to be as compact as possible. This compactness lowers the cost of running a node and makes it easier to participate as a validator, which in turn improves decentralisation. Transactions that unnecessarily consume extra data beyond what’s needed to function as currency increase the cost of operating a node, both in terms of bandwidth and disk space, which has a centralising effect on the network.

Just as values in the currency fields can be abused to hold arbitrary data, so too could data fields that are loosely related to currency transactions, such as transaction metadata or payment IDs. Any extra data fields unrelated to essential currency information can be abused and weakens the network’s resistance to arbitrary data bloat.

Finally, storing or exchanging arbitrary data increases the censorship attack surface of the network as a whole. If the use of data fields comes into conflict with other digital policies such as GDPR or storing of illicit data, the network as a whole could be impacted as a result.

Nano is designed to have a strong separation of concerns where only data necessary for it to function as currency is stored or communicated. This layering of software responsibilities maximises its QoS and minimises its censorship attack surface. All other features are pushed to application developers for handling outside the protocol. The adage “he who chases two rabbits catches none” applies to mixing currency information with arbitrary data and nano is tuned solely for currency.


Nano Foundation does not endorse or approve products and/or services used or developed by third parties. Any links to third party software or sites are for informational purposes only. Nano Foundation bears no responsibility for the operability, accuracy, legality or content of third party products and/or services. Any questions regarding third party material should be directed to that party.