Here is the weekly chart review of Qtum Mainnet performance, with New Network Weight (22.2 million), a reprise of the memory pool topic and discussion of fees. In life, the only thing certain is death and taxes. In crypto life, we need to add transaction fees to that list. The tutorial will look at transaction fees, how they are set and some typical transaction fees on the network.
I am a community member and independent researcher, not affiliated with the Qtum Team.
Charts and Graphs
Data sources for this review of the Qtum Mainnet performance come from the Qtum Explorer, the blockchain, and logging from the qtumd server application.
Unique Reward Addresses
Unique addresses per day reached up to 290 on December 20, the highest in a month. For the entire week, there were 946 unique addresses, vs. 901 last week, perhaps showing the stabilization of large wallet growth.
Wallets winning multiple blocks continues to stabilize, we may have seen a reduction of big new wallets joining the network.
Active Transactions per Day
The number of transactions per day continued to grow, and set an all-time high on December 19 of 15,565, exceeding the previous high from October 20. Active transactions reports transactions for coins and contracts above the baseline two transactions for each block (the coinbase and coinstake transactions). Last week we noticed a peak of activity on the last two Fridays; this week the peak was on Tuesday.
As a preview of the transaction fee tutorial below, transaction fees are paid based on the size of each transaction. December 19th also was a peak in the size of traffic handled by the network (7.9 million bits of data), those growing fees are reaped by the block reward winning wallets. For the 2,000 transactions on December 15th I analyzed for the fee tutorial below, transaction fees added another 8% to the block rewards. The fee payments were probably double or triple that on December 19th.
Block Spacing Variation
From December 18 to December 24 there were 6 blocks with more than 20-minute spacing (vs. 3 last week), with the greatest spacing for block 69,068 at 27:58. Average block time is holding steady around 144 seconds.
The “New Network Weight”, shown below, is a daily calculation based on a 10-day exponential moving average of blocks won and known balances for big wallets, as described in previous reports, and ended the week at 22.2 million.
The Mempool Revisited and Transaction Fees
Two weeks ago I wrote about the memory pool (mempool) and its role holding unconfirmed transactions before they are corralled into a new block. Since then there have been some issues for early adopters of a hardware wallet. Let me start by saying you should always make test transactions with any new accounts/platforms/hardware. You want to send a fractional coin when using anything new, and make sure it is working correctly and working how you think it is working. I would go further and say for any new technology which you may be using to store/transmit something of value, it’s worthwhile to take some time and understand how that technology really works, so you don’t inadvertently do something stupid.
The hardware wallet had been eagerly awaited by the community because it is the first time you could securely hold your private keys in a hardware device, confirm transactions with a manual button press, all that good stuff we love about hardware wallets. To be clear, hardware wallets are the safest way to store cryptocurrencies. Unfortunately, a software bug caused some transactions to be issued with very low transaction fees.
Qtum wallets/nodes are configured to require a minimum transaction fee and will ignore transactions which do not meet this minimum fee. Are those low-fee transactions doomed to spend eternity in the mempool, in some sort of crypto limbo state?
The Qtum Team came up with a clever work-around, by suggesting a lower minimum fee configuration for the miners. The fix was for some altruistic miners to lower their fee thresholds to pick up these low fee transactions with this configuration:
For my report two weeks ago, there were about 30 unconfirmed transactions in the mempool (just a snapshot at that time). I took another look at the mempool and expected to see some of those poor unfortunate souls lingering as unconfirmed transactions, waiting for their speed-dating hookups on the next block. But the mempool was all caught up — all the unconfirmed transactions in the mempool for my wallet were published on the blockchain by the time I looked at the debug log an hour later.
There is also a 336-hour timeout for unconfirmed transactions in the mempool, but who wants to wait two weeks for their bad transactions to clear?
Transaction fees are set by the wallet and the transaction fee gives the fee per 1000 bytes of data in the transaction. For a small-sized transaction (226 bytes) this would give a fee of about 0.00505625 * 0.226 = 0.00127 QTUM, about USD 0.06
If 6 cents is too rich you can choose a minimum transaction fee, and as long as the network is not busy, the transaction should be confirmed quickly (probably the next block). The QT wallet helpfully describes this:
If you set the minimum fee of 0.004, then the fee for a small size transaction would be 0.004 * 0.226 = 0.000904 or 0.004 * 0.191 = 0.000768, and we can see many of these minimum fees in the blocks.
This minimum amount also shows up as the Relay Fee on the Qtum Explorer home page. Unconfirmed transactions below this minimum fee would not be relayed between nodes.
For the high volume cryptos, there are sites that show where you should set the transaction fee for fast/medium/slow confirmation (BTC ETH), and during the ICO craze last summer, people were loading in really high transaction fees to get their transactions to the front of the line on the Ethereum blockchain. We are not at that place with Qtum (yet), and I think the code has sophisticated algorithms to monitor the transactions and mempool, and adjust the fees if needed.
(updated) Finding the very low transaction fees was a tedious process, like finding a needle in a haystack, but eventually I found 47 such needles. After the work-around was posted, several node owners commented on the social medias they were putting in the new configuration. Within a few hours all these low fee transactions were published to the blockchain and the problem was resolved. To make a small point, I think a work-around like this would cause months of contentious debate on other blockchain platforms, but here the Qtum Team proposed the fix, and a few altruistic node owners made it happen. What a great community!
For a more detailed analysis of transaction fees I took the first 2,000 fees paid on December 15, which ranged from 0.000768 to 1.000924, with a typical fee for a simple transaction of 0.00113, or about USD 0.06. For comparison (you can check the references below) the current average transaction fee for Ethereum is USD 0.06 and for bitcoin is USD 140 (not a typo!).
In normal practice the wallet sets a minimum transaction fee of 0.004 Qtum per 1,000 bytes of data in the transaction, these transactions are accepted fine by the miners, and they zip through network confirmation. The work-around shown above for the super low fee transactions was for some wallets to accept transactions with their minimum fee at 0.0001 vs. the default 0.004.
Looking at the transaction fees for December 15 below I ripped data from the blockchain and captured the fee for each transaction, discarding the coinbase and coinstake transactions (which have no fee).
For December 15 there were 9,255 of these “active” transactions and I looked at the first 2,000 fees for the transactions in blocks 63,381 to 63,525. Of these fees, 75% were under 0.05 QTUM and 46% were under 0.002 QTUM. On the low-fee end, there were 7 transaction fees of 0.000768 and 21 of 0.000904. This histogram chart shows buckets of fees for the low end:
At the high end for this data set were numerous fees for contract calls (tokens for INK, Vevue, Qcash, Hyperpay, Bodhi, others) and the largest fee was for a contract created. These contract calls are usually paying fees between 0.1 and 0.12 QTUM (45% of the 2,000 transactions) and there is a smaller group (5% of the 2,000 transactions) between 0.08 and 0.1 QTUM. The histogram of contract call fees is:
During this (randomly selected) period of 145 blocks, contract call fees were 8% of the block reward fees. The highest fee of 1.000924 was paid for a contract creation in block 63,489.
I hope this explanation of fees will help you understand transaction fees — how they are set and paid on the network — because there is no avoiding these fees. Next week: all about VPNs.
Happy holidays to you and your family.
Bitcoin fees are skyrocketing, Ars Technica 12/11/2017
Blockchain.com bitcoin Cost per transaction, live chart
Bitinfo.com Ethereum Ave. Transaction Fee historical chart, live chart