EIP-6: Coupon Rolling

Coupon expiry has been a clearly tense topic recently as the risk of a clean expiration has been rising for many coupon holders and debt accumulates.

Currently there is no protocol level liquidity for coupons. There is https://esd.money (CPOOL) which wraps coupons and allows for a secondary market. It has low liquidity but is an area with interesting utility to the ecosystem and show some clear demand for coupon liquidity.

Proposal Brief
Allow current outstanding coupons to purchase coupons during a contraction for a premium rather than the discount given to ESD.

Proposal Detailed
The purchase price for coupons should be intuitive and quick to implement. It should not use novel mechanics as this increases the development overhead and complexity of protocol. Lets define the current coupon discount “D = 1 - coupon ESD purchase price”. I believe a good pricing model for coupon rolling would simply be “1 + D”. This would place the rolling price on the interval (1,1.5]. At the maximum of 1.5, 100 coupons could purchase ~66.6 coupons at the new epoch. Another formula might be “1 / D” putting the interval at (1,2].

Benefits particular to the above approach are that it incentivizing rolling while premiums are low, and when premiums get higher the rolling price is higher. Symmetrically ESD holders are more incentivized to purchase when coupon premiums increase.

An additional consideration is to make coupons with an closer expiry more expensive to roll. The argument for this approach is that the risk taken on by coupon holders increases over time and the premium should be steeper as this risk increases. A simple linear discounting would be most appropriate here. For instance a coupon with 1 epoch to expiry and a 90 epoch expiry window would only be able to roll at a price of 1:90 on what a 90 epoch expiry coupon could roll. This mechanic could be combined with the above mechanic of increasing premium with discount price or it could be the only mechanic depending on the communities views.

Benefits to the epoch weighting approach include a stronger burn effect for closer to expiry coupons.


  1. Provides protocol native liquidity to coupons during a contraction
  2. Applies to existing coupon holders
  3. Not in opposition to ESD incentives, as rolling gets less attractive to coupons as coupons get more attractive to ESD.
  4. Has a true burn effect on total supply if rolling at a premium in excess of the purchase discount. Burn compounds with sequential rollings. (Current coupon mechanics are more like “deferred inflation”)

Great idea @jsantoro!

Coupon holders will get a chance to extend their expiry for a cost. The cost is paid by burning a certain amount of ESD, which reduces the supply.

This is a win-win for coupon holders and ESD holders. I think this is worth pursuing immediately.

This solves one more problem you’ve not mentioned. One side-effect of the current FCFS redemption model is, it incentivises coupon purchasers to wait longer to get higher premium. Thus increasing the time in contraction.

With your proposal, new coupon purchasers will have to compete with existing coupon holders, making them less likely to wait for highest premium. This will reduce the time in contraction.

I don’t agree this is a good idea for existing coupon holders- as again it looks like we are penalising them. Instead of a sudden burn, this just makes it a slow death by them having to constantly roll thereby reducing their capital each time and buying more debt- which of course they would do given the constant lurking threat of expiry as the alternative.


@deechri84 This is a strict improvement over the current situation for coupon holders. I feel strongly that they took on a risk of expiry by buying. The marketing is a bit dishonest as they are functionally more like call options. That being said we can still extend the expiry for existing coupons in addition to this approach. I am opposed to extension as it feels like a bailout but don’t feel strongly that we shouldn’t. This approach gives coupon holders an additional option, namely to pay a fee to extend their option

Thanks, J!. Absolutely this is an improvement on the current situation and a rather good idea. Coupon holders did indeed take a risk by buying coupons and the risk of expiry will still exist for them even after an extension to 180 E. In addition to the (misleading) marketing, the 90 Epochs initially set was arbitrary- I do not believe the protocol had enough cycles or data to confidently say that this was a good number of epochs to ensure anywhere near ‘acceptable’ level of risk both for coupon holders and the protocol. I don’t think any coupon buyer anticipated this down to zero level of risk (no one in their right mind would take that on, unless they were gambling with call options knowingly!), as did not the creators of this protocol that the coupon system will need major overhaul this early. Effectively, we are penalising early adopters.

I think both approaches work well together- offering both will be ideal. Now, if only a helpful dev could code up the expiry extension too…:wink:

1 Like

I’ll look at the code and see what ideas I have for expiry extension. I’d prefer to leave that to EIP-3 however since that is something that bonded ESD may not vote for. Two changes benefiting coupon holders may not pass. This solution is good or at least neutral for bonded ESD so I’d like to leave it on its own. The other proposal includes incentives for bonded ESD so feels a more appropriate spot to lump in an extension.

This is elegant! However, my concerns with this are two-fold:

  1. I do not believe we should be bailing out coupon holders - and I say that as a coupon holder with a lot to potentially lose. First, I believe that EIP-3 and other circumstances will likely lead to most or all outstanding coupons being redeemed anyway. Second, I think a bailout is a terrible precedent. There was no “marketing” of coupons; the interface is (I believe) intentionally basic to force early adopters to do research and understand what they’re doing more so than most defi projects.

  2. Simplicity, simplicity, simplicity. As stated, I don’t believe we should bail out coupon holders, nor do I believe it will be necessary. However, to the extent that we do try to improve the prospects for them, I’d much prefer a simple extension rather than adding another mechanism that introduces more complexity.


Many people are discussing how to make the system survive, but only you and a few people continue to view these arguments as a bailout for coupon holders. EIP is to improve the existing system, and some people may benefit from it. Please use the same standard to say that these EIPs are a bailout for the beneficiaries!

