From e3ef0f6c710f1530131e1a5c851eb06fea3711e8 Mon Sep 17 00:00:00 2001 From: piobab Date: Wed, 30 Aug 2023 10:23:09 +0200 Subject: [PATCH] Fix Protocol Liquidation Fee calculation. --- ...ank - Dynamic LB & CF test cases v1.1.xlsx | Bin 20427 -> 20419 bytes .../red-bank/tests/tests/test_liquidate.rs | 17 ++++++++--------- packages/liquidation/src/liquidation.rs | 12 +++++++----- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/contracts/red-bank/tests/files/Red Bank - Dynamic LB & CF test cases v1.1.xlsx b/contracts/red-bank/tests/files/Red Bank - Dynamic LB & CF test cases v1.1.xlsx index 5d50903e1da697fe1e22a4e7cc3c929cc7aad216..e649148e784f0ba45c2eca2f972123cc01cd2bad 100644 GIT binary patch delta 11936 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 E02ZC?+5i9m delta 11784 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