Commit Graph

346 Commits

Author SHA1 Message Date
microwavedcola1 54c0306ae7 Fix flash loan
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-23 13:10:15 +02:00
Christian Kamm 0bd5b8fdf3 Rename margin_trade.rs -> flash_loan.rs 2022-06-23 10:23:52 +02:00
Christian Kamm c8ebc1f611 Rename MarginTrade -> FlashLoan 2022-06-23 10:23:52 +02:00
Christian Kamm d8a6a29e70 Renames: propagate to idl and ts 2022-06-23 10:04:54 +02:00
Christian Kamm 648b462352 Rename MangoAccount components 2022-06-23 10:04:54 +02:00
Christian Kamm 1143b38d3c Health review comments 2022-06-22 16:52:11 +02:00
Christian Kamm ba79995c01 Health: order-independent serum3 health
Now all the reserved funds in serum3 open orders accounts are added into
each possible token at the same time. Then the worse case from applying
the reserved funds to either quote or base is selected.

This is reasonably cheap to compute, leads to unchanged results when no
markets share (non USDC) base or quote tokens, but can underestimate
the "true" health value when markets do.

An additional advantage is that HealthCache is now indepenent of serum
open orders and can compute the init and maint health when the user has
active OpenOrders accounts.
2022-06-22 16:52:11 +02:00
Christian Kamm d4cec8dfa4 Bank: Fix bug when when depositing to exactly 0 2022-06-22 16:51:16 +02:00
Christian Kamm aeb94642ce fix clippy warnings 2022-06-21 13:10:37 +02:00
Christian Kamm 5dd186ac13 Health: fix unittests 2022-06-21 13:02:47 +02:00
Christian Kamm 6f41efad0f Health: helper for finding token info by index 2022-06-21 13:02:47 +02:00
microwavedcola1 b0fd4c2a61 Fix warnings
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-21 13:02:30 +02:00
microwavedcola1 86c8817e0b
serum3 loan origination fees (#69)
* serum3 loan origination fees

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Fix tests
Fix 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>
2022-06-21 11:45:38 +02:00
Christian Kamm cb0010b2b5 Health: never allow positive contributions from perps 2022-06-21 11:07:13 +02:00
Christian Kamm be98f6524a Orderbook: Avoid usize fields in data 2022-06-21 11:05:46 +02:00
Christian Kamm 6ff4ff5910 Add a ComputeHealth instruction
This way the client can ask for simulation to determine an account's
health.
2022-06-21 11:05:32 +02:00
Christian Kamm 712bece0b2 Remove stray log message from health computation 2022-06-20 18:21:26 +02:00
microwavedcola1 470292024e
Filter out bad switchboard prices (#70)
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-20 18:03:16 +02:00
microwavedcola1 5b78293c5c minor refactoring
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-19 18:32:04 +02:00
microwavedcola1 9462be7f0b Fix margin trade interface
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-18 17:14:20 +02:00
microwavedcola1 4864562ff3
margin trade, support multi cpi (#68)
* margin trade, support multi cpi

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Fix from review

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* todo

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-18 16:43:45 +02:00
microwavedcola1 0f34851c64
switchboard support (#67)
* switchboard support

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Fix from review

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-18 16:38:46 +02:00
microwavedcola1 95c06c2bfc
Mc/liquidator (#64)
* Copy over and integrate liquidatable-accounts-feed (doesn't compile)

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Liquidator

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Adapt to refactoring

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* remove dead code

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Use copies of AccountSharedData

* Implement AccountReader for AccountSharedData

* use LoadZeroCopy in liquidator

* Fix from review

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

Co-authored-by: Christian Kamm <mail@ckamm.de>
2022-06-18 16:31:28 +02:00
microwavedcola1 de481a4008 todo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-10 08:42:26 +02:00
microwavedcola1 740ff0c09e
Close various things (#65)
* close bank, vaults, mint infos, stub oracles, serum OO (doesnt work, throws https://github.com/project-serum/serum-dex/blob/master/dex/src/error.rs\#L88), close serum market

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* serum oo closing example in ts

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Fix from code review

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-09 18:27:31 +02:00
Christian Kamm 40023fcef1 Health: Make FixedOrderAccountRetriever more flexible 2022-06-08 14:38:49 +02:00
Christian Kamm b3568b7f3e
Make health/oracle functions usable from clients (#63)
* Make health/oracle functions usable from clients

By creating a shared trait that is implementable for AccountInfo and
AccountSharedData.

* Health: fixup tests
2022-06-08 13:43:12 +02:00
Christian Kamm a14f37362d margin_trade: forbid direct self-calls 2022-06-07 13:25:30 +02:00
Christian Kamm 685fd3122f Perps: Limit overall health contribution from perp markets
We don't want to allow borrowing against unsettled pnl in perp markets.

This makes it safer to create perp markets for untrustworthy assets.
2022-06-06 12:58:08 +02:00
microwavedcola1 1b4063cd0d remove misleading example
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-03 08:29:35 +02:00
microwavedcola1 47bccfeec8 Fix oracle price decimal usage
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-02 19:16:30 +02:00
microwavedcola1 a20d04b6ff
Fix oracle price read by using decimals from pyth (#62)
* Fix oracle price read by using decimals from pyth

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* fix

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-02 10:36:04 +02:00
microwavedcola1 383489ae34 Merge branch 'mc/liquidator-bot' into dev 2022-05-30 17:08:16 +02:00
Christian Kamm 48cb1f0b88 Compute health in perp_place_order 2022-05-29 20:50:21 +02:00
Christian Kamm 65a5139db7 Tests: Send perp markets as health accounts 2022-05-29 20:50:21 +02:00
Christian Kamm 4984bba71e Health: Add perp health calculation 2022-05-29 20:50:21 +02:00
microwavedcola1 97e434fbb6 keeper: find/create account by account name
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-29 12:25:12 +02:00
microwavedcola1 34a8f0919f
serum taker bot (#57)
* taker bot

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* inline code

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* cleanup

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* add mints

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* add todo

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* fix todos

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* remove stray log

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* cleanup

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* remove dead code

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* use same rust as what solana uses, use same solana version as cargo toml

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* Fix from review

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* fix from reviews

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>

* linter

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-28 07:05:34 +02:00
microwavedcola1 cc2d46bf4a add support for mint decimals on bank, for easy look up
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-27 14:52:03 +02:00
Christian Kamm b1fcb4a7e6 CreateGroup: Allow multiple groups per admin 2022-05-27 11:36:50 +02:00
Christian Kamm 1844898280 margin_trade: Allow forwarding mint accounts 2022-05-26 21:12:02 +02:00
Christian Kamm 536ec8a84a Make health iteration code work with pyth oracles
They have a different account owner, that error must be skipped.
2022-05-26 20:38:03 +02:00
Christian Kamm 946e6b1c96 margin_trade: doc improvements 2022-05-25 08:02:55 +02:00
microwavedcola1 ed4e63a82f Change tuple to a struct, seemingly anchor ts doesnt support tuples
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-24 22:03:35 +02:00
Christian Kamm f844720130 Review fixes 2022-05-24 13:00:32 +02:00
Christian Kamm 53a5e208fd margin_trade: loan origination fees, limited withdraws 2022-05-23 08:55:30 +02:00
Christian Kamm 21af012d1f Improvements to margin_trade
- don't hard-code the group as the first passed account
- token::approve() banks for each token vault
- sign for each bank
- deal with using tokens without an existing position
- handle deactivation of token account if balance goes to 0
2022-05-20 10:16:09 +02:00
Christian Kamm 8a8b36e345 Fold loan origination fee handling into Bank 2022-05-18 22:53:03 +02:00
microwavedcola1 717b72857d
Remove anchor dummy type workaround (#53)
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-18 17:16:14 +02:00
microwavedcola1 ab0df0e7f2 unwrap
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 17:11:37 +02:00
microwavedcola1 2de149f74c checked math + rustfmt
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 17:08:00 +02:00
microwavedcola1 6ecd4a0da9 Update funding for keeper
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 15:59:47 +02:00
microwavedcola1 2518ec24a6 Update client to match program changes
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 15:06:29 +02:00
microwavedcola1 f19f3da659 add todo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 13:01:48 +02:00
microwavedcola1 a4f3569a87 Fix merge
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 10:12:16 +02:00
microwavedcola1 fac9b4a57a perp funding
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-17 10:07:24 +02:00
microwavedcola1 be73106ce1
perp funding (#51)
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 15:34:56 +02:00
microwavedcola1 f5c505f847 fix test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 15:26:38 +02:00
microwavedcola1 db82fcbbcc perp cancel order instructions
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 10:49:11 +02:00
microwavedcola1 67c1d5d451 format
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 10:49:11 +02:00
microwavedcola1 967ce34002 move comment
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 10:49:11 +02:00
microwavedcola1 a1034c08b7 refactor
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 10:49:11 +02:00
microwavedcola1 ee6fe93b26 Fix tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 10:49:11 +02:00
microwavedcola1 fbd3fd410c loan_origination_fees
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 10:49:11 +02:00
microwavedcola1 f1791be039 add todo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-11 20:25:09 +02:00
microwavedcola1 b903073ce6 add comment so that it doesnt get lost
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-11 20:09:12 +02:00
microwavedcola1 81f0f38188 ts client support for perps
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-11 20:06:07 +02:00
microwavedcola1 15961ec81c fees for borrows
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-09 11:14:50 +02:00
microwavedcola1 5266668bc2 keeper: consume events
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-06 14:19:49 +02:00
microwavedcola1 7abfc417ac reorg
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-06 10:13:33 +02:00
microwavedcola1 9f5a2fd32e add a test for consume events, add debug impl for mango account for easy debugging in tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-05 10:25:32 +02:00
microwavedcola1 d38ca0de4c refactor
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-03 18:17:58 +02:00
microwavedcola1 ec7c61327c list of ix to implement
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-03 18:07:31 +02:00
microwavedcola1 f09b3cc965 First attempt at finishing perp health
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-03 15:15:34 +02:00
microwavedcola1 3c469d7194 todo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 20:43:45 +02:00
microwavedcola1 1206109260 todo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 20:39:48 +02:00
microwavedcola1 7ead988ba4 small ticker size
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 20:38:35 +02:00
microwavedcola1 6db679d35e support longer account names
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 20:23:45 +02:00
microwavedcola1 e3a60a637a format
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 17:35:39 +02:00
microwavedcola1 bf2fa47a1c fix viz
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 17:33:42 +02:00
microwavedcola1 62ee1bc5c0 prepare for multiple ts packages
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 17:28:47 +02:00
microwavedcola1 addb12736f fixes from cr
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 16:53:45 +02:00
microwavedcola1 03ae43017c account, market and bank names
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-12 16:19:58 +02:00
microwavedcola1 1b1dd1a541 poc keeper
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-09 21:18:07 +02:00
microwavedcola1 5ab48fb6e0 rust: Fix args in tests to more realistic values, ts: expose args, update idl
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-09 17:09:06 +02:00
microwavedcola1 57d9de86c8 comment
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-09 16:55:00 +02:00
microwavedcola1 257ccf76ad multi legged interest rates + keeper ix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-09 16:53:30 +02:00
microwavedcola1 2587cd914c checked math
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-07 21:04:02 +02:00
Christian Kamm 68ef58248c Perp health: Some code and comments 2022-04-05 09:09:12 +02:00
Christian Kamm 256397593d Health: Support PerpMarkets in remainingAccounts 2022-04-04 11:25:05 +02:00
Christian Kamm 6f3673bcdf Perp: Track taker and maker orders in the account; test 2022-04-04 10:39:13 +02:00
microwavedcola1 a44120c470 add group to mintinfo, for better gpa support
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 19:07:43 +02:00
microwavedcola1 e6727cbfae fix clippy warning
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 06:21:34 +02:00
microwavedcola1 7803cae654 fix clippy warning
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 06:16:41 +02:00
microwavedcola1 dfd1dc5216 fix clippy warning
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 06:11:41 +02:00
microwavedcola1 204ab6963d checked math
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 06:09:01 +02:00
microwavedcola1 d6fe317ac9 checked math
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 06:06:03 +02:00
microwavedcola1 9debc63a6a
update idl, add tokenmint to stuboracle for gpa (#34)
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 05:43:32 +02:00
microwavedcola1 884d638e36
Merge pull request #33 from blockworks-foundation/mc/stub-oracle-ext
Mc/stub oracle ext
2022-04-03 05:36:24 +02:00
microwavedcola1 ace5df2a85 revert unintended changes
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-03 05:21:16 +02:00