Skip to main content

Rebasing

What is rebasing and how does it work? How is it different than airdropping?

Rebasing is a mechanism through which the total supply of tokens is adjusted. Rebasing works by taking the “base” number of tokens, T, and multiplying it by some “rebasing factor”, RF, to get a new number of tokens. For example, let’s say there were a total of 100 tokens: 10 were held by investor A and 90 by investor B. In a rebasing, we might want to double the total number of tokens (i.e. a rebasing factor of 2). We multiply each investor's balance by the Rebasing Factor — 2 in this case — so after rebase Investor A has 20 tokens and Investor B has 180, for a total of 200 tokens.

The most common reasons for rebasing are to create price stability and to pay out yield, both of which are relevant here. For example, let’s say a token started at a price of $1.00 per token, but then rose in price to $1.10. If we want to bring the price of the token back to $1.00, we could rebase. Let’s go back to our example where investor A holds 10 tokens and B holds 90. Initially, there are 100 total tokens, each at $1.00/token, for a ‘total value’ of $100. If the price of the token rises to $1.10, this means that the ‘total value’ of all tokens is 100 x $1.10 = $110. If we want to reduce the price per token back to $1.00, we need to increase the number of tokens. By how much? By $110/100 = 1.10. If you then multiply the initial number of tokens (100) by the rebasing factor (1.10), you get 100 x 1.10 = 110 tokens. The price per token after rebase is then [$110 in total value] / [110 tokens] = $1.00 per token.

How can we do this? One way would be to mint and airdrop new tokens to each token holder. This would cost a lot of gas, however, because it requires updating each token contract storage location that represents a user’s balance. Rebasing allows us to adjust all token holder balances in a gas-efficient manner by introducing the concept of user “shares”. A “share” is similar to a share of stock - it can be thought of as a claim on a percentage of the total supply of rOUSG tokens. A user’s balance is then equal to the percentage of total shares they hold, multiplied by the total number of shares:

NumTokens_User = NumTokens_Total * (NumShares_User / NumShares_Total)

When we rebase, therefore, we only have to update one contract storage location: NumTokens_Total. As you can see from the formula above, that will increase the balance in your wallet while keeping your percentage of the total tokens the same. Here’s an example where we increase NumTokens_Total from 100 to 200:

Investor A SharesInvestor B SharesTotal Number of SharesTotal Supply of rOUSG TokensInvestor A rOUSG BalanceInvestor B rOUSG Balance
Before Rebasing1910100(1/10) * 100 = 10 rOUSG Tokens9/10* 100 = 9 rOUSG Tokens
After Rebasing1910200 (increase)(1/10) * 200 = 20 rOUSG Tokens9/10 * 200 = 180 rOUSG Tokens

And what number do we set the NumTokens_Total to be? We set it equal to the Net Asset Value of the Fund as of the end of the previous Business Day. In other words, we set NumTokens_Total = NetAssetValue, thereby making NetAssetValue / NumTokens_Total equal to $1.00.

The rebasing factor RF that we list on the website, then, is calculated as RF = NumTokens_Total_New / NumTokens_Total_Old.

We can use a simple example to check this. Let’s say that on Monday the total number of tokens after rebase (NumTokens_Total_Old) was 2 (implying a fund Net Asset Value of $2.00). Let’s also say that at the end of Monday, we had received $2 in net income, so the Net Asset Value of the fund at the end of the day (NetAssetValue) was now $4. This implies that the NAV per token is 4 dollars / 2 tokens = $2/token. To make the NAV per token $1.00 after rebase on Tuesday, we need to double the number of tokens. In this case, the rebasing factor would be $4/2 = 2. If we therefore doubled the number of rOUSG tokens everyone had, the NAV per token would be reduced to $1.

Finally, please note that when your rOUSG balance increases due to rebasing, while you will see the balance increase in your wallet, you will will not see an accompanying transaction in your wallet’s activity or on a block explorer, since no tokens are actually being sent but instead are simply being rebased.

How often do you rebase rOUSG?

We aim to rebase every Business Day based on the net income received the previous Business Day.

In the event that we are unable to update the price or rebase on a given Business Day, investors holding their tokens will still receive the yield from the ‘missed’ day at the time of the next update. Note that tokenholders who submit a redemption request prior to a price update or rebase on a given day are not paid yield on those tokens for that day. Please also note yield is paid to the holder of the tokens at the time of update; if you have already transferred or redeemed your tokens, you will not receive yield on them. Note that OUSG holders are not ‘paid out’ yield per se; instead, that yield is reinvested into fund, thereby increasing the value of their existing OUSG tokens.

What is the difference between rebasing rOUSG and updating the OUSG token price onchain?

When we update the OUSG token price (aka Net Asset Value, aka NAV) in the OUSG Price Oracle this automatically triggers a rebase to occur in the same block, so you can think of a “price update” and a “rebase” as de facto being the same thing and happening at the same time.