Skip to content

Commit 928094c

Browse files
committed
Rename maker -> user; taker -> pionex
1 parent d0781c8 commit 928094c

File tree

4 files changed

+323
-326
lines changed

4 files changed

+323
-326
lines changed

contracts/PionexContract.sol

Lines changed: 88 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import "./utils/PionexContractLibEIP712.sol";
2020
import "./utils/SignatureValidator.sol";
2121

2222
/// @title Pionex Contract
23-
/// @notice Modified from LimitOrder contract. Maker is user, taker is Pionex agent.
24-
/// @notice Order can be filled as long as the provided takerToken/makerToken ratio is better than or equal to maker's specfied takerToken/makerToken ratio.
23+
/// @notice Modified from LimitOrder contract. Maker is user, pionex is Pionex agent.
24+
/// @notice Order can be filled as long as the provided pionexToken/userToken ratio is better than or equal to user's specfied pionexToken/userToken ratio.
2525
/// @author imToken Labs
2626
contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, SignatureValidator, ReentrancyGuard {
2727
using SafeMath for uint256;
@@ -35,7 +35,7 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
3535

3636
// Factors
3737
uint256 public factorsTimeLock;
38-
uint16 public makerFeeFactor = 0;
38+
uint16 public userFeeFactor = 0;
3939
uint16 public pendingMakerFeeFactor;
4040

4141
constructor(
@@ -65,11 +65,11 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
6565
}
6666

6767
/// @notice Only owner can call
68-
/// @param _makerFeeFactor The new fee factor for maker
69-
function setFactors(uint16 _makerFeeFactor) external onlyOwner {
70-
require(_makerFeeFactor <= LibConstant.BPS_MAX, "LimitOrder: Invalid maker fee factor");
68+
/// @param _userFeeFactor The new fee factor for user
69+
function setFactors(uint16 _userFeeFactor) external onlyOwner {
70+
require(_userFeeFactor <= LibConstant.BPS_MAX, "LimitOrder: Invalid user fee factor");
7171

72-
pendingMakerFeeFactor = _makerFeeFactor;
72+
pendingMakerFeeFactor = _userFeeFactor;
7373

7474
factorsTimeLock = block.timestamp + factorActivateDelay;
7575
}
@@ -79,10 +79,10 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
7979
require(factorsTimeLock != 0, "LimitOrder: no pending fee factors");
8080
require(block.timestamp >= factorsTimeLock, "LimitOrder: fee factors timelocked");
8181
factorsTimeLock = 0;
82-
makerFeeFactor = pendingMakerFeeFactor;
82+
userFeeFactor = pendingMakerFeeFactor;
8383
pendingMakerFeeFactor = 0;
8484

85-
emit FactorsUpdated(makerFeeFactor);
85+
emit FactorsUpdated(userFeeFactor);
8686
}
8787

8888
/// @notice Only owner can call
@@ -104,69 +104,69 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
104104
bytes32 orderHash = getEIP712Hash(PionexContractLibEIP712._getOrderStructHash(_order));
105105

106106
_validateOrder(_order, orderHash, _orderMakerSig);
107-
bytes32 allowFillHash = _validateFillPermission(orderHash, _params.takerTokenAmount, _params.taker, _crdParams);
108-
_validateOrderTaker(_order, _params.taker);
107+
bytes32 allowFillHash = _validateFillPermission(orderHash, _params.pionexTokenAmount, _params.pionex, _crdParams);
108+
_validateOrderTaker(_order, _params.pionex);
109109

110-
// Check provided takerToken/makerToken ratio is better than or equal to maker's specfied takerToken/makerToken ratio
111-
// -> _params.takerTokenAmount/_params.makerTokenAmount >= _order.takerTokenAmount/_order.makerTokenAmount
110+
// Check provided pionexToken/userToken ratio is better than or equal to user's specfied pionexToken/userToken ratio
111+
// -> _params.pionexTokenAmount/_params.userTokenAmount >= _order.pionexTokenAmount/_order.userTokenAmount
112112
require(
113-
_params.takerTokenAmount.mul(_order.makerTokenAmount) >= _order.takerTokenAmount.mul(_params.makerTokenAmount),
114-
"LimitOrder: taker/maker token ratio not good enough"
113+
_params.pionexTokenAmount.mul(_order.userTokenAmount) >= _order.pionexTokenAmount.mul(_params.userTokenAmount),
114+
"LimitOrder: pionex/user token ratio not good enough"
115115
);
116116
// Check gas fee factor and pionex strategy fee factor do not exceed limit
117117
require(
118118
(_params.gasFeeFactor <= LibConstant.BPS_MAX) &&
119119
(_params.pionexStrategyFeeFactor <= LibConstant.BPS_MAX) &&
120-
(_params.gasFeeFactor + _params.pionexStrategyFeeFactor <= LibConstant.BPS_MAX - makerFeeFactor),
120+
(_params.gasFeeFactor + _params.pionexStrategyFeeFactor <= LibConstant.BPS_MAX - userFeeFactor),
121121
"LimitOrder: Invalid pionex fee factor"
122122
);
123123

124124
{
125125
PionexContractLibEIP712.Fill memory fill = PionexContractLibEIP712.Fill({
126126
orderHash: orderHash,
127-
taker: _params.taker,
127+
pionex: _params.pionex,
128128
recipient: _params.recipient,
129-
makerTokenAmount: _params.makerTokenAmount,
130-
takerTokenAmount: _params.takerTokenAmount,
131-
takerSalt: _params.salt,
129+
userTokenAmount: _params.userTokenAmount,
130+
pionexTokenAmount: _params.pionexTokenAmount,
131+
pionexSalt: _params.salt,
132132
expiry: _params.expiry
133133
});
134-
_validateTraderFill(fill, _params.takerSig);
134+
_validateTraderFill(fill, _params.pionexSig);
135135
}
136136

137-
(uint256 makerTokenAmount, uint256 remainingAmount) = _quoteOrderFromMakerToken(_order, orderHash, _params.makerTokenAmount);
138-
// Calculate takerTokenAmount according to the provided takerToken/makerToken ratio
139-
uint256 takerTokenAmount = makerTokenAmount.mul(_params.takerTokenAmount).div(_params.makerTokenAmount);
137+
(uint256 userTokenAmount, uint256 remainingAmount) = _quoteOrderFromMakerToken(_order, orderHash, _params.userTokenAmount);
138+
// Calculate pionexTokenAmount according to the provided pionexToken/userToken ratio
139+
uint256 pionexTokenAmount = userTokenAmount.mul(_params.pionexTokenAmount).div(_params.userTokenAmount);
140140

141-
uint256 makerTokenOut = _settleForTrader(
141+
uint256 userTokenOut = _settleForTrader(
142142
TraderSettlement({
143143
orderHash: orderHash,
144144
allowFillHash: allowFillHash,
145-
trader: _params.taker,
145+
trader: _params.pionex,
146146
recipient: _params.recipient,
147-
maker: _order.maker,
148-
taker: _order.taker,
149-
makerToken: _order.makerToken,
150-
takerToken: _order.takerToken,
151-
makerTokenAmount: makerTokenAmount,
152-
takerTokenAmount: takerTokenAmount,
147+
user: _order.user,
148+
pionex: _order.pionex,
149+
userToken: _order.userToken,
150+
pionexToken: _order.pionexToken,
151+
userTokenAmount: userTokenAmount,
152+
pionexTokenAmount: pionexTokenAmount,
153153
remainingAmount: remainingAmount,
154154
gasFeeFactor: _params.gasFeeFactor,
155155
pionexStrategyFeeFactor: _params.pionexStrategyFeeFactor
156156
})
157157
);
158158

159-
_recordMakerTokenFilled(orderHash, makerTokenAmount);
159+
_recordMakerTokenFilled(orderHash, userTokenAmount);
160160

161-
return (takerTokenAmount, makerTokenOut);
161+
return (pionexTokenAmount, userTokenOut);
162162
}
163163

164164
function _validateTraderFill(PionexContractLibEIP712.Fill memory _fill, bytes memory _fillTakerSig) internal {
165165
require(_fill.expiry > uint64(block.timestamp), "LimitOrder: Fill request is expired");
166166
require(_fill.recipient != address(0), "LimitOrder: recipient can not be zero address");
167167

168168
bytes32 fillHash = getEIP712Hash(PionexContractLibEIP712._getFillStructHash(_fill));
169-
require(isValidSignature(_fill.taker, fillHash, bytes(""), _fillTakerSig), "LimitOrder: Fill is not signed by taker");
169+
require(isValidSignature(_fill.pionex, fillHash, bytes(""), _fillTakerSig), "LimitOrder: Fill is not signed by pionex");
170170

171171
// Set fill seen to avoid replay attack.
172172
// PermanentStorage would throw error if fill is already seen.
@@ -206,12 +206,12 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
206206
bytes32 allowFillHash;
207207
address trader;
208208
address recipient;
209-
address maker;
210-
address taker;
211-
IERC20 makerToken;
212-
IERC20 takerToken;
213-
uint256 makerTokenAmount;
214-
uint256 takerTokenAmount;
209+
address user;
210+
address pionex;
211+
IERC20 userToken;
212+
IERC20 pionexToken;
213+
uint256 userTokenAmount;
214+
uint256 pionexTokenAmount;
215215
uint256 remainingAmount;
216216
uint16 gasFeeFactor;
217217
uint16 pionexStrategyFeeFactor;
@@ -222,43 +222,43 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
222222
ISpender _spender = spender;
223223
address _feeCollector = feeCollector;
224224

225-
// Calculate maker fee (maker receives taker token so fee is charged in taker token)
225+
// Calculate user fee (user receives pionex token so fee is charged in pionex token)
226226
// 1. Fee for Tokenlon
227-
uint256 tokenlonFee = _mulFactor(_settlement.takerTokenAmount, makerFeeFactor);
227+
uint256 tokenlonFee = _mulFactor(_settlement.pionexTokenAmount, userFeeFactor);
228228
// 2. Fee for Pionex, including gas fee and strategy fee
229-
uint256 pionexFee = _mulFactor(_settlement.takerTokenAmount, _settlement.gasFeeFactor + _settlement.pionexStrategyFeeFactor);
230-
uint256 takerTokenForMaker = _settlement.takerTokenAmount.sub(tokenlonFee).sub(pionexFee);
229+
uint256 pionexFee = _mulFactor(_settlement.pionexTokenAmount, _settlement.gasFeeFactor + _settlement.pionexStrategyFeeFactor);
230+
uint256 pionexTokenForMaker = _settlement.pionexTokenAmount.sub(tokenlonFee).sub(pionexFee);
231231

232-
// trader -> maker
233-
_spender.spendFromUserTo(_settlement.trader, address(_settlement.takerToken), _settlement.maker, takerTokenForMaker);
232+
// trader -> user
233+
_spender.spendFromUserTo(_settlement.trader, address(_settlement.pionexToken), _settlement.user, pionexTokenForMaker);
234234

235-
// maker -> recipient
236-
_spender.spendFromUserTo(_settlement.maker, address(_settlement.makerToken), _settlement.recipient, _settlement.makerTokenAmount);
235+
// user -> recipient
236+
_spender.spendFromUserTo(_settlement.user, address(_settlement.userToken), _settlement.recipient, _settlement.userTokenAmount);
237237

238-
// Collect maker fee (charged in taker token)
238+
// Collect user fee (charged in pionex token)
239239
if (tokenlonFee > 0) {
240-
_spender.spendFromUserTo(_settlement.trader, address(_settlement.takerToken), _feeCollector, tokenlonFee);
240+
_spender.spendFromUserTo(_settlement.trader, address(_settlement.pionexToken), _feeCollector, tokenlonFee);
241241
}
242242

243243
// bypass stack too deep error
244244
_emitLimitOrderFilledByTrader(
245245
LimitOrderFilledByTraderParams({
246246
orderHash: _settlement.orderHash,
247-
maker: _settlement.maker,
248-
taker: _settlement.trader,
247+
user: _settlement.user,
248+
pionex: _settlement.trader,
249249
allowFillHash: _settlement.allowFillHash,
250250
recipient: _settlement.recipient,
251-
makerToken: address(_settlement.makerToken),
252-
takerToken: address(_settlement.takerToken),
253-
makerTokenFilledAmount: _settlement.makerTokenAmount,
254-
takerTokenFilledAmount: _settlement.takerTokenAmount,
251+
userToken: address(_settlement.userToken),
252+
pionexToken: address(_settlement.pionexToken),
253+
userTokenFilledAmount: _settlement.userTokenAmount,
254+
pionexTokenFilledAmount: _settlement.pionexTokenAmount,
255255
remainingAmount: _settlement.remainingAmount,
256256
tokenlonFee: tokenlonFee,
257257
pionexFee: pionexFee
258258
})
259259
);
260260

261-
return _settlement.makerTokenAmount;
261+
return _settlement.userTokenAmount;
262262
}
263263

264264
/// @inheritdoc IPionexContract
@@ -269,15 +269,15 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
269269
require(!isCancelled, "LimitOrder: Order is cancelled already");
270270
{
271271
PionexContractLibEIP712.Order memory cancelledOrder = _order;
272-
cancelledOrder.takerTokenAmount = 0;
272+
cancelledOrder.pionexTokenAmount = 0;
273273

274274
bytes32 cancelledOrderHash = getEIP712Hash(PionexContractLibEIP712._getOrderStructHash(cancelledOrder));
275-
require(isValidSignature(_order.maker, cancelledOrderHash, bytes(""), _cancelOrderMakerSig), "LimitOrder: Cancel request is not signed by maker");
275+
require(isValidSignature(_order.user, cancelledOrderHash, bytes(""), _cancelOrderMakerSig), "LimitOrder: Cancel request is not signed by user");
276276
}
277277

278278
// Set cancelled state to storage
279279
LibPionexContractOrderStorage.getStorage().orderHashToCancelled[orderHash] = true;
280-
emit OrderCancelled(orderHash, _order.maker);
280+
emit OrderCancelled(orderHash, _order.user);
281281
}
282282

