Skip to content

Commit

Permalink
fix: lint
Browse files Browse the repository at this point in the history
  • Loading branch information
artemwoofsoftware committed Feb 12, 2025
1 parent a8da9bf commit 0bd1837
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 113 deletions.
4 changes: 2 additions & 2 deletions contracts/test/SimpleTimelock.sol
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ contract SimpleTimelock {

(bool success, bytes memory returnData) = target.call{value: value}(callData);
require(success, "Timelock::executeTransaction: Transaction execution reverted.");

emit ExecuteTransaction(txHash, target, value, signature, data, eta);

return returnData;
Expand All @@ -98,4 +98,4 @@ contract SimpleTimelock {
require(success, "failed to call");
}
}
}
}
138 changes: 30 additions & 108 deletions contracts/vendor/Timelock.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,11 @@ contract Timelock is ITimelock {
address public pendingAdmin;
uint public delay;

mapping(bytes32 => bool) public queuedTransactions;

constructor(
address admin_,
uint delay_,
uint gracePeriod_,
uint minimumDelay_,
uint maxiumumDelay_
) public {
require(
delay_ >= minimumDelay_,
"Timelock::constructor: Delay must exceed minimum delay."
);
require(
delay_ <= maxiumumDelay_,
"Timelock::setDelay: Delay must not exceed maximum delay."
);
mapping (bytes32 => bool) public queuedTransactions;

constructor(address admin_, uint delay_, uint gracePeriod_, uint minimumDelay_, uint maxiumumDelay_) public {
require(delay_ >= minimumDelay_, "Timelock::constructor: Delay must exceed minimum delay.");
require(delay_ <= maxiumumDelay_, "Timelock::setDelay: Delay must not exceed maximum delay.");

GRACE_PERIOD = gracePeriod_;
MINIMUM_DELAY = minimumDelay_;
Expand All @@ -38,119 +26,59 @@ contract Timelock is ITimelock {
delay = delay_;
}

fallback() external payable {}
fallback() external payable { }

function setDelay(uint delay_) public {
require(
msg.sender == address(this),
"Timelock::setDelay: Call must come from Timelock."
);
require(
delay_ >= MINIMUM_DELAY,
"Timelock::setDelay: Delay must exceed minimum delay."
);
require(
delay_ <= MAXIMUM_DELAY,
"Timelock::setDelay: Delay must not exceed maximum delay."
);
require(msg.sender == address(this), "Timelock::setDelay: Call must come from Timelock.");
require(delay_ >= MINIMUM_DELAY, "Timelock::setDelay: Delay must exceed minimum delay.");
require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay.");
delay = delay_;

emit NewDelay(delay);
}

function acceptAdmin() public {
require(
msg.sender == pendingAdmin,
"Timelock::acceptAdmin: Call must come from pendingAdmin."
);
require(msg.sender == pendingAdmin, "Timelock::acceptAdmin: Call must come from pendingAdmin.");
admin = msg.sender;
pendingAdmin = address(0);

emit NewAdmin(admin);
}

function setPendingAdmin(address pendingAdmin_) public {
require(
msg.sender == address(this),
"Timelock::setPendingAdmin: Call must come from Timelock."
);
require(msg.sender == address(this), "Timelock::setPendingAdmin: Call must come from Timelock.");
pendingAdmin = pendingAdmin_;

emit NewPendingAdmin(pendingAdmin);
}

function queueTransaction(
address target,
uint value,
string memory signature,
bytes memory data,
uint eta
) public returns (bytes32) {
require(
msg.sender == admin,
"Timelock::queueTransaction: Call must come from admin."
);
require(
eta >= (getBlockTimestamp() + delay),
"Timelock::queueTransaction: Estimated execution block must satisfy delay."
);

bytes32 txHash = keccak256(
abi.encode(target, value, signature, data, eta)
);
function queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public returns (bytes32) {
require(msg.sender == admin, "Timelock::queueTransaction: Call must come from admin.");
require(eta >= (getBlockTimestamp() + delay), "Timelock::queueTransaction: Estimated execution block must satisfy delay.");

bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
queuedTransactions[txHash] = true;

emit QueueTransaction(txHash, target, value, signature, data, eta);
return txHash;
}

function cancelTransaction(
address target,
uint value,
string memory signature,
bytes memory data,
uint eta
) public {
require(
msg.sender == admin,
"Timelock::cancelTransaction: Call must come from admin."
);

bytes32 txHash = keccak256(
abi.encode(target, value, signature, data, eta)
);
function cancelTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public {
require(msg.sender == admin, "Timelock::cancelTransaction: Call must come from admin.");

bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
queuedTransactions[txHash] = false;

emit CancelTransaction(txHash, target, value, signature, data, eta);
}

function executeTransaction(
address target,
uint value,
string memory signature,
bytes memory data,
uint eta
) public payable returns (bytes memory) {
require(
msg.sender == admin,
"Timelock::executeTransaction: Call must come from admin."
);

bytes32 txHash = keccak256(
abi.encode(target, value, signature, data, eta)
);
require(
queuedTransactions[txHash],
"Timelock::executeTransaction: Transaction hasn't been queued."
);
require(
getBlockTimestamp() >= eta,
"Timelock::executeTransaction: Transaction hasn't surpassed time lock."
);
require(
getBlockTimestamp() <= (eta + GRACE_PERIOD),
"Timelock::executeTransaction: Transaction is stale."
);
function executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public payable returns (bytes memory) {
require(msg.sender == admin, "Timelock::executeTransaction: Call must come from admin.");

bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
require(queuedTransactions[txHash], "Timelock::executeTransaction: Transaction hasn't been queued.");
require(getBlockTimestamp() >= eta, "Timelock::executeTransaction: Transaction hasn't surpassed time lock.");
require(getBlockTimestamp() <= (eta + GRACE_PERIOD), "Timelock::executeTransaction: Transaction is stale.");

queuedTransactions[txHash] = false;

Expand All @@ -159,16 +87,10 @@ contract Timelock is ITimelock {
if (bytes(signature).length == 0) {
callData = data;
} else {
callData = abi.encodePacked(
bytes4(keccak256(bytes(signature))),
data
);
callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
}

(bool success, bytes memory returnData) = target.call{value: value}(
callData
);

(bool success, bytes memory returnData) = target.call{value: value}(callData);
require(success, "Timelock::executeTransaction: Transaction execution reverted.");

emit ExecuteTransaction(txHash, target, value, signature, data, eta);
Expand All @@ -179,4 +101,4 @@ contract Timelock is ITimelock {
function getBlockTimestamp() internal view returns (uint) {
return block.timestamp;
}
}
}
3 changes: 3 additions & 0 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,9 @@ function setupDefaultNetworkProviders(hardhatConfig: HardhatUserConfig) {
}
}

/**
* @type import('hardhat/config').HardhatUserConfig
*/
const config: HardhatUserConfig = {
solidity: {
version: '0.8.15',
Expand Down
4 changes: 2 additions & 2 deletions scenario/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ async function getProxyAdmin(dm: DeploymentManager, proxyAddress: string): Promi

async function mockAllRedstoneOracles(dm: DeploymentManager){
const feeds = REDSTONE_FEEDS[dm.network];
if(!Array.isArray(feeds)) {
if (!Array.isArray(feeds)) {
debug(`No redstone feeds found for network: ${dm.network}`);
return;
}
Expand Down Expand Up @@ -640,7 +640,7 @@ export async function executeOpenProposal(
if (await governor.state(id) == ProposalState.Queued) {
const block = await dm.hre.ethers.provider.getBlock('latest');
const eta = await governor.proposalEta(id);

await setNextBlockTimestamp(dm, Math.max(block.timestamp, eta.toNumber()) + 1);
await setNextBaseFeeToZero(dm);
await updateCCIPStats(dm);
Expand Down
2 changes: 1 addition & 1 deletion src/deploy/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,4 +191,4 @@ export async function proposal(actions: ProposalAction[], description: string):
}
}
return [targets, values, calldatas, description];
}
}

0 comments on commit 0bd1837

Please sign in to comment.