Skip to content

Commit

Permalink
Rename
Browse files Browse the repository at this point in the history
Order.pionexTokenAmount -> Order.minPionexTokenAmount;
remainingAmount -> remainingUserTokenAmount
  • Loading branch information
NIC619 committed May 25, 2023
1 parent cfe0365 commit ae44cae
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 34 deletions.
16 changes: 8 additions & 8 deletions contracts/PionexContract.sol
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
// Check provided pionexToken/userToken ratio is better than or equal to user's specfied pionexToken/userToken ratio
// -> _params.pionexTokenAmount/_params.userTokenAmount >= _order.pionexTokenAmount/_order.userTokenAmount
require(
_params.pionexTokenAmount.mul(_order.userTokenAmount) >= _order.pionexTokenAmount.mul(_params.userTokenAmount),
_params.pionexTokenAmount.mul(_order.userTokenAmount) >= _order.minPionexTokenAmount.mul(_params.userTokenAmount),
"PionexContract: pionex/user token ratio not good enough"
);
// Check gas fee factor and pionex strategy fee factor do not exceed limit
Expand All @@ -133,7 +133,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
_validateTraderFill(fill, _params.pionexSig);
}

(uint256 userTokenAmount, uint256 remainingAmount) = _quoteOrderFromMakerToken(_order, orderHash, _params.userTokenAmount);
(uint256 userTokenAmount, uint256 remainingUserTokenAmount) = _quoteOrderFromMakerToken(_order, orderHash, _params.userTokenAmount);
// Calculate pionexTokenAmount according to the provided pionexToken/userToken ratio
uint256 pionexTokenAmount = userTokenAmount.mul(_params.pionexTokenAmount).div(_params.userTokenAmount);

