Motivation
We propose a new fee calculation model which makes the fee calculation process more understandable without reducing the miners’ income. This model allows to make more accessible some types of transactions such as Exchange, Reissue and all scripted transactions.
There are currently 13 different actual types of transactions(excluding Genesis and Payment) in Waves, the 14th type running on Testnet. The actual mechanism for the fee calculating involves different values depending on the type of transactions and the presence of scripts:
Example : for a Transfer transaction the commission is 0.001.WAVES . If the client uses a smart account, the commission increases to 0.005.WAVES . When transferring a smart-asset by a smart-account, the total commission grows to 0.009.WAVES
Currently, the model for fees calculation is following (excluding the increase due to the use of smart-accounts / smart-assets, minFee = 0.001.WAVES ):
Tx Name | Math expression | Total waves |
---|---|---|
Issue | 1000 * minFee | 1.WAVES |
Transfer | minFee | 0.001.WAVES |
ReIssue | 1000 * minFee | 1.WAVES |
Burn | minFee | 0.001.WAVES |
Exchange | 3 * minFee | 0.003.WAVES |
Lease | minFee | 0.001.WAVES |
LeaseCancel | minFee | 0.001.WAVES |
CreateAlias | minFee | 0.001.WAVES |
MassTransfer | minFee * (1 + numberOfRecipients/2), rounded up to 0.001.WAVES | where numberOfRecipients = 10 → 0.001.WAVES+ 0.005.WAVES= 0.006.WAVES |
Data | minFee * dataBytesSize / 1024, rounded up to 0.001.WAVES | where dataBytesSize = 1024 → 0.001.WAVES |
SetScript | 10 * minFee | 0.01.WAVES |
SponsorFee | 1000 * minFee | 1.WAVES |
SetAssetScript | 996 * minFee | 0.996.WAVES |
InvokeScript | minFee | 0.001.WAVES |
Table1 |
The main disadvantages of the current fee calculation algorithm are:
- fee increases by 0.004.WAVES each time you use a smart-account \ smart-asset
- different values for different types of transactions
Solution proposal
A more visual and understandable system of fees calculating with a fixed value for each transaction is proposed, without an increasing due to the using of smart-accounts / smart-assets. We chose the minFee value in order to achieve the following points:
- preserve miners’ average income
- create clear model of transaction fees
- increase accessibility some type of transactions such as Exchange, ReIssue and all scripted transactions
The next model of the fee distribution is proposed:
TxId | TxName | Math expression | Total waves ( minFee = 0.002.WAVES) |
---|---|---|---|
3 | Issue | 1000 * minFee | 2.000.WAVES |
4 | Transfer | minFee | 0.002.WAVES |
5 | Reissue | minFee | 0.002.WAVES |
6 | Burn | minFee | 0.002.WAVES |
7 | Exchange | minFee | 0.002.WAVES |
8 | Lease | minFee | 0.002.WAVES |
9 | LeaseCancel | minFee | 0.002.WAVES |
10 | CreateAlias | minFee | 0.002.WAVES |
11 | Mass Transfer | minFee * (1 + numberOfRecipients/2), rounded up to minFee | where numberOfRecipients = 10 → 0.002.WAVES*(1 + 10/2) = 0.012.WAVES |
12 | Data | minFee * dataBytesSize / 1024, rounded up to minFee | where dataBytesSize = 1024 → 0.002.WAVES |
13 | SetScript | minFee | 0.002.WAVES |
14 | SponsorFee | minFee | 0.002.WAVES |
15 | SetAssetScript | minFee | 0.002.WAVES |
16 | InvokeScript | minFee | 0.002.WAVES |
Table2 |
According to the new model, the different transactions contribution in the total month fee can be seen in the graph below (transaction types are shown in the Table2 ):
The average miners’ income will slightly increase by using the new model. For example, it’s growing on 11325.WAVES during this period and that is 12% of the actual income. This stacked bar chart with accumulation displays the month fee changes in Waves by month:
Summarizing : Understandable and clear model of transaction fees calculation is proposed. This model implements a fixed value for per use of each type of transaction. As can be seen from the data above, some type of transactions such as an Exchange or scripted transactions will be more accessible.
Open questions
- Community reaction to the fees changing
- The possibility of allowing miners to influence the minFee value (for example as a voting )