* point to serum dex upstream for now; add in max_ts for PlaceSpotOrder and PlaceSpotOrder2; DOES NOT COMPILE UNTIL OUR SERUM DEX FORK IS UPDATED
* point to blockworks-foundation version of serum-dex
* add serum_dex.so from anchor build registry; fix initialize market in tests; tests still don't pass because of liquidate_token_and_token
* fixed tests breaking because of new fees in serum dex
* got rid of compile warnings in tests; made tests run faster
* Add instructions for closing a mango account
* Check owner account is signer
* Use checked functions to load mango accounts
* add wip create_dust_account and resolve_dust
* Make resolve_dust fail silently
* Add max account checking
* Add upgrade mango account instruction
* Update version
* Run cargo fmt
* Fix instruction number, make owner read, fix padding
* added cancel_all_side functions to mathcing
* added cancel_perp_orders_side; haven't tested
* added not_upgradable flag to MangoAccount and amended InitMangoAccount to set that flag to true.
* logging for cancel all perp orders; get_complete_base_pos for reduce only check
* complete_base_pos for trigger order exec as well
* added changelog
* fixed check enter bankruptcy bug
* added deploy time
* merged in v3.2.12 and updated cancel_side to do logging
* Most code review changes, check dust account health
* Remove whitespace
* changed dust_account owner to admin
* make resolve_dust not take in OpenOrders for DustAccount because it doesn't have any; Add more checks for MangoAccount in resolve_dust
* merged in main v3.2.13
* do in_margin_basket check in CloseSpotOpenOrders
* do in_margin_basket check in CloseSpotOpenOrders
* small edits to errors
* upgrade anchor and packages
* added some additional info to PlacePerpOrder in instruction.rs
* mc/add alternative authority which cant withdraw (#97)
* Support account delegation, delegate should be able to trade, but not withdraw assets to his own wallet
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* comment
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* comment
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* comment
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* newline
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* bump solana in tests
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* cargo-fmt
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* bump rust
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix solana verison
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* linter
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* note
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* typo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* changed name from alternative_authority to delegate to be consistent with Solana naming and more accurate
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* Fixes from code review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Tests: Fix program log output
The log scope for these changed in solana 1.9
* Remove unnecessary owner check
* fix: remove not used account from ix interface spec
* Fix instruction builder, owner will pay, and his lamports would need to be adjusted
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* implement price limit in place_spot_order and place_spot_order2
* remove print
* CI: add apt-get update (#116)
Installing libudev-dev failed
* README: Document branches (#114)
* remove a todo; cleanup devnet_deploy.sh
* mc/change spot market params (#110)
* Soteria and Cargo Audit Automation (#106)
* Create audit.toml
Cargo audit configuration file
* Create ci-cargo-audit.yml
Action to build and run cargo audit using arguments from the .cargo/audit.toml file
* Update and rename program.yml to ci-lint-test.yml
Minor name changes and addition of Soteria
* Update ci-lint-test.yml
update environment settings
* Update ci-lint-test.yml
adding apt-get update as the job fails to find packages
* Update ci-cargo-audit.yml
* Ignore tokio upstream vuln
Reported to Solana for upstream patching
* impose price limits (#108)
* impose price limits
* update deploy time
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* checked math in all areas touched by place_perp_order (#109)
* checked math in all areas touched by place_perp_order
* update deploy time
* update deploy time
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* change_spot_market_params
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* linter
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* in ci, perform apt-get update to prevent failure to install apt packages
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* remove a todo; cleanup devnet_deploy.sh
Co-authored-by: silas <95582913+silas-x@users.noreply.github.com>
Co-authored-by: dafyddd <daffy321@gmail.com>
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* fix integer overflow issue in get_total_native_borrow
* update changelog.md
* optimize create_dust_account
* added some checked math in execute_perp_trigger_order where dealing with bids_quantity
* Do pyth price filtering only on mainnet
* Add CreateSpotOpenOrders
* add tests for CreateSpotOpenOrders
* upgrade anchor version to 0.20.1
* update deploy time
Co-authored-by: Riordan Panayides <riordan@panayid.es>
Co-authored-by: dd <dafydd.durairaj@gmail.com>
Co-authored-by: microwavedcola1 <89031858+microwavedcola1@users.noreply.github.com>
Co-authored-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
Co-authored-by: Jakob Povšič <jakob.povsic@gmail.com>
Co-authored-by: silas <95582913+silas-x@users.noreply.github.com>
* implemented reduce_only and market order for PlacePerpOrder; untested
* added root bank cache valid check under MangoCache
* fixed the root bank cache function and made it compiling
* added some stuff during live stream. still not finished
* Cache validation moved to impl
* All cache validations moved to appropriate struct implementations
* Increase valid_interval for RootBankCache check
* implemented place_spot_order2; still not finished reducing size of the tx
* more progress on place_spot_order2
* finished implementing place_spot_order2
* intermediate work on advanced orders
* compiling and deployed to devnet; advanced orders still unfinished
* changed get_spot_val to use Option for open_orders; more work on advanced orders but not completed
* added testi80f48 into placespotorder2
* removed test_i80f48; removed rent_ai into invoke_place_order
* removed test_i80f48; removed rent_ai into invoke_place_order
* cleaned up compiler warnings
* use serum order v3 serialization
* add perp stop order instruction
* implement correctly register order
* connect instructions with impl
* changed name to PerpTriggerOrder. Still need to implement RemovePerpTriggerOrder and test;
* Added RemoveAdvancedOrder and rearranged some of the instruction discriminants
* remove perp trigger order instruction
* Fix pda_signer_seeds
* fixed borrow issue in AddPerpTriggerOrder
* Move transfer_lamports
* fix accounts comment
* fixed borrow checker issue in execute adv order; added signed version of transfer lamports
* added order_type into LeafNode to help with trading view order movement
* fixed issues with transfering lamports so now RemoveAdvancedOrder works
* added some TODOs for logs; added simulation of perp order to prevent exploits in ExecutePerpTriggerOrder
* added exp to liquidity mining params
* Replaced json logging of FillEvent with borsh serialized LoggableFillEvent base64 encoding
* Added accounts to logs where necessary (mango_group_pk, liqee, liqor). Fixed malformed json. Added logging to cache_perp_markets. Made 'init_health above zero' an error'.
* updated the LoggableFillEvent
* revert throwing zero on 'Account init_health above zero'
* Added accounts to logs where necessary (mango_group_pk, liqee, liqor)… (#55)
* Added accounts to logs where necessary (mango_group_pk, liqee, liqor). Fixed malformed json. Added logging to cache_perp_markets. Made 'init_health above zero' an error'.
* revert throwing zero on 'Account init_health above zero'
* fixed liquidate_perp_market log
* fixed zero open interest bug in perp bankruptcy
* fixed zero open interest bug in perp bankruptcy
* added anchor events framework in mango-logs directory. See the README on how to use it.
* added stubs for all the logs that need to be replaced
* Added mango group to FillLog and added cache prices log, CacheRootBanksLog
* added support for all logs; added OpenOrdersBalanceLog as well whereever OpenOrders changes
* Added PostOnlySlide
* fixed PostOnlySlide
* added MngoAccrual
* added MngoAccrualLog
* rearrange
* removed reduce_only restriction on AddPerpTriggerOrder
* added msg into exec perp trigger
* fixed check in ExecutePerpTriggerOrder
* Fix test build: don't require &'a [AccountInfo<'a>] lifetimes (#59)
It's sufficient to propagate the lifetimes on
checked_unpack_open_orders.
* Add log events for deposit, withdraw and redeem mngo (#58)
* updated I80F48 to u64 in new log structs
* Fix serialization of instructions (#60)
Now it matches what MangoInstruction::unpack() expects.
- Side, OrderType, AssetType, TriggerCondition are serialized into u8
- the Option fields in ChangePerpMarketParams have a fixed width
* merged in changes from main
* Update serum-dex program fixture to 0.4.0
Built from 1be91f2863d8ecede32daaae7e768034e24bbc79
* quantity == u64::max in withdraw now withdraws max possible (if allow borrow false)
* UpdateFunding now caches funding; new UpdateFundingLog
* Add perp trigger order unittests (#61)
* Fix sim_new_bid/ask when the book is empty
* Add first perp trigger order unittest
This test only runs with "cargo test-bpf" as the non-bpf runtime does
not allow creation of pda accounts.
- Test users are now owned by the system program, not by themselves
- MangoProgramTest::process_transaction no longer always returns success
(must check for error; all existing users do)
* Test: Add perp trigger order test around health
* Minor fixes to mango-logs (#63)
* Add mango-logs to Anchor.toml
* mango-logs: Disable doctests
There's nothing to test and they fail spuriously with an ambiguity error
on the mango_logs program.
* Add github actions CI workflow (#64)
* Apply rustfmt
To allow the formatting lint CI job to pass
* Add github actions CI workflow
Adapted from https://github.com/solana-labs/dapp-scaffold
Co-authored-by: dafyddd <daffy321@gmail.com>
* updated github workflows
* added max_withdrawable utility function in processor.rs
* moved max_withdrawable into MangoAccount and now also uses existing deposits
* Added market index to FillLog
* removed some debug logging in execute trigger order
* added the deploy time for v3.1
Co-authored-by: dd <dafydd.durairaj@gmail.com>
Co-authored-by: Ralfs <lagzda7@inbox.lv>
Co-authored-by: Tyler Shipe <tjshipe@gmail.com>
Co-authored-by: Maximilian Schneider <mail@maximilianschneider.net>
Co-authored-by: Riordan Panayides <riordan@panayid.es>
Co-authored-by: root <nicholasgclarke@gmail.com>
Co-authored-by: Christian Kamm <ckamm@delightful-solutions.de>
* add spot/perp market without index but with oracle pk
* cleaned up the checks a little in AddPerpMarket and AddSpotMarket
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* Moved from u64 to f64 for price and size types
* Rewrote match spot order scenario to conform to the rest of scenarios
* Assertions modularized and consume_perp_events
* Tests on new program
* Adjust the assertion code to work with new layouts
* Test interest rates
* Removed ralfs tests
* Clean up of new tests
* Coompiler warning cleanup
Co-authored-by: Ralfs <lagzda7@inbox.lv>
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* Moved from u64 to f64 for price and size types
* Rewrote match spot order scenario to conform to the rest of scenarios
* Assertions modularized and consume_perp_events
* Tests on new program
* Adjust the assertion code to work with new layouts
* Test interest rates
* Removed ralfs tests
Co-authored-by: Ralfs <lagzda7@inbox.lv>
* reorganized and added Anchor.toml and cargo workspace to top level
* Added proper anchor file with solana version
Co-authored-by: dd <dafydd.durairaj@gmail.com>
* Test spot order matching and init liq testing
* Test liquidate_token_and_token
* Rewrite into cookies
* settle_funds test fix
* Removed <Option> from mango_group_cookie
* Removed the Option wrappers where unnecessary for cookies
* Clean up compiler warnings
* Liq test rewrite, added scenarios
* Some more rewrites
* Worst case test with fractions, 10 spot orders and 15 perp orders
* Increment order_id in the test cookie
* Corrected max_coin_qty for spot_order tests
* More readability improvements
* Started rewriting HealthCache again as HealthCache2
* Wrote new more efficient HealthCache and updated place_spot_order
* Fixed liquidate_token_and_token to use new HealthCache method; compiles but is untested
* Added open orders checks everywhere in processor.rs
Co-authored-by: Ralfs <lagzda7@inbox.lv>
Co-authored-by: dd <dafydd.durairaj@gmail.com>