When a user supplies their assets to Alpaca Finance's lending pools, ibTokens (interest-bearing Tokens) are used to keep track of the funds they have deposited as well as any interest earned.
Each time a user supplies funds to the lending pool, they are issued a corresponding balance in ibTokens. This balance of the ibTokens is directly proportional to the stake they have in the lending pool, which accrues interest every block.
Each lending pool has its own ibToken; for example, if a user lends BNB to the protocol, they will receive a corresponding balance of ibBNB.
Each deposit vault earns interest. However, the interest isn't distributed. Instead, simply by holding ibTokens, you'll earn the interest.
ibTokens accumulate interest through their exchange rate; over time, each ibToken's value increases, becoming convertible into a larger amount of its underlying asset with every block, even while the number of ibTokens in your wallet stays the same.
Each deposit pool has its own utilization which will also reflect how much the corresponding ibTokens will appreciate over time.
The longer a user holds ibTokens, the higher the value of those tokens appreciates. This is the accumulation of interest.
You do not need to stake ibTokens to enjoy this price appreciation, although you will still earn it while your tokens are staked.
When Alpaca Finance was launched, the ibToken exchange rate (ie. how many BNB one ibBNB was worth) began at 1. Since the launch of leveraged yield farming though, it has continued to increase at a rate equal to the compounding market interest rate. This represents the accrual of the lending fees to lenders' tokens.
For instance, if the lending APY for a year was an average of 50%, the value of the ibToken at the end of the year would be ~1.5.
Each user has the same ibToken exchange rate; there’s nothing unique to your wallet that you have to worry about.
Let’s say you deposit 1,000 BNB in our vault when each ibBNB is worth 1.05 BNB, you would receive 952.38 ibBNB (1,000 / 1.05)
A few months later, you decide it’s time to withdraw your ibBNB from the vault, when the exchange rate is 1.10. The following will occur:
Your 952.38 ibBNB is now equal to 1,047.618 BNB (952.38 * 1.10)
You could withdraw 1,047.618 BNB, which would exchange all 952.38 ibBNB
Or, you could withdraw a portion, such as your original 1,000 BNB, which would redeem 909.09 ibBNB (keeping 43.29 ibBNB in your wallet)
Our implementation of ibTokens is similar to that of the cToken of Compound protocol. For more information on cTokens, please visit: https://compound.finance/docs/ctokens