* checkout submodules on ci
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* change to https, so that ci can clone
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix clippy
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* redundant clone
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* anchor as submodule
* Use anchor submodule as dependency
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
1. Only the CreatedBank message contains the parent and often that was
not the first message received. That confused the data structure,
because it then considered a chain of slots alive that had only a
single slot in it.
Fixed by tracking as "best_chain" only the top slot that actually has
a parent set.
2. OptimisticallyConfirm messages sometimes arrive before CreateBank,
which would change the slot status from Confirmed back to Processed.
Nothing dependend on confirmed vs processed, but it's been fixed
anyway by making slot status only increase confirmation status.
3. Accept account writes for slots newer than the current best_chain
head as alive.
- Abstract away account fetching, so it can be done via RPC or from a
websocket stream (or a geyser plugin) that populates a ChainData
instance.
- Separate out information about tokens, markets into MangoGroupContext.
- Separate all gPA calls into functions in a new file
- The liquidator re-fetches critical accounts via RPC before
liquidation. Unfortunately the websocket stream seems slower :/
- Don't re-implement health account derivation in the liquidator.
Instead reuse the existing code from the client.
- More smaller stuff.