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);
|
||||
}
|
||||
|
||||
/// @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.
|
||||
/// @param order Order struct containing order specifications.
|
||||
/// @param takerAssetFillAmount Desired amount of takerToken to sell.
|
||||
@@ -450,4 +387,67 @@ contract MixinExchangeCore is
|
||||
|
||||
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)
|
||||
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.
|
||||
/// @param order Order struct containing order specifications.
|
||||
/// @param takerAssetFillAmount Desired amount of takerAsset to sell.
|
||||
@@ -62,4 +48,18 @@ contract IExchangeCore {
|
||||
function cancelOrder(LibOrder.Order memory order)
|
||||
public
|
||||
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