Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💡 Offchain Optional DRep Compensation #3026

Open
colll78 opened this issue Feb 18, 2025 · 5 comments
Open

💡 Offchain Optional DRep Compensation #3026

colll78 opened this issue Feb 18, 2025 · 5 comments

Comments

@colll78
Copy link

colll78 commented Feb 18, 2025

Area

Proposal Pillar

Is there new design needed?

Yes

What?

When delegating to a DRep via gov-tools you should be able to elect to donate a percentage of your staking rewards to that DRep.

Why?

Introducing DRep compensation into the ledger will be a an absolutely massive undertaking, that will involve a large amount of engineering hours and a non-trivial price-tag. Also, the community has not yet reached community consensus on whether DRep compensation is even desirable, or should be mandatory, or what the compensation scheme would even look like.

The best way to approach feature development is to release an MVP, evaluate its reception in the market, and use that data to determine the best way to proceed. This also allows us to introduce the feature without imposing it on anyone, it is opt-in, if you do not wish to compensate your DRep you can simply not opt-in. If, at any time, you wish to adjust the percentage of rewards that you are donating to your DRep you can just issue a new delegation certificate and adjust the amount.

How?

This feature is extremely simple to implement. On gov-tools, when a user delegates to a DRep, a popup should ask if they want to donate a percentage of their staking rewards to that DRep (ie. if they want to opt-in to compensate their DRep).

If they choose to opt-in, they enter the percentage of their staking rewards that they would like their DRep to receive. The DRep delegation transaction will include that percentage in the transaction metadata in the following format:

{
    "3692": {
        "int": PERCENTAGE_HERE 
    }
}

Where the percentage is the thousandths place in the decimal so 1 would convey that the user is electing to donate 0.01% of their staking rewards to their DRep.

When a user claims their staking rewards, their wallet will look up their delegation transaction and determine if they have opted-in to compensate their DRep (by checking the tx metadata). If metadata in the format described above is found, then the wallet will add an additional output to the reward withdrawal transaction that sends the intended percentage of their rewards to their DRep. If there is not enough ada in their reward balance to pay the minAda for that output, the wallet will convey this to the user and let them decide how to proceed (or the user can establish how to handle this via wallet settings).

Lace has expressed their intent to implement this feature if it is introduced to gov-tools.

(Optional) User Story with acceptance criteria

Acceptance criteria:

Allow user to opt-in to donate a percentage of their staking rewards to their DRep when delegating. If the user opts-in, then write that percentage to the chain in the metadata of the delegation transaction in the format described above.

@Tarrant64
Copy link

"Where the percentage is the thousandths place in the decimal so 1 would convey that the user is electing to donate 0.01% of their staking rewards to their DRep."

Is that the most universal way entering in that value will be understood or is that just easiest from a development perspective? Maybe it'll just come down to a UX implementation to make it clear that when entering 1, it's not 1%, but 0.01.

@Ryun1
Copy link
Member

Ryun1 commented Feb 19, 2025

Hey @colll78

Appreciate you kicking off the discussion
This is quite a nice solution for opt-in DRep payments

I feel that this discussion and solution may be better suited as a CIP/CPS
because for this to be effectively adopted it should be a standard followed by governance tools and wallets

moving the discussion over the the CIPs repo may open up the conversation to more stakeholders
happy to copy over the content to an issue there, if youd like :)

@Quantumplation
Copy link

@Tarrant64 this is referred to as "basis points", and is quite common; obviously the user experience on top of it should make the percentage clear, and just encode on chain the appropriate value.

@colll78 rather than including it in the transaction metadata, why not define it in the CIP-100 metadata attached to the delegation? remember that via https://github.com/cardano-foundation/CIPs/tree/master/CIP-0107 you can point the anchor back at the transaction metadata, and then this fits in with existing tooling / indexing, and is more flexible.

@Tarrant64
Copy link

@Tarrant64 this is referred to as "basis points", and is quite common; obviously the user experience on top of it should make the percentage clear, and just encode on chain the appropriate value.

@colll78 rather than including it in the transaction metadata, why not define it in the CIP-100 metadata attached to the delegation? remember that via https://github.com/cardano-foundation/CIPs/tree/master/CIP-0107 you can point the anchor back at the transaction metadata, and then this fits in with existing tooling / indexing, and is more flexible.

Thanks for responding, Pi! I'm aware its basis points. But it's more common in finance than anywhere, and I'm speaking towards those that don't realize that unless it's easily called out on UX. If we can't even call basis points, it just needs to be taken into consideration. Just because it makes sense for a financial application this would be something widely available to many people with various levels of education in finance. People can't understand 10x, 20x, etc in relation to percentages as it is out there.

So we need to consider that is all.

@Ryun1
Copy link
Member

Ryun1 commented Feb 20, 2025

Lets move discussion over to the pull request made to the CIPs repository
cardano-foundation/CIPs#991

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Status: No status
Development

No branches or pull requests

4 participants