Self-adjusting onboarding fees with demand pricing #587
Replies: 4 comments 6 replies
-
I just want to point out the similarity between what is proposed here and the adjustable target block size mechanism from (#515). Let’s first separate the two ingredients here, one which is about separating message kinds into different lanes, and the other is about introducing an explicit minimum base fee. If we were doing only the second part, only adding minimum base fee (for all kinds of messages, without distinguishing), this is completely equivalent to adjusting the target block size. Moving the target block size (which is currently in principle set to be the largest that can be consistently processed) is only a specific mechanism that achieves increasing a minimum base fee. So talking about increasing minimum base fee, or reducing target block size results in the same thing. What I like about the adjustable target block size approach is that for me it is more transparent and interpretable. Importantly the adjustable target block size proposal doesn’t touch the Maximum block size, so it is not limiting the actual maximum capacity of the block, only economically guiding the expected block size through an increase in base fee. The way I had proposed the adjustable target block size, I deliberately did not specify what criterion was use to adjust the target block size. Part of my discussion was trying to get different Filecoin stakeholders to agree on what is it that Filecoin wants to maximize for, this is what I there call a target function. My idea is that the target block size can be adjusted with a transparent mechanism whose goal is to maximize whatever target function we decide. When interpreting your proposed mechanism in this light, you are using an implicit target function to set your minimum base fee, which seems a bit counterintuitive to me. If you are saying minimum base fee should be increased when there is more onboarding, or equivalent target block size should be reduced when there is more onboarding, this means the target function you are using is something like (1/Onboarding rate). That is you are designing a mechanism that tries to minimize the onboarding rate (which doesn’t sound like a good thing). If for instance you used the opposite target function (you tried to maximize onboarding rate), there would still be a stabilizing effect, in terms of the base fee remaining relatively stable with changes in onboarding demand. If there is a surge in demand for onboarding, this would lead to adjustable target block size growing, but this doesn’t mean base fee will actually be lower, as the lowering of the minimum base fee is offset by the actual increase in demand that brings the base fee back up. The other element here is gas lanes. This is not something that was part of my original proposal, but definitely something we are considering for the next iteration (we were thinking more in terms of storage-related messages vs general FVM). The eventual form I had in mind would be two parameters, an overall target block size, and a parameter for the allocation of gas available in the block between storage and FVM messages. Otherwise I think we are both generally circling around very similar ideas. The most productive path I see moving forward is for us to work together on the next iteration, taking the best parts from both our proposals. |
Beta Was this translation helpful? Give feedback.
-
I'm supporting this as a general idea. Taking this into consideration, the discussion #430 I submitted can be closed. There is some thoughts coming to my mind when I am thinking of the Per-sector on-boarding fee i proportion to the recently observed net raw-byte power growth rate mechanism. Firstly, it should be no objections that the network resource consuming for proofs (for both new on-boarding, or updating a sector) verification should be still counted in the base-fee calculation, even though the base-fee are used for these messages; And, we may encounter a situation that the cost of a sector on-boarding might be higher than the current one, which calculated with the mechanism via base-fee, no difference than other messages, which means this change may increase SP's cost under some scenarios. We may need to avoid this in design. When it comes to the minimum sector on-boarding fee, same situation could happen since the base-fee could be really low (to 100attoFil), so, would the minimum sector on-boarding fee be a function, instead of a fixed number? |
Beta Was this translation helpful? Give feedback.
-
I’ll start by saying that I overall agree with (and like) this proposal. Just to clarify/summarise/double check we are on the same page:
If we agree with the above, then I guess the next step would be to construct several well-motivated candidates for the onboarding fee function, and then discuss. It might also be worth investigating how —if at all— would this affect the message packing strategy of the miners.
I’m also flagging that Chitra and Angeris (well-known in “academic” crypto) have recently ArXiVed a manuscript investigating something similar. I will take a deeper look at it to see if we can extract something meaningful for us. |
Beta Was this translation helpful? Give feedback.
-
I am supportive of this concept. As you've pointed out in #557, it is critical to separate the rivalrous and non-rivalrous aspects of the network. At a high level, the mechanism appears to be an effective way for the network to capture value no matter the market condition. My only hesitation is that during phases of high storage growth onboarding fees may make deal-making unattractive. This scenario could lead to several outcomes:
I will leave room for the fact that these may be desirable outcomes from certain perspectives. These fees may also be so small that my statements above are moot. I am unsure if this is viable, but I will float the idea: It may be desirable to implement a fee system that treats deals of high urgency differently than non-urgent deals, creating an onboarding queue of sorts. Those SPs willing to pay higher fees get to the front of the line, whereas those willing to wait and pay less fees can onboard profitably. |
Beta Was this translation helpful? Give feedback.
-
The proposal to separate proof fees from execution gas proposes removing the batch balancer mechanism, instead charging SPs an explicit fee for proving or updating a sector, separate from the gas cost of the on-chain proof verification. As technological advances reduce the hardware (off-chain) and validation (on-chain) costs, and expand the availability of blockspace, the Filecoin network should continue to capture revenue based on the core functionality of network-validated, cryptographically proven storage.
This proposal expands on that idea with a self-adjusting price mechanism, restoring a feature that the batch balancer offered before the introduction of FVM. This idea is a collaboration with @nicola.
The batch balancer was ok pre-FVM
The batch balancer mechanism had an element of demand pricing in its batch fee formula. The per-sector batch fee increases with base fee so that the total gas+fee cost of a proof increases faster than the base fee. Before the introduction of the FVM, the primary demand for blockspace is storage onboarding. This means the primary determinant of base fee is the onboarding rate and so this introduces a feedback mechanism where high onboarding rates would increase the fees associated with onboarding both via the gas cost (which could be countered by aggregation) and the batch balancer fee.
After the FVM is introduced, there will be many demands for blockspace which will change over time. The base fee will cease to be driven primarily by onboarding rate, and may fluctuate wildly. There is significant concern that volatile gas prices will price out network maintenance operations (Window PoSt) and increase costs and risks of onboarding. Technological advances that reduce the computational cost of proof verification would also further weaken the relationship between base fee and onboarding rate.
Returns depend on off-chain factors
SPs returns depend on income and costs denominated in both Filecoin tokens and fiat currencies. Mining rewards and on-chain fees are denominated in FIL, but factors like the cost of hardware, energy, and staff are usually fiat. An SP’s returns thus depend on the Filecoin token price and local costs of inputs, as well as on-chain ROI.
The prevalence of non-FIL costs makes it hard to determine the “right” price for a storage proof. The Filecoin network should capture some part of an SP’s expected return, but that return depends heavily on factors that are not observable on-chain. If the price of a proof is set too high relative to off-chain realities like macroeconomic conditions, energy costs, or the token price, storage providers will withdraw. But if the price is set too low after technological improvements or market euphoria, the Filecoin network will forgo significant revenue that it could have captured.
Demand pricing
The original proof fee proposal suggested setting the price by governance action, a slow and impedance-prone process. As off-chain factors vary, the price would almost certainly be “wrong” most of the time.
We could instead price onboarding dynamically at the right level to both ensure sustainable SP returns and capture value as those returns improve by setting the price based on demand, as evidenced by the recent historical storage onboarding rate.
Proposal: establish a per-sector onboarding fee in proportion to the recently (~days/weeks) observed net raw-byte power growth rate. A similar fee would apply at Replica Update, and we may want to monitor the rate of replica updates in order to inform the dynamic price. This fee should also vary with sector size and probably commitment duration.
A demand-based onboarding fee would automatically adjust to changes in both on-chain and off-chain factors, and expectations thereof, influencing SP returns. SPs would be expected to commit sectors up to the rate at which the fee reduces their returns to a sustainable level (these returns would still be quite large, reflecting an acceptable risk-adjusted return on such investment).
A stabilising influence
In times of low or negative network growth, a dynamic onboarding fee would reduce the Filecoin network’s value capture to a minimum (gas would still be charged), maximally encouraging additional onboarding. Zero network growth implies that SP expected returns are, in aggregate, at the minimum sustainable level so there is no room for the network to capture revenue without losing net commitments. Despite reducing revenue, encouraging additional commitments would have a beneficial impact on the token circulating supply, since the tokens locked up in pledge far exceed the amount burnt. In times of declining growth and increasing supply, the pledge from a marginal sector is more valuable than the foregone fee.
On the other hand, in times of strong growth, a dynamic onboarding fee would increase the network’s value capture automatically in response to increased SP demand for onboarding. The increased demand implies that SP returns are strong, and a fee based on onboarding rate would increase to capture part of those return. A demand-based onboarding fee would thus act as a stabilising influence on network growth rate, curbing the peaks (while capturing strong revenues) and boosting the troughs, as compared to a fixed fee.
All of this should be decoupled from execution gas scarcity, which will become increasingly uncorrelated with storage demand and thus destabilising.
Response to technological improvements
As a concrete and not-too-hypothetical scenario, technological improvements currently in development may reduce the costs of proving sectors significantly. These improvements will reduce both the on-chain proof verification cost, and a storage provider’s hardware and energy costs for proof generation. A reduction in FIL-denominated on-chain costs could be accounted for in a fixed fee, but the reduction on off-chain costs is very hard to price in FIL. The “right” reduction depends on the proportion of SPs’ total costs that the proof generation represents, as well as the Filecoin token price at which to translate those fiat savings into on-chain fees.
A demand-based onboarding fee would automatically balance these factors. When off-chain costs decrease, SP returns would improve and so SP’s may be expected to commit more sectors in order to exploit those returns. An increased onboarding rate would push the fee up until it had captured a sustainable share of the gains.
Target setting
This proposal introduces a different network parameter to be set by governance action. Instead of setting an onboarding fee explicitly, we must instead decide form and slope of the “fee market” function. The simplest reasonable function is probably linear with a floor (like the batch balancer), in which case parameters are:
Additional decisions include how to vary the fee with sector size (probably linearly) and commitment duration.
The reward baseline function could provide a good guide here, and it seems reasonable to couple the two concepts (so that these values change if the baseline function changes in the future). For example, we could set parameters so that the function passes through the current batch balancer floor (16M atto-FIL) when the growth rate matches the baseline function, but has a floor somewhat lower in order to boost onboarding below that point.
Beta Was this translation helpful? Give feedback.
All reactions