Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions solidity/contracts/peripherals/Auction.sol
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: UNICENSE
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.33;
uint256 constant AUCTION_TIME = 1 weeks;

Expand Down Expand Up @@ -39,12 +39,12 @@ contract Auction {
emit AuctionStarted(ethAmountToBuy, repAvailable);
}

function finalizeAuction() public {
function finalizeAuction(address receiver) public {
//require(block.timestamp > auctionStarted + AUCTION_TIME, 'Auction needs to have ended first'); // caller checks
require(msg.sender == owner, 'Only owner can finalize');
require(!finalized, 'Already finalized');
finalized = true;
(bool sent, ) = payable(owner).call{value: address(this).balance}('');
(bool sent, ) = payable(receiver).call{value: address(this).balance}('');
require(sent, 'Failed to send Ether');
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: UNICENSE
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.33;

import { IWeth9 } from './interfaces/IWeth9.sol';
Expand Down Expand Up @@ -37,7 +37,7 @@ contract PriceOracleManagerAndOperatorQueuer {
OpenOracle public immutable openOracle;

event PriceReported(uint256 reportId, uint256 price);
event ExecutetedQueuedOperation(uint256 operationId, OperationType operation, bool success, string errorMessage);
event ExecutedQueuedOperation(uint256 operationId, OperationType operation, bool success, string errorMessage);

// operation queuing
uint256 public previousQueuedOperationId;
Expand Down Expand Up @@ -125,32 +125,42 @@ contract PriceOracleManagerAndOperatorQueuer {
queuedPendingOperationId = previousQueuedOperationId;
requestPrice();
}
// send rest of the eth back
(bool sent, ) = payable(msg.sender).call{ value: address(this).balance }('');
require(sent, 'Failed to return eth');
}

function executeQueuedOperation(uint256 operationId) public {
require(queuedOperations[operationId].amount > 0, 'no such operation or already executed');
require(isPriceValid(), 'price is not valid to execute');
uint256 amount = queuedOperations[operationId].amount;
queuedOperations[operationId].amount = 0;
// todo, we should allow these operations here to fail, but solidity try catch doesnt work inside the same contract
if (queuedOperations[operationId].operation == OperationType.Liquidation) {
try securityPool.performLiquidation(queuedOperations[operationId].initiatorVault, queuedOperations[operationId].targetVault, queuedOperations[operationId].amount) {
emit ExecutetedQueuedOperation(operationId, queuedOperations[operationId].operation, true, '');
try securityPool.performLiquidation(queuedOperations[operationId].initiatorVault, queuedOperations[operationId].targetVault, amount) {
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, true, '');
} catch Error(string memory reason) {
emit ExecutetedQueuedOperation(operationId, queuedOperations[operationId].operation, false, reason);
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, false, reason);
} catch (bytes memory lowLevelData) {
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, false, 'Unknown error');
}
} else if(queuedOperations[operationId].operation == OperationType.WithdrawRep) {
try securityPool.performWithdrawRep(queuedOperations[operationId].initiatorVault, queuedOperations[operationId].amount) {
emit ExecutetedQueuedOperation(operationId, queuedOperations[operationId].operation, true, '');
try securityPool.performWithdrawRep(queuedOperations[operationId].initiatorVault, amount) {
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, true, '');
} catch Error(string memory reason) {
emit ExecutetedQueuedOperation(operationId, queuedOperations[operationId].operation, false, reason);
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, false, reason);
} catch (bytes memory lowLevelData) {
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, false, 'Unknown error');
}
} else {
try securityPool.performSetSecurityBondsAllowance(queuedOperations[operationId].initiatorVault, queuedOperations[operationId].amount) {
emit ExecutetedQueuedOperation(operationId, queuedOperations[operationId].operation, true, '');
try securityPool.performSetSecurityBondsAllowance(queuedOperations[operationId].initiatorVault, amount) {
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, true, '');
} catch Error(string memory reason) {
emit ExecutetedQueuedOperation(operationId, queuedOperations[operationId].operation, false, reason);
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, false, reason);
} catch (bytes memory lowLevelData) {
emit ExecutedQueuedOperation(operationId, queuedOperations[operationId].operation, false, 'Unknown error');
}
}
queuedOperations[operationId].amount = 0;
}

function getQueuedOperation() public view returns (QueuedOperation memory) {
Expand Down
Loading