Gordy the Guardian

Redbeard
Icewater
Published in
13 min readApr 23, 2023

--

In my previous post I wrote that every stablecoin depends on the interaction of three groups of people: users, oracles, and guardians. I have written a lot about oracles because that has been the primary innovation of the icewater system, but now I want to focus on how guardians maintain stability, and some complications that can arise.

What About Natural Stability?

The primary task of the Guardian is to provide stability. But is this even necessary? Couldn’t we just achieve stability by having a fixed supply?

Unfortunately, no. No matter how much BTC enthusiasts would like to believe it, the natural state of any token is to have some degree of volatility, even if the supply is stable. The reason for this is that the value of the token depends on both supply and demand. A protocol can determine supply algorithmically, but I am not aware of any algorithm that can determine demand.

Insurance

So let’s talk about how to achieve stability, starting with a simple insurance contract. Imagine that we have an oracle that tells us that the current value of ETH is 1 ETH = 1 UTIL (a hypothetical universal measure of value). Let’s say that the value of ETH is equally likely to be anywhere from 0 to 2.

Eunice the user holds some ETH, but she doesn’t like risk. So she buys insurance on one of her ETH. She gives Gordy the guardian some ETH now and Gordy agrees to make up the difference if the value of Eunice’s ETH goes below 1 UTIL after a year. How much does Eunice have to pay Gordy? There is a 50% chance that Gordy has to pay nothing (i.e., because the value of ETH has gone up). Of the 50% of the time when Gordy has to pay something, the average he has to pay is .5 UTIL worth of ETH. So overall, we expect Gordy to have to pay an average of .25 UTIL (50% of .5). So Eunice should pay .25 ETH to pay for this insurance contract.

Balanced Insurance

But let’s say that Eunice doesn’t really mind giving up any excess value if ETH goes over 1 UTIL. So they agree that if ETH goes up, Eunice will pay Gordy the difference and if ETH goes down, Gordy will pay Eunice the difference. Since the amount of upside risk is equal to the amount of downside risk, this contract is balanced.

Note that the value of 1 ETH plus the value of Eunice’s side of the contract is stable. If ETH goes down, the contract has enough positive value to make up the difference so that the total is 1 UTIL. If the value of ETH goes up, the contract has negative value so the total is still 1 UTIL.

Collateral

But how are we going to make sure each part pays up? In a smart contract context, there is really only one way: collateral. Eunice and Gordy each might have to pay the other up to 1 UTIL of ETH, so they each put 1 ETH = 1 UTIl into a box as collateral.

If the value of ETH goes up to 2 UTIL, Eunice owes Gordy 1 UTIL, so she gives Gordy .5 ETH from her box. Notice this is less than 1, so really Eunice didn’t need to put 1 ETH in the box to begin with. The most she will ever have to pay is .5 so there is no point locking away 1 whole ETH.

On the other hand, if the value of ETH goes to 0 UTIL, Gordy gives Eunice…oh, wait. As the value of ETH gets close to 0, the amount of ETH we would need to make up 1 UTIL goes to infinity! Simply putting ETH in a box doesn’t work.

Just-In-Time Collateral

This problem of vanishing collateral is one of the main complications behind providing stability for stablecoins (at least for decentralized ones). Luckily the solution is not too complicated. All you have to do is ensure that Gordy puts in more collateral if the value of ETH gets too low.

At the very beginning of the contract, neither party owes the other anything, so any ETH you put in the box represents excess collateral. But if the value of ETH goes to 0, the amount of ETH you need goes up and up. So the trick is to find a way to encourage Gordy to keep putting in enough collateral to cover his liability.

So we are going to start by having Eunice and Gordy put some ETH into a box. But we aren’t going to think of this ETH as an amount to cover their liabilities. Instead, think of it as an incentive to keep putting in more.

For example, let’s say that Eunice and Gordy each put 0.1 UTIL = 0.1 ETH into a box. Then, whenever the value of ETH changes they have to pay the other person immediately and replenish their collateral so that it equals .1 UTIL. If not, they lose their collateral.

Note that the amount of excess collateral is not really determined by the size of the contract alone. It also depends on how fast the price of ETH is changing and how fast Eunice and Gordy are making their decisions regarding whether to replenish it. If the price of ETH changes slowly, you might not need a lot of collateral (maybe less than 1). If the price of ETH changes quickly you need more (perhaps even more than 1).

Fungible Stablecoins

So we have a way to stabilize a volatile asset, but the combination of 1 ETH + an overcollateralized insurance contract is pretty complicated. How do cram all that into a single, fungible token?

For starters, we can put all the complicated stuff into a vault contract that serves as a middle man between Eunice and Gordy. The vault holds some ETH, and issues coins to Eunice that entitle her to 1 UTIL worth of ETH (assuming we have an oracle that tells us how much this is).

If the value of ETH goes up, the contract sends the excess to Gordy. If the value of ETH goes down, Gordy has to put in more ETH or lose his collateral. Eunice puts in her ETH to issue the stablecoins, so she doesn’t need collateral other than that.

