|
| 1 | +# Motivating Leios: Fees and rewards |
| 2 | + |
| 3 | +Given the current protocol parameters on `mainnet` and historical ada prices, even fully utilized Praos blocks do not generate sufficient fees to cover stakepool operating costs. However, higher transaction throughput on `mainnet` can generate sufficient fees to cover the cost of operating stakepool under Praos or Leios. |
| 4 | + |
| 5 | + |
| 6 | +## Maximum theoretical fee for a block or epoch |
| 7 | + |
| 8 | +The protocol parameters for Epoch 550 are shown in the following table. |
| 9 | + |
| 10 | +| Parameter | Value | Units | |
| 11 | +|----------------------|--------------:|---------------| |
| 12 | +| `max_block_size` | `90112` | byte/block | |
| 13 | +| `min_fee_a` | `44` | lovelace/byte | |
| 14 | +| `min_fee_b` | `155381` | lovelace/tx | |
| 15 | +| `max_block_ex_mem` | `62000000` | me/block | |
| 16 | +| `price_mem` | `0.0577` | lovelace/mem | |
| 17 | +| `max_block_ex_steps` | `20000000000` | ste/block | |
| 18 | +| `price_step` | `7.21e-05` | lovelace/step | |
| 19 | + |
| 20 | +From historical data, we see that approximately 75 tx/block is the maximum number of transactions practically included in a full block. Each epoch has an average of 21,600 blocks. |
| 21 | + |
| 22 | +Now estimate the approximate maximum fee possible for a block or epoch: |
| 23 | + |
| 24 | +| Item | Computation | Fee [lovelace/block] | Fee [ADA/epoch] | |
| 25 | +|------------------|-----------------------------------|---------------------:|-----------------:| |
| 26 | +| Bytes | `max_block_size * min_fee_a` | `3 964 928` | `85 642` | |
| 27 | +| Transactions | `75 * min_fee_b` | `11 653 575` | `251 717` | |
| 28 | +| Execution memory | `max_block_ex_mem * price_mem` | `3 577 400` | `77 272` | |
| 29 | +| Execution steps | `max_block_ex_steps * price_step` | `1 442 000` | `31 147` | |
| 30 | +| *Total* | | *`20 637 903`* | *`445 778`* | |
| 31 | + |
| 32 | + |
| 33 | +## Current rewards and fees |
| 34 | + |
| 35 | +Recent epochs distribute about eight million ada in rewards. |
| 36 | + |
| 37 | +```sql |
| 38 | +select |
| 39 | + earned_epoch as "Epoch Earned" |
| 40 | + , sum(amount) / 1e6 as "Reward [ADA/epoch]" |
| 41 | + , fees / 1e6 as "Fees [ADA/Epoch]" |
| 42 | + from reward |
| 43 | + inner join ada_pots |
| 44 | + on earned_epoch = epoch_no - 1 |
| 45 | + where earned_epoch between 525 and 550 |
| 46 | + group by earned_epoch, epoch_no, fees |
| 47 | +order by earned_epoch desc; |
| 48 | +``` |
| 49 | + |
| 50 | +| Epoch Earned | Reward [ADA/epoch] | Fees [ADA/Epoch] | |
| 51 | +|-------------:|-------------------:|-----------------:| |
| 52 | +| `550` | `7 725 300` | `67 431` | |
| 53 | +| `549` | `7 728 511` | `56 324` | |
| 54 | +| `548` | `7 765 678` | `53 136` | |
| 55 | +| `547` | `7 840 690` | `54 873` | |
| 56 | +| `546` | `7 870 624` | `53 377` | |
| 57 | +| `545` | `7 726 349` | `63 417` | |
| 58 | +| `544` | `7 753 134` | `66 943` | |
| 59 | +| `543` | `7 795 722` | `99 113` | |
| 60 | +| `542` | `7 901 127` | `73 755` | |
| 61 | +| `541` | `7 871 007` | `74 074` | |
| 62 | +| `540` | `7 981 229` | `76 503` | |
| 63 | +| `539` | `7 975 418` | `67 915` | |
| 64 | +| `538` | `7 822 513` | `76 469` | |
| 65 | +| `537` | `7 980 990` | `117 841` | |
| 66 | +| `536` | `8 070 426` | `93 384` | |
| 67 | +| `535` | `7 961 201` | `102 941` | |
| 68 | +| `534` | `8 106 461` | `135 143` | |
| 69 | +| `533` | `8 022 325` | `97 834` | |
| 70 | +| `532` | `8 113 573` | `92 068` | |
| 71 | +| `531` | `8 084 133` | `107 386` | |
| 72 | +| `530` | `7 995 335` | `103 650` | |
| 73 | +| `529` | `8 052 614` | `113 830` | |
| 74 | +| `528` | `8 108 593` | `132 087` | |
| 75 | +| `527` | `8 012 455` | `158 411` | |
| 76 | +| `526` | `8 072 808` | `190 021` | |
| 77 | +| `525` | `8 119 182` | `211 458` | |
| 78 | + |
| 79 | +Thus, even the fees from full blocks would only amount to six percent of current rewards. Current fees are approximately fifteen percent of the theoretical maximum. |
| 80 | + |
| 81 | + |
| 82 | +## Depletion of the Reserve |
| 83 | + |
| 84 | +Most of the rewards currently come from the Reserve, but that Reserve is depleting at the rate of about thirteen percent per year. |
| 85 | + |
| 86 | +```sql |
| 87 | +select |
| 88 | + 100 * ln( 1.0 |
| 89 | + * (select reserves from ada_pots where epoch_no = 350) |
| 90 | + / (select reserves from ada_pots where epoch_no = 550) |
| 91 | + ) / ((550 - 350) / (365.24 / 5)) as "Reserve depletion [%/year]" ; |
| 92 | +``` |
| 93 | + |
| 94 | +| Reserve depletion [%/year] | |
| 95 | +|---------------------------:| |
| 96 | +| `12.81` | |
| 97 | + |
| 98 | +At this rate, the Reserve (and hence the rewards from it) will drop to half of its current amount in five years. |
| 99 | + |
| 100 | +```sql |
| 101 | +select 100 * exp(- 0.128178815456265966 * 5) as "Reserve in five years [%]"; |
| 102 | +``` |
| 103 | + |
| 104 | +| Reserve in five years [%] | |
| 105 | +|--------------------------:| |
| 106 | +| `52.68` | |
| 107 | + |
| 108 | + |
| 109 | +## Implications for Leios |
| 110 | + |
| 111 | +Anecdotal evidence indicates that the current rewards and ada price are approximately sufficient for stakepools to be profitable. How much would the production rate of full Praos blocks have to be in order to make up the shortfall of decreasing Reserve? |
| 112 | + |
| 113 | +```sql |
| 114 | +select |
| 115 | + 2025 + years "Year" |
| 116 | + , (select sum(amount) / 1e6 from reward where earned_epoch = 550) -- Current rewards |
| 117 | + * (1 - exp(- 0.128178815456265966 * years)) -- Shortfall from diminishing Reserve |
| 118 | + / 445778 -- Maximum Praos fee per epoch |
| 119 | + * 0.05 -- Praos active slot coefficient |
| 120 | + + 0.16 * 0.05 -- Current Praos utilization |
| 121 | + as "Full-block rate required to maintain rewards [block/slot]" |
| 122 | + from generate_series(0, 10) as years; |
| 123 | +``` |
| 124 | + |
| 125 | +| Year | Full-block rate required to maintain rewards [block/slot] | |
| 126 | +|-------:|----------------------------------------------------------:| |
| 127 | +| `2025` | `0.008` | |
| 128 | +| `2026` | `0.112` | |
| 129 | +| `2027` | `0.203` | |
| 130 | +| `2028` | `0.284` | |
| 131 | +| `2029` | `0.355` | |
| 132 | +| `2030` | `0.418` | |
| 133 | +| `2031` | `0.472` | |
| 134 | +| `2032` | `0.521` | |
| 135 | +| `2033` | `0.563` | |
| 136 | +| `2034` | `0.601` | |
| 137 | +| `2035` | `0.634` | |
| 138 | + |
| 139 | +Assuming current ada price and protocol parameters, this indicates that transaction throughput would have to increase to about one full Praos-like block every three seconds by 2029 to maintain rewards at current levels. |
0 commit comments