order cancels
This commit is contained in:
@@ -24,9 +24,7 @@ library OrderLib {
|
|||||||
|
|
||||||
event DexorderSwapFilled (uint64 orderIndex, uint8 trancheIndex, uint256 amountIn, uint256 amountOut);
|
event DexorderSwapFilled (uint64 orderIndex, uint8 trancheIndex, uint256 amountIn, uint256 amountOut);
|
||||||
|
|
||||||
event DexorderSwapCompleted (uint64 orderIndex); // todo remove?
|
event DexorderSwapCanceled (uint64 orderIndex);
|
||||||
|
|
||||||
event DexorderSwapError (uint64 orderIndex, string reason);
|
|
||||||
|
|
||||||
enum SwapOrderState {
|
enum SwapOrderState {
|
||||||
Open, Canceled, Filled, Expired // Expired isn't ever shown on-chain. the Expired state is implied by tranche constraints.
|
Open, Canceled, Filled, Expired // Expired isn't ever shown on-chain. the Expired state is implied by tranche constraints.
|
||||||
@@ -284,7 +282,7 @@ library OrderLib {
|
|||||||
status.trancheFilledIn[trancheIndex] += amountIn;
|
status.trancheFilledIn[trancheIndex] += amountIn;
|
||||||
status.trancheFilledOut[trancheIndex] += amountOut;
|
status.trancheFilledOut[trancheIndex] += amountOut;
|
||||||
emit DexorderSwapFilled(orderIndex, trancheIndex, amountIn, amountOut);
|
emit DexorderSwapFilled(orderIndex, trancheIndex, amountIn, amountOut);
|
||||||
_checkCompleted(self, orderIndex, status);
|
_checkCompleted(self, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -304,11 +302,11 @@ library OrderLib {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _checkCompleted(OrdersInfo storage self, uint64 orderIndex, SwapOrderStatus storage status) internal {
|
function _checkCompleted(OrdersInfo storage self, SwapOrderStatus storage status) internal {
|
||||||
uint256 remaining = status.order.amount - (status.order.amountIsInput ? status.filledIn : status.filledOut);
|
uint256 remaining = status.order.amount - (status.order.amountIsInput ? status.filledIn : status.filledOut);
|
||||||
if( remaining == 0 ) { // todo dust leeway?
|
if( remaining == 0 ) { // todo dust leeway?
|
||||||
status.state = SwapOrderState.Filled;
|
status.state = SwapOrderState.Filled;
|
||||||
emit DexorderSwapCompleted(orderIndex);
|
// we already get fill events so completion may be inferred without an extra Completion event
|
||||||
if( status.ocoGroup != NO_OCO_INDEX)
|
if( status.ocoGroup != NO_OCO_INDEX)
|
||||||
_cancelOco(self, status.ocoGroup);
|
_cancelOco(self, status.ocoGroup);
|
||||||
}
|
}
|
||||||
@@ -327,7 +325,7 @@ library OrderLib {
|
|||||||
SwapOrderState state = self.orders[orderIndex].state;
|
SwapOrderState state = self.orders[orderIndex].state;
|
||||||
if( state == SwapOrderState.Open ) {
|
if( state == SwapOrderState.Open ) {
|
||||||
self.orders[orderIndex].state = SwapOrderState.Canceled;
|
self.orders[orderIndex].state = SwapOrderState.Canceled;
|
||||||
emit DexorderSwapCompleted(orderIndex);
|
emit DexorderSwapCanceled(orderIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ contract Vault {
|
|||||||
return uint64(ordersInfo.orders.length);
|
return uint64(ordersInfo.orders.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo rename using dexorder and inform the method hash registries
|
||||||
function placeOrder(OrderLib.SwapOrder memory order) external onlyOwner {
|
function placeOrder(OrderLib.SwapOrder memory order) external onlyOwner {
|
||||||
console2.log('Vault.placeOrder()');
|
console2.log('Vault.placeOrder()');
|
||||||
ordersInfo._placeOrder(order);
|
ordersInfo._placeOrder(order);
|
||||||
@@ -77,6 +78,12 @@ contract Vault {
|
|||||||
ordersInfo.execute(owner, orderIndex, tranche_index, proof);
|
ordersInfo.execute(owner, orderIndex, tranche_index, proof);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cancelOrder(uint64 orderIndex) external onlyOwner {
|
||||||
|
console2.log('cancelOrder');
|
||||||
|
console2.log(orderIndex);
|
||||||
|
ordersInfo._cancelOrder(orderIndex);
|
||||||
|
}
|
||||||
|
|
||||||
modifier onlyOwner() {
|
modifier onlyOwner() {
|
||||||
require(msg.sender == owner);
|
require(msg.sender == owner);
|
||||||
_;
|
_;
|
||||||
|
|||||||
Reference in New Issue
Block a user