Terminology
It's dangerous to go alone - learn these.
Last updated
It's dangerous to go alone - learn these.
Last updated
Smart contract which doubles up as a registry and permission gate. are added or removed from the archcontroller by the operators of the protocol itself (granting/rescinding the ability to deploy and/or ), and the addresses of any factories, hooks instances or markets that get deployed through the protocol are stored here.
The interest rate that lenders receive on that they have deposited into a particular , in the absence of the being enforced.
To withdraw from a that has a non-zero and less than 100%, with the intent of repaying the assets (plus any accrued interest) to the market either when the required purpose of using the assets has concluded or as a response to .
Both:
The counterparty that wishes to make use of a credit facility through a Wildcat , and
The blockchain address that defines the parameters of a market and deploys the and market contracts that use them.
Parameter required of when creating a new .
The maxTotalSupply
field in the state.
The maximum amount of an asset that a borrower is looking to source via a market - the threshold for totalSupply
after which the market will stop accepting .
Can be exceeded by the market's totalSupply
due to interest accrual.
The sum of:
Arises via the passage of time through interest if the borrower borrows right up to their reserve ratio.
Both:
A term for the lenders' assets themselves once in a market.
May be associated with a TTL (Time-To-Live) configured by the borrower, after which the deposit credential expires and a new one must be acquired from a role provider in order to make any further deposits.
Assets can only be released to the lender in the event that a) they are no longer tagged as sanctioned by the Chainalysis oracle, or b) the borrower specifically overrides the sanction.
After this time has elapsed, the market converts into an 'open term' market where the above are permitted. Once a market has converted to open term, it cannot be moved back into a fixed term.
Default value is zero (immediately open term).
Associated with two distinct market configuration flags that allow a borrower to either prematurely close a market or bring the maturity/conversion time closer to the present.
Cannot be extended once a market is deployed.
Can be permanently disabled for a market at the borrower's discretion.
timeDelinquent
in the market state.
Once a market is cured of delinquency, begins counting seconds down to zero - the penalty APR continues to apply until the grace tracker value is below the grace period value.
Enforces the rolling nature of the grace period.
Corresponds to a specific market action, such as the onCloseMarket
hook which is called when closeMarket
is called on a market during termination.
Configured in the market parameters at market deployment.
Copied when borrowers deploy hook instances.
Both:
Permissioned: only lenders that have been obtained a credential authorising them to deposit (either through explicit whitelisting or another access provider via hooks) can interact.
Can only be redeemed by authorised lender addresses (not necessarily the same one that received the market tokens initially).
Name and symbol prefixes are customisable in market creation, prepending to the name and symbol of the underlying asset.
Defaults to zero, can be configured after launch by the borrower.
No part of the penalty APR is receivable by the Wildcat protocol itself (does not inflate the protocol APR if present).
It was observed that several lenders expressed concern about the loaded meaning of the word 'delinquent' (which is purely technical within the protocol itself).
As a result, 'Pending' is used on the frontend to emphasise that this state does not necessarily imply a failure on the part of the borrower: typically delinquency is fallen into as soon as a large withdrawal request is made, and remains until repayments are made.
Can be zero.
Example: market with base APR of 10% and protocol APR of 20% results in borrower paying 12% when penalty APR is not active.
Two variants: 'pull' providers which are contracts that can be queried by wallet address to determine suitability, or 'push' providers that explicitly tell the market which addresses are suitable.
Can be arbitrarily added and removed to a market after deployment by the borrower.
Three configurations options (default is Open):
Open: market tokens can be transferred anywhere at any time.
Can be any ERC-20 token (however, rebasing tokens break the underlying interest model).
Withdrawal cycles do not work on a rolling basis - at the end of one withdrawal cycle, the next cycle will not start until the next withdrawal request.
Intended to prevent a run on a given market (mass withdrawal requests) leading to slower lenders receiving nothing.
Removing from the that were requested for withdrawal by a .
Can only occur after a expires.
Note that retrieving your from a Wildcat market requires a and then a claim - it is a two transaction process with the conclusion of one withdrawal cycle in between.
The minimum amount of that the borrower is obligated to keep in the market in order to avoid .
The needed to meet the for the ,
The market's ,
The normalized value of the market's and withdrawals, and
The unclaimed .
A state wherein there are insufficient in the market to meet the market's .
Can also arise if a makes a that exceeds the market's available liquidity.
A market being delinquent for an extended period of time (as specified by the ) results in the being enforced in addition to the and any that may apply.
'Cured' by the borrower sufficient assets into the market as to reattain the required collateral obligation.
The act of sending as a to a for the purposes of being by the ,
The act of sending assets as a borrower to a market for the purposes of being by lenders,
Permission granted to a through a in order to into a .
The set of requirements for receiving a deposit credential from a given role provider are arbitrary, determined by the according to their needs.
Depositing into a market while holding a valid deposit credential (or receiving while in possession of one) marks lender as a .
An auxiliary smart contract that is deployed in the event that the detects that a address has been added to a sanctioned list such as the OFAC SDN: this check is performed through the .
Used to transfer the debt (for the ) and obligation to repay (for the ) away from the contract to avoid wider contamination through interaction. Interest ceases to accrue upon creation and transfer.
Any relating to an attempted claim by the affected lender as well as any market tokens tied to their remaining are automatically transferred to the escrow contract when blocked (either through an attempt to withdraw or via a call to a 'nuke from orbit' function found within the market).
A that could not be fully honoured by in the within a single .
Parameter configured by a when creating a new .
Determines the length of time after market deployment in which and reductions in will be rejected by the market.
Permission toggled by a when creating a new .
If enabled, permits the borrower to purchase directly from a , subverting the market by swapping the market tokens for an equivalent amount of sourced from the borrower.
Cannot be used if a market is or currently in a state.
If performed for the first time on a market, marks the borrower as a .
Immediately forces the market tokens into a on behalf of the borrower.
Note: if a market has both force buyback enabled and open , a borrower is capable of force rebuying market tokens from LP contracts that hold market tokens such as Uniswap or Curve pools. Despite there being a warranty in the (optional) template Master Loan Agreement related to this point, the potential for substantial damage exists here.
Parameter required of when creating a new .
Rolling period of time for which a market can be before the of the market activates.
Note that the grace period does not 'reset' to zero when delinquency is cured. See below for details.
Internal parameter associated with the .
Once a market becomes , begins counting seconds up from zero - when the value of the grace tracker exceeds the grace period, the activates.
A function on a which is executed when a particular action occurs on a .
Contract that defines the for a market.
Deployed by an approved borrower as an instance of a particular .
A base contract defining behaviour for a kind of approved by factory operators.
A state marked within the contracts for any that either into a market or received while holding a valid .
Any known lender is always capable of making a unless i) the market is in a or ii) the known lender is marked as sanctioned by the .
A counterparty that wishes to provide a credit facility through a Wildcat , and
The blockchain address associated with that counterparty which to a market for the purposes of being by the .
The amount of currently counting towards the 's .
Comprises the liquidity that can be made available for new .
Is equal to the total assets in the market minus the , , and accrued .
Smart contract that accepts , issuing in return.
Deployed by through the factory.
Holds assets in escrow pending either being by the borrower or by a .
ERC-20 token indicating a on the in a .
Issued to after a .
rebases after every non-static call to the market contract depending on the total current APR of the market.
Parameter required of when creating a new .
Determines the amount of below which any attempts by a to in a single transaction will be rejected.
The amount of not currently queued for .
Equal to the market's minus its and withdrawals.
Parameter required of when creating a new .
Additional interest rate (above and beyond the and any ) that is applied for as long as the value for a market is in excess of the specified .
Encourages borrower to responsibly monitor the of a market.
An alias for that is used on the frontend while a has insufficient .
A market that is pending/delinquent for longer than the specified grace period subsequently enters the Penalty state, where the applies.
A that has not yet (i.e. was created in the current ).
Another term for a .
Percentage of that accrues to the Wildcat protocol itself.
Parameter configured by the factory operator for each , applying to all deployed with an instance of said template.
Does not increase in the presence of an active (which only increases the APR accruing to ).
Amount of that must be made available for new withdrawals according to the configured .
Equal to the reserve ratio times the .
Parameter required of when creating a new .
Percentage of current that must be kept in the market (but still accrue interest).
Intended to provide a liquid buffer for to make against, partially 'collateralising' the credit facility through lenders' deposits.
Increases temporarily when a borrower reduces the of a (fixed-term increase).
A market which has insufficient assets in the market to meet the reserve ratio is said to be , with the potentially being enforced if the delinquency is not cured before the value exceeds that of the for that particular market.
A smart contract registered to an access for a which grants to would-be according to a specific set of requirements (i.e. lender has a Coinbase Verification, and/or lender is not marked as sanctioned by the Chainalysis oracle).
Deployed by the (either from a template or constructed themselves).
Note: the removal of all role providers from a hook instance for a market means that no more deposit credentials can be granted. However, all will always be able to make provided the market is not in a and they are not sanctioned.
Smart contract that ensures that addresses which interact with the protocol are not flagged by the for sanctions.
Can deploy escrow contracts to excise a flagged by the oracle from a wider .
Facilitates the deployment of .
Current amount of in a .
Tied 1:1 with the supply of (rate of growth APR dependent).
Can only be reduced by burning market tokens as part of a or .
are enforced against the supply of a market, not its .
Capacity can be reduced below current supply by a , but this only prevents the further deposit of assets until the supply is once again below capacity.
Parameter required of when creating a new .
Determines whether can be transferred from their holders to arbitrary wallets.
Restricted: market tokens can only be transferred to either or addresses holding a valid (unexpired) .
Disabled: market tokens can only be sent back to the market as part of a .
A sequestered pool of which are pending their by following a .
Assets are moved from market reserves to the unclaimed withdrawals pool by burning at a 1:1 ratio (reducing the of the market).
Assets within the unclaimed withdrawals pool do not accrue interest, but similarly cannot be by the - they are considered out of reach.
Parameter required of when creating a new .
The asset which the borrower is seeking to by deploying a market - for example DAI (Dai Stablecoin) or WETH (Wrapped Ether).
Parameter required of when creating a new .
Period of time that must elapse between the first of a 'wave' of withdrawals and in the being made available to .
In the event that the amount being claimed in the same cycle across all lenders is in excess of the reserves currently within a market, all requests within that cycle will be honoured pro rata depending on overall amount requested.
Can have a value of zero, in which case each withdrawal request is processed - and potentially added to the - as a standalone batch.
Internal data structure of a .
All that could not be fully honoured at the end of their are batched together, marked as and added to the withdrawal queue.
Tracks the order and amounts of .
FIFO (First-In-First-Out): when are returned to a market which has a non-zero withdrawal queue, assets are immediately routed to the and can subsequently be claimed by lenders with the oldest expired withdrawals first.
An instruction to a to transfer reserves within a market to the , to be at the end of a .
A withdrawal request made of a market with non-zero reserves will burn as many as possible 1:1 to fully honour the request.
Any amount requested - whether or not it is in excess of the market reserves - is marked as a , either to be fully honoured at the end of the cycle, or marked as and added to the , depending on the actions of the during the cycle.