microwavedcola1
86c9331647
reduce only order type and mode for tokens and perp markets ( #353 )
...
* reduce only order type and mode for tokens and perp markets
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* remove token
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes
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-04 09:24:40 +01:00
microwavedcola1
4169ccb960
enforce min vault to deposits ratio in flash loan and serum3 place order, in addition to token_withdraw ( #338 )
...
* refactor
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Enforce min vault to deposits ratio in flash loan and serum3 place order
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* refactor
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* refactor
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-12-15 18:27:22 +01:00
Nicholas Clarke
e2295b2daa
Add instantaneous interest rates to update index log ( #314 )
2022-12-09 10:14:06 +01:00
Christian Kamm
777c1a7804
Rename bank fields, make weight scale limits editable ( #319 )
2022-12-06 09:34:02 +01:00
Christian Kamm
375b2b3fb3
Use bytemuck::Pod derives to check for accidental padding ( #317 )
2022-12-06 09:25:43 +01:00
Christian Kamm
e0c403dcb9
Client: consider borrow limits in max-swap ( #316 )
2022-12-06 09:25:24 +01:00
microwavedcola1
25312bc398
struct layout reorg + reserved pass ( #315 )
...
* reorder structs + review reserved space + split const assets into individual fields for correct checking
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>
2022-12-05 15:23:20 +01:00
Christian Kamm
c8f1f3c821
Net borrow limits: Limit in quote, not native ( #312 )
...
* Net borrow limits: Limit in quote, not native
* make perp settle limit disableable
2022-12-02 12:24:11 +01:00
Christian Kamm
cf34a5b4b7
Health: Add soft deposit and borrow limits
2022-12-02 08:20:22 +01:00
Christian Kamm
f6d189ce29
Test fixes
2022-11-28 11:31:51 +01:00
microwavedcola1
1732a5aff4
net borrow limits ( #301 )
...
* net borrow limits
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix client
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fix tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
2022-11-25 13:45:17 +01:00
Christian Kamm
c276353289
Implement a stable_price on banks and perp markets ( #303 )
...
It is tracked in the StablePriceModel and updated on
TokenUpdateIndexAndRate and PerpUpdateFunding instructions.
The stable price is used in health computations.
2022-11-24 11:55:22 +01:00
Christian Kamm
2ee152f7ea
Oracle staleness: Check when accessing oracle price
2022-11-12 12:12:45 +01:00
Christian Kamm
58f7ff2e0e
Add staleness param to OracleConfig
...
Since Bank can't expand the existing OracleConfig, add a new one to Bank
and (temporarily!) copy over the old value to the new one in
TokenUpdateIndexAndRate.
Add some reserved space to OracleConfig to make this easier in the
future.
Breaks the PerpMarket and PerpPosition layouts
2022-11-12 12:11:09 +01:00
Nicholas Clarke
96344d7de1
Clarkeni/perp logging ( #265 )
...
* Perp instruction logging
* Onchain funding calculation
* perp_spot_transfers field on perp positions
* Logging on register token, perp market
* Additional fields on update token index logging
* maker and taker volume fields on perp position
2022-10-07 12:12:55 -07:00
Nicholas Clarke
01a958cd22
Clarkeni/onchain interest ( #244 )
...
* Onchain interest calculation
* Fix to TokenBalanceLog for token_liq_bankruptcy (was previously using liqee liab position for liqor liab position).
* Log cumulative interest when token position is deactivated.
2022-09-28 23:04:33 -07:00
Christian Kamm
79a7bdc299
Checked math: support cm!(a += b)
2022-09-06 08:55:27 +02:00
Christian Kamm
8a2d54cce8
Fix some clippy warnings
2022-08-30 13:59:34 +02:00
Christian Kamm
2d2cef35a0
Add HealthRegion instructions
...
You can do
- HealthRegionBegin
- ... mango instructions ...
- HealthRegionEnd
and the account health will only be checked at the start and end
instead of for every instruction.
2022-08-24 10:07:45 +02:00
Nicholas Clarke
704dfcaa27
Clarkeni/loan fee logging ( #180 )
...
Logging for loan origination fees and token bankruptcy
2022-08-19 18:50:54 -07:00
Christian Kamm
a23afed7de
Fix computation of utilization time-weighted average
2022-08-17 15:29:11 +02:00
Christian Kamm
e8bbfbef83
Bank: fix collection of loan fee
...
Instead of changing indexed_borrows, change borrow_index!
2022-08-16 16:27:45 +02:00
Christian Kamm
961a81b94f
Liquidation: Fix positive dust issues
2022-08-16 13:08:43 +02:00
Christian Kamm
724824d21a
Bank: small fixes from audit
2022-08-14 15:01:15 +02:00
Christian Kamm
ccba4ee597
Cleanups and bugfixes from the audit ( #163 )
...
* AccountExpand: cleanups from audit
* Group instructions: cleanups from audit
* AccountClose: cleanups from audit
* TokenAddBank: Audit fixes, including significant bugs
Must not take collected_fees and bump from the existing bank.
* Instruction comment updates
* GroupEdit: Add version/testing flag changes
Ported from mc/vanity
2022-08-13 19:54:58 +02:00
Christian Kamm
21815612ae
Let all PDA seeds start with a unique prefix ( #166 )
...
This is mostly paranoia. Now it's guaranteed that different PDA types
have unique seeds.
2022-08-13 19:30:35 +02:00
Christian Kamm
a3067e2448
Avoid custom Debug impls by using derivative crate
2022-08-13 10:18:04 +02:00
microwavedcola1
d594286266
reserve for ALTs ( #152 )
...
* reserve for ALTs
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add explicit padding
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-08-08 18:50:59 +02:00
Christian Kamm
dded844693
Update dynamic interest and default token parameters
2022-08-06 21:06:34 +02:00
microwavedcola1
59d28c97a1
fix name and error message check in flash loan ( #145 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-08-06 12:59:13 +02:00
microwavedcola1
9d117c84ac
fix from review
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-08-03 15:45:10 +02:00
microwavedcola1
374c0eb136
mc/clippy ( #135 )
...
* clippy pass 1
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* clippy pass 2
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-08-02 09:07:10 +02:00
microwavedcola1
a9a03b97ac
mc/registration time ( #132 )
...
* registration time
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* mc/u32 numbers - consistent numbers in pdas (#133 )
* consistent numbers in pdas
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-08-01 18:46:45 +02:00
microwavedcola1
c516e45d08
mc/review reserved on accounts ( #130 )
...
* review and extend reserved on accounts
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* revert changes to node size, stack gets smashed in rust unit tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* max possible
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* max
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* header version
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fix from review
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>
* fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-08-01 16:53:30 +02:00
microwavedcola1
ef7d2862da
wip: dynamic rates ( #98 )
...
* dynamic rates
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fmt
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-07-11 17:08:32 +02:00
Christian Kamm
f132f30874
Better error messages
2022-07-08 12:48:43 +02:00
Christian Kamm
9f90c3982f
Fix serum3 loan origination fee withdrawal
...
Paying the loan origination fee must be like a withdrawal and can't be
charged as a borrow if the user has deposits.
2022-07-07 12:33:21 +02:00
Christian Kamm
de86b69e1a
Client/program interface changes
...
- rearrange structs to have gPA data in front and add comments about the
offsets being relevant
- add insuranceMint to group creation in client
- drop quoteTokenIndex storage on PerpMarket
- fixes to editAccount in example1-user and client
2022-07-06 11:34:07 +02:00
Christian Kamm
35ca4d31b3
liq_token_bankruptcy instruction for socialized loss
2022-07-06 09:07:49 +02:00
Christian Kamm
30a221047c
Bank: rename indexed total deposits and schedule for removal
2022-07-01 14:08:28 +02:00
Christian Kamm
d786a672f1
FlashLoan2: API with Begin and End instructions
...
For FlashLoan users had to pass the target cpi programs, accounts and
data to the FlashLoan instruction itself.
The new API allows existing instructions to be used unchanged, they
just need to be bracketed by FlashLoan2Begin and FlashLoan2End.
2022-06-28 15:30:13 +02:00
microwavedcola1
9fc8a5a56a
multiple banks ( #82 )
...
* multiple banks
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* test for closing multiple banks for a registered token
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix deregister_token
* update idl
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
2022-06-27 11:27:17 +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
d4cec8dfa4
Bank: Fix bug when when depositing to exactly 0
2022-06-22 16:51:16 +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
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
de481a4008
todo
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-06-10 08:42:26 +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
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
be73106ce1
perp funding ( #51 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-16 15:34:56 +02:00
microwavedcola1
967ce34002
move comment
...
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
15961ec81c
fees for borrows
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-09 11:14:50 +02:00
microwavedcola1
7abfc417ac
reorg
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-05-06 10:13:33 +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
257ccf76ad
multi legged interest rates + keeper ix
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2022-04-09 16:53:30 +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
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
75ac224b6e
Tests: Bank deposit/withdraw/active/dust tests
2022-03-21 07:01:25 +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
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
f6d2df1ad4
Rename to Bank and Group
2022-03-07 16:16:34 +01:00