Commit Graph

216 Commits

Author SHA1 Message Date
Christian Kamm f48a7f5ed9 Clippy: Address issues 2022-04-01 12:21:19 +02:00
Christian Kamm 833a909aa4 Orderbook: unify new_bid/new_ask 2022-04-01 12:21:19 +02:00
Christian Kamm 6505abcd54 Side: Make inversion function be associated 2022-04-01 12:21:19 +02:00
Christian Kamm 56e3bd8740 Rearrange accounts to avoid padding bytes 2022-03-31 14:37:05 +02:00
Christian Kamm 9cf4f1a748 Rearrange MangoAccount to avoid padding bytes 2022-03-31 14:01:08 +02:00
microwavedcola1 faba5c47bf remove unwanted code
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-30 17:03:56 +02:00
microwavedcola1 46cb811c99 Merge branch 'mc/consume_events' 2022-03-30 13:22:31 +02:00
microwavedcola1 00ac0dfce9 comments and test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-30 11:58:45 +02:00
Christian Kamm d6ebffd346 liq: functionality fixes and test 2022-03-29 17:47:19 +02:00
Christian Kamm 69426d6d96 liq: Introduce HealthCache to get init/maint health after liquidation
The concept only works if all serum3 open orders have been fully
cancelled and settled.
2022-03-29 09:18:13 +02:00
microwavedcola1 64e3ba0d7c --wip-- [skip ci] 2022-03-28 21:13:16 +02:00
Christian Kamm a6ff388e20 health: avoid divisions, reducing compute needs 2022-03-27 14:47:42 +02:00
Christian Kamm d9ac178481 liq token: Adjust fee handling
Use the sum of the fees configured for the tokens.
2022-03-27 14:47:42 +02:00
Christian Kamm 82819720e0 liq token: progress
Change bank.deposit()/withdraw() to work with I80F48 values so we don't
need to round during liquidation.
2022-03-27 14:46:51 +02:00
Christian Kamm c391c29347 liq token: Instruction outline 2022-03-27 14:46:51 +02:00
microwavedcola1 b851dd13ad add new ask
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-26 17:06:55 +01:00
microwavedcola1 c7bf53659c fix warning
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-25 20:44:06 +01:00
microwavedcola1 00da3460ab cleanuo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-25 20:35:19 +01:00
microwavedcola1 860b7aa1d4 cleanup
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-25 20:03:44 +01:00
microwavedcola1 27eaa5f8f5 ported fees
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-25 09:46:38 +01:00
microwavedcola1 3036ffa45c clippy
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 19:27:00 +01:00
microwavedcola1 671c06da89 events
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 19:20:56 +01:00
microwavedcola1 f895467bf5 weights
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 17:29:30 +01:00
microwavedcola1 21073d6b71 cleanup
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 16:12:55 +01:00
microwavedcola1 de0ce5ad8f cleanup
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 15:29:42 +01:00
microwavedcola1 baf4b255c8 remove more dead code
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 14:48:11 +01:00
microwavedcola1 1eaf58812f remove more dead code
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 14:46:09 +01:00
microwavedcola1 ba4300accc simplify
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 14:40:08 +01:00
microwavedcola1 4a3d61a0b0 cleanup unused
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 14:08:10 +01:00
microwavedcola1 e6ee72b8b0 remove unused
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-24 13:45:46 +01:00
microwavedcola1 5919a5a1df Merge branch 'main' into mc/clippy 2022-03-23 09:53:50 +01:00
microwavedcola1 f135ca4d9b fix clippy warnings
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-23 09:33:51 +01:00
microwavedcola1 fde4bce86f
Merge pull request #29 from blockworks-foundation/mc/event_queue
add event queue
2022-03-23 08:54:11 +01:00
microwavedcola1 b0d6a14d00 fix clippy warnings
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-23 08:34:23 +01:00
microwavedcola1 f7fb9b7e35 add event queue
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-23 07:53:45 +01:00
Christian Kamm bfcb672116 Health: allow account order to be fixed, or to scan for accounts
The latter is important when we want to compute health for two different
accounts. Then the remainingAccounts would hold the union of the
necessary accounts, and each health check would need to look for the
accounts that it needs.

