FilDA Platform Documentation
FilDA is a lending and borrowing project basing on smart contracts to realise a cross-chain money market . It launched on HECO (Huobi ECO Chain) and is deployed on other public chains (IoTeX, Elastos Smart Chain, BNB Smart Chain, Polygon and Arbitrum One).
Unlike other lending and borrowing projects deployed on the Ethereum chain, we chose HECO as the base chain. We introduced the ecological resources and assets on Huobi and can make our service more user-friendly because of the accessibility of HECO and the extremely low gas fees. The same is true for the subsequent chain launches since our genesis on HECO.
FILDA is the governance token of FilDA Protocol rather than a token with pure investment value.
The project team has 5 percent of the token share which will be released in blocks over 4 years. The team didn't receive any tokens in the first week after FilDA was launched. The token for the team was generated from the second week after FilDA went live.
All assets on FilDA are integrated through a token contract which represents the HRC20 compatible account balance provided to the protocol. By minting fTokens, users can perform the following operations:
- 1.Users can earn interests through fToken's conversion rate
- 2.Users can use fToken as collateral.
fToken is the major way to interact with FilDA protocol. When users mint, redeem, borrow, repay, liquidate or forward fTokens, it will use fToken contracts to enable these operations.
The exchange rate between the original assets and fToken is not constant. fToken is more like a fund quota. The assets exchanged back from fToken may increase because of the interests. Generally, users can get a return of up to 50 times of the deposits in fToken. But the interest may also impact the amount of fToken.
Users will receive fXXX token after depositing their asset. Import these ftoken into your wallet to check the amount you hold.
fToken is a certificate of deposit. After an ftoken is transferred to other platforms, the deposit in the account decreases and the loan utilisation rate increases. Users need to verify their loan limit before they can participate in other platforms. Recently, prices have fluctuated sharply, and it is recommended to keep loan utilisation rates low, to avoid liquidation.
Those holding fTokens get FilDA income. If the HECO cooperative project supports fToken mining, FilDA will enter its contract and the cooperative project will make the secondary distribution rules.
FilDA will continue to develop partners. Supernova.cash currently supports the use of fTokens and can participate in mining. A group of partners will support fTokens in early March.
FilDA contains two protocols: Banking (Lending and Borrowing) and Staking
The banking (lending and borrowing) protocol is a revision based on Compound and the staking protocol is one based on Harvest.
- Liquidity pool
- Interest rates are determined algorithmically by supply and demand
- Floating interest rates that are non-negotiable
- Absolutely transparent token balance information, complete records of all transactions and historical interest rates
- Aggregate the tokens of each user
- Withdraw the assets at any time
- Collect the accrued interest at any time
- Uses can supply their asset and earn interest at low risk
- dApps, institutions and exchanges can gain incremental returns
- Requires over-collateralisation
- No time limit for borrowing
- When the value of the borrowing assets is above the collateral ratio, the users' collateral should be liquidated at a price that is below the market price, which motivates the arbitrageurs to step in to eliminate the risk.
- Quickly borrow utility tokens at any time without having to wait (time required to fill an token buy order on exchanges)
- Users can conduct ICO investments by borrowing ETH using their existing portfolio (multiple tokens or assets) as collateral.
- Short selling
Cash + Borrows = Supply + Equity
Follow international accounting standards:
Liquidate ( Caller)
Accrue Interest (Supply)
Accrue Interest (Loan)
Traditional financial platforms mostly use the day as the time unit. By comparison, Filda uses the block time (3 seconds) as the time unit.
The interest rate on traditional financial platforms is constant during the life cycle of a mortgage. However, the interest rate on FilDA fluctuates based on supply and demand. Both the borrowing interest rate and the supply interest rate might vary in different blocks. Therefore, FilDA's borrowing interest rate/ supply interest rate refers to the rate of each block.
In traditional financial platforms, the interest rate includes nominal interest rate and actual interest rate. Generally speaking, the interest rate that the borrower is informed of is the nominal interest rate, but the actual interest rate is used in accordance with the compound interest when calculating interest.
Nominal interest rate = Actual interest rate
Annual percentage rate (APR) = interest rate * blocks per year
Blocks Per Year = 10 512 000 = 60/3 * 60 * 24 * 365
When lenders deposit HUSD into the money market, it should convert HUSD into fHUSD based on the real-time exchange rate on the platform. This process is named Mint Token.
Lenders can terminate the loan at any time without waiting for the borrowed asset to be returned. When lenders take back their principals and redeem the interest, fUSD that the lenders hold is converted into HUSD based on the real-time exchange rate on the platform.
exchangeRate = (totalCash + totalBorrows – totalReserves) / totalSupply
totalCash: the amount of DAI that the lender has deposited into the protocol but has not been borrowed yet
totalBorrows: The amount of HUSD that the borrower should repay ( principle + interest)
totalReserves: The total amount of reserves on the platform （Part of the loan interest is retained as platform reserve)
totalSupply: The total amount of cDAI that the lenders can receive
Utilisation rate is a measure that reflects the efficiency of the assets on the platform. That is the percentage of loans in the entire asset pool of the money market.
= 2.0% +
Where 2.0% is the base interest rate and 10% is the multiple factor.
The borrowing interest rate will be dynamically adjusted according to the utilisation rate. S is the pumping ratio of the FilDA platform. For different assets, these interest rate models can be adjusted and configured.
In traditional finance, the risk reserve should be derived from the interest income of each loan for any bank/p2p lending.
Comparatively, the reserve is also derived from the interest income of each loan based on the specific reserve factor on FilDA.
totalReservesNew = interestAccumulated * reserveFactor + totalReserves
There are two versions of borrow rate on FilDA. Version 1.0 is a linear interest rate model and Version 2.0 is a segmented interest rate model. Version 1.0 is actually a special case of version 2.0.
Here is the logic for Version 2.0: When the utilisation rate exceeds Kink, segmented interest model will be applied; otherwise, Version 1.0 is applied.
Currently FilDA adopts a segmented interest rate for HFIL
When utilisationRate <= kink
When utilisationRate >= kink
(Kink can be understood as the marginal interest rate, utilisationRate-kink can be understood as the overflow interest rate.)
The above formula can be translated as:
When utilisation rate <= marginal interest rate: Borrowing interest rate = base interest rate + utilisation rate * utilisation rate multiplier
When utilisation rate > marginal interest rate: Borrowing interest rate = base interest rate + utilisation rate * utilisation rate multiplier + marginal interest rate * marginal interest rate multiplier
Where baseRate = The base interest rate.
This is a ledger that can settle the transactions in real-time using smart contracts. The premise of the real-time settlement of the transactions in the ledger is that the transactions are carried out one by one in a specific processing sequence and reliable transaction time. Blockchain meets these requirements and provides a basis for automatic transaction settlement.
When a transaction occurs, the ledger settles the transaction for the corresponding account and updates the interest into the account balance. When the next transaction occurs, the same process is triggered again to update the account balance.
A simple banking model is used to generate income from loans, which is used as the interest for deposit users. It doesn't offer floating loan interest or consider profits, but ensures the balance of borrowing and lending.
Loan Profit = Deposit InterestLoan Profit = Total loan * Loan interest rate * TimeDeposit Interest = Total deposit * Deposit interest rate * Time=>Total deposit * Deposit interest rate * Time =Total loan * Loan interest rate * Time=>Total deposit * Deposit interest rate =Total loan * Loan interest rate
According to the above equation,
- 1.When the loan is 0, no profit will be generated and then deposit interest is 0.
- 2.When the total loan increases, the profit will increase and then deposit interest will increase.
- 3.When the total loan remains unchanged and the total deposit increases, the deposit interest will decrease
Conclusion: The deposit interest rates change with changes in total loans and total deposits.
Here are 4 different transaction events: deposit, withdraw, borrow, repay.
If there are no transaction events, the total amount of deposits and loans will not change and interest rates will remain unchanged during this period. If any transaction events occur, the total amount of deposits and loans will change, and then the interest rate will also change.
Assuming that the borrowing interest rate is 0.05, the circles in the diagram below indicate the status of the ledger and interest rates, and the arrows indicate transaction events:
Circle a: Deposit is 100. Loan is 0. Loan interest rate is 5%. No interest earned.
Transaction 1: borrow 50
= （50 * 0.05）/ 100 = 0.025Deposit interest rate = ( total loan * loan interest rate)/ total deposit = （50 * 0.05）/ 100 = 0.025
The ledger resulted from event 2 and 3 can also be calculated according to the above equation.
Conclusion: Transaction events result in changes in interest rates
The status change as showed above doesn't include transaction settlement. In fact, incomes (interests) will be generated over time.
New total deposit = total deposit + (total deposit * deposit interest rate * time)
New total loan = total loan + (total loan * loan interest rate * time)
Assuming that the loan interest rate is 5% (an usurious loan is used just for easy calculation), the settlement with time value should be as follows:
Yellow arrows represent the duration of the previous status. After a new event occurs, the status will be updated into the next time period.
As shown in the above diagram, the changes in interest rates become more complex after considering the relationship between income and time, but this calculation is still very clear.
Status a lasts 1 day. Since the loan is 0 and the interest rate is 0, the deposit doesn't change after settlement for event 1. But the total loan increases after event 1. The deposit interest rate is updated to 0.025 after event 1.
Status b lasts 2 days until event 2 occurs. Here is the calculation of the new total deposit and total loan before settlement for event 2:
## Settlement ##
New total deposit = 100 +（100 * 0.025 * 2）= 105
New total loan = 50 +（50 * 0.05 * 2） = 55
After settlement for event 2, the total deposit will be 105 + 50 = 155.
According to the new deposit of 155 and the new loan of 55, the new interest rate is 0.01774.
Status c lasts 1 day until event 3 occurs.
## Settlement ##
New total deposit = 155 +（155 * 0.01774 * 1) = 157.75
New total loan = 55 + (55 * 0.05 * 1) = 57.75
Because 20 is repaid, total loan changes to
57.75 - 20 = 37.75
Then the new interest rate is
Conclusion: The settlement is conducted when any transaction events occur. After settlement, the account balance will be adjusted, which leads to a change in the interest rate.
The calculation as discussed above is complicated, but it is clear that the status change is triggered by events. In reality, the total amount of deposits and borrowings is generated by the aggregation of countless accounts rather than one single account. For example, Alice deposits 50, Bob deposits 30, and the total deposit is 80. Because Alice and Bob deposit at different times, their interest rates are different. All these factors bring more complexity to the process. The same goes for borrowing. Therefore, each account must be settled separately, and their interest rates vary according to changes in the general ledger quota.
We classify the total deposit 100 in status a as other deposits. After 2 days, Alice deposits 50, and other deposits are updated to 105 after settlement. Alice's deposit increases the total deposits to 155, and the new deposit interest rate is updated to be 0.01774.
One day later, Bob also deposits 50. By the time before Bob's event, the settlement for Alice's deposit and other deposits uses the interest rate of 0.01774.This calculation results are shown in status c.
As analysed above, we can find that every account balance needs to be settled when an event occurs, . In this way, as the number of deposit/borrowing users increases, there will be more and more accounts, and the calculation workload for each settlement will also increase. In fact, it is not necessary to settle all the accounts as long as the historical interest rate is recorded. We can directly calculate the state c as shown in the diagram above based on the initial status of each account:
Other Deposits = 100 +（100 * 0.025 * 2）+（（100 +（100 * 0.025 * 2））* 0.01774 * 1）
Alice's deposit = 50 + (50 * 0.01774 * 1)
Bob's deposit = 50
Where 100 is the initial amount of other deposits, and 50 is the initial amount of Alice's deposit. 0.025 is the interest rate for the first period, and 0.01774 is the interest rate for the second period. It can be found that as long as there is a record of historical interest rates, the balance of each account can be calculated through iterative computation. Therefore, when the settlement is performed, only the account of the event needs to be settled, and other accounts can be temporarily not settled until any events apply to them.
Conclusions: Each settlement is only for accounts whose balances are affected and the general ledger is updated. There is no need to settle other accounts before new events occur.
This part of the description is compiled from the Internet, thanks to the original author, outprog.
During the trial operation of the first 2 weeks, FilDA ran smoothly. Moreover, DEX on HECO has developed rapidly, and the market depth has grown rapidly. FilDA adjusted the relevant parameters of the pledge rate to allow users' assets to obtain more liquidity under the premise of safety.
Please note that it is better to have your loan utilisation ratio below 80% to decrease the liquidation risk due to price fluctuations. If the loan utilisation ratio is close to 100%, liquidation may result.
Liquidation Threshold: According to the liquidity and security of different assets, different liquidation threshold are granted. For example, the liquidation threshold of BTC is 85%.
Loan limit: The loan limit that can be granted for the current account, the market value of the collateralised asset * liquidation threshold = the loan limit, when 100% of the loan limit is used, the collateralised asset will be liquidated and a 10% penalty will be charged.
Safety line: When 100% of the the user's loan limit is used, liquidation will be triggered. In order to avoid the liquidation risk caused by the daily price fluctuation of your assets, the system has set a safety line of 85%. The safety line is for all assets.
There is 10000-USDT BTC and 10000 USDT collateralised in your account.
17500USDT（10000 * 85% +10000 * 90%= 17500）
Loan Limit: 10000 * 85% +10000 * 90%= 17500
14875USD（17500 * 85% = 14875）
The recommended loan: 17500 x 85% = 14875
$2625 is reserved as a buffer for the price fluctuation.
In the end, what everyone needs to pay attention to is the percentage of loan utilisation. Once it approaches 100%, the risk of liquidation will increase.
When the ratio of loans to collateral in a user's account exceeds a certain limit, the FilDA protocol will trigger liquidation, in which the user's collateral is put into the liquidation market and anyone can participate in the liquidation as a liquidator.
Liquidation threshold refers to the value that can be granted when an asset is used as collateral. Since the price of encrypted assets fluctuates greatly, it is impossible to grant the collateral with the full value at real-time prices. For example, if the liquidation threshold for BTC is 85%, then the BTCs of $10,000 can be credited as $8,500. In other words, the user can borrow $8,500 by collaterising BTC of $10,000.
Loan limit refers to the maximum amount of the loan calculated from the liquidation threshold of users’ collateral. It results from combining the total value of all assets in the account. When the user converts the deposits to collateral, the user can increase the loan limit.
Loan limit = ∑ (market value of pledged assets * mortgage rate)
Loan Utilisation Rate = actual loan/ Loan limit
Please make sure your loan utilisation rate is below 100%m, otherwise it might trigger liquidation.
In order to prevent the loan utilisation rate from exceeding 100%, the platform set a safety line of 85% based on the loan limit. When users apply the loan, the total loan cannot exceed 85 percent of the value of the collateral.
Example: When a user deposits some BTC worth 10k USD, the loan limit shall be 8500 USD with BTC's threshold rate of 85%. If the user applies for a loan, the maximum loan can only be 8500*85%=7225 USD, where the loan utilisation rate is 85%.
Let's continue the example above. If the price of BTC drops by 10%, the loan limit shall be 9000 USD. With the same BTC's threshold of 85%, the loan limit shall be 7650 USD. In this case, the loan limit is still higher than the actual loan, the liquidation shall not be triggered, but the loan utilisation rate rises to 94%. If the price of BTC drops by 5% again, the value of the collateralised BTC is less than 8500 USD, then the loan limit goes lower than the actual loan of 7225 USD, where the liquidation shall be triggered because the loan utilisation rate exceeds 100%.
When a user’s account is pending liquidation, anyone can buy the collateralised asset at a 7% discount, which is a reward for the liquidator and also a penalty for the borrower.
Liquidators can select and purchase any asset in the account but cannot purchase more than 50% of the total assets at a time. If the account cannot be restored to a normal state after one liquidation, more liquidations can be performed until loan utilisation rate drops below 100%.
Note: Users should always watch the loan utilisation rate. The further away from 100%, the safer it is. Closer to 100% means the account is more likely to be liquidated.