Expand All @@ -149,7 +149,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
pionexToken: _order.pionexToken,
userTokenAmount: userTokenAmount,
pionexTokenAmount: pionexTokenAmount,
remainingAmount: remainingAmount,
remainingUserTokenAmount: remainingUserTokenAmount,
gasFeeFactor: _params.gasFeeFactor,
pionexStrategyFeeFactor: _params.pionexStrategyFeeFactor
})
Expand Down Expand Up @@ -211,7 +211,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
IERC20 pionexToken;
uint256 userTokenAmount;
uint256 pionexTokenAmount;
uint256 remainingAmount;
uint256 remainingUserTokenAmount;
uint16 gasFeeFactor;
uint16 pionexStrategyFeeFactor;
}
Expand Down Expand Up @@ -251,7 +251,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
pionexToken: address(_settlement.pionexToken),
userTokenFilledAmount: _settlement.userTokenAmount,
pionexTokenFilledAmount: _settlement.pionexTokenAmount,
remainingAmount: _settlement.remainingAmount,
remainingUserTokenAmount: _settlement.remainingUserTokenAmount,
tokenlonFee: tokenlonFee,
pionexFee: pionexFee
})
Expand All @@ -268,7 +268,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
require(!isCancelled, "PionexContract: Order is cancelled already");
{
PionexContractLibEIP712.Order memory cancelledOrder = _order;
cancelledOrder.pionexTokenAmount = 0;
cancelledOrder.minPionexTokenAmount = 0;

bytes32 cancelledOrderHash = getEIP712Hash(PionexContractLibEIP712._getOrderStructHash(cancelledOrder));
require(isValidSignature(_order.user, cancelledOrderHash, bytes(""), _cancelOrderMakerSig), "PionexContract: Cancel request is not signed by user");
Expand Down Expand Up @@ -340,7 +340,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
address pionexToken;
uint256 userTokenFilledAmount;
uint256 pionexTokenFilledAmount;
uint256 remainingAmount;
uint256 remainingUserTokenAmount;
uint256 tokenlonFee;
uint256 pionexFee;
}
Expand All @@ -357,7 +357,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
pionexToken: _params.pionexToken,
userTokenFilledAmount: _params.userTokenFilledAmount,
pionexTokenFilledAmount: _params.pionexTokenFilledAmount,
remainingAmount: _params.remainingAmount,
remainingUserTokenAmount: _params.remainingUserTokenAmount,
tokenlonFee: _params.tokenlonFee,
pionexFee: _params.pionexFee
})
Expand Down
2 changes: 1 addition & 1 deletion contracts/interfaces/IPionexContract.sol
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ interface IPionexContract is IStrategyBase {
address pionexToken;
uint256 userTokenFilledAmount;
uint256 pionexTokenFilledAmount;
uint256 remainingAmount;
uint256 remainingUserTokenAmount;
uint256 tokenlonFee;
uint256 pionexFee;
}
Expand Down
8 changes: 4 additions & 4 deletions contracts/utils/PionexContractLibEIP712.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ library PionexContractLibEIP712 {
IERC20 userToken;
IERC20 pionexToken;
uint256 userTokenAmount;
uint256 pionexTokenAmount;
uint256 minPionexTokenAmount;
address user;
address pionex;
uint256 salt;
Expand All @@ -24,7 +24,7 @@ library PionexContractLibEIP712 {
"address userToken,",
"address pionexToken,",
"uint256 userTokenAmount,",
"uint256 pionexTokenAmount,",
"uint256 minPionexTokenAmount,",
"address user,",
"address pionex,",
"uint256 salt,",
Expand All @@ -33,7 +33,7 @@ library PionexContractLibEIP712 {
)
);
*/
bytes32 private constant ORDER_TYPEHASH = 0x97aec2eaa3064135fc2be6548ccc65711bf2143e0a4ad193212bfdee8913eb9d;
bytes32 private constant ORDER_TYPEHASH = 0xc3eca7f47a388a29b03acba9184de40640fb7d9394cc3ef572b90c15c2f34feb;

function _getOrderStructHash(Order memory _order) internal pure returns (bytes32) {
return
Expand All @@ -43,7 +43,7 @@ library PionexContractLibEIP712 {
address(_order.userToken),
address(_order.pionexToken),
_order.userTokenAmount,
_order.pionexTokenAmount,
_order.minPionexTokenAmount,
_order.user,
_order.pionex,
_order.salt,
Expand Down
42 changes: 21 additions & 21 deletions test/forkMainnet/PionexContract.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ contract PionexContractTest is StrategySharedSetup {
dai, // userToken
usdt, // pionexToken
100 * 1e18, // userTokenAmount
90 * 1e6, // pionexTokenAmount
90 * 1e6, // minPionexTokenAmount
user, // user
address(0), // pionex
uint256(1001), // salt
Expand All @@ -85,7 +85,7 @@ contract PionexContractTest is StrategySharedSetup {
pionex,
receiver,
DEFAULT_ORDER.userTokenAmount,
DEFAULT_ORDER.pionexTokenAmount,
DEFAULT_ORDER.minPionexTokenAmount,
uint256(1002),
DEADLINE
);
Expand Down Expand Up @@ -652,21 +652,21 @@ contract PionexContractTest is StrategySharedSetup {
address(DEFAULT_ORDER.userToken),
address(DEFAULT_ORDER.pionexToken),
DEFAULT_ORDER.userTokenAmount,
DEFAULT_ORDER.pionexTokenAmount,
0, // remainingAmount should be zero after order fully filled
DEFAULT_ORDER.pionexTokenAmount.mul(10).div(100), // tokenlonFee = 10% pionexTokenAmount
DEFAULT_ORDER.pionexTokenAmount.mul(3).div(100) // pionexStrategyFee = 0.5% + 2.5% = 3% pionexTokenAmount
DEFAULT_ORDER.minPionexTokenAmount,
0, // remainingUserTokenAmount should be zero after order fully filled
DEFAULT_ORDER.minPionexTokenAmount.mul(10).div(100), // tokenlonFee = 10% pionexTokenAmount
DEFAULT_ORDER.minPionexTokenAmount.mul(3).div(100) // pionexStrategyFee = 0.5% + 2.5% = 3% pionexTokenAmount
)
);
vm.prank(pionex, pionex); // Only EOA
userProxy.toLimitOrder(payload);

pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.pionexTokenAmount.mul(97).div(100))); // 3% fee for Pionex is deducted from pionexTokenAmount directly
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.minPionexTokenAmount.mul(97).div(100))); // 3% fee for Pionex is deducted from pionexTokenAmount directly
receiverMakerAsset.assertChange(int256(DEFAULT_ORDER.userTokenAmount));
userTakerAsset.assertChange(int256(DEFAULT_ORDER.pionexTokenAmount.mul(87).div(100))); // 10% fee for Tokenlon and 3% fee for Pionex
userTakerAsset.assertChange(int256(DEFAULT_ORDER.minPionexTokenAmount.mul(87).div(100))); // 10% fee for Tokenlon and 3% fee for Pionex
userMakerAsset.assertChange(-int256(DEFAULT_ORDER.userTokenAmount));
fcMakerAsset.assertChange(0);
fcTakerAsset.assertChange(int256(DEFAULT_ORDER.pionexTokenAmount.mul(10).div(100)));
fcTakerAsset.assertChange(int256(DEFAULT_ORDER.minPionexTokenAmount.mul(10).div(100)));
}

