The price volatility of cryptocurrencies prevents their widespread adoption. Most businesses need digital currency with stable costs of transactions to be a basic medium of exchange.

We can observe this on an example of the Bitcoin — as Bitcoin has soared in popularity its transaction costs have gone up in tandem with it and it has become too expensive to use in small transactions. High fees are pushing companies away from Bitcoin. The problem came to a head in early December 2017, when Steam, the popular downloadable video game store, announced it would stop accepting Bitcoin payments for games, citing its volatility and high transaction fees. Steam relied on a Bitcoin payment system called BitPay. You might think that services like BitPay are to blame for Bitcoin’s high transaction costs. But the fees charged by BitPay and similar companies represent only a small portion of the total cost of a typical Bitcoin transaction. [1]

There are few reasons for this: in Bitcoin, transaction fees are proving to be profitable for miners and there is a limit of block size in Bitcoin. The price of Bitcoin does not have a direct impact on transaction fees. It’s not like miners are charging more or Bitcoin users are having to pay higher fees just because Bitcoin is worth more. Instead, all of the volatility in the price of Bitcoin had led to more people buying and selling the cryptocurrency — which means a lot more demand for space in blocks. And more demand has led to higher fees.

Volatility is affecting demand in a more complicated and important way. Because of volatility fluctuations, the value of Bitcoin can change significantly in a short amount of time. When there are a lot of transactions taking place, it can potentially take days to record them all, during which time Bitcoin’s value could have changed by thousands of dollars.

Merchants risk losing money if they lock in a price with a customer and the value of Bitcoin falls before the transaction is completed. That’s not a risk many merchants or Bitcoin traders take lightly, so many have been willing to accept higher fees to speed the recording of their transactions. [1] The upsurge in users and transactions increased the demand for miners’ services. The sooner you want a transaction written to the blockchain, generally the higher mining fee you will have to pay. The advantage of having a transaction recorded quickly is that the sooner it’s recorded, the sooner you can spend or sell the coins you’ve received — and the sooner a merchant will mark a deal as completed.

Speeding the recording of Bitcoin transactions has been particularly important in a volatile market such as the one the cryptocurrency has experienced in recent months. With the price of Bitcoin fluctuating by hundreds or even thousands of dollars in mere hours or minutes, there’s a big benefit to being able to buy and sell coins sooner rather than later — and many Bitcoin traders have been paying up for just that advantage. [1]

In addition to mining fees, bitcoin users often have to pay a second fee that ultimately goes to miners, something called a network fee. Payment processors such as Bitpay collect such fees from consumers making purchases to pay miners to move funds from an individual customer’s Bitcoin wallet address to a Bitcoin exchange, where BitPay converts bitcoin into the merchant’s local currency. The payment processors add the fee to the transaction total. Like mining fees, network costs fluctuate based on how busy the network is. Unlike mining fees, however, network charges aren’t optional; BitPay charges them on all transactions it handles to ensure that miners record those transactions as quickly as possible. [1]

This results in users being pushed to second layer solutions (e.g. sidechains, Lightning Network). Users do not have optionality in Bitcoin. In Karbo, we set the goal to make the main-chain accessible to everyone by keeping fees reasonable.

The CryptoNote technology that is used in Karbo provides the solution to the part of the problem — the adaptive block size eliminates the necessity to pay higher fees to get transaction into the block and to be processed promptly.

But this introduces another problem to be solved — prevention of spamming the network. In 2010, a block size limit of 1 MB was introduced into Bitcoin by Satoshi Nakamoto. He added it hidden in two commits in secret, when challenged publicly he said it is a safety measure to prevent miners from creating large spam blocks. [2] However, because the block size limit is adaptive in CryptoNote, zero minimum fee can lead to transaction flooding which was addressed by introduction of minimum transaction fee. It was hardcoded as flat rate in the default CryptoNote solution. Transactions cheaper than the minimum transaction fee wouldn’t be accepted by the Karbo network. Thus the funds in the wallet repeatedly sending transactions to spam the network sooner or later will exhaust. The minimum transaction fee solves two problems, — it introduces the costs of spamming the network and helps to motivate miners to continue to support network.

