-
Notifications
You must be signed in to change notification settings - Fork 221
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9419ef6
commit 7d8fcd7
Showing
1 changed file
with
79 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
--- | ||
sip: 390 | ||
title: Minimum Credit Patch - Perps V3 | ||
network: Base | ||
status: Draft | ||
type: Governance | ||
author: 'Sunny Vempati (@sunnyvempati), kaleb (@kaleb-keny)' | ||
created: 2024-06-05 | ||
--- | ||
|
||
<!--You can leave these HTML comments in your merged SIP and delete the visible duplicate text guides, they will not appear and may be helpful to refer to if you edit it again. This is the suggested template for new SIPs. Note that an SIP number will be assigned by an editor. When opening a pull request to submit your SIP, please use an abbreviated title in the filename, `sip-draft_title_abbrev.md`. The title should be 44 characters or less.--> | ||
|
||
## Simple Summary | ||
|
||
<!--"If you can't explain it simply, you don't understand it well enough." Simply describe the outcome the proposed changes intends to achieve. This should be non-technical and accessible to a casual community member.--> | ||
|
||
This sip proposes to incorporate into the minimum credit calculation the amount of `snxUSD` deposited into a given market. | ||
|
||
## Abstract | ||
|
||
<!--A short (~200 word) description of the proposed change, the abstract should clearly describe the proposed change. This is what *will* be done if the SIP is implemented, not *why* it should be done or *how* it will be done. If the SIP proposes deploying a new contract, write, "we propose to deploy a new contract that will do x".--> | ||
|
||
Some concepts covering this SIP: | ||
- Minimum credit represents the minimum amount of collateral that needs to cover a market that allows traders to withdraw their deposited margin, taking into account profits and losses incurred by traders. | ||
- Credit Capacity represents the value of the collateral delegated into a market by LP's. | ||
|
||
Currently, minimum credit is calculated by iterating on over active markets, getting the active open interest and multiplying that by a `lockedOiRatio`, this gives insight information on the expected credit that needs to be catered for by LP's. While credit capacity is calculated by incorporating user deposited margin as well as traders. Hence, this [PR](https://github.com/Synthetixio/synthetix-v3/pull/2144) fixes the calculation of minimum credit by requiring that traders' margin are covered by LP's. | ||
|
||
|
||
## Motivation | ||
|
||
<!--This is the problem statement. This is the *why* of the SIP. It should clearly explain *why* the current state of the protocol is inadequate. It is critical that you explain *why* the change is needed, if the SIP proposes changing how something is calculated, you must address *why* the current calculation is inaccurate or wrong. This is not the place to describe how the SIP will address the issue!--> | ||
|
||
The minimum credit calculation update ensures that markets are sufficiently covered by liquidity from LP's before allowing withdrawals / undelegation from a given market. This provides confidence to traders that markets are solvent and assurances on over-collateralization of a market. | ||
|
||
## Rationale | ||
|
||
<!--This is where you explain the reasoning behind how you propose to solve the problem. Why did you propose to implement the change in this way, what were the considerations and trade-offs. The rationale fleshes out what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work. The rationale may also provide evidence of consensus within the community, and should discuss important objections or concerns raised during discussion.--> | ||
|
||
The original [validation](https://github.com/Synthetixio/synthetix-v3/blob/cace699d1fb070042ca09a390c95548c31a5d025/protocol/synthetix/contracts/storage/Market.sol#L278) did not take into account that traders' margin are included credit capacity. This only applies to `snxUSD` while other spot synths are not included into `creditCapacity` when deposited by traders. | ||
|
||
|
||
## Technical Specification | ||
|
||
<!--The technical specification should outline the public API of the changes proposed. That is, changes to any of the interfaces Synthetix currently exposes or the creations of new ones.--> | ||
|
||
The fix ensures that the `snxUSD` deposited by traders as margin is incorporated into the minimum credit calculation as done in [PR-2144](https://github.com/Synthetixio/synthetix-v3/pull/2144). | ||
|
||
```solidity | ||
function minimumCredit( | ||
Data storage self | ||
) internal view returns (uint256 accumulatedMinimumCredit) { | ||
uint256 activeMarketsLength = self.activeMarkets.length(); | ||
for (uint256 i = 1; i <= activeMarketsLength; i++) { | ||
uint128 marketId = self.activeMarkets.valueAt(i).to128(); | ||
accumulatedMinimumCredit += PerpsMarket.requiredCredit(marketId); | ||
} | ||
// add the sUSD collateral value to the minimum credit since it's used as escrow | ||
accumulatedMinimumCredit += self.collateralAmounts[SNX_USD_MARKET_ID]; | ||
} | ||
``` | ||
|
||
### Test Cases | ||
|
||
<!--Test cases for an implementation are mandatory for SIPs but can be included with the implementation..--> | ||
|
||
Relevant tests will be developed during implementation. | ||
|
||
### Configurable Values (Via SCCP) | ||
|
||
<!--Please list all values configurable via SCCP under this implementation.--> | ||
|
||
N/A | ||
|
||
## Copyright | ||
|
||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). |