Please focus on whether the system can continue to survive. If you want to say that everyone is trying to bail out, that is not wrong, but it is a bailout for the whole system and a bailout for all ESD participants! Because once the existing coupon mechanism causes the system to collapse, all ESD holders and those who have devoted their efforts will therefore leave this mechanism, without any chance to discuss it again further.

Please answer my question? Would you buy the “call option” whose name is “coupon” now? How much premium will you buy? If you will buy, please tell me your argument, what is the probability do you lose all your money? If you won’t buy it, how can you expect that someone who is stupid than you will buy?

The existing coupon holders can be classified into three categories:

(1). They thought it was a “coupon” instead of a “call option”. They believe that as long as the system is still alive, it will only be a matter of time before the money is paid back. In the real world, many people who buy bonds are such people. (Is that all their fault to buy the “call option” instead of “coupon”?)

(2). They know that there is an expiration for zeroing, but because zeroing has not happened in the past, they dare to buy it boldly.

(3). They know that this is actually a “call option” instead of a “coupon”, and there is a probability to make their money (coupon) zero, so they use their money to buy a bet.

If zeroing happens at such an early stage with hopes to attract more participants of this project now, do you think there will be more (1) and (2) coming in? When we honestly change the name of “coupon” to “call option” and spread out the historical record of zeroing in the past, how many people will be willing to come in as active participants to burn money for “call option”? Please think carefully and rationally and answer my questions, and don’t just keep talking about “we can’t bailout.” Thank you.

1 Like

Thanks, D. To be clear, I do not think the marketing/interface had/has the intention of misleading or that was the desired effect but the delta between what it shows/labels vs actual workings is too wide. Also, no amount of research would have helped- as only now are the restraints of the coupon system coming to light to all (after a few cycles). How do we expect the coupon buyers to have predicted or researched this?

I also think it would be beneficial to not refer to efforts to help coupon holders as a bailout. We can also think of them as 27M worth of investors. And what would they do if the right thing is done by them? Continue to be active participants in the ecosystem and continue to contribute, is my guess.

Agree regarding simplicity. @jsantoro thank you for reviewing the code.

1 Like

Thanks for bringing up these concerns I believe they are valid. I am also against a bailout, and I would argue that this is not a bailout. I would also argue that the solution proposed is rather simple and a logical extension of existing functionality and expected behavior. Coupons are purchased with hopes of expansion to have a temporary deflationary effect on the supply. As the coupons near expiry we can think of their “Expected inflation” on the system as decreasing linearly over time from the face amount of the coupons to 0. However this can only be realized in an approximately all-or nothing redeem or expire way. Rolling just allows for the offsetting of this binary risk at the cost of some of the face value. It effectively smoothens out the “expected inflation”, which is the exact intended functionality of coupons. This would decrease volatility and improve the current sentiment among current coupon holders to at least give them this option. Notably, I feel that rolling should not affect the debt at all to keep the mechanic isolated, although it could.

 function couponRollDiscount(uint256 couponAmount) public view returns (uint256) {
    return couponPremium(couponAmount);

function rollCoupons(uint256 oldCouponEpoch, uint256 oldCouponAmount) external returns (uint256) {
        oldCouponAmount > 0,
        "Must roll non-zero amount"

        totalDebt() > 0,
        "Must be non-zero debt"

    uint256 newCouponEpoch = epoch();
    uint256 newCouponAmount = oldCouponAmount.sub(couponRollDiscount(oldCouponAmount), "Market: Coupon discount exceeds balance");

    decrementBalanceOfCoupons(msg.sender, oldCouponEpoch, oldCouponAmount, "Market: Amount exceeds coupon balance");
    incrementBalanceOfCoupons(msg.sender, newCouponEpoch, newCouponAmount);

    emit CouponRoll(msg.sender, newCouponEpoch, oldCouponEpoch, oldCouponAmount, newCouponAmount);
    return newCouponAmount;

Here is the code I propose. This can wait for other EIPs to settle but it is ready now also. I added some tests as well. We could (and probably should) add discounting into the couponRollDiscount method. We could also reduce the debt when rolling, either on the delta of what is rolled or the entire balance.

1 Like

I think we should push for EIP-6 next.

In current design, coupons are at-the-money call options. In traditional call options, entry liquidity and exit liquidity are equal.

In ESD coupons case, entry liquidity is dangerously high. Exit liquidity is near absent. EIP-6 fixes this natively and brings equal exit liquidity.

The code for EIP-6 is ready. No reason to delay it.

I agree with @freakyarch here. It’s a great idea that’s simple to implement and I think it’ll take all the emotion out of the coupon debates if people are no longer facing a cliff on coupon expiry.

I think linking the roll over price to the original coupon discount is a really clever design. It definitely will speed up the buying of coupons.

And we do need to price these roll overs based on the number of epochs left to expiry. Otherwise all coupon holders will wait until the last minute to roll them over. I like the linear discount based on time to expiry.

I think it’s time to put it to the vote.

1 Like

I think this proposal is a very special answer to a very special situation (the one we are currently in - massive debt at risk of expiration).

If the system would more work like it was designed to work, “Coupon premiums incentivize purchases of ESD to push the price back to 1$”, we would not need this proposal. Therefore instead of fighting these side battles with very specific optimizations, we should just focus on fixing the core incentives. That includes in my opinion drastically increasing the (existing) expiry of coupons as well, as coupons are not an attractive value proposition at this stage at all.

1 Like