curvance 4.1.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -3
- package/dist/classes/CToken.d.ts +136 -4
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +91 -43
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +5 -5
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/Market.d.ts +6 -2
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +9 -5
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/PositionManager.d.ts.map +1 -1
- package/dist/classes/PositionManager.js +10 -1
- package/dist/classes/PositionManager.js.map +1 -1
- package/dist/helpers.d.ts +84 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +94 -0
- package/dist/helpers.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ setupChain(
|
|
|
61
61
|
|
|
62
62
|
```ts
|
|
63
63
|
for (const market of markets) {
|
|
64
|
-
console.log(`${market.name} |
|
|
64
|
+
console.log(`${market.name} | deposits: ${market.totalDeposits} | debt: ${market.totalDebt}`);
|
|
65
65
|
for (const token of market.tokens) {
|
|
66
66
|
console.log(` ${token.symbol} | price: ${token.getPrice()} | apy: ${token.getApy(true)}%`);
|
|
67
67
|
}
|
|
@@ -90,7 +90,7 @@ for (const market of markets) {
|
|
|
90
90
|
```ts
|
|
91
91
|
market.name // market name
|
|
92
92
|
market.address // market contract address
|
|
93
|
-
market.
|
|
93
|
+
market.totalDeposits // total market deposits (USD, Decimal)
|
|
94
94
|
market.totalDebt // total outstanding debt (USD, Decimal)
|
|
95
95
|
market.totalCollateral // total posted collateral (USD, Decimal)
|
|
96
96
|
market.cooldownLength // hold period between actions (20 min)
|
|
@@ -182,7 +182,7 @@ token.getUserDebt(inUSD) // outstanding debt (borrow tokens)
|
|
|
182
182
|
### Market totals & caps
|
|
183
183
|
|
|
184
184
|
```ts
|
|
185
|
-
token.
|
|
185
|
+
token.getDeposits(inUSD) // underlying assets held (USD or bigint)
|
|
186
186
|
token.getTotalCollateral(inUSD)
|
|
187
187
|
token.getCollateralCap(inUSD) // remaining collateral capacity
|
|
188
188
|
token.getDebtCap(inUSD) // remaining debt capacity
|
|
@@ -408,6 +408,29 @@ leverage.checkLeverageAmountBelowMinimum(input) // $10.10 minimum borrow
|
|
|
408
408
|
leverage.checkBorrowExceedsLiquidity(borrowAmount, availableLiquidity)
|
|
409
409
|
```
|
|
410
410
|
|
|
411
|
+
### Contract-level slippage amplification
|
|
412
|
+
|
|
413
|
+
```ts
|
|
414
|
+
import { amplifyContractSlippage, toContractSwapSlippage } from "curvance"
|
|
415
|
+
|
|
416
|
+
// Used internally by CToken.leverageUp / leverageDown / depositAndLeverage to
|
|
417
|
+
// expand the contract-level slippage budget for the equity-fraction amplification
|
|
418
|
+
// that on-chain `checkSlippage` applies. Each deterministic per-swap loss
|
|
419
|
+
// (CURVANCE_FEE_BPS, full-deleverage overshoot) gets amplified by (L-1) in
|
|
420
|
+
// (L-1)-terms, so contractSlippage must absorb it without dipping into the
|
|
421
|
+
// user's raw `slippage` budget (reserved for variable DEX impact + drift).
|
|
422
|
+
amplifyContractSlippage(baseSlippageBps, leverageDelta, bpsToAmplify)
|
|
423
|
+
|
|
424
|
+
// Used by DEX aggregator adapters (KyberSwap etc.) in `quoteAction` to
|
|
425
|
+
// compute the WAD-BPS slippage tolerance for the `Swap.slippage` struct
|
|
426
|
+
// field consumed by on-chain `_swapSafe`. When the aggregator pre-deducts
|
|
427
|
+
// a currency_in fee, the expansion absorbs that fee so `_swapSafe` doesn't
|
|
428
|
+
// double-count it as swap slippage. Adapters whose fee model does NOT
|
|
429
|
+
// pre-deduct (e.g., out-of-band referrer paid from output) should call
|
|
430
|
+
// with `feeBps` omitted / 0n so no expansion applies.
|
|
431
|
+
toContractSwapSlippage(userSlippageBps, feeBps?)
|
|
432
|
+
```
|
|
433
|
+
|
|
411
434
|
### Borrow math
|
|
412
435
|
|
|
413
436
|
```ts
|
|
@@ -621,6 +644,46 @@ NATIVE_ADDRESS // canonical native token address
|
|
|
621
644
|
DEFAULT_SLIPPAGE_BPS // 100n (1%)
|
|
622
645
|
```
|
|
623
646
|
|
|
647
|
+
### Leverage tuning (`LEVERAGE`)
|
|
648
|
+
|
|
649
|
+
Exposed tuning block used by leverage preview / mutation paths. Values are considered tunable across releases — SDK consumers pinning against specific values opt into the coupling.
|
|
650
|
+
|
|
651
|
+
```ts
|
|
652
|
+
import { LEVERAGE } from 'curvance';
|
|
653
|
+
|
|
654
|
+
LEVERAGE.MAX_LEVERAGE_FACTOR // Decimal(0.98)
|
|
655
|
+
// Cap applied to the theoretical max leverage span. Reserves ~2% of the
|
|
656
|
+
// equity-fraction slippage budget for deterministic loss channels
|
|
657
|
+
// (CURVANCE_FEE_BPS, pool-fee variance, Redstone drift, share rounding)
|
|
658
|
+
// that would otherwise push post-op LTV above collRatio at the boundary.
|
|
659
|
+
|
|
660
|
+
LEVERAGE.LEVERAGE_UP_BUFFER_BPS // 10n
|
|
661
|
+
// Flat BPS buffer added to leverage-up slippage for share-rounding + fresh
|
|
662
|
+
// Redstone price drift between snapshot RPC and tx broadcast. NOT amplified
|
|
663
|
+
// by (L-1); the contract's equity-fraction denominator handles amplification.
|
|
664
|
+
|
|
665
|
+
LEVERAGE.DELEVERAGE_OVERHEAD_BPS // 20n
|
|
666
|
+
// BPS overhead added to full-deleverage swap sizing to absorb DEX impact
|
|
667
|
+
// and oracle drift without leaving dust debt. The contract returns any
|
|
668
|
+
// excess debt token to the user, so economic loss is zero — but
|
|
669
|
+
// `checkSlippage` treats the intentional overshoot as equity loss and
|
|
670
|
+
// amplifies it by (L-1), which the contract-slippage expansion compensates.
|
|
671
|
+
|
|
672
|
+
LEVERAGE.SHARES_BUFFER_BPS // 2n
|
|
673
|
+
// Downward BPS buffer on `virtualConvertToShares` and the inner
|
|
674
|
+
// `previewDeposit` step of `getVaultExpectedShares`. Covers exchange-rate
|
|
675
|
+
// drift from interest accrual since cache load so actual mint satisfies
|
|
676
|
+
// `shares >= expectedShares` at tx inclusion.
|
|
677
|
+
|
|
678
|
+
LEVERAGE.LEVERAGE_UP_VAULT_DRIFT_BPS // 30n
|
|
679
|
+
// Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
|
|
680
|
+
// leverage-up paths. Absorbs drift between the collateral vault's
|
|
681
|
+
// fundamental mint rate at tx time and the stored oracle price that
|
|
682
|
+
// `marketManager.statusOf` uses inside `checkSlippage`. Mirrors the
|
|
683
|
+
// `(L-1) × feeBps` amplification the simple branch uses for DEX-fee
|
|
684
|
+
// absorption, with a different K since vault paths have no DEX leg.
|
|
685
|
+
```
|
|
686
|
+
|
|
624
687
|
## ❯ Dependencies
|
|
625
688
|
|
|
626
689
|
| Package | Purpose |
|
package/dist/classes/CToken.d.ts
CHANGED
|
@@ -11,6 +11,120 @@ import { PositionManager, PositionManagerTypes } from "./PositionManager";
|
|
|
11
11
|
import { BorrowableCToken } from "./BorrowableCToken";
|
|
12
12
|
import { NativeToken } from "./NativeToken";
|
|
13
13
|
import { ERC4626 } from "./ERC4626";
|
|
14
|
+
/**
|
|
15
|
+
* Leverage operation buffers — centralized for tuning.
|
|
16
|
+
* Calibrated for fresh-state operation via getLeverageSnapshot under
|
|
17
|
+
* Curvance's permanent single-oracle architecture.
|
|
18
|
+
*
|
|
19
|
+
* Single-oracle architecture (permanent design)
|
|
20
|
+
* ---------------------------------------------
|
|
21
|
+
* Curvance uses single-adaptor oracle configs only (Redstone Core/Classic
|
|
22
|
+
* via BaseOracleAdaptor, which ignores the getLower flag — see line 78 of
|
|
23
|
+
* BaseOracleAdaptor.sol). Dual-feed mode was deprecated in favor of the
|
|
24
|
+
* price-guard system and orderflow MEV tech, and is not coming back.
|
|
25
|
+
* This means MarketManager._statusOf returns symmetric prices for
|
|
26
|
+
* collateral (queries with getLower=true) and debt (getLower=false), so
|
|
27
|
+
* there is no oracle bound asymmetry contributing to checkSlippage forced
|
|
28
|
+
* loss. Buffers below are sized accordingly — do not re-introduce
|
|
29
|
+
* (L-1)-scaled buffers to "future-proof" against dual-feed.
|
|
30
|
+
*
|
|
31
|
+
* MEV / slippage protection model
|
|
32
|
+
* -------------------------------
|
|
33
|
+
* The on-chain BasePositionManager.checkSlippage modifier is per its own
|
|
34
|
+
* docstring "primarily a sanity check rather than a security guarantee."
|
|
35
|
+
* Real MEV protection comes from SwapperLib._swapSafe, which oracle-prices
|
|
36
|
+
* the swap input and output and reverts if realized slippage exceeds the
|
|
37
|
+
* Swap.slippage parameter we pass.
|
|
38
|
+
*
|
|
39
|
+
* Because _swapSafe measures value loss against the FULL input (pre-fee),
|
|
40
|
+
* the deterministic KyberSwap fee would consume feeBps of the user's MEV
|
|
41
|
+
* tolerance if not compensated. `KyberSwap.quoteAction` (the DEX adapter)
|
|
42
|
+
* expands action.slippage by feeBps internally so the fee is absorbed and
|
|
43
|
+
* the user's chosen tolerance is preserved for actual MEV/routing variance.
|
|
44
|
+
* Callers pass raw user slippage — the adapter owns the expansion.
|
|
45
|
+
*
|
|
46
|
+
* Asymmetry between leverage up and deleverage
|
|
47
|
+
* --------------------------------------------
|
|
48
|
+
* Leverage UP: under single-oracle, the contract sees zero forced loss
|
|
49
|
+
* for a perfect swap. The only real sources of difference between
|
|
50
|
+
* snapshot-time prices and execution-time prices are: (a) wei-level share
|
|
51
|
+
* rounding, (b) Redstone update drift between the snapshot RPC and the
|
|
52
|
+
* tx broadcast block. Both are small constants in absolute terms, NOT
|
|
53
|
+
* leverage-scaled. A small flat buffer suffices.
|
|
54
|
+
*
|
|
55
|
+
* DELEVERAGE (full): forced loss comes from intentional swap overshoot
|
|
56
|
+
* (DELEVERAGE_OVERHEAD_BPS) which prevents dust debt by oversizing the
|
|
57
|
+
* collateral→debt swap. This is a real bps-level loss in absolute terms
|
|
58
|
+
* which becomes (L-1) × bps in equity-fraction terms — so the deleverage
|
|
59
|
+
* contract-slippage expansion DOES scale with leverage. Note: the contract
|
|
60
|
+
* returns excess debt token to the user's wallet (BasePositionManager
|
|
61
|
+
* onRedeem lines 482-493), so the economic loss from the overshoot is
|
|
62
|
+
* zero — only the contract's naive equity-loss check sees it as loss.
|
|
63
|
+
*/
|
|
64
|
+
export declare const LEVERAGE: {
|
|
65
|
+
/** Max leverage cap: fraction of theoretical max the user can select.
|
|
66
|
+
* Prevents boundary singularity at exact max leverage — the contract's
|
|
67
|
+
* post-op `canBorrow` check re-evaluates LTV against fresh on-chain
|
|
68
|
+
* state, and several loss channels can tick final LTV above collRatio
|
|
69
|
+
* at the boundary:
|
|
70
|
+
* - Pool fees (variable 1bp–1% across pools; aggregator route choice
|
|
71
|
+
* is not knowable at cap-compute time, can differ per-trade even
|
|
72
|
+
* for the same market)
|
|
73
|
+
* - `CURVANCE_FEE_BPS` (deterministic, amplified by (L-1); at L=10
|
|
74
|
+
* eats ~36bps of equity-fraction)
|
|
75
|
+
* - Oracle drift between preview snapshot and Redstone payload at
|
|
76
|
+
* tx inclusion
|
|
77
|
+
* - Share rounding (wei-level)
|
|
78
|
+
*
|
|
79
|
+
* History: 0.99 → 0.995 when caching improved precision (pre-fee era).
|
|
80
|
+
* 0.995 → 0.98 when `CURVANCE_FEE_BPS = 4` landed and users on high-
|
|
81
|
+
* collRatio markets (shMON r=0.9 → 10x theoretical) hit
|
|
82
|
+
* `InsufficientCollateral` reverts at the boundary.
|
|
83
|
+
*
|
|
84
|
+
* Independent of `LEVERAGE_UP_BUFFER_BPS` and `DELEVERAGE_OVERHEAD_BPS`
|
|
85
|
+
* below — those protect in-op slippage at `_swapSafe`; this protects
|
|
86
|
+
* post-op position health at `canBorrow`. */
|
|
87
|
+
readonly MAX_LEVERAGE_FACTOR: Decimal;
|
|
88
|
+
/** Flat BPS buffer added to leverage-up DEX/swapSafe slippage tolerance.
|
|
89
|
+
* Under single-oracle, the only forced loss at the swap level comes from
|
|
90
|
+
* wei-level share rounding plus possible Redstone price drift between
|
|
91
|
+
* snapshot RPC and tx broadcast block. Both are small constants.
|
|
92
|
+
*
|
|
93
|
+
* Fee handling: KyberSwap.quoteAction expands action.slippage by feeBps
|
|
94
|
+
* internally so _swapSafe doesn't treat the fee as MEV. Each call site
|
|
95
|
+
* still computes contractSlippage (expanded by (L-1) × feeBps) so
|
|
96
|
+
* checkSlippage doesn't fire from equity-fraction amplification. This
|
|
97
|
+
* buffer covers rounding/drift only. */
|
|
98
|
+
readonly LEVERAGE_UP_BUFFER_BPS: 10n;
|
|
99
|
+
/** BPS overhead on full deleverage swap sizing — absolute terms.
|
|
100
|
+
* Oversizes the collateral→debt swap so DEX impact + drift doesn't
|
|
101
|
+
* underdeliver and leave dust debt. The contract returns any excess
|
|
102
|
+
* debt token to the user, so economic loss is zero — but the contract's
|
|
103
|
+
* checkSlippage modifier sees the overshoot as equity loss and amplifies
|
|
104
|
+
* it by (L-1)x. The deleverage contract slippage expansion compensates
|
|
105
|
+
* for that amplification (see leverageDown). Bump when aggregator fees
|
|
106
|
+
* are enabled to keep dust prevention reliable. */
|
|
107
|
+
readonly DELEVERAGE_OVERHEAD_BPS: 20n;
|
|
108
|
+
/** BPS buffer on virtualConvertToShares for leverage + collateral cap.
|
|
109
|
+
* Covers exchange rate drift from interest accrual since cache load. */
|
|
110
|
+
readonly SHARES_BUFFER_BPS: 2n;
|
|
111
|
+
/** Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
|
|
112
|
+
* leverage-up paths. Absorbs the drift between the collateral vault's
|
|
113
|
+
* fundamental mint rate at tx time and the stored oracle price that
|
|
114
|
+
* `marketManager.statusOf` uses inside `checkSlippage`. The vault-token
|
|
115
|
+
* oracle publishes discretely; the vault's exchange rate accrues
|
|
116
|
+
* continuously — so new shares are minted at `r_current` but valued at
|
|
117
|
+
* `r_oracle`, leaving a (L-1)-amplified equity-fraction gap that the
|
|
118
|
+
* simple path doesn't see in practice (vault-token markets default to
|
|
119
|
+
* the vault/native-vault PM and `leverageDown` drift goes the other
|
|
120
|
+
* direction as a gain). Empirically calibrated against the ~3% user
|
|
121
|
+
* slippage failure threshold on shMON/WMON native-vault leverage-up;
|
|
122
|
+
* refine via fork testing if drift distribution turns out wider. The
|
|
123
|
+
* constant is NOT "feed divergence" — shMON oracle IS derived from
|
|
124
|
+
* p_MON × r_shMON off-chain; the gap is between publish-time snapshot
|
|
125
|
+
* and tx-time state, not between two independent feeds. */
|
|
126
|
+
readonly LEVERAGE_UP_VAULT_DRIFT_BPS: 30n;
|
|
127
|
+
};
|
|
14
128
|
export interface AccountSnapshot {
|
|
15
129
|
asset: address;
|
|
16
130
|
decimals: bigint;
|
|
@@ -219,10 +333,17 @@ export declare class CToken extends Calldata<ICToken> {
|
|
|
219
333
|
getSupplyRate(): Percentage;
|
|
220
334
|
getSupplyRate(asPercentage: false): bigint;
|
|
221
335
|
getSupplyRate(asPercentage: true): Percentage;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
336
|
+
/** @returns Deposits (underlying assets held by the cToken), in USD or raw
|
|
337
|
+
* asset bigint. Renamed from `getTvl` — the underlying field must be
|
|
338
|
+
* `totalAssets`, not `totalSupply`, or the displayed deposits are
|
|
339
|
+
* understated by the exchange-rate drift factor whenever interest has
|
|
340
|
+
* accrued. That drift also broke the `liquidity ≤ deposits` invariant
|
|
341
|
+
* on live markets (e.g. loAZND/AUSD showed $29.97K liquidity vs $29.21K
|
|
342
|
+
* deposits pre-fix — impossible for a solvent ERC4626). */
|
|
343
|
+
getDeposits(inUSD: true): USD;
|
|
344
|
+
getDeposits(inUSD: false): bigint;
|
|
345
|
+
fetchDeposits(inUSD: true): Promise<USD>;
|
|
346
|
+
fetchDeposits(inUSD: false): Promise<bigint>;
|
|
226
347
|
getTotalCollateral(inUSD: true): USD;
|
|
227
348
|
getTotalCollateral(inUSD: false): bigint;
|
|
228
349
|
fetchTotalCollateral(inUSD: true): Promise<USD>;
|
|
@@ -310,6 +431,17 @@ export declare class CToken extends Calldata<ICToken> {
|
|
|
310
431
|
* equity-fraction denominator amplifies it by (L-1)x automatically.
|
|
311
432
|
* The user's swap-level slippage (passed separately to _swapSafe) is
|
|
312
433
|
* unaffected — that's the layer that bounds MEV extraction.
|
|
434
|
+
*
|
|
435
|
+
* Applied uniformly to simple AND vault/native-vault leverage-up paths.
|
|
436
|
+
* Simple path uses the buffer for share-rounding + Redstone drift as
|
|
437
|
+
* described above. Vault paths inherit the flat 10 bps through the
|
|
438
|
+
* shared `slippage` variable before the per-branch
|
|
439
|
+
* `amplifyContractSlippage(..., LEVERAGE_UP_VAULT_DRIFT_BPS)` expansion;
|
|
440
|
+
* the flat addition is not amplified (base term stays flat) and covers
|
|
441
|
+
* the same residual class (share-rounding, oracle drift) on vault paths
|
|
442
|
+
* too. Removing the buffer for vault would save a trivial amount of
|
|
443
|
+
* user slippage budget at the cost of a false-negative risk on the
|
|
444
|
+
* residuals — we keep it for symmetry.
|
|
313
445
|
*/
|
|
314
446
|
private _leverageUpSlippage;
|
|
315
447
|
previewLeverageUp(newLeverage: Decimal, borrow: BorrowableCToken, depositAmount?: bigint): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CToken.d.ts","sourceRoot":"","sources":["../../src/classes/CToken.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CToken.d.ts","sourceRoot":"","sources":["../../src/classes/CToken.ts"],"names":[],"mappings":"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"}
|
package/dist/classes/CToken.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CToken = void 0;
|
|
6
|
+
exports.CToken = exports.LEVERAGE = void 0;
|
|
7
7
|
const helpers_1 = require("../helpers");
|
|
8
8
|
const ProtocolReader_1 = require("./ProtocolReader");
|
|
9
9
|
const ERC20_1 = require("./ERC20");
|
|
@@ -69,12 +69,30 @@ const EXCLUDED_ZAP_SYMBOLS = new Set([
|
|
|
69
69
|
* onRedeem lines 482-493), so the economic loss from the overshoot is
|
|
70
70
|
* zero — only the contract's naive equity-loss check sees it as loss.
|
|
71
71
|
*/
|
|
72
|
-
|
|
72
|
+
exports.LEVERAGE = {
|
|
73
73
|
/** Max leverage cap: fraction of theoretical max the user can select.
|
|
74
|
-
* Prevents boundary singularity at exact max leverage
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
|
|
74
|
+
* Prevents boundary singularity at exact max leverage — the contract's
|
|
75
|
+
* post-op `canBorrow` check re-evaluates LTV against fresh on-chain
|
|
76
|
+
* state, and several loss channels can tick final LTV above collRatio
|
|
77
|
+
* at the boundary:
|
|
78
|
+
* - Pool fees (variable 1bp–1% across pools; aggregator route choice
|
|
79
|
+
* is not knowable at cap-compute time, can differ per-trade even
|
|
80
|
+
* for the same market)
|
|
81
|
+
* - `CURVANCE_FEE_BPS` (deterministic, amplified by (L-1); at L=10
|
|
82
|
+
* eats ~36bps of equity-fraction)
|
|
83
|
+
* - Oracle drift between preview snapshot and Redstone payload at
|
|
84
|
+
* tx inclusion
|
|
85
|
+
* - Share rounding (wei-level)
|
|
86
|
+
*
|
|
87
|
+
* History: 0.99 → 0.995 when caching improved precision (pre-fee era).
|
|
88
|
+
* 0.995 → 0.98 when `CURVANCE_FEE_BPS = 4` landed and users on high-
|
|
89
|
+
* collRatio markets (shMON r=0.9 → 10x theoretical) hit
|
|
90
|
+
* `InsufficientCollateral` reverts at the boundary.
|
|
91
|
+
*
|
|
92
|
+
* Independent of `LEVERAGE_UP_BUFFER_BPS` and `DELEVERAGE_OVERHEAD_BPS`
|
|
93
|
+
* below — those protect in-op slippage at `_swapSafe`; this protects
|
|
94
|
+
* post-op position health at `canBorrow`. */
|
|
95
|
+
MAX_LEVERAGE_FACTOR: (0, decimal_js_1.default)(0.98),
|
|
78
96
|
/** Flat BPS buffer added to leverage-up DEX/swapSafe slippage tolerance.
|
|
79
97
|
* Under single-oracle, the only forced loss at the swap level comes from
|
|
80
98
|
* wei-level share rounding plus possible Redstone price drift between
|
|
@@ -98,6 +116,22 @@ const LEVERAGE = {
|
|
|
98
116
|
/** BPS buffer on virtualConvertToShares for leverage + collateral cap.
|
|
99
117
|
* Covers exchange rate drift from interest accrual since cache load. */
|
|
100
118
|
SHARES_BUFFER_BPS: 2n,
|
|
119
|
+
/** Per-leverage-unit BPS buffer for `checkSlippage` on vault + native-vault
|
|
120
|
+
* leverage-up paths. Absorbs the drift between the collateral vault's
|
|
121
|
+
* fundamental mint rate at tx time and the stored oracle price that
|
|
122
|
+
* `marketManager.statusOf` uses inside `checkSlippage`. The vault-token
|
|
123
|
+
* oracle publishes discretely; the vault's exchange rate accrues
|
|
124
|
+
* continuously — so new shares are minted at `r_current` but valued at
|
|
125
|
+
* `r_oracle`, leaving a (L-1)-amplified equity-fraction gap that the
|
|
126
|
+
* simple path doesn't see in practice (vault-token markets default to
|
|
127
|
+
* the vault/native-vault PM and `leverageDown` drift goes the other
|
|
128
|
+
* direction as a gain). Empirically calibrated against the ~3% user
|
|
129
|
+
* slippage failure threshold on shMON/WMON native-vault leverage-up;
|
|
130
|
+
* refine via fork testing if drift distribution turns out wider. The
|
|
131
|
+
* constant is NOT "feed divergence" — shMON oracle IS derived from
|
|
132
|
+
* p_MON × r_shMON off-chain; the gap is between publish-time snapshot
|
|
133
|
+
* and tx-time state, not between two independent feeds. */
|
|
134
|
+
LEVERAGE_UP_VAULT_DRIFT_BPS: 30n,
|
|
101
135
|
};
|
|
102
136
|
class CToken extends Calldata_1.Calldata {
|
|
103
137
|
provider;
|
|
@@ -168,11 +202,12 @@ class CToken extends Calldata_1.Calldata {
|
|
|
168
202
|
get exchangeRate() { return this.cache.exchangeRate; }
|
|
169
203
|
get canZap() { return this.zapTypes.length > 0; }
|
|
170
204
|
get maxLeverage() {
|
|
171
|
-
// Cap max leverage
|
|
172
|
-
// to
|
|
205
|
+
// Cap max leverage below theoretical max by applying MAX_LEVERAGE_FACTOR
|
|
206
|
+
// to the (theoretical - 1) span. See LEVERAGE.MAX_LEVERAGE_FACTOR docs
|
|
207
|
+
// for the loss channels this buffer absorbs and the tuning history.
|
|
173
208
|
const theoretical = (0, decimal_js_1.default)(this.cache.maxLeverage).div(helpers_1.BPS);
|
|
174
209
|
const factor = theoretical.sub(1);
|
|
175
|
-
return (0, decimal_js_1.default)(1).add(factor.mul(LEVERAGE.MAX_LEVERAGE_FACTOR));
|
|
210
|
+
return (0, decimal_js_1.default)(1).add(factor.mul(exports.LEVERAGE.MAX_LEVERAGE_FACTOR));
|
|
176
211
|
}
|
|
177
212
|
get canLeverage() { return this.leverageTypes.length > 0; }
|
|
178
213
|
get totalAssets() { return this.cache.totalAssets; }
|
|
@@ -330,14 +365,14 @@ class CToken extends Calldata_1.Calldata {
|
|
|
330
365
|
// TODO: add underlying yield rate
|
|
331
366
|
return asPercentage ? (0, decimal_js_1.default)(this.cache.supplyRate).div(helpers_1.WAD).mul(helpers_1.SECONDS_PER_YEAR) : this.cache.supplyRate;
|
|
332
367
|
}
|
|
333
|
-
|
|
334
|
-
const
|
|
335
|
-
return inUSD ? this.convertTokensToUsd(
|
|
368
|
+
getDeposits(inUSD = true) {
|
|
369
|
+
const deposits = this.cache.totalAssets;
|
|
370
|
+
return inUSD ? this.convertTokensToUsd(deposits) : deposits;
|
|
336
371
|
}
|
|
337
|
-
async
|
|
338
|
-
const
|
|
339
|
-
this.cache.
|
|
340
|
-
return inUSD ? this.
|
|
372
|
+
async fetchDeposits(inUSD = true) {
|
|
373
|
+
const deposits = await this.fetchTotalAssets();
|
|
374
|
+
this.cache.totalAssets = deposits;
|
|
375
|
+
return inUSD ? this.getDeposits(true) : this.getDeposits(false);
|
|
341
376
|
}
|
|
342
377
|
getTotalCollateral(inUSD = true) {
|
|
343
378
|
const totalCollateral = this.cache.collateral;
|
|
@@ -752,11 +787,22 @@ class CToken extends Calldata_1.Calldata {
|
|
|
752
787
|
* equity-fraction denominator amplifies it by (L-1)x automatically.
|
|
753
788
|
* The user's swap-level slippage (passed separately to _swapSafe) is
|
|
754
789
|
* unaffected — that's the layer that bounds MEV extraction.
|
|
790
|
+
*
|
|
791
|
+
* Applied uniformly to simple AND vault/native-vault leverage-up paths.
|
|
792
|
+
* Simple path uses the buffer for share-rounding + Redstone drift as
|
|
793
|
+
* described above. Vault paths inherit the flat 10 bps through the
|
|
794
|
+
* shared `slippage` variable before the per-branch
|
|
795
|
+
* `amplifyContractSlippage(..., LEVERAGE_UP_VAULT_DRIFT_BPS)` expansion;
|
|
796
|
+
* the flat addition is not amplified (base term stays flat) and covers
|
|
797
|
+
* the same residual class (share-rounding, oracle drift) on vault paths
|
|
798
|
+
* too. Removing the buffer for vault would save a trivial amount of
|
|
799
|
+
* user slippage budget at the cost of a false-negative risk on the
|
|
800
|
+
* residuals — we keep it for symmetry.
|
|
755
801
|
*/
|
|
756
802
|
_leverageUpSlippage(slippage, leverage) {
|
|
757
803
|
if (leverage.lte(1))
|
|
758
804
|
return slippage;
|
|
759
|
-
return slippage + LEVERAGE.LEVERAGE_UP_BUFFER_BPS;
|
|
805
|
+
return slippage + exports.LEVERAGE.LEVERAGE_UP_BUFFER_BPS;
|
|
760
806
|
}
|
|
761
807
|
previewLeverageUp(newLeverage, borrow, depositAmount) {
|
|
762
808
|
const currentLeverage = this.getLeverage() ?? (0, decimal_js_1.default)(0);
|
|
@@ -876,17 +922,13 @@ class CToken extends Calldata_1.Calldata {
|
|
|
876
922
|
// The fee also reduces swap output, which checkSlippage sees
|
|
877
923
|
// as equity loss amplified by (L-1) — same pattern as
|
|
878
924
|
// deleverage. Expand the contract-level tolerance to absorb it.
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
.mul(Number(feeBps))
|
|
882
|
-
.ceil()
|
|
883
|
-
.toFixed(0))
|
|
884
|
-
: slippage;
|
|
925
|
+
// See `amplifyContractSlippage` in helpers.ts for rationale.
|
|
926
|
+
const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, newLeverage.sub(1), feeBps);
|
|
885
927
|
calldata = manager.getLeverageCalldata({
|
|
886
928
|
borrowableCToken: borrow.address,
|
|
887
929
|
borrowAssets: FormatConverter_1.default.decimalToBigInt(borrowAmount, borrow.asset.decimals),
|
|
888
930
|
cToken: this.address,
|
|
889
|
-
expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), LEVERAGE.SHARES_BUFFER_BPS),
|
|
931
|
+
expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), exports.LEVERAGE.SHARES_BUFFER_BPS),
|
|
890
932
|
swapAction: action,
|
|
891
933
|
auxData: "0x",
|
|
892
934
|
}, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
|
|
@@ -894,6 +936,12 @@ class CToken extends Calldata_1.Calldata {
|
|
|
894
936
|
}
|
|
895
937
|
case 'native-vault':
|
|
896
938
|
case 'vault': {
|
|
939
|
+
// No DEX leg, so no fee-driven forced loss to absorb.
|
|
940
|
+
// The `(L-1)×K` expansion here covers the vault-token
|
|
941
|
+
// collateral drift between the vault's fundamental mint
|
|
942
|
+
// rate at tx time and the stored oracle price that
|
|
943
|
+
// `checkSlippage` reads. See LEVERAGE_UP_VAULT_DRIFT_BPS.
|
|
944
|
+
const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, newLeverage.sub(1), exports.LEVERAGE.LEVERAGE_UP_VAULT_DRIFT_BPS);
|
|
897
945
|
calldata = manager.getLeverageCalldata({
|
|
898
946
|
borrowableCToken: borrow.address,
|
|
899
947
|
borrowAssets: FormatConverter_1.default.decimalToBigInt(borrowAmount, borrow.asset.decimals),
|
|
@@ -901,7 +949,7 @@ class CToken extends Calldata_1.Calldata {
|
|
|
901
949
|
expectedShares: await PositionManager_1.PositionManager.getVaultExpectedShares(this, borrow, borrowAmount),
|
|
902
950
|
swapAction: PositionManager_1.PositionManager.emptySwapAction(),
|
|
903
951
|
auxData: "0x",
|
|
904
|
-
}, FormatConverter_1.default.bpsToBpsWad(
|
|
952
|
+
}, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
|
|
905
953
|
break;
|
|
906
954
|
}
|
|
907
955
|
default:
|
|
@@ -975,7 +1023,7 @@ class CToken extends Calldata_1.Calldata {
|
|
|
975
1023
|
// Total overhead = base overhead (DEX impact + drift) + fee bps.
|
|
976
1024
|
// Additive approximation is accurate to sub-bp at typical
|
|
977
1025
|
// fee+overhead magnitudes (< 100 bps combined).
|
|
978
|
-
const overheadBps = LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps;
|
|
1026
|
+
const overheadBps = exports.LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps;
|
|
979
1027
|
swapCollateral = debtInCollateral * (10000n + overheadBps) / 10000n;
|
|
980
1028
|
const maxCollateral = this.virtualConvertToAssets(this.cache.userCollateral);
|
|
981
1029
|
if (swapCollateral > maxCollateral) {
|
|
@@ -1003,18 +1051,16 @@ class CToken extends Calldata_1.Calldata {
|
|
|
1003
1051
|
//
|
|
1004
1052
|
// Full: (L-1) × (overhead + fee) — overshoot + fee
|
|
1005
1053
|
// Partial: (ΔL) × fee — fee only, no overshoot
|
|
1054
|
+
//
|
|
1055
|
+
// See `amplifyContractSlippage` in helpers.ts for the shared
|
|
1056
|
+
// primitive + per-call-site asymmetry docs.
|
|
1006
1057
|
const leverageDelta = isFullDeleverage
|
|
1007
1058
|
? currentLeverage.sub(1)
|
|
1008
1059
|
: currentLeverage.sub(newLeverage);
|
|
1009
1060
|
const forcedBps = isFullDeleverage
|
|
1010
|
-
? LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps
|
|
1061
|
+
? exports.LEVERAGE.DELEVERAGE_OVERHEAD_BPS + feeBps
|
|
1011
1062
|
: feeBps;
|
|
1012
|
-
const contractSlippage =
|
|
1013
|
-
? slippage + BigInt(leverageDelta
|
|
1014
|
-
.mul(Number(forcedBps))
|
|
1015
|
-
.ceil()
|
|
1016
|
-
.toFixed(0))
|
|
1017
|
-
: slippage;
|
|
1063
|
+
const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, leverageDelta, forcedBps);
|
|
1018
1064
|
calldata = manager.getDeleverageCalldata({
|
|
1019
1065
|
cToken: this.address,
|
|
1020
1066
|
collateralAssets: swapCollateral,
|
|
@@ -1070,18 +1116,14 @@ class CToken extends Calldata_1.Calldata {
|
|
|
1070
1116
|
const { action, quote } = await this.currentChainConfig.dexAgg.quoteAction(manager.address, borrow.asset.address, this.asset.address, borrowAssets, slippage, feeBps, feeReceiver);
|
|
1071
1117
|
// Fee-aware slippage expansion for `_swapSafe` is handled by
|
|
1072
1118
|
// KyberSwap.quoteAction. See KyberSwap.ts for rationale.
|
|
1073
|
-
// Fee amplification: same pattern as leverageUp.
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
.mul(Number(feeBps))
|
|
1077
|
-
.ceil()
|
|
1078
|
-
.toFixed(0))
|
|
1079
|
-
: slippage;
|
|
1119
|
+
// Fee amplification: same pattern as leverageUp. See
|
|
1120
|
+
// `amplifyContractSlippage` in helpers.ts.
|
|
1121
|
+
const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, multiplier.sub(1), feeBps);
|
|
1080
1122
|
calldata = manager.getDepositAndLeverageCalldata(FormatConverter_1.default.decimalToBigInt(depositAmount, this.asset.decimals), {
|
|
1081
1123
|
borrowableCToken: borrow.address,
|
|
1082
1124
|
borrowAssets: borrowAssets,
|
|
1083
1125
|
cToken: this.address,
|
|
1084
|
-
expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), LEVERAGE.SHARES_BUFFER_BPS),
|
|
1126
|
+
expectedShares: this.virtualConvertToShares(BigInt(quote.min_out), exports.LEVERAGE.SHARES_BUFFER_BPS),
|
|
1085
1127
|
swapAction: action,
|
|
1086
1128
|
auxData: "0x",
|
|
1087
1129
|
}, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
|
|
@@ -1089,6 +1131,12 @@ class CToken extends Calldata_1.Calldata {
|
|
|
1089
1131
|
}
|
|
1090
1132
|
case 'native-vault':
|
|
1091
1133
|
case 'vault': {
|
|
1134
|
+
// Mirrors the leverageUp vault branch: absorb (L-1) ×
|
|
1135
|
+
// LEVERAGE_UP_VAULT_DRIFT_BPS for vault-token collateral
|
|
1136
|
+
// drift. Uses `multiplier.sub(1)` per the per-call-site
|
|
1137
|
+
// asymmetry documented in helpers.ts (depositAndLeverage
|
|
1138
|
+
// leverageDelta = multiplier - 1).
|
|
1139
|
+
const contractSlippage = (0, helpers_1.amplifyContractSlippage)(slippage, multiplier.sub(1), exports.LEVERAGE.LEVERAGE_UP_VAULT_DRIFT_BPS);
|
|
1092
1140
|
calldata = manager.getDepositAndLeverageCalldata(FormatConverter_1.default.decimalToBigInt(depositAmount, this.asset.decimals), {
|
|
1093
1141
|
borrowableCToken: borrow.address,
|
|
1094
1142
|
borrowAssets: FormatConverter_1.default.decimalToBigInt(borrowAmount, borrow.asset.decimals),
|
|
@@ -1096,7 +1144,7 @@ class CToken extends Calldata_1.Calldata {
|
|
|
1096
1144
|
expectedShares: await PositionManager_1.PositionManager.getVaultExpectedShares(this, borrow, borrowAmount),
|
|
1097
1145
|
swapAction: PositionManager_1.PositionManager.emptySwapAction(),
|
|
1098
1146
|
auxData: "0x",
|
|
1099
|
-
}, FormatConverter_1.default.bpsToBpsWad(
|
|
1147
|
+
}, FormatConverter_1.default.bpsToBpsWad(contractSlippage));
|
|
1100
1148
|
break;
|
|
1101
1149
|
}
|
|
1102
1150
|
default:
|
|
@@ -1270,7 +1318,7 @@ class CToken extends Calldata_1.Calldata {
|
|
|
1270
1318
|
if (remainingCollateral == 0n)
|
|
1271
1319
|
throw new Error(collateralCapError);
|
|
1272
1320
|
if (remainingCollateral > 0n) {
|
|
1273
|
-
const shares = this.virtualConvertToShares(depositAssets, LEVERAGE.SHARES_BUFFER_BPS);
|
|
1321
|
+
const shares = this.virtualConvertToShares(depositAssets, exports.LEVERAGE.SHARES_BUFFER_BPS);
|
|
1274
1322
|
if (shares > remainingCollateral) {
|
|
1275
1323
|
throw new Error(collateralCapError);
|
|
1276
1324
|
}
|