ARC-0035: Enable to set beneficiary for validator #49
ghostant-1017
started this conversation in
ARCs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
arc: 0035
title: Enable to set beneficiary for validator
authors: Ghostant1017
discussion:
topic: Protocol
status: Draft
created: 11/13/2023
Abstract
In AleoBFT, validators benefit from bonding
credits.aleo/credits
into the programcredits.aleo
. Others can delegate to bondcredits.aleo/credits
to one of thecredits.aleo/committee
to get reward by staking. However, the validators can callcredits.aleo/unbond_delegator_as_validator
to unbond any delegator that is bonded to them. If validators allow other people to bond with them , their own rewards are diluted, which does not incentivize validators to accept other people's pledges.In this ARC, we propose to add a beneficiary for validator, which means that, the PoS rewards will not be directly sent to the bonded address.All rewards will go to an external account or a contract account. And if the beneficiary is set as a contract account, the validator could customize the logic distribute the rewards.It enables the validator to charge service fee from users and incentive validators to attract users to delegate credits to them.
Specification
1.Add a extra field in
credits.aleo/struct committee_state
2.Change the logic in
fn staking_rewards
3.Update the logic in
fn ensure_stakers_matches
Test Cases
1.Test the reward distribution when
beneficiary == validator
2.Test the reward distribution when
beneficiary != validator
Reference Implementations
Not yet
Dependencies
This proposal will only affect the snarkVM.
Backwards Compatibility
We need to think carefully about the incentive-economy model of PoS to avoid implications for backward compatibility
Security & Compliance
There should be no regulatory concerns.
References
Beta Was this translation helpful? Give feedback.
All reactions