Deploying to gh-pages from @ blockworks-foundation/mango-v4@9166b761e9 🚀
This commit is contained in:
parent
5ad3daefaf
commit
09592719d2
|
@ -1 +1 @@
|
|||
{"rustc_fingerprint":5112592523311449540,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.65.0 (897e37553 2022-11-02)\nbinary: rustc\ncommit-hash: 897e37553bba8b42751c67658967889d11ecd120\ncommit-date: 2022-11-02\nhost: x86_64-unknown-linux-gnu\nrelease: 1.65.0\nLLVM version: 15.0.0\n","stderr":""},"15697416045686424142":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n","stderr":""},"10376369925670944939":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/runner/.rustup/toolchains/1.65-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
|
||||
{"rustc_fingerprint":82438534482926853,"outputs":{"15697416045686424142":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n","stderr":""},"10376369925670944939":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/runner/.rustup/toolchains/1.65-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.65.0 (897e37553 2022-11-02)\nbinary: rustc\ncommit-hash: 897e37553bba8b42751c67658967889d11ecd120\ncommit-date: 2022-11-02\nhost: x86_64-unknown-linux-gnu\nrelease: 1.65.0\nLLVM version: 15.0.0\n","stderr":""}},"successes":{}}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
window.SIDEBAR_ITEMS = {"enum":[["LoanOriginationFeeInstruction",""]],"fn":[["emit_perp_balances",""]],"struct":[["AccountBuybackFeesWithMngoLog",""],["DeactivatePerpPositionLog",""],["DeactivateTokenPositionLog",""],["DepositLog",""],["FillLog",""],["FillLogV2",""],["FilledPerpOrderLog",""],["FlashLoanLog",""],["FlashLoanTokenDetail",""],["PerpBalanceLog",""],["PerpForceClosePositionLog",""],["PerpLiqBankruptcyLog",""],["PerpLiqBaseOrPositivePnlLog",""],["PerpLiqNegativePnlOrBankruptcyLog",""],["PerpMarketMetaDataLog",""],["PerpSettleFeesLog",""],["PerpSettlePnlLog",""],["PerpUpdateFundingLog",""],["PerpUpdateFundingLogV2",""],["Serum3OpenOrdersBalanceLog",""],["Serum3OpenOrdersBalanceLogV2",""],["Serum3RegisterMarketLog",""],["TokenBalanceLog",""],["TokenForceCloseBorrowsWithTokenLog",""],["TokenLiqBankruptcyLog",""],["TokenLiqWithTokenLog",""],["TokenMetaDataLog",""],["UpdateIndexLog",""],["UpdateRateLog",""],["WithdrawLoanOriginationFeeLog",""],["WithdrawLog",""]]};
|
||||
window.SIDEBAR_ITEMS = {"enum":[["LoanOriginationFeeInstruction",""]],"fn":[["emit_perp_balances",""]],"struct":[["AccountBuybackFeesWithMngoLog",""],["DeactivatePerpPositionLog",""],["DeactivateTokenPositionLog",""],["DepositLog",""],["FillLog",""],["FillLogV2",""],["FilledPerpOrderLog",""],["FlashLoanLog",""],["FlashLoanTokenDetail",""],["PerpBalanceLog",""],["PerpForceClosePositionLog",""],["PerpLiqBankruptcyLog",""],["PerpLiqBaseOrPositivePnlLog",""],["PerpLiqNegativePnlOrBankruptcyLog",""],["PerpMarketMetaDataLog",""],["PerpSettleFeesLog",""],["PerpSettlePnlLog",""],["PerpTakerTradeLog",""],["PerpUpdateFundingLog",""],["PerpUpdateFundingLogV2",""],["Serum3OpenOrdersBalanceLog",""],["Serum3OpenOrdersBalanceLogV2",""],["Serum3RegisterMarketLog",""],["TokenBalanceLog",""],["TokenForceCloseBorrowsWithTokenLog",""],["TokenLiqBankruptcyLog",""],["TokenLiqWithTokenLog",""],["TokenMetaDataLog",""],["UpdateIndexLog",""],["UpdateRateLog",""],["WithdrawLoanOriginationFeeLog",""],["WithdrawLog",""]]};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -421,6 +421,18 @@
|
|||
<span id="421">421</span>
|
||||
<span id="422">422</span>
|
||||
<span id="423">423</span>
|
||||
<span id="424">424</span>
|
||||
<span id="425">425</span>
|
||||
<span id="426">426</span>
|
||||
<span id="427">427</span>
|
||||
<span id="428">428</span>
|
||||
<span id="429">429</span>
|
||||
<span id="430">430</span>
|
||||
<span id="431">431</span>
|
||||
<span id="432">432</span>
|
||||
<span id="433">433</span>
|
||||
<span id="434">434</span>
|
||||
<span id="435">435</span>
|
||||
</pre><pre class="rust"><code><span class="kw">use crate</span>::{
|
||||
accounts_ix::FlashLoanType,
|
||||
state::{OracleType, PerpMarket, PerpPosition},
|
||||
|
@ -820,6 +832,18 @@
|
|||
<span class="kw">pub </span>seq_num: u64,
|
||||
}
|
||||
|
||||
<span class="attribute">#[event]
|
||||
</span><span class="kw">pub struct </span>PerpTakerTradeLog {
|
||||
<span class="kw">pub </span>mango_group: Pubkey,
|
||||
<span class="kw">pub </span>mango_account: Pubkey,
|
||||
<span class="kw">pub </span>perp_market_index: u16,
|
||||
<span class="kw">pub </span>taker_side: u8,
|
||||
<span class="kw">pub </span>total_base_lots_taken: i64,
|
||||
<span class="kw">pub </span>total_quote_lots_taken: i64, <span class="comment">// exclusive fees paid
|
||||
</span><span class="kw">pub </span>taker_fees_paid: i128, <span class="comment">// in native quote units
|
||||
</span><span class="kw">pub </span>fee_penalty: i128, <span class="comment">// in native quote units
|
||||
</span>}
|
||||
|
||||
<span class="attribute">#[event]
|
||||
</span><span class="kw">pub struct </span>PerpForceClosePositionLog {
|
||||
<span class="kw">pub </span>mango_group: Pubkey,
|
||||
|
|
|
@ -406,7 +406,19 @@
|
|||
<span id="406">406</span>
|
||||
<span id="407">407</span>
|
||||
<span id="408">408</span>
|
||||
</pre><pre class="rust"><code><span class="kw">use </span><span class="kw">crate</span>::logs::FilledPerpOrderLog;
|
||||
<span id="409">409</span>
|
||||
<span id="410">410</span>
|
||||
<span id="411">411</span>
|
||||
<span id="412">412</span>
|
||||
<span id="413">413</span>
|
||||
<span id="414">414</span>
|
||||
<span id="415">415</span>
|
||||
<span id="416">416</span>
|
||||
<span id="417">417</span>
|
||||
<span id="418">418</span>
|
||||
<span id="419">419</span>
|
||||
<span id="420">420</span>
|
||||
</pre><pre class="rust"><code><span class="kw">use </span><span class="kw">crate</span>::logs::{FilledPerpOrderLog, PerpTakerTradeLog};
|
||||
<span class="kw">use </span><span class="kw">crate</span>::state::MangoAccountRefMut;
|
||||
<span class="kw">use crate</span>::{
|
||||
error::<span class="kw-2">*</span>,
|
||||
|
@ -472,9 +484,11 @@
|
|||
</span><span class="kw">let </span>order_id = market.gen_order_id(side, price_data);
|
||||
|
||||
<span class="comment">// IOC orders have a fee penalty applied regardless of match
|
||||
</span><span class="kw">if </span>order.needs_penalty_fee() {
|
||||
apply_penalty(market, mango_account)<span class="question-mark">?</span>;
|
||||
}
|
||||
</span><span class="kw">let </span>fee_penalty = <span class="kw">if </span>order.needs_penalty_fee() {
|
||||
apply_penalty(market, mango_account)<span class="question-mark">?
|
||||
</span>} <span class="kw">else </span>{
|
||||
I80F48::ZERO
|
||||
};
|
||||
|
||||
<span class="kw">let </span>perp_position = mango_account.perp_position_mut(market.perp_market_index)<span class="question-mark">?</span>;
|
||||
|
||||
|
@ -573,7 +587,7 @@
|
|||
<span class="macro">emit!</span>(FilledPerpOrderLog {
|
||||
mango_group: market.group.key(),
|
||||
perp_market_index: market.perp_market_index,
|
||||
seq_num: seq_num,
|
||||
seq_num,
|
||||
});
|
||||
}
|
||||
<span class="kw">let </span>total_quote_lots_taken = order.max_quote_lots - remaining_quote_lots;
|
||||
|
@ -585,7 +599,17 @@
|
|||
// realized when the fill event gets executed
|
||||
</span><span class="kw">if </span>total_quote_lots_taken > <span class="number">0 </span>|| total_base_lots_taken > <span class="number">0 </span>{
|
||||
perp_position.add_taker_trade(side, total_base_lots_taken, total_quote_lots_taken);
|
||||
apply_fees(market, mango_account, total_quote_lots_taken)<span class="question-mark">?</span>;
|
||||
<span class="kw">let </span>taker_fees_paid = apply_fees(market, mango_account, total_quote_lots_taken)<span class="question-mark">?</span>;
|
||||
<span class="macro">emit!</span>(PerpTakerTradeLog {
|
||||
mango_group: market.group.key(),
|
||||
mango_account: <span class="kw-2">*</span>mango_account_pk,
|
||||
perp_market_index: market.perp_market_index,
|
||||
taker_side: side <span class="kw">as </span>u8,
|
||||
total_base_lots_taken,
|
||||
total_quote_lots_taken,
|
||||
taker_fees_paid: taker_fees_paid.to_bits(),
|
||||
fee_penalty: fee_penalty.to_bits(),
|
||||
});
|
||||
}
|
||||
|
||||
<span class="comment">// Apply changes to matched asks (handles invalidate on delete!)
|
||||
|
@ -773,7 +797,7 @@
|
|||
market: <span class="kw-2">&mut </span>PerpMarket,
|
||||
account: <span class="kw-2">&mut </span>MangoAccountRefMut,
|
||||
quote_lots: i64,
|
||||
) -> <span class="prelude-ty">Result</span><()> {
|
||||
) -> <span class="prelude-ty">Result</span><I80F48> {
|
||||
<span class="kw">let </span>quote_native = I80F48::from_num(market.quote_lot_size * quote_lots);
|
||||
|
||||
<span class="comment">// The maker fees apply to the maker's account only when the fill event is consumed.
|
||||
|
@ -799,11 +823,11 @@
|
|||
// breaks assumptions.
|
||||
</span>market.fees_accrued += taker_fees + maker_fees;
|
||||
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
<span class="prelude-val">Ok</span>(taker_fees)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// Applies a fixed penalty fee to the account, and update the market's fees_accrued
|
||||
</span><span class="kw">fn </span>apply_penalty(market: <span class="kw-2">&mut </span>PerpMarket, account: <span class="kw-2">&mut </span>MangoAccountRefMut) -> <span class="prelude-ty">Result</span><()> {
|
||||
</span><span class="kw">fn </span>apply_penalty(market: <span class="kw-2">&mut </span>PerpMarket, account: <span class="kw-2">&mut </span>MangoAccountRefMut) -> <span class="prelude-ty">Result</span><I80F48> {
|
||||
<span class="kw">let </span>fee_penalty = I80F48::from_num(market.fee_penalty);
|
||||
account
|
||||
.fixed
|
||||
|
@ -812,7 +836,7 @@
|
|||
<span class="kw">let </span>perp_position = account.perp_position_mut(market.perp_market_index)<span class="question-mark">?</span>;
|
||||
perp_position.record_trading_fee(fee_penalty);
|
||||
market.fees_accrued += fee_penalty;
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
<span class="prelude-val">Ok</span>(fee_penalty)
|
||||
}
|
||||
</code></pre></div>
|
||||
</section></div></main><div id="rustdoc-vars" data-root-path="../../../../" data-current-crate="mango_v4" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.65.0 (897e37553 2022-11-02)" ></div></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue