EIP-4: Changing expiry on existing coupons


EIP-3 proposes the changing of expiry date of new coupons issued to 180 EPOCHS. Due to technical complexity, this was determined to not be feasible for existing coupons that have not yet expired. Instead, it was proposed that the expansion rewards increase from 3 to 6%, with an assumption that this will attract enough new capital to push and maintain the peg up, in time to redeem the coupons. However, the challenge with this approach is:

  1. Considerable residual risk of expiry related loss of capital still exists for early coupon holders, due to EIP 3 being a new proposal and hence unproven to work.

  2. Risk of loss of confidence in the protocol if a significant amount of coupons still expire, negatively impacting project longevity and reputation, permanently.

  3. As the coupon mechanism is under review with a view to create a better design/alternatives due to now discovered inefficiencies, it does not make sense to penalise early adopters of the coupon model by letting their coupons expire.

Proposed Solution


  • Following successful implementation of EIP-3, add 90 EPOCHS to the expiry of any coupons purchased prior to EIP-3 go live, to bring in line with new coupons being issued.


  • Remove expiry on coupons altogether. As alternatives to the coupon design are being considered, and existing coupon holders have incentives to redeem, this carries limited risk for the protocol.

This is reasonable. We cannot deprive anyone’s right for any reason. Not to mention the active participants that we should encourage.

If we are unable to do so, the “temporary” removal of the expiration of coupon is the most effective and less-risky way to prevent system collapse as @sabretooth concerned. As for whether expiration should be and how long it should be, we can continue to observe and discuss it. At present, the most important thing is to let the system “survive” first and then “better”. This approach is the safest.

In my code review, we only need to disable the function expireCouponsForEpoch() no matter the input parameter epoch is. However, the detailed changes must be confirmed by developers.