The idea behind Ardor is brilliant. And sometimes brilliant ideas require some time to be fully understood.
One of the great features of Ardor is that there can be many child chains running under the blockchain infrastructure built on the Ardor nodes (main chain). At the release of the live Ardor software in Q3 2017, all the functionalities of the current NXT will be implemented in the first Ardor child chain called Ignis.
But one thing that is apparently not clear to everybody is how the fees structure looks like in the child chains and in the Ardor main chain. So let’s clarify.
Let’s start from the Ardor main chain.
Forging blocks on the Ardor main chain will work as today’s NXT forging. The Proof of Stake protocol allows the forging node with more tokens to have better chances to forge a block. Forging is the equivalent of mining in the NXT/Ardor world. The reward of a forged block is the sum of the transaction fees within that block.
These blocks will contain transactions from the main chain and from the child chains. The Ardor main chain will be the only one forging and providing the blockchain infrastructure to all child chains.
So that’s clear. Ardor’s forging process works as today’s NXT forging with the exception that there are also transactions from the child chains packed in the same blocks.
Let’s now move to the child chains. Let’s take for example Ignis, the first child chain of Ardor.
Users doing transactions within Ignis do not have to worry about Ardor fees. They can simply transfer Ignis from one account to the other, issue an Asset, send a message, etc by just paying a fee in Ignis. The child chain fees can change because they will be defined by the “bundlers”.
So what is a “bundler”? A “bundler” is the link between the child chain and the main chain. It’s the one that collects the child chain fees and then pays the main chain (Ardor) to pack those transactions in a block.
There will be bundlers for each child chain and anyone can setup a bundler as long the account holds some Ardor.
Here is how the Bundler setup page looks like (example for Ignis):
The field “Minimum Rate” is a multiplier for the defined Ardor fee for that specific transaction. The result of that multiplication will be the minimum transaction fee in child chain token users will have to pay so that the bundler will bundle their child chain transaction.
“Fee Limit” is the total amount you want to spend in Ardor fees.
“Overpay” is the extra you want to pay more in case of competing bundlers. This is a multiplier of what you will pay in terms of Ardor fee.
Let’s hypothetically assume that these are the fixed prices for a couple of transaction in Ardor (still in development so let’s not be too picky with the exact amounts):
- Basic transaction (money transfer, sending message, etc): 0.1 Ardor
- Asset issuing: 1000 Ardor
Now lets assume a bundler is set with these parameters:
- Minimum Rate: 10
- Fee Limit: 200
- Overpay: 0.1
Someone now sends a message to someone else in the Ignis child chain. The client will automatically set the fee to the minimum fee offered by the bundlers. Let’s assume that our bundler is the only one, then the fee that will be applied will be:
0.1 Ardor fee x 10 Minimum Rate = 1 Ignis
So the message will be delivered with 1 Ignis fee.
The bundler then has to pay 0.1 Ardor + (0.1 Ardor x 0.1 Overpay) = 0.11 Ardor
Let’s set another bundler with these parameters:
- Minimum Rate: 1
- Fee Limit: 5000
- Overpay: 2
Someone issues an Asset on the Ignis child chain. Here is how the fees will look like:
1000 Ardor fee x 1 Minimum Rate = 1000 Ignis
So the Asset will cost 1000 Ignis to the user.
The bundler instead will pay 1000 Ardor + (1000 Ardor x 2 Overpay) = 3000 Ardor
As the bundler has set a Fee Limit of 5000, it can afford to pay the 3000 Ardor mentioned above and still have 2000 Ardor budget for the following “bundles”.
Keep in mind that the bundler gets the child chain fees, and this is where it gets interesting. The bundlers will then have to follow the exchange rate between, for example, Ardor and Ignis and define the Bundler in a way that he/she can recover the expenses.
Let’s assume that 1 Ardor = 1 Ignis in terms of value.
Let’s suppose that we have a Bundler set in the following way:
- Minimum Rate: 1
- Fee Limit: 1000
- Overpay: 0
Someone sends a message and pays a fee of 0.1 Ignis (0.1 fixed Ardor fee multiplied by Minimum Rate 1) to the bundler.
So the bundler received a value 0.1 Ignis and pays a 0.1 Ardor as the value of Ardor and Ignis, in this example are the same, then there is no loss and no gain for the Bundler.
Assuming the same Bundler defined above, but the value of Ardor is 10 times the value of Ignis, so you need 10 Ignis to buy 1 Ardor.
In that case there would be a loss for the Bundler as it will receive 0.1 Ignis fee but will pay 0.1 Ardor fee which is worth 10 times more. So in that scenario the Bundlers have to adjust their Bundler settings to be more reasonable financially, in this case a 0 gain/loss would be achieved by setting Minimum Rate to 10.
This is where more Bundlers will have to compete to be the most attractive but also to make a little gain maybe. This will be defined by the market.
I hope this example helps to understand the fee structure in Ardor, but please be aware that Ardor is still being developed so things might be different when it will go live.