mDAO proposal - Archive delayed unstake tickets after 2 months

Hello Chefs, this forum post aims at introducing an idea that requires discussion and community buy-in. Please participate and share your point of view as much as possible.

What do you propose?

Marinade would like to suggest a change in how the protocol deals with long unclaimed Delayed unstake tickets:

  • If a Delayed Unstake ticket stays unclaimed for more than 2 months, it would be archived and would need to be re-activated by the user owning it, which would restart the 1-2 days period before being able to get back the SOL (wait until the end of the epoch).
  • The SOL amount that archived tickets represent would be restaked to validators, and the accumulated rewards would be directed to Marinade’s treasury.
  • Users would never lose ownership over their ticket and the ticket would never expire. As soon as the ticket is re-activated, the SOL is unstaked by Marinade’s smart contract and can be claimed at the beginning of the next epoch by the user. Only the availability of the SOL to be claimed would change once a ticket is archived.

Currently, if you use the “Delayed unstake” feature on Marinade, you receive a ticket allowing you to claim the SOL as soon as it’s been unstaked from validators and made available. This process usually takes 1-2 days, and it’s possible to use Dialect to be notified when claiming is available.

A ticket has no expiry date and can be claimed years after it’s been created, but as soon as a delayed unstake is required by a user, the mSOL is burnt and Marinade’s smart contract will unstake from validators to make the SOL available. This SOL is then kept idle in the smart contract, doing nothing, waiting to be claimed.

As can be seen on our stats page, not all users will claim their tickets in a timely manner, and as of today, more than 1.5M of SOL is waiting to be claimed by users that created a delayed unstake ticket. We currently have more than 800 Delayed Unstake tickets that have been unclaimed for more than two months, some for almost a year.

Those SOL are currently held in Marinade’s smart contract, waiting to be claimed, and therefore cannot be staked to any validator to secure the network.

Marinade would like to suggest a time period of 2 months after which a ticket would be “archived”, and the SOL re-staked to validators.

In normal operation and for all delayed unstake operations, the user do not accumulate any more rewards. In the case of archived tickets, the gains from re-staking those SOL after two months of inactivity would be used to finance Marinade growth, to increase revenues and help the protocol achieve a positive balance.

This change would not remove the ownership of the user on his SOL. As soon as a user owning an archived ticket would go back on Marinade website and re-activate the ticket, the SOL would be unstaked from validators and would be claimable after the end of the epoch. This proposal would only add a timeframe of 2 months during which the ticket needs to be claimed, otherwise, the ticket would be archived.

What is the rationale behind the proposal?

The rationale behind this proposal is mainly that 1.5M SOL in hundreds of tickets is currently inactive in Marinade smart contract. Those SOL cannot be used to secure the network and help validators, and also bring no revenues to anyone.

If users are using the delayed unstake tickets to keep access to liquid SOL, we believe that they should claim the ticket and hold the SOL in their wallet instead of keeping it for a long amount of time in Marinade’s smart contract.

We believe that re-staking those SOL and directing the staking revenues to Marinade could greatly improve the growth of Marinade and benefit the validator’s network by having more stake to distribute.

Concerned users, on the other hand, would have to unarchive the ticket if their ticket was archived for inactivity. They would suffer no loss and would only have to wait to the end of the epoch for the unarchiving process to complete.

Obviously, if this proposal was to come through, an emphasis would be put on communicating this change as much as possible so that no user is surprised by this new mechanism, and we would also leave a grace period of two weeks after the proposal is executed before applying this change.

What are the implementation details?

If this proposal is agreed upon by the DAO, the implementation would go as follows:

  • Proposal is executed on-chain after a successful vote
  • A two-week time period starts during which a large communication effort is being done to inform all users of this change and invite any user that would be concerned by the change to take action
  • After the period, the tickets older than 2 months are gradually archived and the SOL is re-staked to validators. All users keep the ability to un-archive their ticket and claim the SOL after the end of the epoch.

This change would require a smart contract update (only addition of new instructions, no change to existing ones) that would have to be signed by our ecosystem multisig.

What is the expected positive impact of this change?

The expected positive impact of this change is to allow more than a million of SOL to be restaked to validators, greatly improving the number of SOL that Marinade can distribute (more than a 20% increase).

This change would also bring a considerable amount of revenue to Marinade. As stated in the recent Kitchen Stories (December, November, October), Marinade is struggling to achieve a positive monthly balance as the price of SOL decreased and the TVL stagnated. This change would potentially revert this situation and allow Marinade to run with a positive monthly balance for the foreseeable future until the involved users withdraw their funds from their archived tickets.

Any other considerations?

We have to consider that this proposal suggests a change in how Delayed unstake works.