283283
/* order utils */
@@ -291,36 +291,36 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
291291
bool isCancelled = LibPionexContractOrderStorage.getStorage().orderHashToCancelled[_orderHash];
292292
require(!isCancelled, "LimitOrder: Order is cancelled");
293293

294-
require(isValidSignature(_order.maker, _orderHash, bytes(""), _orderMakerSig), "LimitOrder: Order is not signed by maker");
294+
require(isValidSignature(_order.user, _orderHash, bytes(""), _orderMakerSig), "LimitOrder: Order is not signed by user");
295295
}
296296

297-
function _validateOrderTaker(PionexContractLibEIP712.Order memory _order, address _taker) internal pure {
298-
if (_order.taker != address(0)) {
299-
require(_order.taker == _taker, "LimitOrder: Order cannot be filled by this taker");
297+
function _validateOrderTaker(PionexContractLibEIP712.Order memory _order, address _pionex) internal pure {
298+
if (_order.pionex != address(0)) {
299+
require(_order.pionex == _pionex, "LimitOrder: Order cannot be filled by this pionex");
300300
}
301301
}
302302

303303
function _quoteOrderFromMakerToken(
304304
PionexContractLibEIP712.Order memory _order,
305305
bytes32 _orderHash,
306-
uint256 _makerTokenAmount
306+
uint256 _userTokenAmount
307307
) internal view returns (uint256, uint256) {
308-
uint256 makerTokenFilledAmount = LibPionexContractOrderStorage.getStorage().orderHashToMakerTokenFilledAmount[_orderHash];
308+
uint256 userTokenFilledAmount = LibPionexContractOrderStorage.getStorage().orderHashToMakerTokenFilledAmount[_orderHash];
309309

310-
require(makerTokenFilledAmount < _order.makerTokenAmount, "LimitOrder: Order is filled");
310+
require(userTokenFilledAmount < _order.userTokenAmount, "LimitOrder: Order is filled");
311311

312-
uint256 makerTokenFillableAmount = _order.makerTokenAmount.sub(makerTokenFilledAmount);
313-
uint256 makerTokenQuota = Math.min(_makerTokenAmount, makerTokenFillableAmount);
314-
uint256 remainingAfterFill = makerTokenFillableAmount.sub(makerTokenQuota);
312+
uint256 userTokenFillableAmount = _order.userTokenAmount.sub(userTokenFilledAmount);
313+
uint256 userTokenQuota = Math.min(_userTokenAmount, userTokenFillableAmount);
314+
uint256 remainingAfterFill = userTokenFillableAmount.sub(userTokenQuota);
315315

316-
require(makerTokenQuota != 0, "LimitOrder: zero token amount");
317-
return (makerTokenQuota, remainingAfterFill);
316+
require(userTokenQuota != 0, "LimitOrder: zero token amount");
317+
return (userTokenQuota, remainingAfterFill);
318318
}
319319

320-
function _recordMakerTokenFilled(bytes32 _orderHash, uint256 _makerTokenAmount) internal {
320+
function _recordMakerTokenFilled(bytes32 _orderHash, uint256 _userTokenAmount) internal {
321321
LibPionexContractOrderStorage.Storage storage stor = LibPionexContractOrderStorage.getStorage();
322-
uint256 makerTokenFilledAmount = stor.orderHashToMakerTokenFilledAmount[_orderHash];
323-
stor.orderHashToMakerTokenFilledAmount[_orderHash] = makerTokenFilledAmount.add(_makerTokenAmount);
322+
uint256 userTokenFilledAmount = stor.orderHashToMakerTokenFilledAmount[_orderHash];
323+
stor.orderHashToMakerTokenFilledAmount[_orderHash] = userTokenFilledAmount.add(_userTokenAmount);
324324
}
325325

326326
/* math utils */
@@ -333,14 +333,14 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
333333

334334
struct LimitOrderFilledByTraderParams {
335335
bytes32 orderHash;
336-
address maker;
337-
address taker;
336+
address user;
337+
address pionex;
338338
bytes32 allowFillHash;
339339
address recipient;
340-
address makerToken;
341-
address takerToken;
342-
uint256 makerTokenFilledAmount;
343-
uint256 takerTokenFilledAmount;
340+
address userToken;
341+
address pionexToken;
342+
uint256 userTokenFilledAmount;
343+
uint256 pionexTokenFilledAmount;
344344
uint256 remainingAmount;
345345
uint256 tokenlonFee;
346346
uint256 pionexFee;
@@ -349,15 +349,15 @@ contract PionexContract is IPionexContract, StrategyBase, BaseLibEIP712, Signatu
349349
function _emitLimitOrderFilledByTrader(LimitOrderFilledByTraderParams memory _params) internal {
350350
emit LimitOrderFilledByTrader(
351351
_params.orderHash,
352-
_params.maker,
353-
_params.taker,
352+
_params.user,
353+
_params.pionex,
354354
_params.allowFillHash,
355355
_params.recipient,
356356
FillReceipt({
357-
makerToken: _params.makerToken,
358-
takerToken: _params.takerToken,
359-
makerTokenFilledAmount: _params.makerTokenFilledAmount,
360-
takerTokenFilledAmount: _params.takerTokenFilledAmount,
357+
userToken: _params.userToken,
358+
pionexToken: _params.pionexToken,
359+
userTokenFilledAmount: _params.userTokenFilledAmount,
360+
pionexTokenFilledAmount: _params.pionexTokenFilledAmount,
361361
remainingAmount: _params.remainingAmount,
362362
tokenlonFee: _params.tokenlonFee,
363363
pionexFee: _params.pionexFee

0 commit comments

Comments
 (0)