function testFullyFillByTraderWithBetterTakerMakerTokenRatio() public {
Expand Down Expand Up @@ -704,7 +704,7 @@ contract PionexContractTest is StrategySharedSetup {
address(DEFAULT_ORDER.pionexToken),
DEFAULT_ORDER.userTokenAmount,
fill.pionexTokenAmount,
0, // remainingAmount should be zero after order fully filled
0, // remainingUserTokenAmount should be zero after order fully filled
0,
0
)
Expand Down Expand Up @@ -797,7 +797,7 @@ contract PionexContractTest is StrategySharedSetup {
PionexContractLibEIP712.Fill memory fill = DEFAULT_FILL;
// set the fill amount to 2x of order quota
fill.userTokenAmount = DEFAULT_ORDER.userTokenAmount.mul(2);
fill.pionexTokenAmount = DEFAULT_ORDER.pionexTokenAmount.mul(2);
fill.pionexTokenAmount = DEFAULT_ORDER.minPionexTokenAmount.mul(2);

IPionexContract.TraderParams memory traderParams = DEFAULT_TRADER_PARAMS;
traderParams.userTokenAmount = fill.userTokenAmount;
Expand All @@ -815,9 +815,9 @@ contract PionexContractTest is StrategySharedSetup {
userProxy.toLimitOrder(payload);

// Balance change should be bound by order amount (not affected by 2x fill amount)
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.pionexTokenAmount));
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.minPionexTokenAmount));
receiverMakerAsset.assertChange(int256(DEFAULT_ORDER.userTokenAmount));
userTakerAsset.assertChange(int256(DEFAULT_ORDER.pionexTokenAmount));
userTakerAsset.assertChange(int256(DEFAULT_ORDER.minPionexTokenAmount));
userMakerAsset.assertChange(-int256(DEFAULT_ORDER.userTokenAmount));
}

Expand All @@ -830,7 +830,7 @@ contract PionexContractTest is StrategySharedSetup {
PionexContractLibEIP712.Fill memory fill = DEFAULT_FILL;
// set the fill amount to 2x of order quota
fill.userTokenAmount = DEFAULT_ORDER.userTokenAmount.mul(2);
fill.pionexTokenAmount = DEFAULT_ORDER.pionexTokenAmount.mul(2).mul(11).div(10); // 10% more
fill.pionexTokenAmount = DEFAULT_ORDER.minPionexTokenAmount.mul(2).mul(11).div(10); // 10% more

IPionexContract.TraderParams memory traderParams = DEFAULT_TRADER_PARAMS;
traderParams.userTokenAmount = fill.userTokenAmount;
Expand All @@ -848,9 +848,9 @@ contract PionexContractTest is StrategySharedSetup {
userProxy.toLimitOrder(payload);

// Balance change should be bound by order amount (not affected by 2x fill amount)
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.pionexTokenAmount.mul(11).div(10))); // 10% more
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.minPionexTokenAmount.mul(11).div(10))); // 10% more
receiverMakerAsset.assertChange(int256(DEFAULT_ORDER.userTokenAmount));
userTakerAsset.assertChange(int256(DEFAULT_ORDER.pionexTokenAmount.mul(11).div(10))); // 10% more
userTakerAsset.assertChange(int256(DEFAULT_ORDER.minPionexTokenAmount.mul(11).div(10))); // 10% more
userMakerAsset.assertChange(-int256(DEFAULT_ORDER.userTokenAmount));
}

Expand Down Expand Up @@ -900,9 +900,9 @@ contract PionexContractTest is StrategySharedSetup {
userProxy.toLimitOrder(payload2);

// Half of the order filled after 2 txs
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.pionexTokenAmount.div(2)));
pionexTakerAsset.assertChange(-int256(DEFAULT_ORDER.minPionexTokenAmount.div(2)));
receiverMakerAsset.assertChange(int256(DEFAULT_ORDER.userTokenAmount.div(2)));
userTakerAsset.assertChange(int256(DEFAULT_ORDER.pionexTokenAmount.div(2)));
userTakerAsset.assertChange(int256(DEFAULT_ORDER.minPionexTokenAmount.div(2)));
userMakerAsset.assertChange(-int256(DEFAULT_ORDER.userTokenAmount.div(2)));
}

Expand Down Expand Up @@ -964,7 +964,7 @@ contract PionexContractTest is StrategySharedSetup {

function testCannotFillCanceledOrder() public {
PionexContractLibEIP712.Order memory zeroOrder = DEFAULT_ORDER;
zeroOrder.pionexTokenAmount = 0;
zeroOrder.minPionexTokenAmount = 0;

bytes memory cancelPayload = _genCancelLimitOrderPayload(DEFAULT_ORDER, _signOrder(userPrivateKey, zeroOrder, SignatureValidator.SignatureType.EIP712));
vm.prank(pionex, pionex); // Only EOA
Expand All @@ -978,7 +978,7 @@ contract PionexContractTest is StrategySharedSetup {

function testCannotCancelIfNotMaker() public {
PionexContractLibEIP712.Order memory zeroOrder = DEFAULT_ORDER;
zeroOrder.pionexTokenAmount = 0;
zeroOrder.minPionexTokenAmount = 0;

bytes memory cancelPayload = _genCancelLimitOrderPayload(
DEFAULT_ORDER,
Expand All @@ -1001,7 +1001,7 @@ contract PionexContractTest is StrategySharedSetup {

function testCannotCancelTwice() public {
PionexContractLibEIP712.Order memory zeroOrder = DEFAULT_ORDER;
zeroOrder.pionexTokenAmount = 0;
zeroOrder.minPionexTokenAmount = 0;

bytes memory payload = _genCancelLimitOrderPayload(DEFAULT_ORDER, _signOrder(userPrivateKey, zeroOrder, SignatureValidator.SignatureType.EIP712));
vm.prank(pionex, pionex); // Only EOA
Expand Down

0 comments on commit ae44cae

Please sign in to comment.