function cancelOrder(uint[3] order, bytes32 r, bytes32 s, uint8 v) external {
        Order memory o = parseOrder(order);

        
        require(validateOrderSig(o, r, s, v));
        require(o.addr == msg.sender);

        if (block.timestamp < o.expiry) {
            filledAmounts[o.orderHash] = o.amount;
            LogOrderCancel(msg.sender, o.matchId, o.orderHash);
        }
    }