Unused isPending flag on perpetual orders
Note that the isPending flag, which is stored in perpOrders, is unused. We recommend removing it to simplify the code and save gas costs. For example, in the following handler, make these suggested changes:
receive(msg: ExecutePerpOrder) {
let ctx: Context = context();
require(self.executors.exists(ctx.sender), "invalid sender");
let orderOpt: PerpOrder? = self.perpOrders.get(msg.orderId);
require(orderOpt != null, "order not exist");
let order: PerpOrder = orderOpt!!;
require(ctx.value >= self.executePerpOrderGas + self.transferJettonGas, "gas not enough");
- require(!order.isPending, "order is pending");
- order.isPending = true;
- self.perpOrders.set(msg.orderId, order);
if (!(order.opType == OP_TYPE_PERP_INCREASE_MARKET || order.opType == OP_TYPE_PERP_DECREASE_MARKET)){
require(order.triggerAbove ? (msg.price >= order.triggerPrice) : (msg.price <= order.triggerPrice), "not reach trigger price");
}
let extraGas: Int = 0;
let increase: Bool = order.opType == OP_TYPE_PERP_INCREASE_MARKET || order.opType == OP_TYPE_PERP_INCREASE_LIMIT;
// [...]