The minimum transaction fees can not be too small to effectively prevent abusing. Karbo network had very small flat rate transaction fees (set to 0.0001 KRB). This allowed to attack Karbo network with spam of large number of transactions of tiny sums during the beginning of Aprl 2018. Karbo developers were forced to to set higher transaction fees (0.1 KRB) to stop and prevent spamming which was leading to blockchain bloat. The attacker’s goal was also to clog the queue of transactions waiting to be included into the block and to cause denial of service. The other potential risk is that attack was aimed to make it possible for the attacking party to deanonymize Karbo blockchain.

The problem is that with the raise of cryptocurrency price it’s transaction costs in fiat equivalent will go up as well and it will become too expensive to use in small transactions. This is confirmed by the high fees that we can observe in the CryptoNote currency Monero with the upsurge of it’s price. However, It’s minimum transaction fee is not hardcoded and is based on the size of the transaction instead, but yet it became quite high when the price of Monero surged because the part of the fee forumula is hardcoded as well. The developers of Monero compare the Monero’s per kB fees to the per kB fees of other coins for a typical transaction (2 inputs + 2 outputs):

Bitcoin: ~$26.90

Ethereum: ~$2.91

Bitcoin Cash: ~$0.07

Litecoin: ~$0.10

Dash: ~$0.07

Monero: ~$0.24

They state that the per kB fee of Monero is fairly low to their opinion. However, due to the large transaction size, the absolute default fee (in fiat equivalent terms) is quite high they admit.[3]

This leads us to the conclusion that the adaptation of fees to the price of the coin is very important. The easiest and most simple possible solution is to change the hardcoded minimum fee. But “the notion of devs having to release new binaries with lower fees is myopic, because (i) it’d merely kick the can down the road, (ii) changing the constants or formulas requires a hard fork, i.e., they are enforced on a consensus level, and (iii) constantly intervening would be contradictory to our grass-roots, decentralized nature” — was well expressed by the Monero developers. [3]

Therefore it is necessary to develop algorithm that will keep the minimum transaction fee on the stable level in fiat equivalent automatically without intervention of the developers or any trusted agents. This algorithm should adapt the minimum fee to the change of the coin price in fiat currency equivalent. To create such algorithm we need to find a way to establish a feedback from external, real world data to the algorithm, when the blockchain is the only source of data that is available to it. And luckily, there is such way.

Scott Roberts in his blog proposes a solution how to use blockchain data to determine outside, real world parameter — the price: “Difficulty is exactly proportional to network hashrate, and network hashrate is closely proportional to coin price”. [4] This idea finds confirmation in Vitalik Buterin’s research “The Search for a Stable Cryptocurrency”. [5]

The comparison of the average prices per day with the average difficulty per day in Karbo blockchain and historical price data confirms Scott Roberts’ idea:

The comparison of the Karbo average prices per day with the average difficulty per day

On this chart we can see the average difficulty and price, and it leaves no doubts that they are definitely interconnected. Based on this conclusion, we propose several major changes in the Karbo. The first proposal is a dynamic, difficulty driven minimum transaction fee algorithm. Using Scott Roberts assumptions, it is possible to measure average difficulty at the chosen price level in chosen fiat currency and calculate corresponding fee. Thus the minimum transaction fee and transactions costs will stay at about the same level regardless of coin price. The detailed description can be found in Karbo whitepaper. Stable transactions costs average level is the first step of making stable cryptocurrency.

[1] http://www.businessinsider.com/bitcoin-payment-mining-fees-hit-new-high-2017-12

[2] https://en.bitcoin.it/wiki/Block_size_limit_controversy

[3] https://getmonero.org/2017/12/11/A-note-on-fees.html

[4] http://zawy1.blogspot.com/2017/12/using-difficulty-to-get-constant-value.html

[5] https://blog.ethereum.org/2014/11/11/search-stable-cryptocurrency/