This patch al so reduces the compute needs for fixed-layout health
checks significantly (Deposit for an account with 8 tokens and 7 markets
takes 65k instead of 70k cu)
2022-03-22 14:13:07 +01:00
microwavedcola1 3443ab0d70
Merge pull request #27 from blockworks-foundation/mc/ci
checked math
2022-03-22 11:47:10 +01:00
microwavedcola1 974724cfe1 fix some clippy warnings
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-22 11:19:12 +01:00
microwavedcola1 ed9368cb3d checked math
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-22 10:39:51 +01:00
Christian Kamm d1a7cd109d Serum: remove some duplicated functions 2022-03-22 09:58:10 +01:00
microwavedcola1 ec5e959804 further work on perps
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-22 07:06:33 +01:00
Christian Kamm 34d14ef267 Serum: serum3_liq_force_cancel_orders instruction
Still needs a test.
2022-03-21 17:39:52 +01:00
Christian Kamm 75ac224b6e Tests: Bank deposit/withdraw/active/dust tests 2022-03-21 07:01:25 +01:00
microwavedcola1 fbedea9424 reorg, placeholder for place perp order
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-20 10:11:36 +01:00
Christian Kamm 9fb16f3906 Add comments 2022-03-19 08:54:33 +01:00
microwavedcola1 9475d9545c add comment
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-19 08:52:38 +01:00
microwavedcola1 479bd60ecf extend perp market with indices, which make it easier to lookup the perp market and base and quote tokens
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-19 07:28:37 +01:00
microwavedcola1 ab61c6b244 remove unused
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-18 16:30:18 +01:00
microwavedcola1 ba9bc82df2 Merge branch 'mc/perps' 2022-03-18 15:16:13 +01:00
Christian Kamm 9d05db68f9 Serum: Prefix instructions with serum3_ and related renames 2022-03-18 13:42:20 +01:00
microwavedcola1 4f7e3a5738 create perp market wip
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-18 10:14:30 +01:00
Christian Kamm 57c06bc2da Health: add a missing group check for remainingAccount Banks 2022-03-18 07:54:20 +01:00
Christian Kamm 7b3cd9a81f Health: Use split_at_mut to get two element &muts
Previously we re-indexed token_infos every time, now we can just have
mutable references to the base and quote elements at the same time.
2022-03-18 07:44:44 +01:00
Christian Kamm 430d5c85fa Health: compute optimizations
Basic caching of multiplications and divisions.
2022-03-17 21:53:41 +01:00
Christian Kamm 9351d0652d Serum: health based on worst case order outcome 2022-03-17 12:05:07 +01:00
Christian Kamm 0593aa81f7 Serum: more health computation
Now the open orders are actually read
2022-03-16 18:33:11 +01:00
Christian Kamm 6aa4724b45 Serum: Health computation first steps 2022-03-16 16:45:54 +01:00
Christian Kamm f5d2964f1d Serum: Store base/quote token index in MangoAccount
To avoid having to pass SerumMarket when health needs to be computed.
2022-03-16 13:48:43 +01:00
Christian Kamm 1953d12f0f Health: expect serum open orders accounts 2022-03-16 13:42:29 +01:00
Christian Kamm 3bb94777f3 MangoAccount field renames
indexed_positions -> token_account_map
serum_open_orders_map -> serum_account_map

in the future we should add the perp_account_map
2022-03-15 15:08:53 +01:00
Christian Kamm baa980c659 PlaceSerumOrder: Track vault balances before and after 2022-03-15 14:44:47 +01:00
Christian Kamm 28a26e66da PlaceSerumOrder: More account validation 2022-03-14 21:53:30 +01:00
Christian Kamm 07c9b9de7e Further harmonizing of PDA seeds 2022-03-14 13:39:54 +01:00
Christian Kamm 71cd1755ec Stop storing token info in Group
It is just not needed, the individual Bank accounts have all the
necessary info.
2022-03-14 13:35:38 +01:00
Christian Kamm 1cd0f8d6be RegisterToken: Pass token_index explicitly
This guarantees stability when a gov proposal adds a new token and a new
market in one transaction. This way the RegisterMarket instruction knows
exactly what index the new token will have.

Previously, the new token index was generated automatically, meaning
you couldn't be sure what index a new token would get in advance.
2022-03-14 13:19:50 +01:00
Christian Kamm 449fe4dc6d Add checked_math library for convenient overflow checking
Instead of
    x.checked_add(y).ok_or(error!(MangoError::MathError))?
we can write
    cm!(x + y)
2022-03-13 15:45:50 +01:00
Christian Kamm fce2316b03 Simplify health fn call, use in place serum order 2022-03-12 14:13:19 +01:00
Christian Kamm 16c0a95679 PlaceSerumOrder instruction stub 2022-03-12 14:13:19 +01:00
microwavedcola1 241dd6080a
Merge pull request #24 from blockworks-foundation/mc/re-org
move unused to a unused mod, preparation for working on perp markets
2022-03-11 17:51:32 +01:00
Christian Kamm 693ac17996 Serum: Store open orders pubkey in account 2022-03-11 17:50:04 +01:00
microwavedcola1 c2f91489af move unused to a unused mod
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-11 17:11:46 +01:00
Christian Kamm c86a6f8d29 Serum: Create OOs is functional and called from a test 2022-03-11 15:28:27 +01:00
Christian Kamm e3960dc5e2 Outlines of RegisterSerumMarket / CreateSerumOpenOrders 2022-03-11 12:40:16 +01:00
microwavedcola1 4dc0262546 reformat
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-08 12:45:59 +01:00
Christian Kamm f6d2df1ad4 Rename to Bank and Group 2022-03-07 16:16:34 +01:00
Christian Kamm 2d65078c23 Fix margin_trade instruction call 2022-03-07 15:43:29 +01:00
microwavedcola1 dcacadbcbf margin trade test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-07 15:24:50 +01:00
Christian Kamm 98cf8a7cff Position lifetime, dust etc
- withdraw and deposit may deactivate positions explicitly
- adjusting bank positions may collect dust for positions between
  0 and 1 native tokens