This proposal suggests automatically archiving tickets, which means automatically adding a waiting period after two months of inactivity for Tickets, which is why I would like as much participation on this thread as possible to make sure that this decision is discussed by the community as a whole.

6 Likes

I say make it one month, or even one week. I certainly can’t think of a meaningful reason for someone to unstake and then intentionally wait for over a month to withdraw.

3 Likes

Marinade and validators would certainly benefit from this, but just thinking longer term and with the staker in mind, the requirement to go back and claim should ultimately be removed and the SOL should be deposited in the wallet automatically at the end of the epoch.

I know a lot of other DeFi protocols also require going back to claim after an epoch (like Friktion Vaults). The “claim” function may be another point of friction preventing wider adoption of Liquid staking on Solana (currently only 2-3%) and eliminating that step would render this proposal unnecessary.

Actually, while I agree with you on the fact that ultimately, another road could be for the SOL to end up in your wallet automatically, this is not how it works with native staking either:
image

This stake account isn’t accruing rewards but isn’t “SOL” until I withdraw it, so Marinade merely reflects the native staking mechanic here

Liquid staking could do better, I agree, but in the current situation, making use of those SOL currently idle makes sense to me

ah you right, my mistake. good call. edited my response

@luciotato and others:

  1. Why can’t Marinade change the implementation so that the SOL directly goes to the wallet instead?
  2. If users forget to claim and Marinade restakes the SOL - why should the rewards go to treasury and the user directly (since it is their SOL)?

I understand that today is a tough position to be in SOL DeFi but doing right by the users should be the first step always.

1 Like

@spleen @btuck

We evaluated that option almost two years ago when I was designing what should be Marinade smart contract main instructions and how to offer a zero-fee unstake to our users. There are several problems with the automation:

  1. The SOL is available 2-4 days after the delayed unstake order is made, and this is because of how proof-of-stake works, I mean the delay is not Marinade imposed, waiting before unstaking is an integral part of how proof-of-stake blockchains work… so If you to automate the transfer to the user wallet, it has to be done 2-4 days after the operation, you need an extra cron-based service monitoring all tickets and that service should able to transfer from the user ticket to the user account.

  2. You need to pay for the extra overhead of maintaining that cron-based service functionality and also for the transactions. This is not expensive, but it adds over the years. Since it would be part or Marinade functionality, everybody ends up paying for the delayed-unstakers’ transactions and service (while if you make them claim it, they pay for the tx and there’s no extra cron-based service)

  3. UX: It sounds better to make it automatic, but most things that sound good on paper are different on reality. What you would get if you do it automatically, is a lot of users angry because their SOL “is gone”. If you do it automatically, without user intervention, the user could get for example a 10 SOL inbound transfer in their wallet out of the blue, 2 days after they ordered the unstake, and mixed with any other transaction the user was doing at the time, they don’t even notice… the next day they remember they are waiting for a delayed unstake, they go to Marinade… and their delayed unstake ticket is nowhere to be found! so they get angry and go to Marinade discord demanding their SOL back… etc…

Conclusion:

So I believe that keeping the ticket and waiting for the user to claim it is:

  1. Better because delayed-unstakers pay for the service and not everyone
  2. Better UX because people can match their action with the incoming SOL in the wallet, and the ticket is there where they left it until they claim it

With this change, and from the user delaying-unstaking POV, the ticket is still there, we’re just adding the penalty of waiting until the end of the epoch because you’re lazy and left the ticket abandoned for two months :slight_smile:

3 Likes

Hey lucio, thanks for the detailed response. Makes sense on the UX part. Also I have no reservations on why Marinade should not penalise in these cases because it takes costs to run the system. I fully back this proposal.

2 Likes

On Avalanche, Benqi does this but with only 2 days of redemption period.
I support this proposition, but I also think that 2 months is way too long - a week looks like a max to me.

2 Likes

I’m also in full support of this and agree with Lucio’s UX and complexity argumentation regarding sending it to the wallet.

If it’s well communicated in ToS, docs and maybe even with a notice when users delay unstake I wouldn’t assume any resistance, since it’s in Solanas and users best interest when the unclaimed SOL goes back to work for both after this generous time limit.

Will the ticket archival be logged / easily discoverable by the team, in case someone raises that their claim ticket “disappeared” with the support?

1 Like

The ticket is still there, the only change to the ticket is that is marked as archived. So 100% discoverable, it can be found in the same place.

2 Likes

This change seem like bad UX to me.

Your argument in #2 is in particular a bit weird because the proposal is effectively having to manage a similar cron system to do this restake system.

#3 seems it would be easily solved by having a usable unstake historical log on marinade which you could point users too if that happened.

FYI: @everyone, This Proposal is now Proposal #30 and is ready to be voted in Marinade Governance

1 Like