Christian Kamm
727f9a2400
tcs: Change low-health-closure to absolute $1
...
Health ratio was too expensive to compute on-chain
2023-08-14 16:14:30 +02:00
Christian Kamm
7e804b228f
tcs: net borrow checks
2023-08-14 16:14:30 +02:00
Christian Kamm
643a997723
Oracles: Fix units of deviation in OracleState ( #675 )
2023-08-11 16:47:52 +02:00
Christian Kamm
1f55d549a6
liquidator: execute tcs with volume-weighted randomness ( #670 )
2023-08-11 12:08:34 +02:00
Christian Kamm
e4a9a56f89
Pass all params to token_register ( #665 )
...
Makes governance a little easier
2023-08-09 13:55:53 +02:00
Maximilian Schneider
e4162a8281
Leverage & Balance Sheet helpers ( #637 )
2023-08-09 13:54:09 +02:00
Christian Kamm
6dcd5c925c
FlashLoan swaps: Allow charging a fee ( #660 )
...
To give more flexibility to the DAO.
The fee is deducted from any deposits that happen during the flash loan
and controlled per-bank with TokenEdit.
2023-08-09 13:27:25 +02:00
microwavedcola1
8d924a8b9b
Delegate with expiry ( #663 )
...
* delegate with expiry
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* update idl
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-08-09 12:05:16 +02:00
Christian Kamm
4810b6afbc
Tcs: store a display-only intention enum ( #667 )
...
This way the ui can know what the user created the tcs order for.
Introduces tcs create and trigger v2 logs.
2023-08-08 18:16:59 +02:00
Christian Kamm
785e6353c1
Fix compile after merges
2023-08-08 10:36:21 +02:00
Christian Kamm
774c67909e
Tcs: Use fees config from Bank instead of Group ( #659 )
...
To give more flexibility to the DAO, the maximum tcs fees from
the buy and sell banks will be used.
2023-08-08 10:21:13 +02:00
Christian Kamm
4f810edebc
Allow token withdraws/deposits even with stale oracles ( #646 )
2023-08-07 16:15:45 +02:00
Lou-Kamades
98cbf2df59
Merge pull request #652 from blockworks-foundation/lou/token-conditional-logs
2023-08-03 12:30:40 -05:00
Christian Kamm
44f0f4ffa3
Clippy fixes ( #656 )
2023-08-03 13:27:04 +02:00
Christian Kamm
1be38d14cb
Tcs: Add price display style enum ( #654 )
...
Tcs orders always store prices in a fixed "sell per buy" style, but users
can create them in either price direction. When they look at them later,
the ui needs to know what their preferred style is for this order.
2023-08-03 12:37:01 +02:00
Christian Kamm
06f6d75b98
Fix typo in admin_token_withdraw_fees ix ( #655 )
2023-08-03 12:34:33 +02:00
Lou-Kamades
55a3a28ad7
use indexed position in token conditional balance logs
2023-08-01 18:33:21 -07:00
Christian Kamm
5dd5c507f2
Tcs: reserve token positions while tcs is open ( #647 )
...
- Update in_use_count to u16
- Pass banks to TCS cancel instruction
- Increase the in_use_count when a tcs is created and decrease on
trigger/cancel
2023-07-17 13:14:53 +02:00
Christian Kamm
1ba6513b5e
Compile and test fix ( #645 )
2023-07-14 16:27:52 +02:00
microwavedcola1
609f6f24da
Fix rename
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-07-13 18:41:01 +02:00
microwavedcola1
40a011a48e
Fees to dao ( #644 )
...
* withdraw fees to dao
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* rename
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-07-13 18:22:35 +02:00
Christian Kamm
6b2f6af6e4
Idl: remove references to undefined openbook_v2 enums
2023-07-11 13:01:55 +02:00
galactus
6461743f35
Openbook v2 integration: instructions and accounts ( #628 )
2023-07-11 09:59:50 +02:00
Christian Kamm
65c747b36a
Flash loan: Better errors for missing banks ( #639 )
...
Check for missing banks _before_ checking for "exactly two token
changes" because the missing banks can be a cause of the latter error.
2023-07-10 16:20:43 +02:00
Christian Kamm
30cb4d7753
Tcs: Switch prices from f32 to f64 ( #634 )
...
To have more precision when storing user supplied prices and ensure that
the rounding that will occur will be tiny compared to the user-provided
precision.
2023-07-06 14:48:49 +02:00
Lou-Kamades
801a66d682
Merge pull request #624 from blockworks-foundation/lou/avgEntryPricePerBaseLot-logs
2023-07-05 08:19:48 -05:00
Lou-Kamades
fad5aca654
add comment for pnl fields of FillLogV3
2023-07-05 07:56:07 -05:00
Christian Kamm
e535e81257
Pyth: Read agg.price or prev_price, depending on staleness ( #631 )
...
This updates our use of pyth oracle accounts to be more in line with
what the pyth sdk is doing.
2023-07-05 12:58:42 +02:00
Lou-Kamades
8177680415
feat: closed pnl is calculated via realized_trade_pnl_native
2023-07-04 10:39:47 -05:00
Christian Kamm
dd56881a41
Revert "Pyth oracles: Check that status is "trading" ( #607 )"
...
This reverts commit bbf0186398
.
2023-07-04 11:08:48 +02:00
Lou-Kamades
6c6504aefa
feat: emit closed_pnl in FillEventLog3
2023-07-03 13:04:33 -05:00
Christian Kamm
35064d4ab0
Token conditional swaps ( #604 )
...
Users can request token swaps to happen when the oracle price
is within a price band. Once the price is right, an executor can
trigger the swap. The executors are rewarded with a premium
over the oracle price.
This allows limit and stop loss orders on arbitrary spot pairs.
The PR comes with basic ts support and adjustments to the liquidator,
to execute available token conditional swaps.
Co-authored-by: microwavedcola1 <microwavedcola@gmail.com>
2023-07-03 14:09:11 +02:00
Christian Kamm
34e41b6719
Token bankruptcy: Separate checks ( #629 )
...
This makes it easier to debug, since we know what value did not match
the requirements.
2023-07-03 10:25:02 +02:00
Christian Kamm
7eedcbae0d
Serum3 edit market: Allow changing the name ( #621 )
2023-06-21 15:38:27 +02:00
Christian Kamm
a77515acbf
Improve listing with invalid oracles ( #620 )
...
* Stable Price: Reset on first price != 0
This helps when listing tokens or perp markets with an upcoming
oracle. Currently the stable price would be 0 and would need to be
manually reset by DAO proposal.
With this change, the first non-zero value will be used as the starting
point for the stable price instead.
* Listing instructions: Succeed even if oracle is invalid
But require the stable price to reset once it becomes valid.
2023-06-21 15:25:24 +02:00
Christian Kamm
f3f8359fd1
Fix open_interest doc comment
2023-06-16 16:11:25 +02:00
Christian Kamm
b5c9f6d039
Audit fixes ( #613 )
...
* TokenForceCloseBorrows: Respect reduce-only flag
* ForceCancelOrders: Readability of early-out condition
2023-06-16 13:34:54 +02:00
Christian Kamm
0281a1b8ed
Deprecate Serum3SettleFunds, require use of V2 instruction ( #606 )
2023-06-15 17:34:56 +02:00
Christian Kamm
57e1d981ac
Health: Allow actions while init health does not decrease ( #592 )
...
Instead of requiring a strict increase when init health < 0.
This allows users to still place reducing limit orders on the spot and
perp orderbooks as long as these orders keep the health unchanged.
2023-06-15 10:44:11 +02:00
Christian Kamm
bbf0186398
Pyth oracles: Check that status is "trading" ( #607 )
2023-06-15 10:43:44 +02:00
Christian Kamm
66c6926419
Audit fixes for the fee buyback feature ( #608 )
...
* reduce_buyback_fees_accrued: forbid reducing more than accrued
* Buyback fees: Expire accrued during event processing
2023-06-15 10:43:31 +02:00
Nicholas Clarke
23761ef28c
Add price to WithdrawLoanLog ( #603 )
2023-06-14 09:41:54 +02:00
Nicholas Clarke
defbd8c2b1
Add loan amount to WithdrawLoanLog. Add withdraw loan logging to toke… ( #599 )
...
* Add loan amount to WithdrawLoanLog. Add withdraw loan logging to token_force_close_borrows_with_token
* Address review comments.
2023-06-11 15:37:33 -07:00
Christian Kamm
56b010eb71
HealthRegion: Whitelist new perp_place_order_(pegged_)v2 ix ( #597 )
2023-05-26 16:48:19 +02:00
Britt Cyr
2ea8f73ad1
Fix typo in token_liq_with_token comment ( #594 )
2023-05-25 12:35:22 +02:00
Christian Kamm
9f9f3d257c
Docs: improve HealthCache comments ( #590 )
2023-05-19 14:42:14 +02:00
Christian Kamm
5fc7aa1092
Configurable perp settle token ( #550 )
...
This changes perp market margining to no longer assume all pnl is in USD
while settlement is in USDC. Instead, a configurable settle token is used for
pnl and settlement, defaulting to USDC.
There is no difference while the USDC price is forced to $1 and the init and liab
weights are 1. But with this patch, it becomes possible to change that.
For now it is not recommended to use a token other than USDC or USDT (or
another USD targeting stable token) for perp settlement.
The patch also updates all insurance vault use to be aware that the insurance
fund is not in USD but in USDC and apply the USDC price before payouts.
To do this, the previous PerpLiqNegativePnlOrBankruptcy was replaced by
a new PerpLiqNegativePnlOrBankruptcyV2 instruction.
Co-authored-by: microwavedcola1 <89031858+microwavedcola1@users.noreply.github.com>
2023-05-17 15:50:05 +02:00
Christian Kamm
be5618aa2b
PerpTakerTradeLog: Add decremented base lots ( #584 )
2023-05-16 11:10:26 +02:00
Maximilian Schneider
c006948319
Enable self-trading protection ( #533 )
...
Co-authored-by: Christian Kamm <mail@ckamm.de>
2023-05-15 10:40:41 +02:00
Maximilian Schneider
9166b761e9
log taker trade summary ( #579 )
...
* add new event for taker trade so arb bots can verify their execution cost without waiting for consume events
Co-authored-by: Nicholas <nicholasgclarke@gmail.com>
2023-05-13 17:54:27 +02:00
microwavedcola1
784ef88927
document unused ( #581 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-05-13 10:03:28 +02:00
Christian Kamm
5a05e9cb2e
Update anchor to v0.27.0, stop using submodule ( #582 )
2023-05-12 13:54:53 +02:00
Christian Kamm
450f446032
Make clippy happy ( #580 )
2023-05-09 21:08:55 +02:00
Christian Kamm
d20ae0abcb
Perp: Exit matching loop when no more base lots can be filled ( #576 )
2023-05-08 06:40:38 +02:00
Nicholas Clarke
c0ea9970b6
Clarkeni/oracle confidence ( #568 )
...
* Add oracle confidence and oracle type to update funding logs.
* Return price and OracleState struct from oracle_price_and_state.
2023-05-05 23:44:14 -07:00
Christian Kamm
2f4976e81f
Improve error message for FixedAccountRetriever ( #566 )
...
When an invalid number of accounts is passed in, which is one of the
most common error messages new integrators will see.
2023-05-05 09:11:25 +02:00
microwavedcola1
abba3de4ce
Fix bug in flash loan for delegates where compute budget program was not allowed, also improved logging ( #572 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-05-04 14:46:09 +02:00
Christian Kamm
0da1b6728b
OpenBook place order: respect bank reduce_only flags ( #569 )
2023-05-04 08:02:28 +02:00
Christian Kamm
6f47ad92d6
token_register_trustless: Disable borrowing by default ( #567 )
...
Previously tokens listed this way could be borrowed. Now tokens start
with reduce-only set to the "no borrows" mode.
Also decrease the default soft borrow/deposit limits significantly, even
if they don't come into effect when there are no borrows and the deposit
weight is 0 anyway.
2023-05-04 07:59:39 +02:00
Christian Kamm
4504ed8ff9
Compile fix and idl update
2023-04-26 09:07:05 +02:00
microwavedcola1
4e4af83d98
Fix bugs for release ( #564 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-25 16:18:35 +02:00
Christian Kamm
7ec8fbffe5
Fix build without enable-gpl
2023-04-25 13:39:01 +02:00
Nicholas Clarke
2dce1398d3
Fix to seq num logging. Seq num was incremented between event and logging ( #556 )
2023-04-25 13:38:31 +02:00
Nicholas Clarke
5d77ba6834
Add PerpForceClosePositionLog and TokenForceCloseBorrowsWithTokenLog ( #555 )
2023-04-25 13:38:08 +02:00
Christian Kamm
507cb500e9
Fix settle limit accounting for positive pnl takeover ( #562 )
2023-04-25 13:37:34 +02:00
microwavedcola1
3741f78da5
insurance fund withdraw ix ( #561 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-25 09:20:44 +02:00
Christian Kamm
fe8d1a63bd
Fix building with "no-entrypoint" feature ( #558 )
...
Without this, anchor complains about a missing lifetime on a struct
relating to Benchmark.
2023-04-24 09:52:44 +02:00
Christian Kamm
898788909e
Fix account borrow issue in perp_liq_force_cancel_orders ( #557 )
2023-04-24 09:52:33 +02:00
microwavedcola1
497012042c
Force close for serum3 market ( #551 )
...
* force close for serum3 market
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* always require admin
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* format
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* update client
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-20 10:19:23 +02:00
microwavedcola1
6fba1692e9
Fix type
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-20 10:13:14 +02:00
microwavedcola1
6ac9f19287
Perp force close positions in a market ( #525 )
...
* force close tokens
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* reset
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* force close perp market
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* rename
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* update
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add back staleness slot check
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-19 17:42:01 +02:00
microwavedcola1
55bfcc3a76
fix bug where flash loans couldnt be executed by delegates ( #552 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-19 16:17:26 +02:00
Christian Kamm
0e831db687
IxGate: Fix check for re-enabling instructions ( #540 )
...
The bug allowed the security admin to enable instructions. This was
supposed to require the group admin.
2023-04-14 16:12:17 +02:00
Christian Kamm
98a79505e1
FlashLoan: Don't deduce vault_len, add more checks ( #542 )
...
It looks like it wasn't possible to exploit the program by
re-initializing the user-owned token accounts used in flash loan because
the later use of health_ais with the health computation would error out
if any token account was included there.
However, the check and a few others were too indirect. In this patch:
- We pass the number of loans into FlashLoanEnd explicitly (verified
from FlashLoanBegin)
- Add explicit checks for token mints, so it's no longer possible to use
token accounts for foreign mints in Begin when the loan amount is zero,
and it's clearer to see that the bookkeeping in End won't break if the
user reinited the account for a different mint.
- Also add a few other extra comments and checks.
The updated FlashLoanEnd instruction is called FlashLoanEndV2
2023-04-14 15:18:02 +02:00
Nicholas Clarke
37ae7549fb
Clarkeni/perp trade logging ( #535 )
...
* Emit the slot corresponding to the oracle price to PerpUpdateFundingLog.
* Emit a new FilledPerpOrderLog consisting of just the group, perp market and seq num. This will be used to correlate perp fills to the transactions they were matched (not consumed).
2023-04-13 10:50:39 -07:00
microwavedcola1
c813940054
Fix method calls
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-13 19:34:45 +02:00
microwavedcola1
b07857c696
force close tokens program part ( #518 )
...
* force close tokens
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* reset
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-13 12:44:12 +02:00
microwavedcola1
2dca3003df
Don't incentivise using asset tokens with high liquidation fee during liquidation ( #536 )
...
* Don't incentivise using non-usdc coins to liquidate tokens
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* review: add back test comment
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
2023-04-13 12:43:31 +02:00
Christian Kamm
da2a7f4e0c
Net borrow limit: Separate out tracking and checking ( #534 )
...
That way it's easier to be specific about where the limit should be
checked.
2023-04-13 08:56:33 +02:00
Nicholas Clarke
0ba41e3471
Emit perp fees settled on update_funding. Required to have a full picture of total perp market fees. ( #530 )
2023-04-06 22:09:50 -07:00
Christian Kamm
762608ecce
Limit funding and interest accrual during downtimes ( #529 )
...
Previously, if the funding or interest updating instruction wasn't
called for a long time (like for a solana downtime or the security
council halting the program), the next update would apply funding or
interest for the whole time interval since the last update.
This could lead to a bad downtime situation becoming worse. Instead,
limit the maximum funding and interest time interval to one hour.
2023-03-31 12:48:34 +02:00
microwavedcola1
7080c9bf3c
sync rate params to latest proposal ( #523 )
...
* sync rate params to latest proposal
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-03-31 12:45:26 +02:00
Christian Kamm
8559d3ef07
Perp funding: Fix logging in update funding + deactivate pos ( #528 )
2023-03-31 10:58:04 +02:00
Christian Kamm
312a60fe4f
Net borrow limits: Use correct price for check ( #527 )
2023-03-30 17:25:29 +02:00
microwavedcola1
2957796de8
in perp settle fees, dont error, rather return early, this enables blindly concatenating perp settle fees to perp settle pnl ( #526 )
...
* in perp settle fees, dont error, rather return early
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-03-30 17:00:41 +02:00
microwavedcola1
258d95d035
Fix bug: only account for borrows we are offsetting ( #513 )
...
* Fix bug: only account for borrows we are offsetting
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Bank: Unittest for net borrow limits
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
2023-03-22 09:58:31 +01:00
Christian Kamm
b22a1e7f57
HealthRegion: Whitelist allowed instruction types ( #508 )
...
This fixes a security issue where bankruptcy related instructions could
be called inside a health region. Now health regions are limited to
compute optimization like when placing multiple orders in one
transaction.
This limitation also makes it impossible to abuse health regions for
flash loans. Use the FlashLoan instructions for that purpose.
2023-03-20 14:02:35 +01:00
Christian Kamm
658a220095
Allow token/market names to fill storage bytes completely
...
Previously the last byte was always zero.
2023-03-20 14:02:03 +01:00
Christian Kamm
99360e69a3
TokenRegister: Sanity checks on token_index
2023-03-20 14:02:03 +01:00
Christian Kamm
d1e3da2b75
IxGateSet: Log AccountBuybackFeesWithMngo state
2023-03-20 14:02:03 +01:00
Christian Kamm
b7dd8e0663
Fee buyback: Respect USDC oracle ( #504 )
2023-03-20 11:18:11 +01:00
Christian Kamm
b6bfb01879
token_liq_bankruptcy: Use oracle for valuing insurance fund tokens ( #503 )
...
Previously a token from the insurance fund was valued at 1 USD. Now it
uses the oracle associated with it (USDC oracle).
2023-03-16 11:23:45 +01:00
Christian Kamm
0349ace3b6
Downgrade the `fixed` crate to v1.11.0 ( #500 )
2023-03-12 08:50:42 +01:00
Christian Kamm
6ee3cb1e19
Perp: More comments on fields and funding computation ( #497 )
2023-03-07 20:53:07 +01:00
Nicholas Clarke
97895dfb1e
buyback fees with mngo logging ( #489 )
...
* buyback fees with mngo logging
* add logging of usdc balances for account_buyback_fees_with_mngo
2023-03-06 14:42:10 +01:00
Christian Kamm
252210d194
Serum settle funds V2: fees can go to users ( #484 )
...
Co-authored-by: microwavedcola1 <microwavedcola@gmail.com>
2023-03-03 14:04:45 +01:00
microwavedcola1
1950d8c84a
support name edit for token and program ( #488 )
...
* support name edit for token and program
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* undo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-03-03 10:05:12 +01:00
Christian Kamm
f29fffd331
Perp: User-selected reduce-only behaves more intuitively ( #483 )
...
The previous strict behavior of taking existing open orders into account
is only used when the perp market itself is also flagged as reduce-only.
2023-03-03 09:53:27 +01:00
Christian Kamm
255c6fb138
Fee buyback: Limit MNGO price by stable price ( #485 )
...
This makes it much harder to temporarily manipulate the MNGO price to
get a more favorable buyback deal.
2023-03-01 09:58:47 +01:00
Christian Kamm
46c79af430
Security admin: Allow disabling token/perp init collateral ( #482 )
...
This allows the security council to say "users can't create new borrows
against this token/perp anymore". In some emergency situations this can
help reduce risk exposure.
For example, if the price of a wrapped asset permanently depegs from
its underlying or there is a successful long-term attack on an oracle,
this (and reduce-only) would significantly reduce exploitability until
the DAO's decision for how to resolve the issue goes through.
2023-02-28 11:49:07 +01:00
Christian Kamm
df4a7b0474
Fees buyback: Credit users for ui part of serum fees ( #481 )
...
At least for markets with USDC quote currency.
2023-02-28 09:48:15 +01:00
Christian Kamm
9a13c1366a
Fee buyback: Credit only perp fees that go to the dao ( #479 )
2023-02-27 19:51:09 +01:00
microwavedcola1
16599dd506
admins can also register trustless tokens ( #477 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-27 16:37:57 +01:00
Christian Kamm
e4d46c3c5b
Buyback fees: Add staggered expiry ( #478 )
2023-02-27 16:36:27 +01:00
microwavedcola1
d88d44b34a
buyback perp fees with mngo at a discount ( #464 )
...
buyback perp fees with mngo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-25 20:34:16 +01:00
Christian Kamm
5c7a2e3e10
Use the overflow-checks=true equivalent with the fixed crate ( #476 )
...
* Vendor `fixed` crate to have checked math in release mode
* remove all cm!()
* drop superfluous parens
* drop use of checked_math crate
* manual removal of redundant checked_* functions
2023-02-24 11:56:33 +01:00
Christian Kamm
f75e3ee656
Serum: Track referrer rebates as Mango platform fees ( #469 )
...
And start sharing code between serum3 settle and force cancel
2023-02-22 12:04:21 +01:00
microwavedcola1
ae2f74a928
security admin can move openbook market to reduce only ( #472 )
...
* security admin can move openbook market to reduce only
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-22 09:24:38 +01:00
Christian Kamm
5c7f23adb1
Perp place order: more logging for reduce only ( #468 )
2023-02-21 13:14:40 +01:00
Christian Kamm
8f9700ed2d
Settle pnl: Always grant the fractional fee on low health
2023-02-15 15:11:58 +01:00
Christian Kamm
a3a6d9d636
Settle pnl: Move fee-computation to PerpMarket
...
So it can be used in client code to decide what accounts to settle.
2023-02-15 15:11:58 +01:00
Christian Kamm
8916c28b99
License: Mark instructions GPLv3 and everything else MIT ( #454 )
...
To do that, split up the Accounts objects and the instruction
implementations.
GPL code is only used when the "enable-gpl" feature is enabled. That
means compiling the program or running tests need explicit feature
activation now.
2023-02-15 08:42:07 +01:00
Christian Kamm
f6abd9579d
Perp cancel all: Don't error when orders are filled/expired ( #453 )
2023-02-14 10:44:51 +01:00
microwavedcola1
02d980f4e4
restrict what a security admin can do ( #452 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-13 20:02:47 +01:00
Christian Kamm
1f66bef88f
Change liquidation end target to a new, third health type ( #447 )
...
Due to the safety features in v4, the init health can differ from maint
health a lot more than it used to in v3. This is because of stable-price
adjusted oracle prices used in init health, and the weight scaling based
on total deposits and borrows used in init health.
The effect is that once an account becomes liquidatable, it could be
liquidated a lot until it reaches init>=0.
The original idea of liquidating until init>=0 was just to provide some
buffer, such that liquidated accounts wouldn't immediately become
liquidatable again.
This patch decouples the buffer idea explicit from init health by
creating a new LiquidationEnd health type. Liquidation proceeds until
the LiquidationEnd health becomes positive.
Co-authored-by: microwavedcola1 <89031858+microwavedcola1@users.noreply.github.com>
2023-02-10 09:00:36 +01:00
microwavedcola1
74a6c72f45
fix log amount in token deposit ( #446 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-09 13:31:41 +01:00
Christian Kamm
2cb4da8b58
Liquidation: Fix amounts when stable price != oracle price ( #440 )
...
Previously liquidation would overestimate the amount required, because
it used the oracle price for computing the health gain from
liquidation.
Now it uses the correct (stable price adjusted) price for figuring out
the amount of liquidation required, while still executing at
fee-adjusted oracle price.
2023-02-08 09:05:17 +01:00
microwavedcola1
4e3a7f22b9
remove perp zero out, was only added to cleanup testing perp market, can be re-added if needed ( #430 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-06 11:59:12 +01:00
Christian Kamm
257aeb298c
Enable release-mode overflow checks ( #438 )
...
The checked_math macro is still needed for I80F48 though
2023-02-06 08:33:08 +01:00
Christian Kamm
38d408126e
client: Increase binary search iter limit
2023-02-03 17:23:25 +01:00
Nicholas Clarke
4c93a2740a
Add market index to Serum3OpenOrdersBalanceLog ( #429 )
2023-02-02 10:01:19 +01:00
Christian Kamm
5328003183
Perp: Reorganize fill events, add client order id to LeafNodes ( #426 )
...
- don't store internal order ids: unneeded
- provide the maker client order id for user correlation
- store fees as f32 to waste fewer bytes
- new FillLogV2
2023-02-02 09:15:06 +01:00
Christian Kamm
a91a9ae998
Perp: Fix liq instructions ( #424 )
...
- Rename to perp_liq_base_or_positive_pnl and perp_liq_negative_pnl_or_bankruptcy
- Deal with situations where overall asset weight is zero and base position reduction
would not improve liqee health
- Add ability for liqors to take over positive unsettled pnl if that improves liqee health
2023-02-02 09:00:37 +01:00
Christian Kamm
bac15698e6
Add explicit self-liquidation checks ( #427 )
...
Just for safety, the other conditions and borrowing pattern would
already make it impossible.
2023-02-01 16:15:58 +01:00
Christian Kamm
50c820ddce
Perps: Rename pnl_asset_weight -> overall_asset_weight ( #428 )
...
Calling it "pnl" was confusing, because the thing that is weighted isn't
the pnl, but `(weighted base value + quote position)`.
2023-02-01 16:15:45 +01:00
microwavedcola1
0012907ee3
Mc/ix toggler ( #419 )
...
* add gating to individual ixs
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-26 20:27:39 +01:00
microwavedcola1
f30ebf4ff8
logging + prevention of setting admin to default pk ( #423 )
...
* logging + prevention of setting admin to default pk
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-25 15:33:19 +01:00
microwavedcola1
0192728efc
return order id from a perp place order ix ( #417 )
...
* return order id from a perp place order ix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-25 09:03:35 +01:00
microwavedcola1
dae02885c2
log old and new in edit ixs ( #418 )
...
* log old and new in edit ixs
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-25 09:02:27 +01:00
Christian Kamm
4fd8139854
Token deposit: put expensive computation behind gates ( #421 )
2023-01-24 10:05:37 +01:00
Christian Kamm
eb079e1f4c
PerpEditMarket: Fix permission for oracle change ( #420 )
2023-01-24 10:03:10 +01:00
microwavedcola1
80f4bd8048
security admin can bring markets to reduce only ( #394 )
...
* security admin can bring markets to reduce only
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix from review; security admin can only turn on reduce only, security admin can only reduce init asset weight
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* --wip-- [skip ci]
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-23 15:02:48 +01:00
microwavedcola1
64dda20cb5
group level token deposit limit ( #415 )
...
* group level token deposit limit
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-23 14:58:03 +01:00
microwavedcola1
f0c797a2e4
zero out perp position and orders for a broken market ( #413 )
...
* zero out perp position and orders for a broken market
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* client code
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-23 12:50:20 +01:00
Christian Kamm
b3aabfadfc
Perp: Clarify has_open_orders use during liquidation ( #412 )
2023-01-23 10:45:45 +01:00
Christian Kamm
8b4a4c82fb
Perp: move Book::new_order() code around
2023-01-20 14:42:35 +01:00
Christian Kamm
be37f33946
Perp: Add PerpOpenOrder::is_active_for_market()
2023-01-20 14:42:35 +01:00
Christian Kamm
30ebf173ee
Perp: documentation in bookside_iterator.rs
2023-01-20 14:42:35 +01:00
Christian Kamm
d65e0794f4
Perp: Documentation in nodes.rs
2023-01-20 14:42:35 +01:00
Christian Kamm
549d9a8108
Perp: Remove EventQueue::empty() - is_empty() exists as well
2023-01-20 14:42:35 +01:00
Christian Kamm
1b4140c078
Perp: Don't allow orders with effective price_lots<1
2023-01-20 14:42:35 +01:00
Christian Kamm
e7b51d1dbf
Perp: Simplify consume events ( #406 )
2023-01-19 13:41:36 +01:00
Christian Kamm
a28fd49099
Delete perp_liq_bankruptcy again
...
Snuck back in in unrelated PR, but was unused
2023-01-19 12:59:24 +01:00
microwavedcola1
44f599ca62
dont process orders which have 0 lots; dont return early, we still want to apply ioc penalty ( #404 )
...
* skip iteration if the incoming order has no lots to process
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-19 11:29:00 +01:00
Christian Kamm
1a3d0da34a
Perp market edit: Separate out stable price resetting, like for tokens
2023-01-19 09:33:27 +01:00
Christian Kamm
2db617cea5
Perp ix: Mention and reference important constraints
2023-01-19 09:33:27 +01:00
Christian Kamm
f16f1a6c92
Perp market field documentation pass
2023-01-19 09:31:59 +01:00
Christian Kamm
0a86257309
Perp: Move best_price/impact_price from Orderbook to BookSide
2023-01-19 09:31:59 +01:00
Christian Kamm
886a6696da
Perp audit: ix constraint fixes ( #399 )
2023-01-19 09:31:03 +01:00
Christian Kamm
ff90c85874
Liquidator: reduce perp base pos if possible ( #398 )
...
- send reduce-only ioc order if possible
- settle pnl if needed
- deactivate position
2023-01-18 10:50:23 +01:00