The important thing to remember here is that the purpose of the protocol is to facilitate an exchange between Eunice and Gordy, that is, between someone who prefers stability and someone who is willing to take on volatility. In practice, however, to make the matching problem easier, the protocol might require that a single party play both roles initially.

For example, Gordy could provide 1.1 ETH (i.e., the base and the excess collateral) to mint a stablecoin and a token representing the combination of upside (i.e., the right to extract ETH if the price goes up) and downside (i.e., the responsibility to put in additional collateral if the price of ETH goes down). Let’s call the stablecoin STB and the other token, the volatility token, VOL.

If he sells 1 STB to Eunice for 1 ETH, the whole transaction results in Gordy paying .1 ETH (or whatever the excess collateral is set to) for 1 VOL.

Using Volatility Tokens for Leverage

So why does Gordy want VOL, anyway? One potential reason is for increased exposure to ETH. If you think ETH is going from 1 to 2 and can convert that to 20 VOL (given an excess collateral ratio of 0.1), you can 20X your money instead of 2X if you are correct. This is because each VOL can be used to claim 1 UTIL if the price goes up to 2. If the excess collateralization ratio were 1 instead of 0.1, such leveraging wouldn’t really work.

This means that when setting the excess collateralization ratio you not only have to think about whether you have enough incentive to get Gordy to put in more collateral when the price drops, you also have to worry about whether enabling gambling Gordy to 10X his ETH exposure is going to impact the overall stability of the system (i.e., whether you want gambling Gordy as your Guardian).

VOL as Collateral

This whole framework started with ETH as collateral, but it doesn’t really depend on any particular features of ETH. So let’s imagine we have a universal oracle that provides an accurate price (in UTILs) for every token. Then we can take any token and use that for collateral.

So, of course the first thing we humans do is try to use VOL itself as collateral. Let’s see how that works in the framework we have built. For simplicity, let’s use an overcollateralization ratio of 1.

To start with there is no VOL, so Gordy borrows 2 ETH (with a total value of 2 UTIL) and mints 1 STB (worth 1 UTIL) and 1VOL (worth 1 UTIL). Then he sells the STB to Eunice for 1 ETH, and puts that ETH and the VOL back into the vault to mint another STB and another VOL. Gordy repeats this process until he has minted (and sold) 10 STAB.

The vault now has 11 ETH and 9 VOL in it. Eunice has 10 STB and Gordy has 1 ETH and 1 VOL. He pays back part of his 2 ETH debt, and ends up with 1 VOL and a debt of 1 ETH. Note that no matter what the excess collateralization ratio, you will always start with at least as much ETH as STB using this technique. So is it a problem?

First, let’s see what happens if the value of ETH falls to 0.95 UTIL after one period. Can we wind it down? In this case the 11 ETH is worth 10.45 UTIL, so we can give Eunice 10 UTIL of ETH (a little more than 10.5 ETH) and the rest is distributed to VOL holders. Since there are 10 VOL, each VOL holder gets about .05 ETH. However, we also have 9 VOL to distribute. Let’s just give it all to Gordy, so he is then entitled to .5 ETH.

At the end of the day, Eunice came out even and Gordy lost 0.5 ETH. But remember that the price of ETH only went down by 0.05. So Gordy’s losses were 10X.

Now let’s imagine that instead of going to 0.95, the value of ETH falls to 0.5 UTIL. Unsurprisingly, everything falls apart. Eunice is entitled to 10 UTIL, but there is only .55 UTIL in ETH. We can give her some VOL too, but the VOL only pays out if ETH goes up, so it is worthless.

What happened is that using VOL as collateral reduced the effective excess collateral ratio. The system started with an excess collateral ratio of 1, but it ended up acting like a system with an excess collateral ratio of 0.1. A small excess collateral ratio can work, but only if we can rely on people to act quickly to collateralize the system (i.e., before the value of ETH went down to 0.9 UTIL).

Magic Money

In the example above, we used VOL as collateral, but the ETH (or non-VOL) collateral was still worth at least as much as the outstanding STB. Can we go even further ? Aren’t there algorithmic stablecoins that don’t have any collateral at all?

Let’s try it.

In the currency as a service model, the holder of the stablecoin effectively pays a fee for the stability of their token. This fee comes in the form of inflation. The inflation manifests when new tokens are printed. So let’s imagine we have a new token, VOL+. VOL+ holders are not only entitled to upside when the underlying collateral goes up. They are also entitled to seigniorage.

Gordy takes 200 ETH and mints 100 STB and 100 VOL+. Regular VOL would be worth 1 UTIL, but VOL+ is extra because it is entitled to seigniorage. Specifically, 2 STB will be printed at the period and 0.02 STB will be given to each VOL+ holder. How much is this worth?

Let’s assume this is going to be a constant cash flow, so we can use the equation for the present value of a perpetuity (PV = c/r). Assuming a discount rate of 0.02, we get a present value of 0.02 STB/0.02 = 1 STB per VOL+!

This means that each VOL+ is worth 2 UTIL. So when he created 100 STB and 100 VOL+, he now has 300 UTIL in value. In other words, this magic money machine allowed Gordy to turn 200 UTIL (in ETH) into 300 UTIL (in STB and VOL+). Since Gordy has 200 UTIL worth of VOL+, he can replace all of the ETH in the vault with VOL+!

