Passive transaction QoS and flow control within nano

Colin LeMahieu

Background:

Digital currencies are a specialized form of peer-to-peer (p2p) network. They differ substantially from more commonly encountered p2p networks like distributed hash tables (DHT) in their need for rate limiting and flow control.  For digital currencies to function, there needs to be agreement about the state of the network whereas content-addressed DHTs are stateless. Since DHTs are by and large the most popular type of p2p networks, p2p quality of service (QoS) and flow control are a less explored area.

Issues with flow control by fee:

The most common way to provide QoS in a currency network is by having the user pay a fee at the application level. This method is trivial to implement but has several drawbacks:

  • Requires a financial decision based on network conditions
  • Political contention around recipients of the fee
  • Setting a transaction fee is accident-prone

If flow control can be solved passively at a technical level we can avoid possible fee miscalculations, simplify the user experience, and avoid the other drawbacks of the fee-based approach entirely.

Decentralized flow control is difficult:

The fact that most digital currencies use fees as flow control shows their high effectiveness and ease of implementation. The ease of implementing fees ignores, or tries to mitigate, the centralizing effect and inherent political contention when deciding fee parameters.

Because we are limiting the rate of data that is processed for consensus, flow control must be decided before the consensus step. Since fees are a number field in the transaction itself it is easy to make the priority determination before consensus. Constructing a flow control mechanism that does not require a fee is inherently more complex.

The opportunity cost of a transaction:

It is commonly discussed that a fee is required because rate limiting must have a cost as nothing is free.  The implication is that without a fee field in the protocol, we can’t determine the associated cost of confirming a transaction.

This analysis misses using the opportunity cost of the balance held in that account as the associated cost function for prioritization.

Opportunity cost is an economic term for what you give up by making a certain decision. The opportunity cost of holding a currency is what you forgo by holding that currency. Some examples of what could be given up are: purchasing an investment, holding a different currency, or eliminating interest by paying off debt.

If we measure the length of time since an account’s last transaction and compare it with the balance held in the account, we can obtain the opportunity cost spent by that transaction and do so without user intervention.

Summary:

Nano uses the opportunity cost of a transaction to passively determine a transaction cost as a parameter for flow control and QoS across the network.

Other digital currency protocols may have a hard time implementing opportunity cost flow control based on the face value of the transaction if they allow a significant external value to be tied to the transaction. Specifically, when arbitrary data is allowed in the protocol, the software isn’t able to make a true opportunity cost determination for a particular transaction.

Fee removal greatly simplifies the user experience, minimizes contention in the protocol specification, eliminates sources of confusion, and avoids pitfalls that can lead to accidental loss.


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.