Make all cancels permissionless
This commit is contained in:
		@@ -94,5 +94,12 @@ contract MixinSignatureValidator {
 | 
			
		||||
            );
 | 
			
		||||
            return signerAddress;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Anything else is illegal (We do not return false because
 | 
			
		||||
        // the signature may actually be valid, just not in a format
 | 
			
		||||
        // that we currently support. In this case returning false
 | 
			
		||||
        // may lead the caller to incorrectly believe that the
 | 
			
		||||
        // signature was invalid.)
 | 
			
		||||
        revert("SIGNATURE_UNSUPPORTED");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -63,8 +63,7 @@ contract MixinTECApprovalVerifier is
 | 
			
		||||
        if (
 | 
			
		||||
            exchangeFunctionSelector == FILL_ORDER_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == FILL_ORDER_NO_THROW_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == FILL_OR_KILL_ORDER_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == CANCEL_ORDER_SELECTOR
 | 
			
		||||
            exchangeFunctionSelector == FILL_OR_KILL_ORDER_SELECTOR
 | 
			
		||||
        ) {
 | 
			
		||||
            // Decode single order
 | 
			
		||||
            (LibOrder.Order memory order) = abi.decode(
 | 
			
		||||
@@ -87,8 +86,7 @@ contract MixinTECApprovalVerifier is
 | 
			
		||||
            exchangeFunctionSelector == MARKET_BUY_ORDERS_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == MARKET_SELL_ORDERS_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == BATCH_CANCEL_ORDERS_SELECTOR
 | 
			
		||||
            exchangeFunctionSelector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR
 | 
			
		||||
        ) {
 | 
			
		||||
            // Decode all orders
 | 
			
		||||
            (LibOrder.Order[] memory orders) = abi.decode(
 | 
			
		||||
@@ -124,8 +122,12 @@ contract MixinTECApprovalVerifier is
 | 
			
		||||
                approvalExpirationTimeSeconds,
 | 
			
		||||
                approvalSignatures
 | 
			
		||||
            );
 | 
			
		||||
        } else if (exchangeFunctionSelector == CANCEL_ORDERS_UP_TO_SELECTOR) {
 | 
			
		||||
            // `cancelOrdersUpTo` is always permitted
 | 
			
		||||
        } else if (
 | 
			
		||||
            exchangeFunctionSelector == CANCEL_ORDERS_UP_TO_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == CANCEL_ORDER_SELECTOR ||
 | 
			
		||||
            exchangeFunctionSelector == BATCH_CANCEL_ORDERS_SELECTOR
 | 
			
		||||
        ) {
 | 
			
		||||
            // All cancel functions are always permitted
 | 
			
		||||
            return;
 | 
			
		||||
        } else {
 | 
			
		||||
            revert("INVALID_OR_BLOCKED_EXCHANGE_SELECTOR");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user