Problem: We went from a dissolved minipool every 3 months or so to a dissolved minipool every two days since Atlas (and would be more like 1 per day if community members had not been paying to bail out those they could). Many of these are avado/dappnode/allnodes, but many are folks using normal smart node.
The most likely (to me) culprit post-atlas is the long minipool queue. It seems likely that unless we adopt a universal variable commission or some other dynamic incentive structure, we will probably perpetually bounce between a long NO queue and a full deposit pool based on crypto macroeconomic forces. So dissolves will continue to be an issue, and should be a concern for anyone non-technical looking to run a minipool.
I don’t think there’s a game to play by spinning up a minipool and then allowing it to be dissolved. These NOs have paid >90% of the gas costs and did 99% of the effort and are like $5.75 away from staking. I don’t think there’s a likely scenario where a node operator is purposely not calling stake. So these dissolves are likely all inadvertent. And because there are way too many for it to be user error, this must be a systems problem.
Lastly, the punishment is much worse than the crime: If a node operator delays an extra week, rETH loses about 0.025 ETH (55$) in capital inefficiency. The price of a dissolved minipool (including lost capital efficiency, gas, borrowing fees) is probably 400$-2000$. The majority of node operators who have been dissolved have 1-3 minipools; these aren’t whales and it’s probably going to be very hard to come up with someone to loan them 24ETH, so those are the ones on the 2000$ end. I see this as another way that the scales are tipped against the little guy.
Some possible solutions:
-
direct communication between RP team and avado/allnodes/dappnode to ensure stake is called automatically on those platforms. That should deal with a sizable chunk. Have a section in the docs targeted specifically for these users.
-
prevent the smartnode user from setting
stake
maximum gas to a very low number: either have a separate value for juststake
with a minimum of 50 or something, or have the stake transaction use an escalating maximum gas as you get closer to 14 days, with infinite gas right before dissolving. -
allow
stake
to be called remotely so we can potentially bail out any node operator. Not elegant, but at this level is probably sustainable with a little funding from GMC. Every dollar we spend would prevent 20-80x damage to a NO. -
redo the idea of dissolve for this infraction. An example: if stake isn’t called in 1 week, calling stake also involves reimbursing rETH for lost staking revenue (24ETH * [delta] rETH/ETH or something). Here there is no need to dissolve, and this ensures that the fees go to reimburse the protocol, rather than being effectively burned on gas/borrowing.
-
create undissolve fuction: pay a fee in RPL or ETH (maybe 2-3x the capital efficiency cost to rETH?) to restart at the beginning of the queue (curtesy of Valdorff)
-
other ideas?