- health check always assumes all active and new banks/oracles are
  passed
2022-03-07 15:21:19 +01:00
Christian Kamm c6031acbdb Move to global address lookup tables 2022-03-04 20:57:33 +01:00
microwavedcola1 ce5f2027a1 extract health, flesh out margin trade, todo - test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-03 11:43:56 +01:00
microwavedcola1 6702cdbba6
mc/pyth (#14)
* pyth integration

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-02 21:11:05 +01:00
microwavedcola1 d9c7260375 code review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-03-01 06:28:12 +01:00
Christian Kamm 75092f7681 CreateAccount: Initialize an address lookup table 2022-02-28 15:43:08 +01:00
microwavedcola1 362b180069 add oracle to to token registration
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 14:44:08 +01:00
microwavedcola1 12d2a9f962 make clippy happy
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 12:56:26 +01:00
microwavedcola1 1c47f0d004 add ix handling for stub oracles
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 12:37:12 +01:00
microwavedcola1 3355ed1dcf dont need special crate for this
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 11:18:55 +01:00
microwavedcola1 364f5d895b fix use statement location
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 11:18:35 +01:00
microwavedcola1 e8b1563223 optimise imports
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 11:07:04 +01:00
microwavedcola1 3648cba0d0 use discriminator to differentiate between oracles, removes need for a magic constant, same could be done for other oracles
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 11:05:15 +01:00
microwavedcola1 6345d3ebd4 add todo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 10:45:03 +01:00
microwavedcola1 c0c115bd03 remove unused
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 10:44:08 +01:00
microwavedcola1 823fbeb6b5 stub oracle ix and account state
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-28 10:36:31 +01:00
Christian Kamm 1b404cc652 Basic health check, no oracles yet 2022-02-26 17:47:16 +01:00
Christian Kamm 174d38a199 Don't check PDA seeds on use, instead store addresses
This saves about 5000 CU currently, making Deposit/Withdraw go from
26000 CU to 21000 CU.
2022-02-26 12:17:20 +01:00
Christian Kamm 2ef2424ac5 Move the asset/liab weights to the Bank account 2022-02-26 12:04:42 +01:00
Christian Kamm 8f5becc0d5 Asset/liab weights and withdraw amounts 2022-02-25 18:29:54 +01:00
Christian Kamm d1e2cc28b7 Outline of withdraw instruction 2022-02-25 15:14:15 +01:00
Christian Kamm 5f5ba723d6 Add basic test setup 2022-02-25 13:12:16 +01:00
Christian Kamm 70d3603cb4 Rename group.owner -> group.admin 2022-02-23 10:19:54 +01:00
Christian Kamm 9f013fb22a Initialize bank indexes 2022-02-23 10:15:33 +01:00
Christian Kamm 5a4b6263ac Add deposits/borrows tracking 2022-02-23 10:09:01 +01:00
Christian Kamm 8bc0416ef6 Helper functions to simplify 2022-02-22 17:13:26 +01:00
Christian Kamm 6b5162cce0 Remove root bank 2022-02-22 16:46:55 +01:00
Christian Kamm 1b935335fb Drop Default impls, manually set account space
This fixes stack issues.

I don't know why anchor uses bytemuck::from_bytes(&T::default()).len()
2022-02-22 15:55:30 +01:00
Christian Kamm c9ad4f0c94 Very basic deposit instruction 2022-02-22 14:23:13 +01:00
Christian Kamm 901062d0c1 Add token bank and vault accounts 2022-02-22 13:31:18 +01:00
Christian Kamm 9b16feaf44 CreateAccount instruction outline 2022-02-22 13:15:13 +01:00
Christian Kamm cb94c7c598 CreateGroup instruction outline 2022-02-22 10:16:13 +01:00
Christian Kamm 6160a80457 First ideas for MangoGroup and MangoAccount accounts 2022-02-22 10:15:37 +01:00
Christian Kamm a79ee2c8e2 Fix compile by disabling unadapted state/ structs 2022-02-22 10:09:40 +01:00
microwavedcola1 b362d3320b notes for self
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-10 10:50:57 +01:00
microwavedcola1 f2921d2272 add todos
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-10 10:49:45 +01:00
microwavedcola1 268db58294 fix imports
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-10 10:04:47 +01:00
microwavedcola1 5ab8f6e09e copy structs from v3, next goal is to see what we can retain and what to change
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-02-10 09:07:34 +01:00
microwavedcola1 66172881a1 First commit
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-01-21 19:21:46 +01:00