# Elastic Supply Assets

Elastic supply assets, or **“rebasing”** assets, were originally constructed by [Ampleforth](https://www.ampleforth.org/) as a mechanism to provide stable price, without losing exposure to value gains. Rebasing assets transfer volatility of an asset from *price* to *supply*.

This mechanism has a very nice quality in that it allows for stable contracts. For example (taken from the AMPL website):

> Imagine Evan and Micah enter into a bet:\
> \
> \&#xNAN;*"If the Lakers make it to the 2022 NBA conference finals, Micah will pay Evan 10 coins. Otherwise, Evan will pay Micah 10 coins."*
>
> We would not want to denominate this bet using Bitcoin, because Bitcoin's price volatility makes for an unstable contract obligation.

Rebasing assets' price stability make them great assets for contract denomination.

## Clean Integrations

Another very important benefit of rebasing assets is that they naturally *abstract price information* away from integrations.&#x20;

For example, a traditional DeFi lending platform like Aave needs a complex oracle system to calculate collateralization and relative values of assets. This adds extra complexity and risk to the system - If the oracle goes wrong, users could be wrongfully liquidated and pools could be drained.

Lending applications built with rebasing assets don't actually need price data - they only need access to the balances of the asset. Value is expressed directly in the contract's changing balance - the price can always be assumed to be stable and around $1. &#x20;

## Buttonwood Rebasing Tokens

Buttonwood extends this concept with the `ButtonToken` - creating the ability to turn *any crypto-asset* (BTC, ETH, etc.) into a rebasing asset, as long as it has a solid price-feed oracle.&#x20;

{% content-ref url="/pages/HWIdKMjn5ajGu7BdaiAO" %}
[ButtonToken](/buttonwood/learn/elastic-supply-assets/buttontoken.md)
{% endcontent-ref %}

Buttonwood also created the `UnbuttonToken` - the inverse of the `ButtonToken`. It turns elastic supply assets into fixed-supply assets.&#x20;

{% content-ref url="/pages/WY9dVDxco4XmNg7QNaSQ" %}
[UnbuttonToken](/buttonwood/learn/elastic-supply-assets/unbuttontoken.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.prl.one/buttonwood/learn/elastic-supply-assets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
