Protocol - FRG 0.1
Below we describe the current Fragments protocol specification. We are constantly iterating and welcome your feedback :)
The Fragments protocol is an algorithmic monetary supply policy and reserve. Our goal is to produce low volatility currencies that can function as both near and long term stores of value.
To stabilize purchasing power, we increase and decrease supply in response to demand. When the protocol needs to increase supply, it capitalizes a reserve and then splits—proportionally distributing tokens to wallets.
When the protocol needs to decrease supply, the reserve automatically purchases tokens and removes them from supply in exchange for bonds, which are first in line to recapitalize the reserve under expansion.
Although Fragments can be used as a medium of exchange, their unique store of value properties are unlike any currency we've seen to date—which is why we call Fragments a low volatility cryptocurrency, instead of a stablecoin. No one can claim to know how adoption will unfold, but we are very excited to find out, and we hope you are too.
We use three assets. A primary price targeted asset, a secondary asset used to support stability, and an independent collateral asset held by the reserve.
At a high level the Fragments protocol stabilizes price by moving volatility from unit price to unit count. This process of redistributing supply to stabilize price is called rebasing and follows a simple operational rule:
Broadly, our approach follows a simple objective: maximize the distribution of supply to token holders, and minimize reliance on lenders of last resort:
We accomplish this by capitalizing a reserve and distributing new tokens to wallets when the platform needs to expand the money supply, and by programmatically bidding on bonds when the platform needs to contract the money supply.
To help illustrate what we mean by splitting, we can follow the ideal path of a single unit of currency across three moments in time—have a look at the chart below.
Imagine that between t1 and t2 demand for a currency doubles—increasing price from $1 per token, to $2 per token. To offset this change in price the currency can split, leaving the holder with 2 tokens each worth $1.
Here, the act of inflation between t2 and t3, is not generating any gains, but the increase in supply does not decrease the purchasing power of the holder's balance
In practice, to shield wallets from contraction we introduce a number of stabilization layers, read on below to learn how.
The Fragments protocol takes a layered approach towards containing volatility. A network of market-makers occupy the inner layer, stabilizing minor price changes—and an algorithmic supply policy occupies the outer layer, stabilizing major price changes.
Here, market makers benefit from simple arbitrage—buying when the price exchange rate is less than 1—and selling when the price exchange rate is greater than 1.
When volatility exceeds the capacity of market-makers, supply expansion and contraction automatically take place in the outer layer. The Fragments reserve is an algorithmic buffer that sits in this outer layer, capitalizing under expansion—and programmatically buying & removing tokens in exchange for bonds under contraction.
There's a common misconception that expansion and contraction occur in equal measure. At any given moment, there can be infinite buy pressure, but only finite sell pressure. This is why markets tend to be asymmetric and heavy-tailed, rather than symmetric and normal. In our case, price exchange rates will more likely resemble the graph below.
As a result, the magnitude of supply contraction is limited by the volume of circulating tokens, and since an algorithmic reserve is in place to facilitate contraction, it's conceivable to avoid external bond sales in all but extreme circumstances. On the other hand, it's not possible to sustain infinite buy pressure with market making alone and expansion is unavoidable.
In the chart above the shaded region LEFT of the market making band, represents the potential work to be done by contraction. The shaded region RIGHT of the market making band, represents the potential work to be done by expansion.
After market making, when USD Fragments are trading at an exchange rate less than 1 against the dollar—the platform accepts bids for bonds in a continuous auction.
The Fragments reserve acts as the primary participant in this auction, but bond sales also serve as a bridge to foreign reserves. We do not expect to be selling external bonds frequently, but consider it prudent to have a fungible asset that can be used under extreme circumstances.
At the end of each rebase period, when the USD Fragment is trading at an exchange rate higher than 1, the platform needs to expand money supply in response to demand. First, any outstanding bonds are paid out. Then, remaining supply is distributed across three allocation groups.
The Fragments reserve is actually a dynamic ETH buffer. To absorb volatility it calculates a target reserve ratio in each expansion cycle—this is a departure from typical fiat reserves which maintain a fixed reserve ratio, but offers greater protection from volatility by following a simple general rule.
Thus, for a given rebase period i the Fragments buffer determines its target ratio based on two differential factors:
Giving us the following buffer allocation for period i:
Effectively, when supply or purchasing power increases sharply the reserve allocates like a parity reserve, selling nearly all new tokens from the reserve.
And when supply or purchasing power increases gradually the reserve allocates like a fractional reserve, selling a small percentage of new tokens from the reserve. Any supply expansion beyond the reserve is inflated directly to coin holders.
The purpose of capitalizing the buffer under expansion is so that it can remove supply under contraction. To remove supply under contraction the reserve programmatically purchases USD Fragments and removes them from circulation in exchange for bonds.
Above, we mentioned that the amount of expansion supply allocated to the reserve is a function of change in supply. We can adjust the reserve's sensitivity to supply changes to be more or less conservative.
The Target Buffer Ratioi is a continuous function that takes relative change in supply ΔSi/Si-1 as an input, and returns a target buffer ratio as an output. This function has a hyperparameter that controls sensitivity.
At some supply change threshold, Thigh all but the foundation's expansion supply F will be allocated to the reserve buffer, and at some lower threshold Tlow the protocol allocates a minimum floor ratio B to the reserve—any supply increases lower than Thigh result in partial reserve allocation.
Rewriting ( 1 - F ) as the max reserve contribution ( C = 1 - F ) and setting ( Tlow = 0 ) gives us:
The relative purchasing power function exists to offset the price volatility of our underlying reserve asset (ETH initially). We can begin with the simplest implementation by subtracting ΔPi/ΔPi-1 at face value, and bring more sophistication to the system later.
Giving us the following buffer allocation for period i:
We've run simulations against a number of continuous models, beginning with the simplest linear model, but we expect to continue refining linear and nonlinear models against a full testnet cluster.
The sensitivity threshold value relates the change in supply to the change in target buffer ratio, and different settings have different benefits and costs.
The benefit of initializing Thigh to a low value, is that it allows the system to run as a parity reserve, without need for market making or external bond buying.
Under this condition ( Thigh = 1.0 e-8 ) nearly any change in supply results in a maximum target buffer ratio. As a result, we see that the red line (reserve) sits very close to the black line (token supply) and the slope of the reserve series minimally diverges from the slope of the supply series. Effectively, there is enough in reserve to purchase all outstanding tokens even in extremely sharp contraction cycles.
And since contraction is triggered only when the price exchange rate between 1 USD Fragment and 1 USD falls below 1, it’s likely that the reserve is overcapitalized, and capable of purchasing more than the total outstanding supply of tokens.
The benefit of setting Thigh to high value is that more expansion goes to wallet holders.
Under this condition ( Thigh = 1 ) a 100% relative change in supply corresponds with a maximum target buffer ratio. As a result, the slope of the reserve line (red) frequently diverges from the supply line (black), and the difference between the reserve and supply series is distibuted to coin holders.
Generally, the more robust market making is, the higher we can set Thigh—inflating more to wallets, and converging on a true split. Our challenge will be to maximize this value, such that stability is maintained and reliance on external bond buyers is minimized.
It's possible that Thigh can be dynamically determined based on first and second order supply changes accross different order time scopes. We have some working theories about this, but are mindful of the computational cost associated with committing any logic that involves analyzing historical data on-chain.
If we determine that dynamically setting Thigh is meaningfully more robust but computationally expensive, the logic can be computed off-chain and the ouput can be passed as an argument to an on-chain rebase method. In this event, we will automatically publish parameter settings, price-exchange rates, and all necessary inputs for third parties to programmatically validate computed buffer ratios.
Networks like ours are at the greatest risk of extreme volatility when the token supply is low because a comparably small amount of money can vastly affect price. Below we simulate extremely volatile condtitions to illustrate how the reserve acts accross different scenarios.
Price Volatility Distribution: Lognormal ( σ = 1, μ = 0.1 )
Below we see the extreme situation where increases go from +400% increase to -75% decrease accross two rebase periods. We call this out because typically massive increases followed by massive decreases result in the most devastating outcomes.
Set at a very low sensitivity threshold of Thigh = 1.0 e-8 the system is (not surprisingly) able to fully recover after extreme contraction without reliance on external bond buyers.
Above it can be seen that at some points the reserve line (red) is actually higher than the supply line (black) which indicates that at these points, the reserve is overcapitalized and capable of buying back more than the total supply of remaining tokens.
Price Volatility Distribution: Lognormal ( σ = 1, μ = 0.1 )
Here we have a similar volatility distribution, except in this case the sensitivity threshold is set to 1.0. We generate this to express how the reserve behaves with a more liberal setting.
Above, we again we see extreme situations where price increases and then drops rapidly. Below we can see that the system is surprisingly able to recover, but the reserve line (red) diverges from the supply line (black) more meaningfully than before.
The diverging lines are good because the difference is being inflated to wallet holders, suggesting that the system can endure high volatility without heavy handed management of the sensitivity threshold—and will increasingly inflate to wallets under healthy network growth conditions.
Price Volatility Distribution: Lognormal ( σ = 0.25, μ = -0.05 )
Below we simulate a generally decreasing series, frequently triggering bond sales to the reserve. Generally we see the bond curve (blue) asymptoting horizontally as token supply decreases.
While there are a great deal of outstanding bonds held by the reserve, we can also see that the reserve line (red) crosses over the supply line (black)—and enter again into a situation where the reserve is capable of buying up all outstanding tokens to maintain stability if necessary, weathering a down turn to fight another day.
This happens because, by definition, contraction is only triggered when price exchange rates are < $1, meaning when the reserve is purchasing tokens it always pays less than a dollar per token. In general, a reserve of $Y will always able to sustain contraction for more than Y tokens.
As mentioned above, market makers play an important role in our ecosystem buying and selling around a price target to correct minor volatility, and acting as the first line of defense.
The more robust our market making network, the more safely we can increase our sensitivity threshold, and thus maximize distribution of supply to token holders.
Fortunately, one of the key advantages of knowing a price target is that corrections can occur very quickly, and some of this trading can even be automated. The Fragments foundation will participate as a market maker alongside others. We will be investigating ways to make this as easy as possible to automate, and also have very promising theories on how to decentralize market making in the pipeline.
The Fragments protocol is currently designed to hold ETH as its collateral asset, but we could also employ other assets and will discuss some of these options.
It's worth reiterating that we consider ourselves a low volatility cryptocurrency with store of value properties unlike stable coins—and the inclusion of stable coins as potential reserve collateral does not undermine our goal to create currencies that can function as both near and long term stores of value. Generally, we think diversification is healthier for the ecosystem.
It's within our scope to facilitate the stabilization of utility tokens as a service. If adopted, such tokens will carry intrinsic purchasing power, and could eventually serve as the ultimate source of collateral. Until then, we'll remain open minded about how to achieve that outcome.
The benefit of using only Ether as collateral is that it decouples us from any other project outside our base platform. Ether is, however, volatile and will continue to be over its lifetime. This is taken into consideration in the design of our reserve policy, but the exposure cannot be entirely eliminated unless we diversify.
DAI is a price stable ERC20 token. It has been successful in maintaining a peg to date, but at a relatively small market cap and it’s not yet clear how well it will perform at higher market caps.
We could try to reduce our exposure to volatility by diversifying our holdings across many ERC20 tokens the same way Maker does with its CDPs.
Doing this would add complication around rebalancing the portfolio. It also raises the question of governance around making these decisions. A better approach would be to leverage the work already done by Maker and use their token directly as the backing asset.
Using a 1:1 backed asset reduces a lot of our risk exposure. Our long term goal is to operate in a world completely independent from fiat, this adds one more dependency, but would be temporary. If TrueCoin launches and is successful, it would be preferable to Tether due to its auditability.
Converting to and from fiat would incur high fees and necessitate working with a centralized exchange. This is a highly unlikely candidate.
If a rebase operation were forced to update every wallet balance, the cost of a rebase would grow linearly with the number of wallets. Instead of an instantaneous adjustment of all balances, users instead claim their issued tokens by sending a transaction to the Fragments smart contract. This transaction updates the user’s balance with the tokens they are allotted, records that this user has claimed this rebase cycle, and performs necessary upkeep on the number of tokens left to distribute. This operation can be performed in O(1) gas for the user. If a user does not claim their tokens by the end of the cycle, they cannot be claimed and unclaimed tokens are not considered to be in circulation when the next rebase occurs.
We will provide simple implementation specifications for building collection into wallet clients and online exchanges.
Market manipulation and malicious activity is a risk. The simplicity of our system is something we take very seriously because it allows us to effectively reason about attack vectors.
Assuming a malicious actor has full visibility into the system when a rebase operation occurs, there are only a few input levers that can be leveraged.
First is wallet balance. If they're trying to maximize their pro-rata share of new distributions, they must first heavily invest a large amount.
Second is the exchange rate. We can use a metric similar to Bitcoin Reference Rate (BRR) that the CME Bitcoin futures uses, which would require manipulating Bitstamp, GDAX, itBit and Kraken. Given the trading volume, it would also take a very large amount of capital to move markets.
Third is the bond market. In order to leverage Bonds, they would first have to buy them at auction, competing with other investors, or somehow invalidate an auction system. To profit off of bonds the attacker would also have to trigger expansion, and since the amount of reserve allocation is a function of relative supply change the tactic of aggressively selling and then buying would not be easy to profit off of. Particularly because the attacker would have to bid in competition with the reserve buffer in the bond market.
Basically any action would require a huge amount of capital, and also one that scales with the size of the network. Trying to exploit any of these input levers requires participating in the marketplace, which is a positive thing for the network.
The other aspect of malicious actors is technological security (hackers). There are groups of people that go from startup to startup exploiting them because they know they likely have immature security safeguards in place.
Possible threats here would be exploits in our smart contract or libraries, like the Parity multisig hack. Our bond auction could also be subjected to DoS attacks, or our Exchange Rate oracle could be compromised. We need to consider ourselves a target and we'll need to treat security as an existential issue for the network.