From 70c799604c7ebe0e7a959bec8e41abcc4c4a3bcc Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Tue, 3 Jan 2023 15:43:22 -0500 Subject: [PATCH 01/18] Create README.md --- .../README.md | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 CIP-Improved_Rewards_Scheme_Parameters/README.md diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md new file mode 100644 index 000000000..b4164d5c3 --- /dev/null +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -0,0 +1,233 @@ +--- +CIP: ???? +Title: Improved Rewards Scheme Parameters +Status: Proposed +Category: Reward-Sharing Scheme +Authors: + - Tobias Fancee +Implementors: + - Input Output Global + - Cardano Foundation + - Emurgo +Discussions: + - https://forum.cardano.org/t/cip-improved-rewards-scheme-parameters/112409 +Created: 2022-01-03 +License: CC-BY-4.0 +--- + +# Abstract + +The current parameter settings of Cardano's rewards sharing scheme leave much to be desired in terms of fairness and promoting decentralization. minPoolCost puts small stakepools at a significant disadvantage. Replacing minPoolCost with a minPoolRate will ensure a level playing field for stakepools while providing sufficient sybil attack resistance. Additionally, the current setting of k, the optimal number of stakepools, is too low to provide an adequate pledge benefit. Increasing k will make the pledge benefit more effective and get delegations moving in hopes of helping single pool operators gain delegations. + +The parameter changes in this proposal are an optimization of the current settings and are meant to improve the fairness and decentralization of Cardano. Furthermore, all changes suggested in this proposal have been specifically voiced by the Cardano community. + +# Motivation + +## Definitions + +**Stakepool Operator (SPO)** +- The operator of a stakepool, can be a single person or an entity. + +**Multipool** +- A group or brand of stakepools operated by a single entity or stakepool operator. + +**ROS** +- Return on staking (often annualized and represented as a percentage of the initial investment). + +**Stakepool Viability Point** +- The amount of pledge required for a stakepool with zero delegations to distribute nonzero rewards to delegators (assuming minimum stakepool fees and ignoring luck in VRF block production, i.e., rewards are exactly proportional to stake). + +**Stakepool Competitive Point** +- The amount of pledge required for a stakepool with zero delegations to offer the same ROS as a fully-saturated stakepool with zero pledge (assuming minimum stakepool fees). + +**Stakepool Saturation Point** +- The maximum amount of total stake in a stakepool before total stakepool rewards are capped and ROS diminishes. + +**Minimum Attack Vector (MAV)** +- Also known as the Nakamoto Coefficient, the MAV is the minimum number of entities required to capture more than 50% of a network. In the context of Cardano, this refers to the minimum number of SPOs required to capture more than 50% of active stake. + +**Sybil Attack** +- An attack on an online system where an entity tries to take over the network by creating many identities or nodes. + +## Cardano’s Declining MAV + +Cardano’s declining MAV is a real problem as the network matures and gains more users. Ideally MAV should increase or stay consistent over time. However, this is currently not the case. This trend points to potential problems with the parameters set in the rewards sharing scheme. Now that staking on the network has matured, it is time to re-examine the rewards sharing scheme parameters and seek optimization. This proposal suggests changes that aim to increase the fairness and decentralization of the Cardano network. + +## minPoolCost + +minPoolCost sets a minimum fixed fee that a stakepool must collect from an epoch’s rewards before distributing to delegators. This parameter was added to the rewards sharing scheme to provide additional sybil attack protection. While this parameter has been successful at deterring sybil attacks on the Cardano network, it has been at the expense of fairness and decentralization. minPoolCost imposes a proportionally greater staking fee on small stakepools in contrast to larger pools. This discrepancy results in many small pools being unviable and the network centralizing around established pools. It is not uncommon for small stakepools with higher pledge to offer inferior rewards to that of large stakepools with much lower pledge. In this way, minPoolCost reduces the effectiveness of pledge in the rewards scheme. In order to create a level playing field for stakepools and increase the effectiveness of pledge, minPoolCost must be removed from the protocol. + +## minPoolRate + +The current pledge benefit favors established pools close to saturation as a means of sybil attack protection. Specifically, this property combats high pledge sybil pools (~1 mil ADA pledge) that could be set up by large entities such as centralized exchanges. In contrast to minPoolCost, the pledge benefit’s built-in sybil attack protection is significantly less aggressive and does not affect the viability of stakepools. In this way, it is a useful mechanism to combat sybil pools. However, the pledge benefit on its own has no means to combat zero fee sybil pools. Without minPoolCost, zero fee sybil pools could offer greater rewards than that of established stakepools that must set fees to pay for continued operation. In order to combat zero fee sybil pools without minPoolCost, minPoolRate must be added to the protocol. minPoolRate will set a minimum margin or percentage fee that operators can extract from an epoch’s staking rewards. This new parameter will protect established stakepools by ensuring that they collect sufficient revenue from operation while offering a competitive ROS. Additionally, minPoolRate can be updated to reflect current economic conditions. As minPoolRate enforces a proportional minimum fee, it does not affect the viability of stakepools. Unlike minPoolCost, minPoolRate will be able to provide sufficient sybil attack protection with the pledge benefit while maintaining a level playing field for stakepools. minPoolRate was originally proposed in CIP-0023. + +## k, the optimal number of stakepools + +k represents the optimal number of stakepools that the Cardano network can support. This is achieved through a saturation mechanism where after exceeding a saturation point a stakepool will earn no additional rewards. A stakepool larger than the saturation point will offer lower rewards than a stakepool at the saturation point. The parameter k is used to tune the saturation point. In addition to tuning the saturation point, k also affects the pledge benefit. The maximum pledge benefit exists when a pool is fully saturated. Therefore, increasing k will increase the number of optimal stakepools, decrease the saturation point, and make it easier for stakepools to achieve the maximum pledge benefit. Increasing the effect of the pledge benefit on rewards is imperative, as pledge currently has little effect on rewards allowing low pledge pools to proliferate through marketing alone. Furthermore, increasing k can be used to get stale delegations moving. This is especially useful in the case of saturated multipools, where delegators would have to reconsider their delegation potentially assisting small and medium sized pools. Any delegation flow from multipools to single pool operators will increase the decentralization of Cardano. + +# Specification + +This CIP proposes several parameter changes. In order to give SPOs and delegators enough time to react to the changes, this CIP is divided into 4 stages. The proposed time interval between stages is 3 epochs or 15 days. However, it is up to the implementors to determine the best time interval between stages. Parameters are changed in the following stages: + +## Stage 1: minPoolCost decreased to 170 ADA + +| Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | +|-----------------------|---------------------|-------------------------|----------------|------------------------------| +| minPoolCost | N | N | 170000000 | See Rationale Section. | + +## Stage 2: minPoolCost deleted, minPoolRate of 3% implemented (requires hardfork) + +| Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | +|-----------------------|---------------------|-------------------------|----------------|------------------------------| +| minPoolCost | N | Y | N/A | See Rationale Section. | +| minPoolRate | Y | N | 0.03 | See Rationale Section. | + +In order to ensure the compatibility of existing stakepool registration certificates with this CIP, the variable poolRateEff must be added to the protocol. This variable will be the effective margin used during stakepool fee calculation. Following the hardfork, poolRate will only be the value set by SPOs. poolRate will be superseded by minPoolRate if its value is lower than minPoolRate. This is demonstrated in the definition of poolRateEff: + +$$poolRateEff = max(poolRate, minPoolRate)$$ + +## Stage 3: k increased to 750 + +| Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | +|-----------------------|---------------------|-------------------------|----------------|------------------------------| +| stakePoolTargetNum | N | N | 750 | See Rationale Section. | + +## Stage 4: k increased to 1000 + +| Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | +|-----------------------|---------------------|-------------------------|----------------|------------------------------| +| stakePoolTargetNum | N | N | 1000 | See Rationale Section. | + +# Rationale + +## Principles + +1. Propose changes voiced by the community. +2. Make Cardano staking fairer by eliminating aggressive anticompetitive features. +3. Increase the effect of the pledge benefit on staking rewards. +4. Get stale delegations moving and allow users to reconsider their delegation. +5. Maintain sufficient sybil attack protection. + +## Explanation + +### Stage 1: minPoolCost is decreased to 170 ADA + +Stage 1 reduces minPoolCost from 340 ADA to 170 ADA. 170 ADA is proposed because it is half of the current minPoolCost and is close to what the USD value of minPoolCost was during the launch of Shelley. This value is more than sufficient to allow established community pools to stay profitable while enabling smaller pools to be more competitive. This value also maintains sybil attack resistance. + +### Stage 2: minPoolCost is deleted, minPoolRate of 3% is implemented (requires hardfork) + +Stage 2 introduces the largest change to the network by deleting minPoolCost from the protocol in favor of a minPoolRate of 3%. 3% is proposed, as it allows established community pools to stay profitable when competing against minimum fee pools. This in combination with the pledge benefit provide sufficient sybil attack resistance while leveling the playing field for all stakepools. As pool size is significantly less important following this stage, pledge becomes a more important factor in choice of delegation. In contrast, Lido, Ethereum’s most popular liquid staking DApp, applies a 10% fee on participants' staking rewards. + +### Stage 3: k is increased to 750 + +Stage 3 increases k from 500 to 750. The purpose of stage 3 and stage 4 is two-fold. Firstly, increasing k increases the pledge benefit. The more effective the pledge benefit, the greater Cardano’s sybil attack resistance. Secondly, increasing k may get stale delegations moving again by oversaturating large pools. This will cause many delegators to reconsider their delegation, potentially helping smaller community pools find delegations. Increasing k is split into two stages to give SPOs sufficient time to react to the change. Furthermore, it is imperative that k is increased after stage 2, as small stakepools will only be competitive after minPoolCost has been removed. + +### Stage 4: k is increased to 1000 + +Stage 4 increases k from 750 to 1000. Stage 4 will further improve the pledge benefit and get more delegations moving. This is the final stage of this proposal. + +## Test Cases and Sybil Attack Resistance + +Below are test cases for the current rewards scheme and each stage of this proposal. The calculated values assume all pools are operating with minimum fees. Sybil pools are assumed to be small pools with no delegations. Community pools are assumed to be pools with significant delegation. As demonstrated below, this proposal allows community pools to have sufficient revenue (higher than the USD value of minPoolCost at the launch of Shelley) while creating a level playing field for all stakepools. Sybil attack resistance is maintained at every stage, as community pool ROS remains higher than sybil pool ROS. Data used for calculations was approximated from epoch 385. See ImprovedRewardsSchemeParameters.xlxs for more test cases. + +### Current Rewards Scheme + +Stakepool Viability Point: ~670,000 ADA +Stakepool Competitive Point: ~20,000,000 ADA + +| Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | +|-----------|-------------------|------------------|--------------------|-----------------------| +| Sybil | 100,000.00 ADA | 100,000.00 ADA | 340 ADA | Below Viability Point | +| Sybil | 1,000,000.00 ADA | 1,000,000.00 ADA | 340 ADA | 1.2339% | +| Community | 10,000,000.00 ADA | 100,000.00 ADA | 340 ADA | 3.5213% | +| Community | Saturated | 1,000,000.00 ADA | 340 ADA | 3.7567% | + +### Proposed - Stage 1 + +Stakepool Viability Point: ~335,000 ADA +Stakepool Competitive Point: ~16,500,000 ADA + +| Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | +|-----------|-------------------|------------------|--------------------|-----------------------| +| Sybil | 100,000.00 ADA | 100,000.00 ADA | 170 ADA | Below Viability Point | +| Sybil | 1,000,000.00 ADA | 1,000,000.00 ADA | 170 ADA | 2.4977% | +| Community | 10,000,000.00 ADA | 100,000.00 ADA | 170 ADA | 3.6498% | +| Community | Saturated | 1,000,000.00 ADA | 170 ADA | 3.7749% | + +### Proposed - Stage 2 + +Stakepool Viability Point: 1 ADA +Stakepool Competitive Point: 1 ADA + +| Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | +|-----------|-------------------|------------------|--------------------|---------------| +| Sybil | 100,000.00 ADA | 100,000.00 ADA | 1.52 ADA | 3.6615% | +| Sybil | 1,000,000.00 ADA | 1,000,000.00 ADA | 15.24 ADA | 3.6617% | +| Community | 10,000,000.00 ADA | 100,000.00 ADA | 152.42 ADA | 3.6631% | +| Community | Saturated | 1,000,000.00 ADA | 1081.06 ADA | 3.6773% | + +### Proposed - Stage 3 + +Stakepool Viability Point: 1 ADA +Stakepool Competitive Point: 1 ADA + +| Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | +|-----------|-------------------|------------------|--------------------|---------------| +| Sybil | 100,000.00 ADA | 100,000.00 ADA | 1.52 ADA | 3.6615% | +| Sybil | 1,000,000.00 ADA | 1,000,000.00 ADA | 15.24 ADA | 3.6620% | +| Community | 10,000,000.00 ADA | 100,000.00 ADA | 152.49 ADA | 3.6639% | +| Community | Saturated | 1,000,000.00 ADA | 720.44 ADA | 3.6853% | + +### Proposed - Stage 4 + +Stakepool Viability Point: 1 ADA +Stakepool Competitive Point: 1 ADA + +| Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | +|-----------|-------------------|------------------|--------------------|---------------| +| Sybil | 100,000.00 ADA | 100,000.00 ADA | 1.52 ADA | 3.6615% | +| Sybil | 1,000,000.00 ADA | 1,000,000.00 ADA | 15.24 ADA | 3.6624% | +| Community | 10,000,000.00 ADA | 100,000.00 ADA | 152.52 ADA | 3.6646% | +| Community | Saturated | 1,000,000.00 ADA | 542.82 ADA | 3.6932% | + +## Backward Compatibility + +This proposal includes several parameter changes and changes to ledger rules. Specifically, stage 2 of this proposal will require a hardfork to introduce a new parameter, delete a parameter, and modify the stakepool fee calculation equation. As mentioned in the specification section, the stakepool fee calculation equation must be modified in order to ensure current stakepool registration certificates are compatible with this CIP. + +# Path to Active + +## Acceptance Criteria + +### For Stages 1, 3, and 4 +1. The raw transaction for the parameter update is built. +2. Genesis delegates IOG, CF, and Emurgo sign the transaction. +3. Transaction is submitted. +4. Parameter update is accepted by majority of the network. +5. Parameter update is confirmed. + +### For Stage 2 + +1. IOG completes necessary research and develops the changes to the ledger rules. +2. IOG releases a new version of cardano-node supporting the changes to the ledger rules. +2. The raw transaction signalling the hardfork is built. +3. Genesis delegates IOG, CF, and Emurgo sign the transaction. +4. Transaction is submitted. +5. Hardfork is accepted by majority of the network. +6. Hardfork and changes to ledger rules are confirmed. + +## Implementation Plan + +Implementors include IOG, CF, and Emurgo. All three entities must approve the changes to the network. Each stage will be an individual update. Stages 1, 3, and 4 will be parameter updates. Stage 2 will require a hardfork. + +Before implementation, IOG's engineering and research teams must review the feasibility and potential consequences of the proposal. IOG will create the implementation for each update and decide on the time interval between updates. + +As previously mentioned, implementation will occur in the following stages: + +1. minPoolCost is decreased to 170 ADA +2. minPoolCost is deleted, minPoolRate of 3% is implemented (requires hardfork) +3. k is increased to 750 +4. k is increased to 1000 + +# Copyright + +This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). From f825aafdcc54327fa5826d02d3924d1a45862deb Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Tue, 3 Jan 2023 15:45:59 -0500 Subject: [PATCH 02/18] Add files via upload --- .../ImprovedRewardsSchemeParameters.xlsx | Bin 0 -> 27075 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 CIP-Improved_Rewards_Scheme_Parameters/ImprovedRewardsSchemeParameters.xlsx diff --git a/CIP-Improved_Rewards_Scheme_Parameters/ImprovedRewardsSchemeParameters.xlsx b/CIP-Improved_Rewards_Scheme_Parameters/ImprovedRewardsSchemeParameters.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8a8b318ffe859a633106d0459275016306d8c783 GIT binary patch literal 27075 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 literal 0 HcmV?d00001 From e06d54005da430eb10bb65baff33f6a04ec5a5ec Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Tue, 3 Jan 2023 15:48:40 -0500 Subject: [PATCH 03/18] Update README.md --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index b4164d5c3..02b99591f 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -133,6 +133,7 @@ Below are test cases for the current rewards scheme and each stage of this propo ### Current Rewards Scheme Stakepool Viability Point: ~670,000 ADA + Stakepool Competitive Point: ~20,000,000 ADA | Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | @@ -145,6 +146,7 @@ Stakepool Competitive Point: ~20,000,000 ADA ### Proposed - Stage 1 Stakepool Viability Point: ~335,000 ADA + Stakepool Competitive Point: ~16,500,000 ADA | Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | @@ -157,6 +159,7 @@ Stakepool Competitive Point: ~16,500,000 ADA ### Proposed - Stage 2 Stakepool Viability Point: 1 ADA + Stakepool Competitive Point: 1 ADA | Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | @@ -169,6 +172,7 @@ Stakepool Competitive Point: 1 ADA ### Proposed - Stage 3 Stakepool Viability Point: 1 ADA + Stakepool Competitive Point: 1 ADA | Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | @@ -181,6 +185,7 @@ Stakepool Competitive Point: 1 ADA ### Proposed - Stage 4 Stakepool Viability Point: 1 ADA + Stakepool Competitive Point: 1 ADA | Pool Type | Pool Stake | Pool Pledge | Pool Epoch Revenue | Delegator ROS | From 3431ce5065b5bfc3ea62306631263a32faa5cd8a Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:52:33 -0500 Subject: [PATCH 04/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 02b99591f..2a176ffc4 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -15,7 +15,8 @@ Created: 2022-01-03 License: CC-BY-4.0 --- -# Abstract +# Improved Rewards Scheme Parameters +## Abstract The current parameter settings of Cardano's rewards sharing scheme leave much to be desired in terms of fairness and promoting decentralization. minPoolCost puts small stakepools at a significant disadvantage. Replacing minPoolCost with a minPoolRate will ensure a level playing field for stakepools while providing sufficient sybil attack resistance. Additionally, the current setting of k, the optimal number of stakepools, is too low to provide an adequate pledge benefit. Increasing k will make the pledge benefit more effective and get delegations moving in hopes of helping single pool operators gain delegations. From d092de8e32e2c14f892b994a0cbec75c637758fc Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:52:52 -0500 Subject: [PATCH 05/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 2a176ffc4..aa94f120a 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -24,7 +24,7 @@ The parameter changes in this proposal are an optimization of the current settin # Motivation -## Definitions +### Definitions **Stakepool Operator (SPO)** - The operator of a stakepool, can be a single person or an entity. From d8a2003df61a424e09ad3578ebcde9991ca417c7 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:52:58 -0500 Subject: [PATCH 06/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index aa94f120a..2613c664a 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -111,7 +111,7 @@ $$poolRateEff = max(poolRate, minPoolRate)$$ ## Explanation -### Stage 1: minPoolCost is decreased to 170 ADA +#### Stage 1: minPoolCost is decreased to 170 ADA Stage 1 reduces minPoolCost from 340 ADA to 170 ADA. 170 ADA is proposed because it is half of the current minPoolCost and is close to what the USD value of minPoolCost was during the launch of Shelley. This value is more than sufficient to allow established community pools to stay profitable while enabling smaller pools to be more competitive. This value also maintains sybil attack resistance. From 953bdcf6f9ad310baa4287027412dc91c539077c Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:57:53 -0500 Subject: [PATCH 07/18] Fix remaining headers. --- .../README.md | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 2613c664a..13fa0b1ea 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -22,7 +22,7 @@ The current parameter settings of Cardano's rewards sharing scheme leave much to The parameter changes in this proposal are an optimization of the current settings and are meant to improve the fairness and decentralization of Cardano. Furthermore, all changes suggested in this proposal have been specifically voiced by the Cardano community. -# Motivation +## Motivation ### Definitions @@ -50,33 +50,33 @@ The parameter changes in this proposal are an optimization of the current settin **Sybil Attack** - An attack on an online system where an entity tries to take over the network by creating many identities or nodes. -## Cardano’s Declining MAV +### Cardano’s Declining MAV Cardano’s declining MAV is a real problem as the network matures and gains more users. Ideally MAV should increase or stay consistent over time. However, this is currently not the case. This trend points to potential problems with the parameters set in the rewards sharing scheme. Now that staking on the network has matured, it is time to re-examine the rewards sharing scheme parameters and seek optimization. This proposal suggests changes that aim to increase the fairness and decentralization of the Cardano network. -## minPoolCost +### minPoolCost minPoolCost sets a minimum fixed fee that a stakepool must collect from an epoch’s rewards before distributing to delegators. This parameter was added to the rewards sharing scheme to provide additional sybil attack protection. While this parameter has been successful at deterring sybil attacks on the Cardano network, it has been at the expense of fairness and decentralization. minPoolCost imposes a proportionally greater staking fee on small stakepools in contrast to larger pools. This discrepancy results in many small pools being unviable and the network centralizing around established pools. It is not uncommon for small stakepools with higher pledge to offer inferior rewards to that of large stakepools with much lower pledge. In this way, minPoolCost reduces the effectiveness of pledge in the rewards scheme. In order to create a level playing field for stakepools and increase the effectiveness of pledge, minPoolCost must be removed from the protocol. -## minPoolRate +### minPoolRate The current pledge benefit favors established pools close to saturation as a means of sybil attack protection. Specifically, this property combats high pledge sybil pools (~1 mil ADA pledge) that could be set up by large entities such as centralized exchanges. In contrast to minPoolCost, the pledge benefit’s built-in sybil attack protection is significantly less aggressive and does not affect the viability of stakepools. In this way, it is a useful mechanism to combat sybil pools. However, the pledge benefit on its own has no means to combat zero fee sybil pools. Without minPoolCost, zero fee sybil pools could offer greater rewards than that of established stakepools that must set fees to pay for continued operation. In order to combat zero fee sybil pools without minPoolCost, minPoolRate must be added to the protocol. minPoolRate will set a minimum margin or percentage fee that operators can extract from an epoch’s staking rewards. This new parameter will protect established stakepools by ensuring that they collect sufficient revenue from operation while offering a competitive ROS. Additionally, minPoolRate can be updated to reflect current economic conditions. As minPoolRate enforces a proportional minimum fee, it does not affect the viability of stakepools. Unlike minPoolCost, minPoolRate will be able to provide sufficient sybil attack protection with the pledge benefit while maintaining a level playing field for stakepools. minPoolRate was originally proposed in CIP-0023. -## k, the optimal number of stakepools +### k, the optimal number of stakepools k represents the optimal number of stakepools that the Cardano network can support. This is achieved through a saturation mechanism where after exceeding a saturation point a stakepool will earn no additional rewards. A stakepool larger than the saturation point will offer lower rewards than a stakepool at the saturation point. The parameter k is used to tune the saturation point. In addition to tuning the saturation point, k also affects the pledge benefit. The maximum pledge benefit exists when a pool is fully saturated. Therefore, increasing k will increase the number of optimal stakepools, decrease the saturation point, and make it easier for stakepools to achieve the maximum pledge benefit. Increasing the effect of the pledge benefit on rewards is imperative, as pledge currently has little effect on rewards allowing low pledge pools to proliferate through marketing alone. Furthermore, increasing k can be used to get stale delegations moving. This is especially useful in the case of saturated multipools, where delegators would have to reconsider their delegation potentially assisting small and medium sized pools. Any delegation flow from multipools to single pool operators will increase the decentralization of Cardano. -# Specification +## Specification This CIP proposes several parameter changes. In order to give SPOs and delegators enough time to react to the changes, this CIP is divided into 4 stages. The proposed time interval between stages is 3 epochs or 15 days. However, it is up to the implementors to determine the best time interval between stages. Parameters are changed in the following stages: -## Stage 1: minPoolCost decreased to 170 ADA +### Stage 1: minPoolCost decreased to 170 ADA | Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | |-----------------------|---------------------|-------------------------|----------------|------------------------------| | minPoolCost | N | N | 170000000 | See Rationale Section. | -## Stage 2: minPoolCost deleted, minPoolRate of 3% implemented (requires hardfork) +### Stage 2: minPoolCost deleted, minPoolRate of 3% implemented (requires hardfork) | Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | |-----------------------|---------------------|-------------------------|----------------|------------------------------| @@ -87,21 +87,21 @@ In order to ensure the compatibility of existing stakepool registration certific $$poolRateEff = max(poolRate, minPoolRate)$$ -## Stage 3: k increased to 750 +### Stage 3: k increased to 750 | Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | |-----------------------|---------------------|-------------------------|----------------|------------------------------| | stakePoolTargetNum | N | N | 750 | See Rationale Section. | -## Stage 4: k increased to 1000 +### Stage 4: k increased to 1000 | Name of the Parameter | New Parameter (Y/N) | Deleted Parameter (Y/N) | Proposed Value | Summary Rationale for Change | |-----------------------|---------------------|-------------------------|----------------|------------------------------| | stakePoolTargetNum | N | N | 1000 | See Rationale Section. | -# Rationale +## Rationale -## Principles +### Principles 1. Propose changes voiced by the community. 2. Make Cardano staking fairer by eliminating aggressive anticompetitive features. @@ -109,29 +109,29 @@ $$poolRateEff = max(poolRate, minPoolRate)$$ 4. Get stale delegations moving and allow users to reconsider their delegation. 5. Maintain sufficient sybil attack protection. -## Explanation +### Explanation #### Stage 1: minPoolCost is decreased to 170 ADA Stage 1 reduces minPoolCost from 340 ADA to 170 ADA. 170 ADA is proposed because it is half of the current minPoolCost and is close to what the USD value of minPoolCost was during the launch of Shelley. This value is more than sufficient to allow established community pools to stay profitable while enabling smaller pools to be more competitive. This value also maintains sybil attack resistance. -### Stage 2: minPoolCost is deleted, minPoolRate of 3% is implemented (requires hardfork) +#### Stage 2: minPoolCost is deleted, minPoolRate of 3% is implemented (requires hardfork) Stage 2 introduces the largest change to the network by deleting minPoolCost from the protocol in favor of a minPoolRate of 3%. 3% is proposed, as it allows established community pools to stay profitable when competing against minimum fee pools. This in combination with the pledge benefit provide sufficient sybil attack resistance while leveling the playing field for all stakepools. As pool size is significantly less important following this stage, pledge becomes a more important factor in choice of delegation. In contrast, Lido, Ethereum’s most popular liquid staking DApp, applies a 10% fee on participants' staking rewards. -### Stage 3: k is increased to 750 +#### Stage 3: k is increased to 750 Stage 3 increases k from 500 to 750. The purpose of stage 3 and stage 4 is two-fold. Firstly, increasing k increases the pledge benefit. The more effective the pledge benefit, the greater Cardano’s sybil attack resistance. Secondly, increasing k may get stale delegations moving again by oversaturating large pools. This will cause many delegators to reconsider their delegation, potentially helping smaller community pools find delegations. Increasing k is split into two stages to give SPOs sufficient time to react to the change. Furthermore, it is imperative that k is increased after stage 2, as small stakepools will only be competitive after minPoolCost has been removed. -### Stage 4: k is increased to 1000 +#### Stage 4: k is increased to 1000 Stage 4 increases k from 750 to 1000. Stage 4 will further improve the pledge benefit and get more delegations moving. This is the final stage of this proposal. -## Test Cases and Sybil Attack Resistance +### Test Cases and Sybil Attack Resistance Below are test cases for the current rewards scheme and each stage of this proposal. The calculated values assume all pools are operating with minimum fees. Sybil pools are assumed to be small pools with no delegations. Community pools are assumed to be pools with significant delegation. As demonstrated below, this proposal allows community pools to have sufficient revenue (higher than the USD value of minPoolCost at the launch of Shelley) while creating a level playing field for all stakepools. Sybil attack resistance is maintained at every stage, as community pool ROS remains higher than sybil pool ROS. Data used for calculations was approximated from epoch 385. See ImprovedRewardsSchemeParameters.xlxs for more test cases. -### Current Rewards Scheme +#### Current Rewards Scheme Stakepool Viability Point: ~670,000 ADA @@ -144,7 +144,7 @@ Stakepool Competitive Point: ~20,000,000 ADA | Community | 10,000,000.00 ADA | 100,000.00 ADA | 340 ADA | 3.5213% | | Community | Saturated | 1,000,000.00 ADA | 340 ADA | 3.7567% | -### Proposed - Stage 1 +#### Proposed - Stage 1 Stakepool Viability Point: ~335,000 ADA @@ -157,7 +157,7 @@ Stakepool Competitive Point: ~16,500,000 ADA | Community | 10,000,000.00 ADA | 100,000.00 ADA | 170 ADA | 3.6498% | | Community | Saturated | 1,000,000.00 ADA | 170 ADA | 3.7749% | -### Proposed - Stage 2 +#### Proposed - Stage 2 Stakepool Viability Point: 1 ADA @@ -170,7 +170,7 @@ Stakepool Competitive Point: 1 ADA | Community | 10,000,000.00 ADA | 100,000.00 ADA | 152.42 ADA | 3.6631% | | Community | Saturated | 1,000,000.00 ADA | 1081.06 ADA | 3.6773% | -### Proposed - Stage 3 +#### Proposed - Stage 3 Stakepool Viability Point: 1 ADA @@ -183,7 +183,7 @@ Stakepool Competitive Point: 1 ADA | Community | 10,000,000.00 ADA | 100,000.00 ADA | 152.49 ADA | 3.6639% | | Community | Saturated | 1,000,000.00 ADA | 720.44 ADA | 3.6853% | -### Proposed - Stage 4 +#### Proposed - Stage 4 Stakepool Viability Point: 1 ADA @@ -196,22 +196,22 @@ Stakepool Competitive Point: 1 ADA | Community | 10,000,000.00 ADA | 100,000.00 ADA | 152.52 ADA | 3.6646% | | Community | Saturated | 1,000,000.00 ADA | 542.82 ADA | 3.6932% | -## Backward Compatibility +### Backward Compatibility This proposal includes several parameter changes and changes to ledger rules. Specifically, stage 2 of this proposal will require a hardfork to introduce a new parameter, delete a parameter, and modify the stakepool fee calculation equation. As mentioned in the specification section, the stakepool fee calculation equation must be modified in order to ensure current stakepool registration certificates are compatible with this CIP. -# Path to Active +## Path to Active -## Acceptance Criteria +### Acceptance Criteria -### For Stages 1, 3, and 4 +#### For Stages 1, 3, and 4 1. The raw transaction for the parameter update is built. 2. Genesis delegates IOG, CF, and Emurgo sign the transaction. 3. Transaction is submitted. 4. Parameter update is accepted by majority of the network. 5. Parameter update is confirmed. -### For Stage 2 +#### For Stage 2 1. IOG completes necessary research and develops the changes to the ledger rules. 2. IOG releases a new version of cardano-node supporting the changes to the ledger rules. @@ -221,7 +221,7 @@ This proposal includes several parameter changes and changes to ledger rules. Sp 5. Hardfork is accepted by majority of the network. 6. Hardfork and changes to ledger rules are confirmed. -## Implementation Plan +### Implementation Plan Implementors include IOG, CF, and Emurgo. All three entities must approve the changes to the network. Each stage will be an individual update. Stages 1, 3, and 4 will be parameter updates. Stage 2 will require a hardfork. @@ -234,6 +234,6 @@ As previously mentioned, implementation will occur in the following stages: 3. k is increased to 750 4. k is increased to 1000 -# Copyright +## Copyright This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). From 4257767de109a47615a0e0e7d2c875bcc0d2f674 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 21 Jan 2023 15:59:56 -0500 Subject: [PATCH 08/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com> --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 13fa0b1ea..fc97b74aa 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -1,5 +1,5 @@ --- -CIP: ???? +CIP: 82 Title: Improved Rewards Scheme Parameters Status: Proposed Category: Reward-Sharing Scheme From 61bf5ee42fb143bf839083923cf9970634da5794 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sun, 26 Feb 2023 12:35:43 -0500 Subject: [PATCH 09/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index fc97b74aa..c0cf31b86 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -223,9 +223,9 @@ This proposal includes several parameter changes and changes to ledger rules. Sp ### Implementation Plan -Implementors include IOG, CF, and Emurgo. All three entities must approve the changes to the network. Each stage will be an individual update. Stages 1, 3, and 4 will be parameter updates. Stage 2 will require a hardfork. +Each stage will be an individual update. Stages 1, 3, and 4 will be parameter updates. Stage 2 will require a hardfork. -Before implementation, IOG's engineering and research teams must review the feasibility and potential consequences of the proposal. IOG will create the implementation for each update and decide on the time interval between updates. +Before implementation, engineering and research teams must review the feasibility and potential consequences of the proposal, create the implementation for each update, and decide on the time interval between updates. As previously mentioned, implementation will occur in the following stages: From 3698a8c4948c7f8bd3cf8bfd2a7dd88e2528c9c8 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sun, 26 Feb 2023 12:38:27 -0500 Subject: [PATCH 10/18] Change status to "Project Area Not Enlisted for CIP Process" --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index c0cf31b86..d116c0fe9 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -1,7 +1,7 @@ --- CIP: 82 Title: Improved Rewards Scheme Parameters -Status: Proposed +Status: Project Area Not Enlisted for CIP Process Category: Reward-Sharing Scheme Authors: - Tobias Fancee From 3290109724bcbc352d55d7e16eb2df506b745240 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sun, 26 Feb 2023 15:10:26 -0500 Subject: [PATCH 11/18] Implementors: TBD --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index d116c0fe9..830689e58 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -6,9 +6,7 @@ Category: Reward-Sharing Scheme Authors: - Tobias Fancee Implementors: - - Input Output Global - - Cardano Foundation - - Emurgo + - TBD Discussions: - https://forum.cardano.org/t/cip-improved-rewards-scheme-parameters/112409 Created: 2022-01-03 From 97547cd4e20654062852b8f83918ae1a376aefc3 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sun, 26 Feb 2023 15:19:35 -0500 Subject: [PATCH 12/18] Remove last mention of IOG from Path to Active --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 830689e58..97f831fbe 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -204,17 +204,17 @@ This proposal includes several parameter changes and changes to ledger rules. Sp #### For Stages 1, 3, and 4 1. The raw transaction for the parameter update is built. -2. Genesis delegates IOG, CF, and Emurgo sign the transaction. +2. Transaction is signed. 3. Transaction is submitted. 4. Parameter update is accepted by majority of the network. 5. Parameter update is confirmed. #### For Stage 2 -1. IOG completes necessary research and develops the changes to the ledger rules. -2. IOG releases a new version of cardano-node supporting the changes to the ledger rules. -2. The raw transaction signalling the hardfork is built. -3. Genesis delegates IOG, CF, and Emurgo sign the transaction. +1. Necessary research and development is completed for the changes to the ledger rules. +2. New version of cardano-node supporting the changes to the ledger rules is released. +2. Raw transaction signaling the hardfork is built. +3. Transaction is signed. 4. Transaction is submitted. 5. Hardfork is accepted by majority of the network. 6. Hardfork and changes to ledger rules are confirmed. From 95d8aa8a1b18f9734e81e2d55988107cb115289a Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:20:28 -0400 Subject: [PATCH 13/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 97f831fbe..be1e6874c 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -13,7 +13,6 @@ Created: 2022-01-03 License: CC-BY-4.0 --- -# Improved Rewards Scheme Parameters ## Abstract The current parameter settings of Cardano's rewards sharing scheme leave much to be desired in terms of fairness and promoting decentralization. minPoolCost puts small stakepools at a significant disadvantage. Replacing minPoolCost with a minPoolRate will ensure a level playing field for stakepools while providing sufficient sybil attack resistance. Additionally, the current setting of k, the optimal number of stakepools, is too low to provide an adequate pledge benefit. Increasing k will make the pledge benefit more effective and get delegations moving in hopes of helping single pool operators gain delegations. From 3526c7499727b331a8c7185915417f79bf0be99f Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:20:43 -0400 Subject: [PATCH 14/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index be1e6874c..49d0eb59c 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -5,8 +5,7 @@ Status: Project Area Not Enlisted for CIP Process Category: Reward-Sharing Scheme Authors: - Tobias Fancee -Implementors: - - TBD +Implementors: [] Discussions: - https://forum.cardano.org/t/cip-improved-rewards-scheme-parameters/112409 Created: 2022-01-03 From f44874fda17d026daf9acc9bc0386a6e170356bb Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:20:54 -0400 Subject: [PATCH 15/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 49d0eb59c..0ec911de1 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -18,7 +18,7 @@ The current parameter settings of Cardano's rewards sharing scheme leave much to The parameter changes in this proposal are an optimization of the current settings and are meant to improve the fairness and decentralization of Cardano. Furthermore, all changes suggested in this proposal have been specifically voiced by the Cardano community. -## Motivation +## Motivation: why is this CIP necessary? ### Definitions From 9cf8f2f18fa3e3aed1222b21e9aae405093733d8 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:20:59 -0400 Subject: [PATCH 16/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index 0ec911de1..e5588b6ce 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -95,7 +95,7 @@ $$poolRateEff = max(poolRate, minPoolRate)$$ |-----------------------|---------------------|-------------------------|----------------|------------------------------| | stakePoolTargetNum | N | N | 1000 | See Rationale Section. | -## Rationale +## Rationale: how does this CIP achieve its goals? ### Principles From e71891b50bcd59b0d23c6c3f7b913f4ec41fe21b Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:21:14 -0400 Subject: [PATCH 17/18] Update CIP-Improved_Rewards_Scheme_Parameters/README.md Co-authored-by: Robert Phair --- CIP-Improved_Rewards_Scheme_Parameters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-Improved_Rewards_Scheme_Parameters/README.md index e5588b6ce..edd0a6c54 100644 --- a/CIP-Improved_Rewards_Scheme_Parameters/README.md +++ b/CIP-Improved_Rewards_Scheme_Parameters/README.md @@ -1,7 +1,7 @@ --- CIP: 82 Title: Improved Rewards Scheme Parameters -Status: Project Area Not Enlisted for CIP Process +Status: Inactive (project area not enlisted for CIP process) Category: Reward-Sharing Scheme Authors: - Tobias Fancee From eb3b0f95a9864472274dd69cfb6e7757b361e151 Mon Sep 17 00:00:00 2001 From: TobiasFancee <59149844+TobiasFancee@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:25:35 -0400 Subject: [PATCH 18/18] Rename CIP-Improved_Rewards_Scheme_Parameters/README.md to CIP-0082/README.md --- {CIP-Improved_Rewards_Scheme_Parameters => CIP-0082}/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {CIP-Improved_Rewards_Scheme_Parameters => CIP-0082}/README.md (100%) diff --git a/CIP-Improved_Rewards_Scheme_Parameters/README.md b/CIP-0082/README.md similarity index 100% rename from CIP-Improved_Rewards_Scheme_Parameters/README.md rename to CIP-0082/README.md