Reordered functions in mixin exchange core -- getOrderInfo is at the bottom
This commit is contained in:
		@@ -67,69 +67,6 @@ contract MixinExchangeCore is
 | 
				
			|||||||
        emit CancelUpTo(msg.sender, newMakerEpoch);
 | 
					        emit CancelUpTo(msg.sender, newMakerEpoch);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// @dev Gets information about an order: status, hash, and amount filled.
 | 
					 | 
				
			||||||
    /// @param order Order to gather information on.
 | 
					 | 
				
			||||||
    /// @return status Status of order. Statuses are defined in the LibStatus.Status struct.
 | 
					 | 
				
			||||||
    /// @return orderHash Keccak-256 EIP712 hash of the order.
 | 
					 | 
				
			||||||
    /// @return takerAssetFilledAmount Amount of order that has been filled.
 | 
					 | 
				
			||||||
    function getOrderInfo(Order memory order)
 | 
					 | 
				
			||||||
        public
 | 
					 | 
				
			||||||
        view
 | 
					 | 
				
			||||||
        returns (
 | 
					 | 
				
			||||||
            uint8 orderStatus,
 | 
					 | 
				
			||||||
            bytes32 orderHash,
 | 
					 | 
				
			||||||
            uint256 takerAssetFilledAmount
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // Compute the order hash
 | 
					 | 
				
			||||||
        orderHash = getOrderHash(order);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // If order.makerAssetAmount is zero, we also reject the order.
 | 
					 | 
				
			||||||
        // While the Exchange contract handles them correctly, they create
 | 
					 | 
				
			||||||
        // edge cases in the supporting infrastructure because they have
 | 
					 | 
				
			||||||
        // an 'infinite' price when computed by a simple division.
 | 
					 | 
				
			||||||
        if (order.makerAssetAmount == 0) {
 | 
					 | 
				
			||||||
            orderStatus = uint8(Status.ORDER_INVALID_MAKER_ASSET_AMOUNT);
 | 
					 | 
				
			||||||
            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // If order.takerAssetAmount is zero, then the order will always
 | 
					 | 
				
			||||||
        // be considered filled because 0 == takerAssetAmount == takerAssetFilledAmount
 | 
					 | 
				
			||||||
        // Instead of distinguishing between unfilled and filled zero taker
 | 
					 | 
				
			||||||
        // amount orders, we choose not to support them.
 | 
					 | 
				
			||||||
        if (order.takerAssetAmount == 0) {
 | 
					 | 
				
			||||||
            orderStatus = uint8(Status.ORDER_INVALID_TAKER_ASSET_AMOUNT);
 | 
					 | 
				
			||||||
            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Validate order expiration
 | 
					 | 
				
			||||||
        if (block.timestamp >= order.expirationTimeSeconds) {
 | 
					 | 
				
			||||||
            orderStatus = uint8(Status.ORDER_EXPIRED);
 | 
					 | 
				
			||||||
            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Check if order has been cancelled
 | 
					 | 
				
			||||||
        if (cancelled[orderHash]) {
 | 
					 | 
				
			||||||
            orderStatus = uint8(Status.ORDER_CANCELLED);
 | 
					 | 
				
			||||||
            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (makerEpoch[order.makerAddress] > order.salt) {
 | 
					 | 
				
			||||||
            orderStatus = uint8(Status.ORDER_CANCELLED);
 | 
					 | 
				
			||||||
            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Fetch filled amount and validate order availability
 | 
					 | 
				
			||||||
        takerAssetFilledAmount = filled[orderHash];
 | 
					 | 
				
			||||||
        if (takerAssetFilledAmount >= order.takerAssetAmount) {
 | 
					 | 
				
			||||||
            orderStatus = uint8(Status.ORDER_FULLY_FILLED);
 | 
					 | 
				
			||||||
            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // All other statuses are ruled out: order is Fillable
 | 
					 | 
				
			||||||
        orderStatus = uint8(Status.ORDER_FILLABLE);
 | 
					 | 
				
			||||||
        return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /// @dev Fills the input order.
 | 
					    /// @dev Fills the input order.
 | 
				
			||||||
    /// @param order Order struct containing order specifications.
 | 
					    /// @param order Order struct containing order specifications.
 | 
				
			||||||
    /// @param takerAssetFillAmount Desired amount of takerToken to sell.
 | 
					    /// @param takerAssetFillAmount Desired amount of takerToken to sell.
 | 
				
			||||||
@@ -450,4 +387,67 @@ contract MixinExchangeCore is
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return stateUpdated;
 | 
					        return stateUpdated;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// @dev Gets information about an order: status, hash, and amount filled.
 | 
				
			||||||
 | 
					    /// @param order Order to gather information on.
 | 
				
			||||||
 | 
					    /// @return status Status of order. Statuses are defined in the LibStatus.Status struct.
 | 
				
			||||||
 | 
					    /// @return orderHash Keccak-256 EIP712 hash of the order.
 | 
				
			||||||
 | 
					    /// @return takerAssetFilledAmount Amount of order that has been filled.
 | 
				
			||||||
 | 
					    function getOrderInfo(Order memory order)
 | 
				
			||||||
 | 
					        public
 | 
				
			||||||
 | 
					        view
 | 
				
			||||||
 | 
					        returns (
 | 
				
			||||||
 | 
					            uint8 orderStatus,
 | 
				
			||||||
 | 
					            bytes32 orderHash,
 | 
				
			||||||
 | 
					            uint256 takerAssetFilledAmount
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Compute the order hash
 | 
				
			||||||
 | 
					        orderHash = getOrderHash(order);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // If order.makerAssetAmount is zero, we also reject the order.
 | 
				
			||||||
 | 
					        // While the Exchange contract handles them correctly, they create
 | 
				
			||||||
 | 
					        // edge cases in the supporting infrastructure because they have
 | 
				
			||||||
 | 
					        // an 'infinite' price when computed by a simple division.
 | 
				
			||||||
 | 
					        if (order.makerAssetAmount == 0) {
 | 
				
			||||||
 | 
					            orderStatus = uint8(Status.ORDER_INVALID_MAKER_ASSET_AMOUNT);
 | 
				
			||||||
 | 
					            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // If order.takerAssetAmount is zero, then the order will always
 | 
				
			||||||
 | 
					        // be considered filled because 0 == takerAssetAmount == takerAssetFilledAmount
 | 
				
			||||||
 | 
					        // Instead of distinguishing between unfilled and filled zero taker
 | 
				
			||||||
 | 
					        // amount orders, we choose not to support them.
 | 
				
			||||||
 | 
					        if (order.takerAssetAmount == 0) {
 | 
				
			||||||
 | 
					            orderStatus = uint8(Status.ORDER_INVALID_TAKER_ASSET_AMOUNT);
 | 
				
			||||||
 | 
					            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Validate order expiration
 | 
				
			||||||
 | 
					        if (block.timestamp >= order.expirationTimeSeconds) {
 | 
				
			||||||
 | 
					            orderStatus = uint8(Status.ORDER_EXPIRED);
 | 
				
			||||||
 | 
					            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Check if order has been cancelled
 | 
				
			||||||
 | 
					        if (cancelled[orderHash]) {
 | 
				
			||||||
 | 
					            orderStatus = uint8(Status.ORDER_CANCELLED);
 | 
				
			||||||
 | 
					            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (makerEpoch[order.makerAddress] > order.salt) {
 | 
				
			||||||
 | 
					            orderStatus = uint8(Status.ORDER_CANCELLED);
 | 
				
			||||||
 | 
					            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Fetch filled amount and validate order availability
 | 
				
			||||||
 | 
					        takerAssetFilledAmount = filled[orderHash];
 | 
				
			||||||
 | 
					        if (takerAssetFilledAmount >= order.takerAssetAmount) {
 | 
				
			||||||
 | 
					            orderStatus = uint8(Status.ORDER_FULLY_FILLED);
 | 
				
			||||||
 | 
					            return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // All other statuses are ruled out: order is Fillable
 | 
				
			||||||
 | 
					        orderStatus = uint8(Status.ORDER_FILLABLE);
 | 
				
			||||||
 | 
					        return (orderStatus, orderHash, takerAssetFilledAmount);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,20 +29,6 @@ contract IExchangeCore {
 | 
				
			|||||||
    function cancelOrdersUpTo(uint256 salt)
 | 
					    function cancelOrdersUpTo(uint256 salt)
 | 
				
			||||||
        external;
 | 
					        external;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// @dev Gets information about an order: status, hash, and amount filled.
 | 
					 | 
				
			||||||
    /// @param order Order to gather information on.
 | 
					 | 
				
			||||||
    /// @return status Status of order. Statuses are defined in the LibStatus.Status struct.
 | 
					 | 
				
			||||||
    /// @return orderHash Keccak-256 EIP712 hash of the order.
 | 
					 | 
				
			||||||
    /// @return takerAssetFilledAmount Amount of order that has been filled.
 | 
					 | 
				
			||||||
    function getOrderInfo(LibOrder.Order memory order)
 | 
					 | 
				
			||||||
        public
 | 
					 | 
				
			||||||
        view
 | 
					 | 
				
			||||||
        returns (
 | 
					 | 
				
			||||||
            uint8 orderStatus,
 | 
					 | 
				
			||||||
            bytes32 orderHash,
 | 
					 | 
				
			||||||
            uint256 takerAssetFilledAmount
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /// @dev Fills the input order.
 | 
					    /// @dev Fills the input order.
 | 
				
			||||||
    /// @param order Order struct containing order specifications.
 | 
					    /// @param order Order struct containing order specifications.
 | 
				
			||||||
    /// @param takerAssetFillAmount Desired amount of takerAsset to sell.
 | 
					    /// @param takerAssetFillAmount Desired amount of takerAsset to sell.
 | 
				
			||||||
@@ -62,4 +48,18 @@ contract IExchangeCore {
 | 
				
			|||||||
    function cancelOrder(LibOrder.Order memory order)
 | 
					    function cancelOrder(LibOrder.Order memory order)
 | 
				
			||||||
        public
 | 
					        public
 | 
				
			||||||
        returns (bool);
 | 
					        returns (bool);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// @dev Gets information about an order: status, hash, and amount filled.
 | 
				
			||||||
 | 
					    /// @param order Order to gather information on.
 | 
				
			||||||
 | 
					    /// @return status Status of order. Statuses are defined in the LibStatus.Status struct.
 | 
				
			||||||
 | 
					    /// @return orderHash Keccak-256 EIP712 hash of the order.
 | 
				
			||||||
 | 
					    /// @return takerAssetFilledAmount Amount of order that has been filled.
 | 
				
			||||||
 | 
					    function getOrderInfo(LibOrder.Order memory order)
 | 
				
			||||||
 | 
					        public
 | 
				
			||||||
 | 
					        view
 | 
				
			||||||
 | 
					        returns (
 | 
				
			||||||
 | 
					            uint8 orderStatus,
 | 
				
			||||||
 | 
					            bytes32 orderHash,
 | 
				
			||||||
 | 
					            uint256 takerAssetFilledAmount
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user