After doing that, Gordy now has 100 STB plus his original 200 ETH back, and the vault is full of VOL+. Viola! Gordy has created 100 STB out of thin air! And this, of course, is the beauty of algorithmic stablecoins. They allow you to create value from nothing.

The Flaw in my Logic

Ok, if you haven’t guess already, there is a flaw if the reasoning above. Gordy hasn’t really created 100 UTIL in value out of thin air.

The first flaw in the reasoning above is that we have assumed the value of VOL+ has gone up due to seigniorage, but we haven’t reduced the value of STB due to the inflation that comes with it. In other words, we haven’t really minted STB, we have minted STB-. Whatever value we add to VOL to get VOL+ we should subtract from STB to get STB-.

If we assume that the seigniorage is worth 1 UTIL now, then the present value of STB is 0. One way to understand this is that if you hold cash for long enough it becomes worthless due to inflation. But this reasoning seems to prove too much. Just because cash is subject to inflation doesn’t make it worthless.

It’s just really complicated. The value of a future stream of seigniorage depends on the value of STB, but the value of STB depends on the value of the seigniorage. But this circular dependency applies to all sorts of financial products, not just stablecoins. And usually, the problem is just ignored.

Another thing to take into account is that, in some sense, value actually is created out of nothing when you shift risk from one party to another. In fact, value is created from nothing after virtually every voluntary transaction. This is the real beauty of all market economies. People value things differently. And in this particular case, people value streams of money differently because they have different discount rates.

That is, some people need money now (even if they value decays due to inflation), and some people prefer to have money in the future. So it may actually be true that Gordy can create value out of thin air by finding someone who wants cash now in exchange for a future stream of money.

One More Problem: Interest Rate Risk

So we have all these conceptual problems trying to value VOL+ and STB-, but in an actual economic system we can often avoid Gordian knot by simply letting markets value things. In other words, we can cheat and just use an oracle to get the value of VOL+ and STB-.

So let’s say the oracle tells us that STB- is worth 0.95 UTIL and VOL+ is worth 1.5 UTIL. Great! We have created significant value out of nothing by shifting around risk and future revenue.

So Gordy borrows 200 ETH and mints 100 STB- and 100 VOL+. He then takes out 150 ETH from the vault and puts in the 100 VOL+ as collateral. He also sells the 100 STB- for 95 ETH and pays back the 200 ETH loan he took to get everything started.

Now the system looks like this: Gordy has 45 ETH free and clear. Eunice has 100 STB-. The vault holds 50 ETH and 100 VOL+. This seems pretty ok, since the 100 VOL+ is worth 150 ETH on the market. Plus, Eunice only paid 95 ETH for her 100 STB-, but it represents a stable claim on 100 UTIL so she is happy.

And then interest rates change. Specifically, interest rates go up. Remember that the equation for the present value of a stream of revenue depends on the discount rate. When interest rates go up, so does the discount rate. So the value of future seigniorage goes down. This means that the value of VOL+ falls (it also means that the value of STB- can go up, at least initially).

So let’s say the market settles and at STB- = .99 UTIL, and VOL+ = 1.1 UTIL. We are still actually doing ok — until the value of ETH falls as well. If ETH falls to even 0.9 UTIL, the value of VOL+ is going to plummet, just as in the VOL collateral case. But this time there is much less ETH left in the vault since, VOL+ was worth more to begin with.

After ETH falls to 0.9 UTIL, the value of VOL+ could fall to 0.1 UTIL (as the upside from ETH volatility is wiped out). We are then severely undercollateralized. The vault only holds a total of 55 UTIL worth of ETH and VOL+ together, but there is 100 STB- outstanding that has a claim to 100 UTIL in value. Plus, we have removed all incentive for Gordy to step in and collateralize the system

Final Thoughts

We have come quite a ways here so I will wrap it up here with a summary of some key points:

  • The main role of guardians in a stablecoin system is to provide extra collateral in case the value of the collateral goes down.
  • The incentive for guardians to do this is that if they don’t they will lose excess collateral they put into the system for that very purpose.
  • The amount of excess collateral you need depends on how volatile the underlying collateral is, and how quickly the guardians respond to incentives.
  • Using system volatility tokens (i.e., the ones held by the guardians) as collateral can be done, but it effectively reduces the excess collateral rate, which makes the system more fragile.
  • Using volatility tokens with seigniorage as collateral can make the system especially fragile because the tokens are worth more, and therefore can be used to displace more non-system collateral.
  • Volatility tokens with seigniorage are also subject to interest rate risk in addition to the risk from the underlying collateral, which means the price can fall even faster than traditional volatility tokens.

The last point here about the relationship between seigniorage and interest rates is one that I believe has been underappreciated. Algorithmic stablecoins are especially sensitive to changes in interest rates. A well designed system could account for this, but I suppose stablecoins are like communism — no well-designed algorithmic stablecoin has ever been tried.

--

--

Redbeard
Icewater

Patent Attorney, Crypto Enthusiast, Father of two daughters