Consider exponential decay of custom rate (e.g. not always divide by 2).
jakerockland opened this issue · comments
This is feedback surfaced recently by an artist who was asking for control over, e.g. ^(1/1.5)
type decay rather than ^(1/2)
.
I think this is something we likely do not want to do with the rationale that it is much more gas efficient solidity-operator wise to do a half-life based decay as we can accomplish it using bitshifting+interpolation – which is a factor we care a lot about (minimizing gas costs in purchase flow, and in artist uploads, wherever possible).
This also may be a complicated thing to communicate to artists configuring their sales if we had this be an additional lever that was configurable.
That said, I think this feedback is important to capture for posterity and future consideration if we continue to get this feedback.
@jakerockland - I think this is all exponential decay, and adding an option to define time t
that something takes to reach 2/3
of its price is the same as defining the time t*~1.7
that something takes to reach 1/2
of its price.
I could be wrong, but I think the price curves achievable through time are essentially (or maybe actually) equivalent (other than our linear interpolation between half-life points, which is also for gas efficiency).
also, definitely agree that we get a lot of gas efficiency by using 1/2, thanks to bitshift operation.
Yeah great point as well @ryley-o – the actual decay here is very similarly achievable (I don't think mathematically exact but my intuition here may be off an my brain is tired hah). I'm just going to close this ticket for now, doesn't seem to be something we'd likely want to expose any time soon if ever.
I realized last night that if an artist has a time t
minutes they would like the auction to decay to 1/1.5 = 2/3
of their original value, they could define a half-life time of t' = ln(1/2) / ln(2/3) * t ~= 1.71 t
, and achieve the same curve through time (other than linear interpolations would be slightly different.