Borrowers

What you need to know as a Wildcat borrower.

Launching A New Market

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, and then click New 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:

Underlying Asset

This is the asset that you wish to borrow, such as LUSD or WETH.

Master Loan Agreement Type

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.

If selected, this agreement is presented to lenders via the front-end to sign before they first deposit.

Market Type

Following the deprecation of Wildcat V1, the only type of market currently supported is the V2 market 'base' type. However, the functionality of a V2 market can be widely configured.

Each market is fundamentally open access to start (anyone can deposit, debt is freely transferable etc.), however there are a number of choices to be made which constrain access in certain ways depending on borrower preference. Examples are:

  • Minimum deposit amounts: 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 0.

  • Fixed term duration: how long after market launch before withdrawal requests can process? Default value is 0. Attached to this are two further sub-choices:

    • Early termination: do you want the ability to close the market before that fixed term elapses?

    • Early maturity: do you want the ability to bring the fixed term maturity closer to the present?

  • Token transferability restrictions: should the debt token issued by your Wildcat market be freely transferable to any recipient, restricted only to addresses that are marked as known lenders or hold a valid deposit credential, or further constrained to only move to/from the market itself? Default value is freely transferable.

  • Force buybacks: as a borrower, do you want the power to be able to forcefully repurchase debt (market tokens) held by a lender by directly exchanging market tokens from their wallet for an equivalent amount of the underlying asset from your wallet? Note that this power cannot be used with a market is delinquent or if it's currently in a fixed term state. Also note that this power grants you the ability to repurchase tokens from any address, including Uniswap liquidity pools if the token transferability was set as freely transferable. Default value is no.

  • Onboarding policy: what mechanism(s) do you want to use to enable lenders to engage with your market? There is no default value for this parameter. At V2 launch, the options available are:

    • an explicit address whitelist operated by the borrower, and

    • an open access role provider that checks addresses against Chainalysis for sanctions.

    We'll be rolling out more (such as Coinbase Verification/Binance Account Bound Token filters and various KYC requirements) in short order after V2 launch. If you have a more specific need, reach out to us, and we can work towards producing a template for you that we can subsequently add to the toolbox for everyone else going forward.

Market Token Name Prefix

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.

Market Token Symbol Prefix

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.

Market Capacity

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.

Reserve Ratio (%)

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 in the event that a protocol fee is active or when withdrawal requests are made. 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 rate, see below).

Base (Lender) APR (%)

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 rate to activate.

Wildcat V2 markets allow for this value to range between 0 - 100%. Note that this may not be the true APR that you pay - markets which utilise a protocol fee will add that rate 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%.

Penalty Rate (%)

The amount of additional APR that you agree to pay in the event that your market becomes delinquent (i.e. falls below the reserve ratio) and the delinquency is not resolved within the amount of time specified by the grace period, as observed by the grace tracker.

Wildcat V2 markets allow for this value to range between 0 - 100%. Note that a penalty rate of zero means that the borrower does not incur a penalty for ignoring delinquency until such time as they are marked as having defaulted (either as defined in a master loan agreement or as might be declared during legal proceedings after an extended period of non-repayment). 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.

Grace Period Length (Hours)

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!

Withdrawal Cycle Length (Hours)

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 - 8760 hours (365 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.


If the template Master Loan Agreement has been selected as part of the policy, the borrower is required to pre-sign a copy of the Master Loan Agreement with the relevant parameters added in. 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.

Provided that all of the above parameters are within range for the market type you are deploying, you will then be asked to submit a transaction which deploys both hook instances (where necessary) and market contracts, parameterised as you have directed.

Sourcing Deposits

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.

Borrowing From A Market

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.

Repaying A Market

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 Details page.

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.

Reducing APR

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 will drop 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!

Altering Capacity

As a borrower, you are able to adjust the capacity up to whatever amount you wish, or down to the market's current outstanding supply of market tokens, however it should be noted that rebasing of market tokens can bring their total supply above such a capacity. 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.

Forced Withdrawals

A new addition to Wildcat V2 is that a borrower has the optional ability (set on market deployment) to purchase market tokens directly from any account that holds them. If invoked, this exchanges a number of market tokens from said wallet for an equivalent amount of the underlying asset directly from the borrower address, and immediately invokes a withdrawal request for the market tokens to be claimed by the borrower. This feature cannot be used if a market is delinquent or in a fixed term: if people are already trying to withdraw, you cannot use this to queue-jump any preferred lenders - you must settle up with everyone asking for their assets back first.

This power is very wide-ranging, and in combination with an open token transferability configuration permits the borrower to repurchase tokens even from accounts where the result is disastrous, such as knocking the balance of assets out of sync in a Uniswap or Curve pool. More restrained token transferability options somewhat evade this, as it is much harder to mark smart contracts as known lenders, and addresses typically need to call a role provider itself to receive a deposit credential.

Sadly, we can't constrain the protocol code to insist that holders of market tokens cannot be smart contracts, both because several large parties make use of smart contract wallets via platforms such as Fireblocks, and we simultaneously encourage all parties involved to use smart contract wallets such as Safe multisigs.

Nonetheless, you may find that if you have both force buyback and open transferability in a market, no secondary markets for the debt arises due to the Sword of Damocles hanging over everyone: even if by mistake, a borrower could destroy backing for LP tokens or other such collateral purposes.

If a market is deployed with force buyback enabled, it can be permanently disabled by the borrower at any time: say a secondary market arises for the debt and the borrower wants to provide assurance. This functionality has been introduced to account for two particular scenarios:

  • A borrower may reduce the maximum capacity of a market, but find there are still a large number of deposits over and above the new capacity that refuse to withdraw. In this case, in order to reduce their future interest obligations, without this a borrower would likely be forced to close the market and redeploy, which is a gigantic hassle in terms of both deployment costs and logistics.

  • The fact that lenders have the ability to onboard themselves by self-generating deposit credentials through role providers: even though a lender may technically meet the requirements laid down, a borrower may decide that they are not a counterparty they wish to be exposed to (say, Three Arrows Capital decides they want to lend to someone).

Terminating A Market

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, but if the live market previously had a withdrawal cycle of a week, this duration is not enforced.

Archcontroller Removal

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 likely to be 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.

Last updated