Borrowers
What you need to know as a Wildcat borrower.
Last updated
What you need to know as a Wildcat borrower.
Last updated
For the purpose of this section, we assume that the borrower has already gotten in contact with Wildcat and been added as a whitelisted borrower on the archcontroller (the registry that tracks permissions and deployments).
Once this is done, the borrower can go to the protocol UI, and having signed the Service Agreement (if not done already), navigate to the Borrower section.
Thereafter, you need to ensure that your Borrower Profile page is accurate: you can view this by clicking on View Profile after clicking on your signed in address in the top-right of the app:
Ensured this is filled out (Wildcat admins will approve any changes here): this is needed for grabbing information for the master loan agreement template if you opt to make use of it.
Now click Create Market.
There are a number of parameter fields that are presented here, and the screen may appear a bit overwhelming, but they fundamentally represent the degrees of freedom you have available to you. They are:
This is the section that dictates what hook instance is used to govern the market.
This dropdown allows for you to either re-use a policy that you have previously created, or instantiate a new one. Markets that are governed by the same policy all adhere to the same rules. If you select an existing policy here, the remaining three fields are auto-completed.
Exactly what you'd expect: enter a unique identifier here that describes the policy.
Two options here:
Open Term: deposits from lenders can be requested for withdrawal at will, at any time.
Fixed Term: deposits can only be requested after a set amount of time has elapsed after market creation, whereupon the market converts to an open-term. Once a market has converted, it cannot be entered into another fixed term. If you select this option, another three sub-options are shown:
Fixed Term Maturity Date [00:00 UTC]: when do you want to permit withdrawal requests? Please note that the Base APR cannot be reduced while a market is in fixed-term!
Permit Early Termination: do you want to reserve the right to repay all market debt and stop accruing interest even while the market is in a fixed-term?
Permit Maturity Reduction: do you want to reserve the right to bring the maturity (conversion to open term) date closer to the present?
At present, we support two options here:
Lender Self-Onboarding: any lender can grant themselves a deposit credential provided they are not sanctioned by OFAC as detectable through the Chainalysis oracle for that chain.
Borrower Operated Allowlist: lenders can only deposit into markets if their address has been explicitly added to the policy by yourself.
Here you are asked for what it is you want to borrow and how you want to identify the debt token that is issued in exchange.
This is the asset that you wish to borrow, such as LUSD or WETH.
The prefix string that the market token issued to represent debt will use. For example, if you are borrowing WETH (Wrapped Ether) and enter 'Market Maker X' here, the name of the market token will be Market Maker X Wrapped Ether.
The prefix string that the market token issued to represent debt will use. For example, if you are borrowing WETH and enter 'mmx' here, the symbol of the market token will be mmxWETH.
Here you configure the capacity, rates, reserve ratio and minimum deposits of your market.
This represents the initial capacity of the market - the maximum amount of debt that you're willing to pay interest on at launch. Note that depending on what you set the reserve ratio as, this does not correspond to the amount that you are able to borrow from the market when fully subscribed.
The amount of interest that you are willing to pay on deposits to lenders. This is the rate that will apply presuming that your market never stays delinquent for long enough for the penalty APR to activate. The APR compounds every time the market is interacted with in a non-static call (such as a deposit or withdrawal request), so it's hard to determine precisely what the APY would be for this rate.
Wildcat V2 markets allow for this value to range between 0 - 100%. The zero is in homage to the American central banking system. Note: that this is not the true APR that you pay in the presence of a protocol fee, which will be added onto the base rate (e.g. selecting a base rate of 10% for a market that includes a 5% protocol fee produces a final rate for the borrower of 10% + (0.05 * 10%) = 10.5%. However, this 0.5% does not accrue to the rebasing debt tokens, but rather to the required reserves of a market over time.
The amount of additional APR that you agree to pay in the event that your market becomes delinquent (i.e. falls below required reserves) and the delinquency is not resolved within the amount of time specified by the grace period (defined by yourself later), as observed by the grace tracker.
Wildcat V2 markets allow for this value to range between 0 - 100%. We encourage borrowers to select a non-zero value to illustrate the seriousness with which they intend to monitor their obligations. This penalty rate is added on to the base rate only for as long as the value of the grace tracker is above that of the grace period. The presence of an active penalty rate does not factor in to the calculation of any protocol fees that are in place, as Wildcat profiting from delinquent markets would present all manner of perverse incentives.
The percentage of the market supply that must remain within the market available for redemption. For example, a market with a capacity of 100,000 tokens, a supply of 20,000 tokens and a reserve ratio of 25% must have 5,000 tokens within the market ready for lenders to withdraw. Wildcat V2 markets allow for this ratio to range between 0 - 100%. This enables fully uncollateralised markets: however, a borrower will still be expected to maintain a small amount within the market to handle protocol fee accrual. Failing to maintain this level will result in the market becoming delinquent. Note that the capacity and the reserve ratio together dictate the maximum that you are able to borrow from a market. A higher reserve ratio leads to a greater amount that you are paying interest on, but provides more of a cushion for lenders to easily exit their position, presuming that you fix delinquencies in a timely manner (lest you incur the penalty APR, see above).
What is the minimum amount of the underlying asset that will be accepted by the market in a single deposit transaction by an approved lender? Default value is zero, this is completely optional.
This section is related to hook management, and allows for you to determine who can deposit and withdraw from markets, as well as how transferable the debt tokens (dfdUSDC, in this example) are:
Restrict Deposits - limits who can contribute assets to the market according to the hook instance (policy) that governs the market. Note: if this is not enabled, then deposits are a free-for-all.
Disable Transfers - stops the movement of tokens representing deposits or loans within the market. Transfers to the market starting withdrawal requests are not disabled.
Restrict Withdrawals - restricts the ability to withdraw funds to users who meet market access criteria. We recommend this be turned on.
Restrict Transfers - ensures that market tokens can only be transferred between participants who meet the specific access requirements set by the market’s policy.
The amount of time that a market is permitted to be delinquent for before the penalty APR activates. This parameter is measured in hours, and comes with a corresponding variable called the grace tracker, which measures the amount of time for which the market has been delinquent. The grace period is a rolling limit: once delinquency has been cured within a market, the grace tracker will count back down to zero from whatever value it had reached, and any penalty APR that is currently in force will only cease to do so after the grace tracker value is once again below the grace period.
Wildcat V2 markets allow for this value to range between 0 - 2160 hours (90 days).
Note: this means that if a markets grace period is 3 days, and it takes 5 days to cure delinquency, this means that 4 days of penalty APR are paid. This is important: a borrower does not necessarily have grace_period
amount of time to cure each distinct instance of delinquency!
The amount of time that a lender who has filed a withdrawal request must wait before they are permitted to claim their assets from the market.
Wildcat V2 markets allow for this value to range between 0 - 2160 hours (90 days). This parameter exists in order to fairly distribute assets across multiple lenders given the undercollateralised nature of Wildcat markets. In the event that a significant amount of the supply is recalled at once, a longer withdrawal cycle permits reserves to be handed out pro rata depending on the reserves within the market. For more on how this looks from the lenders perspective, please see the Lenders page.
This is not directly relevant to the structure of the market which is deployed, but borrowers are presented with the option of whether or not to make use of a Wildcat-specific master loan agreement for the protection of any lenders.
If the Wildcat MLA Template is selected, the borrower is required to pre-sign a copy of the Template MLA with the relevant parameters sourced from this market configuration and the borrower's profile. This document is then offered to lenders which seek to deposit to a market after onboarding, binding them to the borrower via contract. It defines certain warranties and covenants, discusses the handling of sanctions, accounts for the mutability of certain parameters and is intended to offer the lender protection via the legal system, as they shoulder the bulk of the risk in a trusted relationship.
If 'Don't Use' is selected, then a signature is still requested, but this is to log the fact that the borrower explicitly declined to add an MLA to the market. At present, MLAs cannot be retroactively added on to markets that did not start with one. In future, we will support the ability for borrowers to provide their own agreements, but for now, this is where we are:
At this point, you are presented with a summary of the market that you are about to create:
After signing the MLA for your market (or your refusal to offer it), you can finally deploy!
Once a given market is live, lenders can start onboarding to the market, depending on the access policy in place. For those markets which make use of an explicit address whitelist, the borrower must make use of the Market Details section of a market page to execute an on-chain transaction specifying one or multiple addresses.
Wildcat itself does not source capital providers for you, although we may well advertise the fact that your markets exist and what their parameters are (as well as any changes).
We defer the decision-making of who is 'allowed' to be onboarded to borrowers, but require that they do not seek to approve lenders resident in sanctioned nations (even with things like geoblocking in place, an explicit whitelist can add whatever addresses they want).
If Wildcat notices that borrowers are breaching this incredibly light-handed requirement, we are likely to offboard the offending borrower, and may opt to remove affected markets from the UI. Crypto is global, and Wildcat isn't going to stand by and watch a borrower reap the whirlwind by authorising addresses clearly tied to North Korea.
If we fast forward from here to the stage where lenders have onboarded and deposited assets, we can finally get to the point of all of this: borrowing assets from the market that you have set up.
Remember that the capacity you set for your market only dictates the maximum amount that you are able to source from lenders, and that your reserve ratio will dictate the amount of the supply that you cannot remove from a market.
If you have created a market with a maximum capacity of 1,000,000 USDC and a reserve ratio of 20%, this means you can borrow up to 800,000 USDC provided that the market is 'full' (i.e. supply is equal to capacity). In the event where the supply to this market is 600,000 USDC, you can only borrow up to 480,000 USDC.
The process of actually borrowing available assets from a market is simple: navigate to the market details page of your market, and you will be presented with the ability to withdraw assets up to the current reserve ratio. If you've used protocols such as Euler or Aave in the past, you'll be familiar with this.
We strongly advise not borrowing right up to the limit, as the result of this will be that your market becomes delinquent after the very next non-static call which updates the market state and rebases the market token supply.
Please also note that in the case where a protocol fee is in place for a market, said fees will accrue as required reserves in the market over time, alongside interest that accrues to the rebasing debt tokens.
The primary mechanic by which funds are recalled by lenders is through withdrawal requests, which isolate assets currently in reserve in a market for lenders to claim at the end of a withdrawal cycle (for more details on this, please refer to the Lenders page).
Withdrawal requests impact the liquid and required reserves of your market, and as such borrowers are minded to monitor their reserve ratios to determine when funds are being requested. Requests (including who has placed the request and for how much) are also logged within the Market History tab of a market from the borrower perspective.
The act of repaying is simple in the sense that it just requires moving assets back to the market contract via a standard ERC-20 transfer. Further, anyone can repay assets to the market in this way - we've permitted this in case the borrower address is compromised.
In the event of such an address compromise, all lenders can file withdrawal requests, assets can subsequently be repaid from a third party, and - due to the manner in which withdrawal requests sequester assets during a withdrawal - can be honoured through the market contract without the compromised borrower address being able to access any assets.
The interest rate on a market is fixed at any given point in time (i.e. markets do not make use of a utilisation-rate based curve), however the borrower is free to adjust this rate step-wise should they wish, under the following formula:
Should a borrower wish to increase the APR of a market in order to encourage additional deposits, they are able to do so without constraint.
Should they wish to decrease the APR, they are able to do so by up to 25% of the current APR in a given two week period: a decrease of more than this requires that twice the amount is returned to the market reserves for that two week period to permit lenders to opt out ('ragequit') if they choose. To illustrate:
A borrower can reduce a market APR from 10% to 7.5% with no penalty, and two weeks thereafter will be able to reduce it again to 5.625%, and so on.
However, should a borrower reduce a market APR from 10% to 7.4% (a 26% reduction), they will be required to return 52% of the outstanding supply to the market for two weeks. After that time has passed, the reserve ratio can be reset back to the prior level and the assets can be borrowed again.
Note that the above only applies if your market is in an 'open-term' setting: i.e. there is no hook enabled which is preventing withdrawals at the time of the proposed change. If this is the case, you will not be able to reduce the APR while that hook is active (otherwise that enables a fairly obvious rug mechanic).
If you're confused by this, ask us directly!
As a borrower, you are able to adjust the capacity up or down to whatever amount you wish. Note that that the rebasing of market tokens can bring the total debt of a market above such a capacity. Setting the capacity to below the current debt prevents further deposits until such time as the total supply has been reduced via withdrawal requests. Interest accrues on the outstanding supply until such time as lenders reduce the supply through withdrawal requests that burn market tokens. The required reserves of a market remain unchanged regardless of capacity changes.
In the event that a borrower has finished utilising the funds for the purpose that the market was set up to facilitate, the borrower can terminate (close) a market at will.
This is a special case of reducing the APR (with the associated increased reserve rate that accompanies it). When a market is closed, sufficient assets must be repaid to increase the reserve ratio to 100%, after which interest ceases to accrue and no further parameter adjustment or borrowing is possible. The only thing possible to do in a closed market is for the lenders to file withdrawal requests and exit via claiming.
Note that the withdrawal cycle period is erased in terminated markets: lenders still have to file two distinct transactions (i.e. across separate blocks), but the withdrawal cycle period is not enforced in this instance.
For whatever reason, it may be the case that the Wildcat protocol itself no longer wishes to permit a given borrower to engage further with it. In this case, the address(es) of a borrower can be removed from the archcontroller by its owners. If this happens, the borrower can no longer deploy new hooks instances or markets.
However, they are still capable of interacting with existing markets as before - neither the protocol nor its operators can force these closed. This is because there are potentially master loan agreements surrounding market usage, and Wildcat having the power to unilaterally step in and sever them would make it a key participant in the arrangement.