From 3e2868ccd29c146427f973eed9badc3d94794290 Mon Sep 17 00:00:00 2001 From: prateek Date: Tue, 13 Aug 2024 14:50:23 +0530 Subject: [PATCH] fix lint --- script/DeployGovernorBravo.s.sol | 19 +- script/DeployOZGovernor.s.sol | 4 +- script/DeployTimelock.s.sol | 17 +- script/InitializeBravo.s.sol | 13 +- src/mocks/arbitrum/MockArbSys.sol | 7 +- src/mocks/arbitrum/MockProxyUpgradeAction.sol | 6 +- src/mocks/bravo/GovernorBravoDelegate.sol | 442 +++++------------- src/mocks/bravo/GovernorBravoInterfaces.sol | 94 ++-- src/mocks/bravo/MockERC20Votes.sol | 5 +- src/mocks/bravo/SafeMath.sol | 30 +- src/mocks/bravo/Timelock.sol | 147 ++---- src/mocks/governor-oz/MockERC20Votes.sol | 5 +- src/mocks/governor-oz/MockOZGovernor.sol | 35 +- src/mocks/vault/Vault.sol | 18 +- src/proposals/arbitrum/ArbitrumProposal.sol | 77 +-- .../arbitrum/ArbitrumProposal_01.sol | 36 +- .../arbitrum/ArbitrumProposal_02.sol | 36 +- .../simple-vault-bravo/BravoProposal_01.sol | 21 +- .../simple-vault-bravo/BravoProposal_02.sol | 19 +- .../OZGovernorProposal_01.sol | 21 +- .../OZGovernorProposal_02.sol | 19 +- .../MultisigProposal_01.sol | 20 +- .../MultisigProposal_02.sol | 16 +- .../TimelockProposal_01.sol | 17 +- .../TimelockProposal_02.sol | 16 +- .../StateDiffTimelockProposal_01.sol | 23 +- test/bravo/BravoPostProposalCheck.sol | 4 +- .../BravoVaultIntegrationTestSepolia.t.sol | 14 +- .../OZGovernorPostProposalCheck.sol | 4 +- .../OZGovernorVaultIntegrationTestSepolia.sol | 14 +- test/multisig/MultisigPostProposalCheck.sol | 4 +- .../MultisigVaultIntegrationTestSepolia.t.sol | 17 +- test/timelock/TimelockPostProposalCheck.sol | 4 +- .../TimelockVaultIntegrationTestSepolia.t.sol | 17 +- 34 files changed, 338 insertions(+), 903 deletions(-) diff --git a/script/DeployGovernorBravo.s.sol b/script/DeployGovernorBravo.s.sol index 62ecdc3..51073bf 100644 --- a/script/DeployGovernorBravo.s.sol +++ b/script/DeployGovernorBravo.s.sol @@ -27,11 +27,7 @@ contract DeployGovernorBravo is MultisigProposal { Timelock timelock = new Timelock(deployer, 1); // Add PROTOCOL_TIMELOCK_BRAVO address - addresses.addAddress( - "PROTOCOL_TIMELOCK_BRAVO", - address(timelock), - true - ); + addresses.addAddress("PROTOCOL_TIMELOCK_BRAVO", address(timelock), true); } if (!addresses.isAddressSet("PROTOCOL_GOVERNANCE_TOKEN")) { @@ -41,11 +37,7 @@ contract DeployGovernorBravo is MultisigProposal { govToken.mint(deployer, 1e21); // Add PROTOCOL_GOVERNANCE_TOKEN address - addresses.addAddress( - "PROTOCOL_GOVERNANCE_TOKEN", - address(govToken), - true - ); + addresses.addAddress("PROTOCOL_GOVERNANCE_TOKEN", address(govToken), true); } if (!addresses.isAddressSet("PROTOCOL_GOVERNOR")) { @@ -71,10 +63,7 @@ contract DeployGovernorBravo is MultisigProposal { addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO"), 0, "", - abi.encodeWithSignature( - "setPendingAdmin(address)", - addresses.getAddress("PROTOCOL_GOVERNOR") - ), + abi.encodeWithSignature("setPendingAdmin(address)", addresses.getAddress("PROTOCOL_GOVERNOR")), block.timestamp + 180 ); @@ -93,4 +82,4 @@ contract DeployGovernorBravo is MultisigProposal { // ensure governance token is minted to deployer address assertEq(govToken.balanceOf(addresses.getAddress("DEPLOYER_EOA")), 1e21); } -} \ No newline at end of file +} diff --git a/script/DeployOZGovernor.s.sol b/script/DeployOZGovernor.s.sol index 905356b..8120e25 100644 --- a/script/DeployOZGovernor.s.sol +++ b/script/DeployOZGovernor.s.sol @@ -59,7 +59,9 @@ contract DeployOZGovernor is MultisigProposal { } // add propose and execute role for governor - TimelockController(payable(addresses.getAddress("OZ_GOVERNOR_TIMELOCK"))).grantRole(keccak256("PROPOSER_ROLE"), addresses.getAddress("OZ_GOVERNOR")); + TimelockController(payable(addresses.getAddress("OZ_GOVERNOR_TIMELOCK"))).grantRole( + keccak256("PROPOSER_ROLE"), addresses.getAddress("OZ_GOVERNOR") + ); addresses.printJSONChanges(); } diff --git a/script/DeployTimelock.s.sol b/script/DeployTimelock.s.sol index 04251e5..35360e6 100644 --- a/script/DeployTimelock.s.sol +++ b/script/DeployTimelock.s.sol @@ -28,21 +28,12 @@ contract DeployTimelock is MultisigProposal { executors[0] = dev; // Deploy a new TimelockController - TimelockController timelockController = new TimelockController( - 60, - proposers, - executors, - address(0) - ); + TimelockController timelockController = new TimelockController(60, proposers, executors, address(0)); // Add PROTOCOL_TIMELOCK address - addresses.addAddress( - "PROTOCOL_TIMELOCK", - address(timelockController), - true - ); + addresses.addAddress("PROTOCOL_TIMELOCK", address(timelockController), true); } - + addresses.printJSONChanges(); } @@ -62,4 +53,4 @@ contract DeployTimelock is MultisigProposal { // ensure deployer has executor role assertTrue(timelockController.hasRole(timelockController.EXECUTOR_ROLE(), dev)); } -} \ No newline at end of file +} diff --git a/script/InitializeBravo.s.sol b/script/InitializeBravo.s.sol index bfe857d..a75ea73 100644 --- a/script/InitializeBravo.s.sol +++ b/script/InitializeBravo.s.sol @@ -21,9 +21,7 @@ contract InitializeBravo is MultisigProposal { function deploy() public override { address governor = addresses.getAddress("PROTOCOL_GOVERNOR"); - address payable timelock = payable( - addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO") - ); + address payable timelock = payable(addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO")); if (!addresses.isAddressSet("PROTOCOL_GOVERNOR_ALPHA")) { // Deploy mock GovernorAlpha @@ -33,14 +31,7 @@ contract InitializeBravo is MultisigProposal { } Timelock(timelock).executeTransaction( - timelock, - 0, - "", - abi.encodeWithSignature( - "setPendingAdmin(address)", - address(governor) - ), - vm.envUint("ETA") + timelock, 0, "", abi.encodeWithSignature("setPendingAdmin(address)", address(governor)), vm.envUint("ETA") ); // Initialize GovernorBravo diff --git a/src/mocks/arbitrum/MockArbSys.sol b/src/mocks/arbitrum/MockArbSys.sol index 86f88fa..dabb353 100644 --- a/src/mocks/arbitrum/MockArbSys.sol +++ b/src/mocks/arbitrum/MockArbSys.sol @@ -6,11 +6,8 @@ pragma solidity ^0.8.0; contract MockArbSys { uint256 public ticketId; - function sendTxToL1( - address _l1Target, - bytes memory _data - ) external payable returns (uint256) { - (bool success, ) = _l1Target.call(_data); + function sendTxToL1(address _l1Target, bytes memory _data) external payable returns (uint256) { + (bool success,) = _l1Target.call(_data); require(success, "Arbsys: sendTxToL1 failed"); return ++ticketId; } diff --git a/src/mocks/arbitrum/MockProxyUpgradeAction.sol b/src/mocks/arbitrum/MockProxyUpgradeAction.sol index 1ed5174..958bc5d 100644 --- a/src/mocks/arbitrum/MockProxyUpgradeAction.sol +++ b/src/mocks/arbitrum/MockProxyUpgradeAction.sol @@ -6,11 +6,7 @@ import {IProxyAdmin} from "@forge-proposal-simulator/src/interface/IProxyAdmin.s /// @title ProxyUpgradeAction /// @dev Arbitrum upgrades must be done through a delegate call to a GAC deployed contract contract MockProxyUpgradeAction { - function perform( - address admin, - address payable target, - address newLogic - ) public payable { + function perform(address admin, address payable target, address newLogic) public payable { IProxyAdmin(admin).upgrade(target, newLogic); } } diff --git a/src/mocks/bravo/GovernorBravoDelegate.sol b/src/mocks/bravo/GovernorBravoDelegate.sol index 372d96e..5c4b356 100644 --- a/src/mocks/bravo/GovernorBravoDelegate.sol +++ b/src/mocks/bravo/GovernorBravoDelegate.sol @@ -1,59 +1,58 @@ // SPDX-License-Identifier: BSD-3-Clause pragma solidity ^0.8.0; -import {GovernorBravoDelegateStorageV2, GovernorBravoEvents, TimelockInterface, CompInterface, GovernorAlphaInterface} from "./GovernorBravoInterfaces.sol"; +import { + GovernorBravoDelegateStorageV2, + GovernorBravoEvents, + TimelockInterface, + CompInterface, + GovernorAlphaInterface +} from "./GovernorBravoInterfaces.sol"; /// @custom:security-contact security@compound.finance -contract GovernorBravoDelegate is - GovernorBravoDelegateStorageV2, - GovernorBravoEvents -{ +contract GovernorBravoDelegate is GovernorBravoDelegateStorageV2, GovernorBravoEvents { /// @notice The name of this contract string public constant NAME = "Compound Governor Bravo"; /// @notice The minimum settable proposal threshold - uint public constant MIN_PROPOSAL_THRESHOLD = 1000e18; // 1,000 Comp + uint256 public constant MIN_PROPOSAL_THRESHOLD = 1000e18; // 1,000 Comp /// @notice The maximum settable proposal threshold - uint public constant MAX_PROPOSAL_THRESHOLD = 100000e18; //100,000 Comp + uint256 public constant MAX_PROPOSAL_THRESHOLD = 100000e18; //100,000 Comp /// @notice The minimum settable voting period - uint public constant MIN_VOTING_PERIOD = 60; // 1 minute + uint256 public constant MIN_VOTING_PERIOD = 60; // 1 minute /// @notice The max settable voting period - uint public constant MAX_VOTING_PERIOD = 80640; // About 2 weeks + uint256 public constant MAX_VOTING_PERIOD = 80640; // About 2 weeks /// @notice The min settable voting delay - uint public constant MIN_VOTING_DELAY = 1; + uint256 public constant MIN_VOTING_DELAY = 1; /// @notice The max settable voting delay - uint public constant MAX_VOTING_DELAY = 40320; // About 1 week + uint256 public constant MAX_VOTING_DELAY = 40320; // About 1 week /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed - uint public constant quorumVotes = 400000e18; // 400,000 = 4% of Comp + uint256 public constant quorumVotes = 400000e18; // 400,000 = 4% of Comp /// @notice The maximum number of actions that can be included in a proposal - uint public constant PROPOSAL_MAX_OPERATIONS = 10; // 10 actions + uint256 public constant PROPOSAL_MAX_OPERATIONS = 10; // 10 actions /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = - keccak256( - "EIP712Domain(string name,uint256 chainId,address verifyingContract)" - ); + keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the ballot struct used by the contract - bytes32 public constant BALLOT_TYPEHASH = - keccak256("Ballot(uint256 proposalId,uint8 support)"); + bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,uint8 support)"); /// @notice The EIP-712 typehash for the ballot with reason struct used by the contract bytes32 public constant BALLOT_WITH_REASON_TYPEHASH = keccak256("Ballot(uint256 proposalId,uint8 support,string reason)"); /// @notice The EIP-712 typehash for the proposal struct used by the contract - bytes32 public constant PROPOSAL_TYPEHASH = - keccak256( - "Proposal(address[] targets,uint256[] values,string[] signatures,bytes[] calldatas,string description,uint256 proposalId)" - ); + bytes32 public constant PROPOSAL_TYPEHASH = keccak256( + "Proposal(address[] targets,uint256[] values,string[] signatures,bytes[] calldatas,string description,uint256 proposalId)" + ); /** * @notice Used to initialize the contract during delegator constructor @@ -66,36 +65,24 @@ contract GovernorBravoDelegate is function initialize( address timelock_, address comp_, - uint votingPeriod_, - uint votingDelay_, - uint proposalThreshold_ + uint256 votingPeriod_, + uint256 votingDelay_, + uint256 proposalThreshold_ ) public virtual { - require( - address(timelock) == address(0), - "GovernorBravo::initialize: can only initialize once" - ); + require(address(timelock) == address(0), "GovernorBravo::initialize: can only initialize once"); require(msg.sender == admin, "GovernorBravo::initialize: admin only"); + require(timelock_ != address(0), "GovernorBravo::initialize: invalid timelock address"); + require(comp_ != address(0), "GovernorBravo::initialize: invalid comp address"); require( - timelock_ != address(0), - "GovernorBravo::initialize: invalid timelock address" - ); - require( - comp_ != address(0), - "GovernorBravo::initialize: invalid comp address" - ); - require( - votingPeriod_ >= MIN_VOTING_PERIOD && - votingPeriod_ <= MAX_VOTING_PERIOD, + votingPeriod_ >= MIN_VOTING_PERIOD && votingPeriod_ <= MAX_VOTING_PERIOD, "GovernorBravo::initialize: invalid voting period" ); require( - votingDelay_ >= MIN_VOTING_DELAY && - votingDelay_ <= MAX_VOTING_DELAY, + votingDelay_ >= MIN_VOTING_DELAY && votingDelay_ <= MAX_VOTING_DELAY, "GovernorBravo::initialize: invalid voting delay" ); require( - proposalThreshold_ >= MIN_PROPOSAL_THRESHOLD && - proposalThreshold_ <= MAX_PROPOSAL_THRESHOLD, + proposalThreshold_ >= MIN_PROPOSAL_THRESHOLD && proposalThreshold_ <= MAX_PROPOSAL_THRESHOLD, "GovernorBravo::initialize: invalid proposal threshold" ); @@ -117,20 +104,12 @@ contract GovernorBravoDelegate is */ function propose( address[] memory targets, - uint[] memory values, + uint256[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description - ) public returns (uint) { - return - proposeInternal( - msg.sender, - targets, - values, - signatures, - calldatas, - description - ); + ) public returns (uint256) { + return proposeInternal(msg.sender, targets, values, signatures, calldatas, description); } /** @@ -148,34 +127,23 @@ contract GovernorBravoDelegate is */ function proposeBySig( address[] memory targets, - uint[] memory values, + uint256[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description, - uint proposalId, + uint256 proposalId, uint8 v, bytes32 r, bytes32 s - ) public returns (uint) { - require( - proposalId == proposalCount + 1, - "GovernorBravo::proposeBySig: invalid proposal id" - ); + ) public returns (uint256) { + require(proposalId == proposalCount + 1, "GovernorBravo::proposeBySig: invalid proposal id"); address signatory; { - bytes32 domainSeparator = keccak256( - abi.encode( - DOMAIN_TYPEHASH, - keccak256(bytes(NAME)), - getChainIdInternal(), - address(this) - ) - ); + bytes32 domainSeparator = + keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(NAME)), getChainIdInternal(), address(this))); bytes32[] memory hashedCalldatas = new bytes32[](calldatas.length); - bytes32[] memory hashedSignatures = new bytes32[]( - signatures.length - ); + bytes32[] memory hashedSignatures = new bytes32[](signatures.length); for (uint256 i = 0; i < calldatas.length; ++i) { hashedCalldatas[i] = keccak256(calldatas[i]); } @@ -194,67 +162,39 @@ contract GovernorBravoDelegate is proposalId ) ); - bytes32 digest = keccak256( - abi.encodePacked("\x19\x01", domainSeparator, structHash) - ); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); signatory = ecrecover(digest, v, r, s); } - require( - signatory != address(0), - "GovernorBravo::proposeBySig: invalid signature" - ); + require(signatory != address(0), "GovernorBravo::proposeBySig: invalid signature"); - return - proposeInternal( - signatory, - targets, - values, - signatures, - calldatas, - description - ); + return proposeInternal(signatory, targets, values, signatures, calldatas, description); } function proposeInternal( address proposer, address[] memory targets, - uint[] memory values, + uint256[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description - ) internal returns (uint) { + ) internal returns (uint256) { // Reject proposals before initiating as Governor - require( - initialProposalId != 0, - "GovernorBravo::proposeInternal: Governor Bravo not active" - ); + require(initialProposalId != 0, "GovernorBravo::proposeInternal: Governor Bravo not active"); // Allow addresses above proposal threshold and whitelisted addresses to propose require( - comp.getPriorVotes(proposer, block.number - 1) > - proposalThreshold || - isWhitelisted(proposer), + comp.getPriorVotes(proposer, block.number - 1) > proposalThreshold || isWhitelisted(proposer), "GovernorBravo::proposeInternal: proposer votes below proposal threshold" ); require( - targets.length == values.length && - targets.length == signatures.length && - targets.length == calldatas.length, + targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorBravo::proposeInternal: proposal function information arity mismatch" ); - require( - targets.length != 0, - "GovernorBravo::proposeInternal: must provide actions" - ); - require( - targets.length <= PROPOSAL_MAX_OPERATIONS, - "GovernorBravo::proposeInternal: too many actions" - ); + require(targets.length != 0, "GovernorBravo::proposeInternal: must provide actions"); + require(targets.length <= PROPOSAL_MAX_OPERATIONS, "GovernorBravo::proposeInternal: too many actions"); uint256 latestProposalId = latestProposalIds[proposer]; if (latestProposalId != 0) { - ProposalState proposersLatestProposalState = state( - latestProposalId - ); + ProposalState proposersLatestProposalState = state(latestProposalId); require( proposersLatestProposalState != ProposalState.Active, "GovernorBravo::proposeInternal: one live proposal per proposer, found an already active proposal" @@ -265,17 +205,14 @@ contract GovernorBravoDelegate is ); } - uint startBlock = block.number + votingDelay; - uint endBlock = startBlock + votingPeriod; + uint256 startBlock = block.number + votingDelay; + uint256 endBlock = startBlock + votingPeriod; proposalCount++; - uint newProposalID = proposalCount; + uint256 newProposalID = proposalCount; Proposal storage newProposal = proposals[newProposalID]; // This should never happen but add a check in case. - require( - newProposal.id == 0, - "GovernorBravo::proposeInternal: ProposalID collision" - ); + require(newProposal.id == 0, "GovernorBravo::proposeInternal: ProposalID collision"); newProposal.id = newProposalID; newProposal.proposer = proposer; newProposal.eta = 0; @@ -294,15 +231,7 @@ contract GovernorBravoDelegate is latestProposalIds[newProposal.proposer] = newProposal.id; emit ProposalCreated( - newProposal.id, - proposer, - targets, - values, - signatures, - calldatas, - startBlock, - endBlock, - description + newProposal.id, proposer, targets, values, signatures, calldatas, startBlock, endBlock, description ); return newProposal.id; } @@ -311,20 +240,16 @@ contract GovernorBravoDelegate is * @notice Queues a proposal of state succeeded * @param proposalId The id of the proposal to queue */ - function queue(uint proposalId) external { + function queue(uint256 proposalId) external { require( state(proposalId) == ProposalState.Succeeded, "GovernorBravo::queue: proposal can only be queued if it is succeeded" ); Proposal storage proposal = proposals[proposalId]; - uint eta = block.timestamp + timelock.delay(); - for (uint i = 0; i < proposal.targets.length; i++) { + uint256 eta = block.timestamp + timelock.delay(); + for (uint256 i = 0; i < proposal.targets.length; i++) { queueOrRevertInternal( - proposal.targets[i], - proposal.values[i], - proposal.signatures[i], - proposal.calldatas[i], - eta + proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta ); } proposal.eta = eta; @@ -333,15 +258,13 @@ contract GovernorBravoDelegate is function queueOrRevertInternal( address target, - uint value, + uint256 value, string memory signature, bytes memory data, - uint eta + uint256 eta ) internal { require( - !timelock.queuedTransactions( - keccak256(abi.encode(target, value, signature, data, eta)) - ), + !timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))), "GovernorBravo::queueOrRevertInternal: identical proposal action already queued at eta" ); timelock.queueTransaction(target, value, signature, data, eta); @@ -351,20 +274,16 @@ contract GovernorBravoDelegate is * @notice Executes a queued proposal if eta has passed * @param proposalId The id of the proposal to execute */ - function execute(uint proposalId) external payable { + function execute(uint256 proposalId) external payable { require( state(proposalId) == ProposalState.Queued, "GovernorBravo::execute: proposal can only be executed if it is queued" ); Proposal storage proposal = proposals[proposalId]; proposal.executed = true; - for (uint i = 0; i < proposal.targets.length; i++) { + for (uint256 i = 0; i < proposal.targets.length; i++) { timelock.executeTransaction( - proposal.targets[i], - proposal.values[i], - proposal.signatures[i], - proposal.calldatas[i], - proposal.eta + proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta ); } emit ProposalExecuted(proposalId); @@ -374,11 +293,8 @@ contract GovernorBravoDelegate is * @notice Cancels a proposal only if sender is the proposer, or proposer delegates dropped below proposal threshold * @param proposalId The id of the proposal to cancel */ - function cancel(uint proposalId) external { - require( - state(proposalId) != ProposalState.Executed, - "GovernorBravo::cancel: cannot cancel executed proposal" - ); + function cancel(uint256 proposalId) external { + require(state(proposalId) != ProposalState.Executed, "GovernorBravo::cancel: cannot cancel executed proposal"); Proposal storage proposal = proposals[proposalId]; @@ -387,27 +303,22 @@ contract GovernorBravoDelegate is // Whitelisted proposers can't be canceled for falling below proposal threshold if (isWhitelisted(proposal.proposer)) { require( - (comp.getPriorVotes(proposal.proposer, block.number - 1) < - proposalThreshold) && msg.sender == whitelistGuardian, + (comp.getPriorVotes(proposal.proposer, block.number - 1) < proposalThreshold) + && msg.sender == whitelistGuardian, "GovernorBravo::cancel: whitelisted proposer" ); } else { require( - (comp.getPriorVotes(proposal.proposer, block.number - 1) < - proposalThreshold), + (comp.getPriorVotes(proposal.proposer, block.number - 1) < proposalThreshold), "GovernorBravo::cancel: proposer above threshold" ); } } proposal.canceled = true; - for (uint i = 0; i < proposal.targets.length; i++) { + for (uint256 i = 0; i < proposal.targets.length; i++) { timelock.cancelTransaction( - proposal.targets[i], - proposal.values[i], - proposal.signatures[i], - proposal.calldatas[i], - proposal.eta + proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta ); } @@ -422,14 +333,12 @@ contract GovernorBravoDelegate is * @return signatures of the proposal actions * @return calldatas of the proposal actions */ - function getActions( - uint proposalId - ) + function getActions(uint256 proposalId) external view returns ( address[] memory targets, - uint[] memory values, + uint256[] memory values, string[] memory signatures, bytes[] memory calldatas ) @@ -444,10 +353,7 @@ contract GovernorBravoDelegate is * @param voter The address of the voter * @return The voting receipt */ - function getReceipt( - uint proposalId, - address voter - ) external view returns (Receipt memory) { + function getReceipt(uint256 proposalId, address voter) external view returns (Receipt memory) { return proposals[proposalId].receipts[voter]; } @@ -456,10 +362,9 @@ contract GovernorBravoDelegate is * @param proposalId The id of the proposal * @return Proposal state as a `ProposalState` enum */ - function state(uint proposalId) public view returns (ProposalState) { + function state(uint256 proposalId) public view returns (ProposalState) { require( - proposalCount >= proposalId && proposalId > initialProposalId, - "GovernorBravo::state: invalid proposal id" + proposalCount >= proposalId && proposalId > initialProposalId, "GovernorBravo::state: invalid proposal id" ); Proposal storage proposal = proposals[proposalId]; if (proposal.canceled) { @@ -468,10 +373,7 @@ contract GovernorBravoDelegate is return ProposalState.Pending; } else if (block.number <= proposal.endBlock) { return ProposalState.Active; - } else if ( - proposal.forVotes <= proposal.againstVotes || - proposal.forVotes < quorumVotes - ) { + } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes) { return ProposalState.Defeated; } else if (proposal.eta == 0) { return ProposalState.Succeeded; @@ -489,53 +391,22 @@ contract GovernorBravoDelegate is * @param proposalId The id of the proposal to vote on * @param support The support value for the vote. 0=against, 1=for, 2=abstain */ - function castVote(uint proposalId, uint8 support) external { - emit VoteCast( - msg.sender, - proposalId, - support, - castVoteInternal(msg.sender, proposalId, support), - "" - ); + function castVote(uint256 proposalId, uint8 support) external { + emit VoteCast(msg.sender, proposalId, support, castVoteInternal(msg.sender, proposalId, support), ""); } /** * @notice Cast a vote for a proposal by signature * @dev External function that accepts EIP-712 signatures for voting on proposals. */ - function castVoteBySig( - uint proposalId, - uint8 support, - uint8 v, - bytes32 r, - bytes32 s - ) external { - bytes32 domainSeparator = keccak256( - abi.encode( - DOMAIN_TYPEHASH, - keccak256(bytes(NAME)), - getChainIdInternal(), - address(this) - ) - ); - bytes32 structHash = keccak256( - abi.encode(BALLOT_TYPEHASH, proposalId, support) - ); - bytes32 digest = keccak256( - abi.encodePacked("\x19\x01", domainSeparator, structHash) - ); + function castVoteBySig(uint256 proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s) external { + bytes32 domainSeparator = + keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(NAME)), getChainIdInternal(), address(this))); + bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support)); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); - require( - signatory != address(0), - "GovernorBravo::castVoteBySig: invalid signature" - ); - emit VoteCast( - signatory, - proposalId, - support, - castVoteInternal(signatory, proposalId, support), - "" - ); + require(signatory != address(0), "GovernorBravo::castVoteBySig: invalid signature"); + emit VoteCast(signatory, proposalId, support, castVoteInternal(signatory, proposalId, support), ""); } /** @@ -544,18 +415,8 @@ contract GovernorBravoDelegate is * @param support The support value for the vote. 0=against, 1=for, 2=abstain * @param reason The reason given for the vote by the voter */ - function castVoteWithReason( - uint proposalId, - uint8 support, - string calldata reason - ) external { - emit VoteCast( - msg.sender, - proposalId, - support, - castVoteInternal(msg.sender, proposalId, support), - reason - ); + function castVoteWithReason(uint256 proposalId, uint8 support, string calldata reason) external { + emit VoteCast(msg.sender, proposalId, support, castVoteInternal(msg.sender, proposalId, support), reason); } /** @@ -568,7 +429,7 @@ contract GovernorBravoDelegate is * @param s Half of the ECDSA signature pair */ function castVoteWithReasonBySig( - uint proposalId, + uint256 proposalId, uint8 support, string calldata reason, uint8 v, @@ -577,38 +438,15 @@ contract GovernorBravoDelegate is ) external { address signatory; { - bytes32 domainSeparator = keccak256( - abi.encode( - DOMAIN_TYPEHASH, - keccak256(bytes(NAME)), - getChainIdInternal(), - address(this) - ) - ); - bytes32 structHash = keccak256( - abi.encode( - BALLOT_WITH_REASON_TYPEHASH, - proposalId, - support, - keccak256(bytes(reason)) - ) - ); - bytes32 digest = keccak256( - abi.encodePacked("\x19\x01", domainSeparator, structHash) - ); + bytes32 domainSeparator = + keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(NAME)), getChainIdInternal(), address(this))); + bytes32 structHash = + keccak256(abi.encode(BALLOT_WITH_REASON_TYPEHASH, proposalId, support, keccak256(bytes(reason)))); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); signatory = ecrecover(digest, v, r, s); } - require( - signatory != address(0), - "GovernorBravo::castVoteWithReasonBySig: invalid signature" - ); - emit VoteCast( - signatory, - proposalId, - support, - castVoteInternal(signatory, proposalId, support), - reason - ); + require(signatory != address(0), "GovernorBravo::castVoteWithReasonBySig: invalid signature"); + emit VoteCast(signatory, proposalId, support, castVoteInternal(signatory, proposalId, support), reason); } /** @@ -618,25 +456,12 @@ contract GovernorBravoDelegate is * @param support The support value for the vote. 0=against, 1=for, 2=abstain * @return The number of votes cast */ - function castVoteInternal( - address voter, - uint proposalId, - uint8 support - ) internal returns (uint96) { - require( - state(proposalId) == ProposalState.Active, - "GovernorBravo::castVoteInternal: voting is closed" - ); - require( - support <= 2, - "GovernorBravo::castVoteInternal: invalid vote type" - ); + function castVoteInternal(address voter, uint256 proposalId, uint8 support) internal returns (uint96) { + require(state(proposalId) == ProposalState.Active, "GovernorBravo::castVoteInternal: voting is closed"); + require(support <= 2, "GovernorBravo::castVoteInternal: invalid vote type"); Proposal storage proposal = proposals[proposalId]; Receipt storage receipt = proposal.receipts[voter]; - require( - receipt.hasVoted == false, - "GovernorBravo::castVoteInternal: voter already voted" - ); + require(receipt.hasVoted == false, "GovernorBravo::castVoteInternal: voter already voted"); uint96 votes = comp.getPriorVotes(voter, proposal.startBlock); if (support == 0) { @@ -667,17 +492,13 @@ contract GovernorBravoDelegate is * @notice Admin function for setting the voting delay * @param newVotingDelay new voting delay, in blocks */ - function _setVotingDelay(uint newVotingDelay) external { - require( - msg.sender == admin, - "GovernorBravo::_setVotingDelay: admin only" - ); + function _setVotingDelay(uint256 newVotingDelay) external { + require(msg.sender == admin, "GovernorBravo::_setVotingDelay: admin only"); require( - newVotingDelay >= MIN_VOTING_DELAY && - newVotingDelay <= MAX_VOTING_DELAY, + newVotingDelay >= MIN_VOTING_DELAY && newVotingDelay <= MAX_VOTING_DELAY, "GovernorBravo::_setVotingDelay: invalid voting delay" ); - uint oldVotingDelay = votingDelay; + uint256 oldVotingDelay = votingDelay; votingDelay = newVotingDelay; emit VotingDelaySet(oldVotingDelay, votingDelay); @@ -687,17 +508,13 @@ contract GovernorBravoDelegate is * @notice Admin function for setting the voting period * @param newVotingPeriod new voting period, in blocks */ - function _setVotingPeriod(uint newVotingPeriod) external { - require( - msg.sender == admin, - "GovernorBravo::_setVotingPeriod: admin only" - ); + function _setVotingPeriod(uint256 newVotingPeriod) external { + require(msg.sender == admin, "GovernorBravo::_setVotingPeriod: admin only"); require( - newVotingPeriod >= MIN_VOTING_PERIOD && - newVotingPeriod <= MAX_VOTING_PERIOD, + newVotingPeriod >= MIN_VOTING_PERIOD && newVotingPeriod <= MAX_VOTING_PERIOD, "GovernorBravo::_setVotingPeriod: invalid voting period" ); - uint oldVotingPeriod = votingPeriod; + uint256 oldVotingPeriod = votingPeriod; votingPeriod = newVotingPeriod; emit VotingPeriodSet(oldVotingPeriod, votingPeriod); @@ -708,17 +525,13 @@ contract GovernorBravoDelegate is * @dev newProposalThreshold must be greater than the hardcoded min * @param newProposalThreshold new proposal threshold */ - function _setProposalThreshold(uint newProposalThreshold) external { + function _setProposalThreshold(uint256 newProposalThreshold) external { + require(msg.sender == admin, "GovernorBravo::_setProposalThreshold: admin only"); require( - msg.sender == admin, - "GovernorBravo::_setProposalThreshold: admin only" - ); - require( - newProposalThreshold >= MIN_PROPOSAL_THRESHOLD && - newProposalThreshold <= MAX_PROPOSAL_THRESHOLD, + newProposalThreshold >= MIN_PROPOSAL_THRESHOLD && newProposalThreshold <= MAX_PROPOSAL_THRESHOLD, "GovernorBravo::_setProposalThreshold: invalid proposal threshold" ); - uint oldProposalThreshold = proposalThreshold; + uint256 oldProposalThreshold = proposalThreshold; proposalThreshold = newProposalThreshold; emit ProposalThresholdSet(oldProposalThreshold, proposalThreshold); @@ -729,10 +542,7 @@ contract GovernorBravoDelegate is * @param account Account address to set whitelist expiration for * @param expiration Expiration for account whitelist status as timestamp (if now < expiration, whitelisted) */ - function _setWhitelistAccountExpiration( - address account, - uint expiration - ) external { + function _setWhitelistAccountExpiration(address account, uint256 expiration) external { require( msg.sender == admin || msg.sender == whitelistGuardian, "GovernorBravo::_setWhitelistAccountExpiration: admin only" @@ -747,10 +557,7 @@ contract GovernorBravoDelegate is * @param account Account to set whitelistGuardian to (0x0 to remove whitelistGuardian) */ function _setWhitelistGuardian(address account) external { - require( - msg.sender == admin, - "GovernorBravo::_setWhitelistGuardian: admin only" - ); + require(msg.sender == admin, "GovernorBravo::_setWhitelistGuardian: admin only"); address oldGuardian = whitelistGuardian; whitelistGuardian = account; @@ -764,10 +571,7 @@ contract GovernorBravoDelegate is */ function _initiate(address governorAlpha) external { require(msg.sender == admin, "GovernorBravo::_initiate: admin only"); - require( - initialProposalId == 0, - "GovernorBravo::_initiate: can only initiate once" - ); + require(initialProposalId == 0, "GovernorBravo::_initiate: can only initiate once"); proposalCount = GovernorAlphaInterface(governorAlpha).proposalCount(); initialProposalId = proposalCount; timelock.acceptAdmin(); @@ -780,10 +584,7 @@ contract GovernorBravoDelegate is */ function _setPendingAdmin(address newPendingAdmin) external { // Check caller = admin - require( - msg.sender == admin, - "GovernorBravo:_setPendingAdmin: admin only" - ); + require(msg.sender == admin, "GovernorBravo:_setPendingAdmin: admin only"); // Save current value, if any, for inclusion in log address oldPendingAdmin = pendingAdmin; @@ -802,8 +603,7 @@ contract GovernorBravoDelegate is function _acceptAdmin() external { // Check caller is pendingAdmin and pendingAdmin ≠ address(0) require( - msg.sender == pendingAdmin && msg.sender != address(0), - "GovernorBravo:_acceptAdmin: pending admin only" + msg.sender == pendingAdmin && msg.sender != address(0), "GovernorBravo:_acceptAdmin: pending admin only" ); // Save current values for inclusion in log @@ -820,8 +620,8 @@ contract GovernorBravoDelegate is emit NewPendingAdmin(oldPendingAdmin, pendingAdmin); } - function getChainIdInternal() internal view returns (uint) { - uint chainId; + function getChainIdInternal() internal view returns (uint256) { + uint256 chainId; assembly { chainId := chainid() } diff --git a/src/mocks/bravo/GovernorBravoInterfaces.sol b/src/mocks/bravo/GovernorBravoInterfaces.sol index 77e4105..56afb56 100644 --- a/src/mocks/bravo/GovernorBravoInterfaces.sol +++ b/src/mocks/bravo/GovernorBravoInterfaces.sol @@ -4,14 +4,14 @@ pragma solidity ^0.8.0; contract GovernorBravoEvents { /// @notice An event emitted when a new proposal is created event ProposalCreated( - uint id, + uint256 id, address proposer, address[] targets, - uint[] values, + uint256[] values, string[] signatures, bytes[] calldatas, - uint startBlock, - uint endBlock, + uint256 startBlock, + uint256 endBlock, string description ); @@ -23,40 +23,28 @@ contract GovernorBravoEvents { * @param votes Number of votes which were cast by the voter * @param reason The reason given for the vote by the voter */ - event VoteCast( - address indexed voter, - uint proposalId, - uint8 support, - uint votes, - string reason - ); + event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 votes, string reason); /// @notice An event emitted when a proposal has been canceled - event ProposalCanceled(uint id); + event ProposalCanceled(uint256 id); /// @notice An event emitted when a proposal has been queued in the Timelock - event ProposalQueued(uint id, uint eta); + event ProposalQueued(uint256 id, uint256 eta); /// @notice An event emitted when a proposal has been executed in the Timelock - event ProposalExecuted(uint id); + event ProposalExecuted(uint256 id); /// @notice An event emitted when the voting delay is set - event VotingDelaySet(uint oldVotingDelay, uint newVotingDelay); + event VotingDelaySet(uint256 oldVotingDelay, uint256 newVotingDelay); /// @notice An event emitted when the voting period is set - event VotingPeriodSet(uint oldVotingPeriod, uint newVotingPeriod); + event VotingPeriodSet(uint256 oldVotingPeriod, uint256 newVotingPeriod); /// @notice Emitted when implementation is changed - event NewImplementation( - address oldImplementation, - address newImplementation - ); + event NewImplementation(address oldImplementation, address newImplementation); /// @notice Emitted when proposal threshold is set - event ProposalThresholdSet( - uint oldProposalThreshold, - uint newProposalThreshold - ); + event ProposalThresholdSet(uint256 oldProposalThreshold, uint256 newProposalThreshold); /// @notice Emitted when pendingAdmin is changed event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); @@ -65,7 +53,7 @@ contract GovernorBravoEvents { event NewAdmin(address oldAdmin, address newAdmin); /// @notice Emitted when whitelist account expiration is set - event WhitelistAccountExpirationSet(address account, uint expiration); + event WhitelistAccountExpirationSet(address account, uint256 expiration); /// @notice Emitted when the whitelistGuardian is set event WhitelistGuardianSet(address oldGuardian, address newGuardian); @@ -90,19 +78,19 @@ contract GovernorBravoDelegatorStorage { */ contract GovernorBravoDelegateStorageV1 is GovernorBravoDelegatorStorage { /// @notice The delay before voting on a proposal may take place, once proposed, in blocks - uint public votingDelay; + uint256 public votingDelay; /// @notice The duration of voting on a proposal, in blocks - uint public votingPeriod; + uint256 public votingPeriod; /// @notice The number of votes required in order for a voter to become a proposer - uint public proposalThreshold; + uint256 public proposalThreshold; /// @notice Initial proposal id set at become - uint public initialProposalId; + uint256 public initialProposalId; /// @notice The total number of proposals - uint public proposalCount; + uint256 public proposalCount; /// @notice The address of the Compound Protocol Timelock TimelockInterface public timelock; @@ -111,36 +99,36 @@ contract GovernorBravoDelegateStorageV1 is GovernorBravoDelegatorStorage { CompInterface public comp; /// @notice The official record of all proposals ever proposed - mapping(uint proposalId => Proposal proposal) public proposals; + mapping(uint256 proposalId => Proposal proposal) public proposals; /// @notice The latest proposal for each proposer - mapping(address proposer => uint proposalId) public latestProposalIds; + mapping(address proposer => uint256 proposalId) public latestProposalIds; struct Proposal { /// @notice Unique id for looking up a proposal - uint id; + uint256 id; /// @notice Creator of the proposal address proposer; /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds - uint eta; + uint256 eta; /// @notice the ordered list of target addresses for calls to be made address[] targets; /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made - uint[] values; + uint256[] values; /// @notice The ordered list of function signatures to be called string[] signatures; /// @notice The ordered list of calldata to be passed to each call bytes[] calldatas; /// @notice The block at which voting begins: holders must delegate their votes prior to this block - uint startBlock; + uint256 startBlock; /// @notice The block at which voting ends: votes must be cast prior to this block - uint endBlock; + uint256 endBlock; /// @notice Current number of votes in favor of this proposal - uint forVotes; + uint256 forVotes; /// @notice Current number of votes in opposition to this proposal - uint againstVotes; + uint256 againstVotes; /// @notice Current number of votes for abstaining for this proposal - uint abstainVotes; + uint256 abstainVotes; /// @notice Flag marking whether the proposal has been canceled bool canceled; /// @notice Flag marking whether the proposal has been executed @@ -174,49 +162,45 @@ contract GovernorBravoDelegateStorageV1 is GovernorBravoDelegatorStorage { contract GovernorBravoDelegateStorageV2 is GovernorBravoDelegateStorageV1 { /// @notice Stores the expiration of account whitelist status as a timestamp - mapping(address account => uint expiration) - public whitelistAccountExpirations; + mapping(address account => uint256 expiration) public whitelistAccountExpirations; /// @notice Address which manages whitelisted proposals and whitelist accounts address public whitelistGuardian; } interface TimelockInterface { - function delay() external view returns (uint); - function GRACE_PERIOD() external view returns (uint); + function delay() external view returns (uint256); + function GRACE_PERIOD() external view returns (uint256); function acceptAdmin() external; function queuedTransactions(bytes32 hash) external view returns (bool); function queueTransaction( address target, - uint value, + uint256 value, string calldata signature, bytes calldata data, - uint eta + uint256 eta ) external returns (bytes32); function cancelTransaction( address target, - uint value, + uint256 value, string calldata signature, bytes calldata data, - uint eta + uint256 eta ) external; function executeTransaction( address target, - uint value, + uint256 value, string calldata signature, bytes calldata data, - uint eta + uint256 eta ) external payable returns (bytes memory); } interface CompInterface { - function getPriorVotes( - address account, - uint blockNumber - ) external view returns (uint96); + function getPriorVotes(address account, uint256 blockNumber) external view returns (uint96); } interface GovernorAlphaInterface { /// @notice The total number of proposals - function proposalCount() external returns (uint); + function proposalCount() external returns (uint256); } diff --git a/src/mocks/bravo/MockERC20Votes.sol b/src/mocks/bravo/MockERC20Votes.sol index 1d59cab..7f37eba 100644 --- a/src/mocks/bravo/MockERC20Votes.sol +++ b/src/mocks/bravo/MockERC20Votes.sol @@ -4,10 +4,7 @@ pragma solidity ^0.8.0; import {ERC20, ERC20Permit, ERC20VotesComp} from "@openzeppelin/token/ERC20/extensions/ERC20VotesComp.sol"; contract MockERC20Votes is ERC20VotesComp { - constructor( - string memory name_, - string memory symbol_ - ) ERC20Permit(name_) ERC20(name_, symbol_) {} + constructor(string memory name_, string memory symbol_) ERC20Permit(name_) ERC20(name_, symbol_) {} function mint(address account, uint256 amount) public { _mint(account, amount); diff --git a/src/mocks/bravo/SafeMath.sol b/src/mocks/bravo/SafeMath.sol index 4525c5d..48f705a 100644 --- a/src/mocks/bravo/SafeMath.sol +++ b/src/mocks/bravo/SafeMath.sol @@ -44,11 +44,7 @@ library SafeMath { * Requirements: * - Addition cannot overflow. */ - function add( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c; unchecked { c = a + b; @@ -78,11 +74,7 @@ library SafeMath { * Requirements: * - Subtraction cannot underflow. */ - function sub( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; @@ -122,11 +114,7 @@ library SafeMath { * Requirements: * - Multiplication cannot overflow. */ - function mul( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 @@ -169,11 +157,7 @@ library SafeMath { * Requirements: * - The divisor cannot be zero. */ - function div( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; @@ -208,11 +192,7 @@ library SafeMath { * Requirements: * - The divisor cannot be zero. */ - function mod( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } diff --git a/src/mocks/bravo/Timelock.sol b/src/mocks/bravo/Timelock.sol index 90cbdaf..db9f257 100644 --- a/src/mocks/bravo/Timelock.sol +++ b/src/mocks/bravo/Timelock.sol @@ -4,34 +4,19 @@ pragma solidity ^0.8.0; import "./SafeMath.sol"; contract Timelock { - using SafeMath for uint; + using SafeMath for uint256; event NewAdmin(address indexed newAdmin); event NewPendingAdmin(address indexed newPendingAdmin); event NewDelay(uint256 indexed newDelay); event CancelTransaction( - bytes32 indexed txHash, - address indexed target, - uint256 value, - string signature, - bytes data, - uint256 eta + bytes32 indexed txHash, address indexed target, uint256 value, string signature, bytes data, uint256 eta ); event ExecuteTransaction( - bytes32 indexed txHash, - address indexed target, - uint256 value, - string signature, - bytes data, - uint256 eta + bytes32 indexed txHash, address indexed target, uint256 value, string signature, bytes data, uint256 eta ); event QueueTransaction( - bytes32 indexed txHash, - address indexed target, - uint256 value, - string signature, - bytes data, - uint256 eta + bytes32 indexed txHash, address indexed target, uint256 value, string signature, bytes data, uint256 eta ); uint256 public constant GRACE_PERIOD = 14 days; @@ -45,14 +30,8 @@ contract Timelock { mapping(bytes32 transaction => bool queued) public queuedTransactions; constructor(address admin_, uint256 delay_) { - require( - delay_ >= MINIMUM_DELAY, - "Timelock::constructor: Delay must exceed minimum delay." - ); - require( - delay_ <= MAXIMUM_DELAY, - "Timelock::setDelay: Delay must not exceed maximum delay." - ); + require(delay_ >= MINIMUM_DELAY, "Timelock::constructor: Delay must exceed minimum delay."); + require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay."); admin = admin_; delay = delay_; @@ -63,28 +42,16 @@ contract Timelock { receive() external payable {} function setDelay(uint256 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); @@ -92,87 +59,51 @@ contract Timelock { } 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, - uint256 value, - string memory signature, - bytes memory data, - uint256 eta - ) public returns (bytes32) { - require( - msg.sender == admin, - "Timelock::queueTransaction: Call must come from admin." - ); + function queueTransaction(address target, uint256 value, string memory signature, bytes memory data, uint256 eta) + public + returns (bytes32) + { + require(msg.sender == admin, "Timelock::queueTransaction: Call must come from admin."); require( eta >= getBlockTimestamp().add(delay), "Timelock::queueTransaction: Estimated execution block must satisfy delay." ); - bytes32 txHash = keccak256( - abi.encode(target, value, signature, data, eta) - ); + 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, - uint256 value, - string memory signature, - bytes memory data, - uint256 eta - ) public { - require( - msg.sender == admin, - "Timelock::cancelTransaction: Call must come from admin." - ); + function cancelTransaction(address target, uint256 value, string memory signature, bytes memory data, uint256 eta) + public + { + require(msg.sender == admin, "Timelock::cancelTransaction: Call must come from admin."); - bytes32 txHash = keccak256( - abi.encode(target, value, signature, data, eta) - ); + 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, - uint256 value, - string memory signature, - bytes memory data, - uint256 eta - ) public payable returns (bytes memory) { - require( - msg.sender == admin, - "Timelock::executeTransaction: Call must come from admin." - ); + function executeTransaction(address target, uint256 value, string memory signature, bytes memory data, uint256 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.add(GRACE_PERIOD), - "Timelock::executeTransaction: Transaction is stale." - ); + 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.add(GRACE_PERIOD), "Timelock::executeTransaction: Transaction is stale."); queuedTransactions[txHash] = false; @@ -181,20 +112,12 @@ contract Timelock { if (bytes(signature).length == 0) { callData = data; } else { - callData = abi.encodePacked( - bytes4(keccak256(bytes(signature))), - data - ); + callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data); } // solium-disable-next-line security/no-call-value - (bool success, bytes memory returnData) = target.call{value: value}( - callData - ); - require( - success, - "Timelock::executeTransaction: Transaction execution reverted." - ); + (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); diff --git a/src/mocks/governor-oz/MockERC20Votes.sol b/src/mocks/governor-oz/MockERC20Votes.sol index a3f9a1d..ec4e16e 100644 --- a/src/mocks/governor-oz/MockERC20Votes.sol +++ b/src/mocks/governor-oz/MockERC20Votes.sol @@ -4,10 +4,7 @@ pragma solidity ^0.8.0; import {ERC20, ERC20Permit, ERC20Votes} from "@openzeppelin/token/ERC20/extensions/ERC20Votes.sol"; contract MockERC20Votes is ERC20Votes { - constructor( - string memory name_, - string memory symbol_ - ) ERC20Permit(name_) ERC20(name_, symbol_) {} + constructor(string memory name_, string memory symbol_) ERC20Permit(name_) ERC20(name_, symbol_) {} function mint(address account, uint256 amount) public { _mint(account, amount); diff --git a/src/mocks/governor-oz/MockOZGovernor.sol b/src/mocks/governor-oz/MockOZGovernor.sol index 5855501..0a4ed38 100644 --- a/src/mocks/governor-oz/MockOZGovernor.sol +++ b/src/mocks/governor-oz/MockOZGovernor.sol @@ -5,7 +5,10 @@ import {Governor} from "@openzeppelin/governance/Governor.sol"; import {GovernorVotes, IVotes} from "@openzeppelin/governance/extensions/GovernorVotes.sol"; import {GovernorCountingSimple} from "@openzeppelin/governance/extensions/GovernorCountingSimple.sol"; import {GovernorVotesQuorumFraction} from "@openzeppelin/governance/extensions/GovernorVotesQuorumFraction.sol"; -import {GovernorTimelockControl, TimelockController} from "@openzeppelin/governance/extensions/GovernorTimelockControl.sol"; +import { + GovernorTimelockControl, + TimelockController +} from "@openzeppelin/governance/extensions/GovernorTimelockControl.sol"; contract MockOZGovernor is Governor, @@ -14,10 +17,12 @@ contract MockOZGovernor is GovernorVotesQuorumFraction, GovernorTimelockControl { - constructor( - IVotes _token, - TimelockController _timelock - ) Governor("MyGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) GovernorTimelockControl(_timelock) {} + constructor(IVotes _token, TimelockController _timelock) + Governor("MyGovernor") + GovernorVotes(_token) + GovernorVotesQuorumFraction(4) + GovernorTimelockControl(_timelock) + {} function votingDelay() public pure override returns (uint256) { return 1; // 12 secs @@ -31,9 +36,12 @@ contract MockOZGovernor is return 0; } - function state( - uint256 proposalId - ) public view override(Governor, GovernorTimelockControl) returns (ProposalState) { + function state(uint256 proposalId) + public + view + override(Governor, GovernorTimelockControl) + returns (ProposalState) + { return super.state(proposalId); } @@ -60,9 +68,12 @@ contract MockOZGovernor is return super._executor(); } - function supportsInterface( - bytes4 interfaceId - ) public view override(Governor, GovernorTimelockControl) returns (bool) { + function supportsInterface(bytes4 interfaceId) + public + view + override(Governor, GovernorTimelockControl) + returns (bool) + { return super.supportsInterface(interfaceId); } -} \ No newline at end of file +} diff --git a/src/mocks/vault/Vault.sol b/src/mocks/vault/Vault.sol index fc86b75..ade925c 100644 --- a/src/mocks/vault/Vault.sol +++ b/src/mocks/vault/Vault.sol @@ -12,8 +12,7 @@ contract Vault is Ownable, Pausable { uint256 timestamp; } - mapping(address _token => mapping(address _user => Deposit _deposit)) - public deposits; + mapping(address _token => mapping(address _user => Deposit _deposit)) public deposits; mapping(address _token => bool _isWhitelisted) public tokenWhitelist; constructor() Ownable() Pausable() {} @@ -34,22 +33,13 @@ contract Vault is Ownable, Pausable { IERC20(token).transferFrom(msg.sender, address(this), amount); } - function withdraw( - address token, - address payable to, - uint256 amount - ) external whenNotPaused { + function withdraw(address token, address payable to, uint256 amount) external whenNotPaused { require(tokenWhitelist[token], "Vault: token must be active"); require(amount > 0, "Vault: amount must be greater than 0"); require(token != address(0), "Vault: token must not be 0x0"); + require(deposits[token][msg.sender].amount >= amount, "Vault: insufficient balance"); require( - deposits[token][msg.sender].amount >= amount, - "Vault: insufficient balance" - ); - require( - deposits[token][msg.sender].timestamp + LOCK_PERIOD < - block.timestamp, - "Vault: lock period has not passed" + deposits[token][msg.sender].timestamp + LOCK_PERIOD < block.timestamp, "Vault: lock period has not passed" ); Deposit storage userDeposit = deposits[token][msg.sender]; diff --git a/src/proposals/arbitrum/ArbitrumProposal.sol b/src/proposals/arbitrum/ArbitrumProposal.sol index 4fcd6e4..a219b7e 100644 --- a/src/proposals/arbitrum/ArbitrumProposal.sol +++ b/src/proposals/arbitrum/ArbitrumProposal.sol @@ -15,19 +15,16 @@ abstract contract ArbitrumProposal is OZGovernorProposal { using Address for address; /// @notice the target address on L1 Timelock when it's a L2 proposal - address private constant RETRYABLE_TICKET_MAGIC = - 0xa723C008e76E379c55599D2E4d93879BeaFDa79C; + address private constant RETRYABLE_TICKET_MAGIC = 0xa723C008e76E379c55599D2E4d93879BeaFDa79C; /// @notice minimum delay for the Arbitrum L1 timelock uint256 private constant minDelay = 3 days; /// @notice Arbitrum One inbox address on mainnet - address private constant arbOneInbox = - 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f; + address private constant arbOneInbox = 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f; /// @notice Arbitrum Nova inbox address on mainnet - address private constant arbNovaInbox = - 0xc4448b71118c9071Bcb9734A0EAc55D18A153949; + address private constant arbNovaInbox = 0xc4448b71118c9071Bcb9734A0EAc55D18A153949; enum ProposalExecutionChain { ETH, @@ -53,11 +50,7 @@ abstract contract ArbitrumProposal is OZGovernorProposal { vm.selectFork(ethForkId); address mockOutbox = address(new MockArbOutbox()); - vm.store( - addresses.getAddress("ARBITRUM_BRIDGE"), - bytes32(uint256(5)), - bytes32(uint256(uint160(mockOutbox))) - ); + vm.store(addresses.getAddress("ARBITRUM_BRIDGE"), bytes32(uint256(5)), bytes32(uint256(uint160(mockOutbox)))); vm.selectFork(primaryForkId); @@ -71,16 +64,12 @@ abstract contract ArbitrumProposal is OZGovernorProposal { function _validateActions() internal view override { uint256 actionsLength = actions.length; - require( - actionsLength == 1, - "Arbitrum proposals must have a single action" - ); + require(actionsLength == 1, "Arbitrum proposals must have a single action"); require(actions[0].target != address(0), "Invalid target for proposal"); /// if there are no args and no eth, the action is not valid require( - (actions[0].arguments.length == 0 && actions[0].value > 0) || - actions[0].arguments.length > 0, + (actions[0].arguments.length == 0 && actions[0].value > 0) || actions[0].arguments.length > 0, "Invalid arguments for proposal" ); @@ -92,11 +81,7 @@ abstract contract ArbitrumProposal is OZGovernorProposal { /// @notice get the calldata to schedule the timelock on L1 /// the L1 schedule calldata must be the calldata for all arbitrum proposals - function getScheduleTimelockCaldata() - public - view - returns (bytes memory scheduleCalldata) - { + function getScheduleTimelockCaldata() public view returns (bytes memory scheduleCalldata) { // address only used if is a L2 proposal address inbox; @@ -111,21 +96,19 @@ abstract contract ArbitrumProposal is OZGovernorProposal { // if the action is to be executed on l1, the target is the actual // target, otherwise it is the magic value that tells that the // proposal must be relayed back to l2 - executionChain == ProposalExecutionChain.ETH - ? actions[0].target - : RETRYABLE_TICKET_MAGIC, // target + executionChain == ProposalExecutionChain.ETH ? actions[0].target : RETRYABLE_TICKET_MAGIC, // target actions[0].value, // value executionChain == ProposalExecutionChain.ETH ? actions[0].arguments : abi.encode( // these are the retryable data params - // the inbox we want to use, should be arb one or nova - inbox, - addresses.getAddress("ARBITRUM_L2_UPGRADE_EXECUTOR"), // the upgrade executor on the l2 network - 0, // no value in this upgrade - 0, // max gas - will be filled in when the retryable is actually executed - 0, // max fee per gas - will be filled in when the retryable is actually executed - actions[0].arguments // calldata created on the build function - ), + // the inbox we want to use, should be arb one or nova + inbox, + addresses.getAddress("ARBITRUM_L2_UPGRADE_EXECUTOR"), // the upgrade executor on the l2 network + 0, // no value in this upgrade + 0, // max gas - will be filled in when the retryable is actually executed + 0, // max fee per gas - will be filled in when the retryable is actually executed + actions[0].arguments // calldata created on the build function + ), bytes32(0), // no predecessor keccak256(abi.encodePacked(description())), // salt is prop description minDelay // delay for this proposal @@ -139,11 +122,7 @@ abstract contract ArbitrumProposal is OZGovernorProposal { public view override - returns ( - address[] memory targets, - uint256[] memory values, - bytes[] memory arguments - ) + returns (address[] memory targets, uint256[] memory values, bytes[] memory arguments) { _validateActions(); @@ -155,9 +134,7 @@ abstract contract ArbitrumProposal is OZGovernorProposal { arguments = new bytes[](1); bytes memory callData = abi.encodeWithSelector( - MockArbSys.sendTxToL1.selector, - addresses.getAddress("ARBITRUM_L1_TIMELOCK", 1), - innerCalldata + MockArbSys.sendTxToL1.selector, addresses.getAddress("ARBITRUM_L1_TIMELOCK", 1), innerCalldata ); // Arbitrum proposals target must be the ArbSys precompiled address @@ -183,9 +160,7 @@ abstract contract ArbitrumProposal is OZGovernorProposal { // prank as the bridge vm.startPrank(addresses.getAddress("ARBITRUM_BRIDGE")); - address l1TimelockAddress = addresses.getAddress( - "ARBITRUM_L1_TIMELOCK" - ); + address l1TimelockAddress = addresses.getAddress("ARBITRUM_L1_TIMELOCK"); ITimelockController timelock = ITimelockController(l1TimelockAddress); @@ -206,10 +181,8 @@ abstract contract ArbitrumProposal is OZGovernorProposal { Vm.Log[] memory entries = vm.getRecordedLogs(); // Get the execute parameters from schedule call logs - (target, value, data, predecessor, ) = abi.decode( - entries[0].data, - (address, uint256, bytes, bytes32, uint256) - ); + (target, value, data, predecessor,) = + abi.decode(entries[0].data, (address, uint256, bytes, bytes32, uint256)); // warp to the future to execute the proposal vm.warp(block.timestamp + minDelay); @@ -222,13 +195,7 @@ abstract contract ArbitrumProposal is OZGovernorProposal { vm.recordLogs(); // execute the proposal - timelock.execute( - target, - value, - data, - predecessor, - keccak256(abi.encodePacked(description())) - ); + timelock.execute(target, value, data, predecessor, keccak256(abi.encodePacked(description()))); // Stop recording logs Vm.Log[] memory entries = vm.getRecordedLogs(); diff --git a/src/proposals/arbitrum/ArbitrumProposal_01.sol b/src/proposals/arbitrum/ArbitrumProposal_01.sol index bb2784b..1383977 100644 --- a/src/proposals/arbitrum/ArbitrumProposal_01.sol +++ b/src/proposals/arbitrum/ArbitrumProposal_01.sol @@ -9,10 +9,7 @@ import {MockProxyUpgradeAction} from "src/mocks/arbitrum/MockProxyUpgradeAction. import {ArbitrumProposal} from "./ArbitrumProposal.sol"; interface IUpgradeExecutor { - function execute( - address upgrader, - bytes memory upgradeCalldata - ) external payable; + function execute(address upgrader, bytes memory upgradeCalldata) external payable; } /// @title ArbitrumProposal_01 @@ -31,9 +28,7 @@ contract ArbitrumProposal_01 is ArbitrumProposal { } function run() public override { - addresses = new Addresses( - vm.envOr("ADDRESSES_PATH", string("./addresses/Addresses.json")) - ); + addresses = new Addresses(vm.envOr("ADDRESSES_PATH", string("./addresses/Addresses.json"))); vm.makePersistent(address(addresses)); setPrimaryForkId(vm.createFork("arbitrum")); @@ -48,16 +43,10 @@ contract ArbitrumProposal_01 is ArbitrumProposal { } function deploy() public override { - if ( - !addresses.isAddressSet("ARBITRUM_L2_WETH_GATEWAY_IMPLEMENTATION") - ) { + if (!addresses.isAddressSet("ARBITRUM_L2_WETH_GATEWAY_IMPLEMENTATION")) { address mockUpgrade = address(new MockUpgrade()); - addresses.addAddress( - "ARBITRUM_L2_WETH_GATEWAY_IMPLEMENTATION", - mockUpgrade, - true - ); + addresses.addAddress("ARBITRUM_L2_WETH_GATEWAY_IMPLEMENTATION", mockUpgrade, true); } if (!addresses.isAddressSet("PROXY_UPGRADE_ACTION")) { @@ -66,14 +55,8 @@ contract ArbitrumProposal_01 is ArbitrumProposal { } } - function build() - public - override - buildModifier(addresses.getAddress("ARBITRUM_ALIASED_L1_TIMELOCK")) - { - IUpgradeExecutor upgradeExecutor = IUpgradeExecutor( - addresses.getAddress("ARBITRUM_L2_UPGRADE_EXECUTOR") - ); + function build() public override buildModifier(addresses.getAddress("ARBITRUM_ALIASED_L1_TIMELOCK")) { + IUpgradeExecutor upgradeExecutor = IUpgradeExecutor(addresses.getAddress("ARBITRUM_L2_UPGRADE_EXECUTOR")); upgradeExecutor.execute( addresses.getAddress("PROXY_UPGRADE_ACTION"), @@ -87,15 +70,12 @@ contract ArbitrumProposal_01 is ArbitrumProposal { } function validate() public override { - IProxy proxy = IProxy( - addresses.getAddress("ARBITRUM_L2_WETH_GATEWAY_PROXY") - ); + IProxy proxy = IProxy(addresses.getAddress("ARBITRUM_L2_WETH_GATEWAY_PROXY")); // implementation() caller must be the owner vm.startPrank(addresses.getAddress("ARBITRUM_L2_PROXY_ADMIN")); require( - proxy.implementation() == - addresses.getAddress("ARBITRUM_L2_WETH_GATEWAY_IMPLEMENTATION"), + proxy.implementation() == addresses.getAddress("ARBITRUM_L2_WETH_GATEWAY_IMPLEMENTATION"), "Proxy implementation not set" ); vm.stopPrank(); diff --git a/src/proposals/arbitrum/ArbitrumProposal_02.sol b/src/proposals/arbitrum/ArbitrumProposal_02.sol index 8fc4768..15798f5 100644 --- a/src/proposals/arbitrum/ArbitrumProposal_02.sol +++ b/src/proposals/arbitrum/ArbitrumProposal_02.sol @@ -9,10 +9,7 @@ import {MockProxyUpgradeAction} from "src/mocks/arbitrum/MockProxyUpgradeAction. import {ArbitrumProposal} from "./ArbitrumProposal.sol"; interface IUpgradeExecutor { - function execute( - address upgrader, - bytes memory upgradeCalldata - ) external payable; + function execute(address upgrader, bytes memory upgradeCalldata) external payable; } /// @title ArbitrumProposal_02 @@ -31,9 +28,7 @@ contract ArbitrumProposal_02 is ArbitrumProposal { } function run() public override { - addresses = new Addresses( - vm.envOr("ADDRESSES_PATH", string("./addresses/Addresses.json")) - ); + addresses = new Addresses(vm.envOr("ADDRESSES_PATH", string("./addresses/Addresses.json"))); vm.makePersistent(address(addresses)); setPrimaryForkId(vm.createFork("arbitrum")); @@ -52,16 +47,10 @@ contract ArbitrumProposal_02 is ArbitrumProposal { } function deploy() public override { - if ( - !addresses.isAddressSet("ARBITRUM_L1_WETH_GATEWAY_IMPLEMENTATION") - ) { + if (!addresses.isAddressSet("ARBITRUM_L1_WETH_GATEWAY_IMPLEMENTATION")) { address mockUpgrade = address(new MockUpgrade()); - addresses.addAddress( - "ARBITRUM_L1_WETH_GATEWAY_IMPLEMENTATION", - mockUpgrade, - true - ); + addresses.addAddress("ARBITRUM_L1_WETH_GATEWAY_IMPLEMENTATION", mockUpgrade, true); } if (!addresses.isAddressSet("PROXY_UPGRADE_ACTION")) { @@ -71,16 +60,10 @@ contract ArbitrumProposal_02 is ArbitrumProposal { } } - function build() - public - override - buildModifier(addresses.getAddress("ARBITRUM_L1_TIMELOCK", 1)) - { + function build() public override buildModifier(addresses.getAddress("ARBITRUM_L1_TIMELOCK", 1)) { vm.selectFork(ethForkId); - IUpgradeExecutor upgradeExecutor = IUpgradeExecutor( - addresses.getAddress("ARBITRUM_L1_UPGRADE_EXECUTOR") - ); + IUpgradeExecutor upgradeExecutor = IUpgradeExecutor(addresses.getAddress("ARBITRUM_L1_UPGRADE_EXECUTOR")); upgradeExecutor.execute( addresses.getAddress("PROXY_UPGRADE_ACTION"), @@ -98,15 +81,12 @@ contract ArbitrumProposal_02 is ArbitrumProposal { function validate() public override { vm.selectFork(ethForkId); - IProxy proxy = IProxy( - addresses.getAddress("ARBITRUM_L1_WETH_GATEWAY_PROXY") - ); + IProxy proxy = IProxy(addresses.getAddress("ARBITRUM_L1_WETH_GATEWAY_PROXY")); // implementation() caller must be the owner vm.startPrank(addresses.getAddress("ARBITRUM_L1_PROXY_ADMIN")); require( - proxy.implementation() == - addresses.getAddress("ARBITRUM_L1_WETH_GATEWAY_IMPLEMENTATION"), + proxy.implementation() == addresses.getAddress("ARBITRUM_L1_WETH_GATEWAY_IMPLEMENTATION"), "Proxy implementation not set" ); diff --git a/src/proposals/simple-vault-bravo/BravoProposal_01.sol b/src/proposals/simple-vault-bravo/BravoProposal_01.sol index 146753b..91f5229 100644 --- a/src/proposals/simple-vault-bravo/BravoProposal_01.sol +++ b/src/proposals/simple-vault-bravo/BravoProposal_01.sol @@ -19,11 +19,7 @@ contract BravoProposal_01 is GovernorBravoProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setGovernor(addresses.getAddress("PROTOCOL_GOVERNOR")); @@ -54,17 +50,11 @@ contract BravoProposal_01 is GovernorBravoProposal { } } - function build() - public - override - buildModifier(addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO")) - { + function build() public override buildModifier(addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO")) { /// STATICCALL -- not recorded for the run stage address bravoVault = addresses.getAddress("BRAVO_VAULT"); address token = addresses.getAddress("BRAVO_VAULT_TOKEN"); - uint256 balance = Token(token).balanceOf( - addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO") - ); + uint256 balance = Token(token).balanceOf(addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO")); Vault(bravoVault).whitelistToken(token, true); @@ -80,10 +70,7 @@ contract BravoProposal_01 is GovernorBravoProposal { address timelock = addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO"); uint256 balance = token.balanceOf(address(bravoVault)); - (uint256 amount, ) = bravoVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = bravoVault.deposits(address(token), address(timelock)); assertEq(amount, balance); assertTrue(bravoVault.tokenWhitelist(address(token))); diff --git a/src/proposals/simple-vault-bravo/BravoProposal_02.sol b/src/proposals/simple-vault-bravo/BravoProposal_02.sol index fee0bd0..6d4c1c1 100644 --- a/src/proposals/simple-vault-bravo/BravoProposal_02.sol +++ b/src/proposals/simple-vault-bravo/BravoProposal_02.sol @@ -19,27 +19,19 @@ contract BravoProposal_02 is GovernorBravoProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setGovernor(addresses.getAddress("PROTOCOL_GOVERNOR")); super.run(); } - function build() - public - override - buildModifier(addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO")) - { + function build() public override buildModifier(addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO")) { /// STATICCALL -- not recorded for the run stage address timelock = addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO"); Vault bravoVault = Vault(addresses.getAddress("BRAVO_VAULT")); address token = addresses.getAddress("BRAVO_VAULT_TOKEN"); - (uint256 amount, ) = bravoVault.deposits(address(token), timelock); + (uint256 amount,) = bravoVault.deposits(address(token), timelock); /// CALLS -- mutative and recorded bravoVault.withdraw(token, payable(timelock), amount); @@ -54,10 +46,7 @@ contract BravoProposal_02 is GovernorBravoProposal { uint256 balance = token.balanceOf(address(bravoVault)); assertEq(balance, 0); - (uint256 amount, ) = bravoVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = bravoVault.deposits(address(token), address(timelock)); assertEq(amount, 0); assertEq(token.balanceOf(address(timelock)), 10_000_000e18); diff --git a/src/proposals/simple-vault-governor-oz/OZGovernorProposal_01.sol b/src/proposals/simple-vault-governor-oz/OZGovernorProposal_01.sol index 88ed0ff..77ffb4a 100644 --- a/src/proposals/simple-vault-governor-oz/OZGovernorProposal_01.sol +++ b/src/proposals/simple-vault-governor-oz/OZGovernorProposal_01.sol @@ -19,11 +19,7 @@ contract OZGovernorProposal_01 is OZGovernorProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setGovernor(addresses.getAddress("OZ_GOVERNOR")); @@ -54,17 +50,11 @@ contract OZGovernorProposal_01 is OZGovernorProposal { } } - function build() - public - override - buildModifier(addresses.getAddress("OZ_GOVERNOR_TIMELOCK")) - { + function build() public override buildModifier(addresses.getAddress("OZ_GOVERNOR_TIMELOCK")) { /// STATICCALL -- not recorded for the run stage address ozGovernorVault = addresses.getAddress("OZ_GOVERNOR_VAULT"); address token = addresses.getAddress("OZ_GOVERNOR_VAULT_TOKEN"); - uint256 balance = Token(token).balanceOf( - addresses.getAddress("OZ_GOVERNOR_TIMELOCK") - ); + uint256 balance = Token(token).balanceOf(addresses.getAddress("OZ_GOVERNOR_TIMELOCK")); /// CALLS -- mutative and recorded Vault(ozGovernorVault).whitelistToken(token, true); @@ -79,10 +69,7 @@ contract OZGovernorProposal_01 is OZGovernorProposal { address timelock = addresses.getAddress("OZ_GOVERNOR_TIMELOCK"); uint256 balance = token.balanceOf(address(ozGovernorVault)); - (uint256 amount, ) = ozGovernorVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = ozGovernorVault.deposits(address(token), address(timelock)); assertEq(amount, balance); assertTrue(ozGovernorVault.tokenWhitelist(address(token))); diff --git a/src/proposals/simple-vault-governor-oz/OZGovernorProposal_02.sol b/src/proposals/simple-vault-governor-oz/OZGovernorProposal_02.sol index 3a1434f..b80f836 100644 --- a/src/proposals/simple-vault-governor-oz/OZGovernorProposal_02.sol +++ b/src/proposals/simple-vault-governor-oz/OZGovernorProposal_02.sol @@ -19,27 +19,19 @@ contract OZGovernorProposal_02 is OZGovernorProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setGovernor(addresses.getAddress("OZ_GOVERNOR")); super.run(); } - function build() - public - override - buildModifier(addresses.getAddress("OZ_GOVERNOR_TIMELOCK")) - { + function build() public override buildModifier(addresses.getAddress("OZ_GOVERNOR_TIMELOCK")) { /// STATICCALL -- not recorded for the run stage address timelock = addresses.getAddress("OZ_GOVERNOR_TIMELOCK"); Vault ozGovernorVault = Vault(addresses.getAddress("OZ_GOVERNOR_VAULT")); address token = addresses.getAddress("OZ_GOVERNOR_VAULT_TOKEN"); - (uint256 amount, ) = ozGovernorVault.deposits(address(token), timelock); + (uint256 amount,) = ozGovernorVault.deposits(address(token), timelock); /// CALLS -- mutative and recorded ozGovernorVault.withdraw(token, payable(timelock), amount); @@ -54,10 +46,7 @@ contract OZGovernorProposal_02 is OZGovernorProposal { uint256 balance = token.balanceOf(address(ozGovernorVault)); assertEq(balance, 0); - (uint256 amount, ) = ozGovernorVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = ozGovernorVault.deposits(address(token), address(timelock)); assertEq(amount, 0); assertEq(token.balanceOf(address(timelock)), 10_000_000e18); diff --git a/src/proposals/simple-vault-multisig/MultisigProposal_01.sol b/src/proposals/simple-vault-multisig/MultisigProposal_01.sol index dee29b5..7185f93 100644 --- a/src/proposals/simple-vault-multisig/MultisigProposal_01.sol +++ b/src/proposals/simple-vault-multisig/MultisigProposal_01.sol @@ -18,11 +18,7 @@ contract MultisigProposal_01 is MultisigProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); super.run(); } @@ -32,11 +28,7 @@ contract MultisigProposal_01 is MultisigProposal { if (!addresses.isAddressSet("MULTISIG_VAULT")) { Vault multisigVault = new Vault(); - addresses.addAddress( - "MULTISIG_VAULT", - address(multisigVault), - true - ); + addresses.addAddress("MULTISIG_VAULT", address(multisigVault), true); multisigVault.transferOwnership(multisig); } @@ -56,11 +48,7 @@ contract MultisigProposal_01 is MultisigProposal { } } - function build() - public - override - buildModifier(addresses.getAddress("DEV_MULTISIG")) - { + function build() public override buildModifier(addresses.getAddress("DEV_MULTISIG")) { address multisig = addresses.getAddress("DEV_MULTISIG"); /// STATICCALL -- not recorded for the run stage @@ -87,7 +75,7 @@ contract MultisigProposal_01 is MultisigProposal { address multisig = addresses.getAddress("DEV_MULTISIG"); uint256 balance = token.balanceOf(address(multisigVault)); - (uint256 amount, ) = multisigVault.deposits(address(token), multisig); + (uint256 amount,) = multisigVault.deposits(address(token), multisig); assertEq(amount, balance); assertTrue(multisigVault.tokenWhitelist(address(token))); diff --git a/src/proposals/simple-vault-multisig/MultisigProposal_02.sol b/src/proposals/simple-vault-multisig/MultisigProposal_02.sol index fccece5..0603c32 100644 --- a/src/proposals/simple-vault-multisig/MultisigProposal_02.sol +++ b/src/proposals/simple-vault-multisig/MultisigProposal_02.sol @@ -18,26 +18,18 @@ contract MultisigProposal_02 is MultisigProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); super.run(); } - function build() - public - override - buildModifier(addresses.getAddress("DEV_MULTISIG")) - { + function build() public override buildModifier(addresses.getAddress("DEV_MULTISIG")) { address multisig = addresses.getAddress("DEV_MULTISIG"); /// STATICCALL -- not recorded for the run stage Vault multisigVault = Vault(addresses.getAddress("MULTISIG_VAULT")); address token = addresses.getAddress("MULTISIG_TOKEN"); - (uint256 amount, ) = multisigVault.deposits(address(token), multisig); + (uint256 amount,) = multisigVault.deposits(address(token), multisig); /// CALLS -- mutative and recorded multisigVault.withdraw(token, payable(multisig), amount); @@ -57,7 +49,7 @@ contract MultisigProposal_02 is MultisigProposal { uint256 balance = token.balanceOf(address(timelockVault)); assertEq(balance, 0); - (uint256 amount, ) = timelockVault.deposits(address(token), multisig); + (uint256 amount,) = timelockVault.deposits(address(token), multisig); assertEq(amount, 0); assertEq(token.balanceOf(multisig), 10_000_000e18); diff --git a/src/proposals/simple-vault-timelock/TimelockProposal_01.sol b/src/proposals/simple-vault-timelock/TimelockProposal_01.sol index 5734a2b..ff86fb1 100644 --- a/src/proposals/simple-vault-timelock/TimelockProposal_01.sol +++ b/src/proposals/simple-vault-timelock/TimelockProposal_01.sol @@ -18,11 +18,7 @@ contract TimelockProposal_01 is TimelockProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setTimelock(addresses.getAddress("PROTOCOL_TIMELOCK")); @@ -33,11 +29,7 @@ contract TimelockProposal_01 is TimelockProposal { if (!addresses.isAddressSet("TIMELOCK_VAULT")) { Vault timelockVault = new Vault(); - addresses.addAddress( - "TIMELOCK_VAULT", - address(timelockVault), - true - ); + addresses.addAddress("TIMELOCK_VAULT", address(timelockVault), true); timelockVault.transferOwnership(address(timelock)); } @@ -82,10 +74,7 @@ contract TimelockProposal_01 is TimelockProposal { Token token = Token(addresses.getAddress("TIMELOCK_TOKEN")); uint256 balance = token.balanceOf(address(timelockVault)); - (uint256 amount, ) = timelockVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = timelockVault.deposits(address(token), address(timelock)); assertEq(amount, balance); assertTrue(timelockVault.tokenWhitelist(address(token))); diff --git a/src/proposals/simple-vault-timelock/TimelockProposal_02.sol b/src/proposals/simple-vault-timelock/TimelockProposal_02.sol index 043a212..ad0995f 100644 --- a/src/proposals/simple-vault-timelock/TimelockProposal_02.sol +++ b/src/proposals/simple-vault-timelock/TimelockProposal_02.sol @@ -18,11 +18,7 @@ contract TimelockProposal_02 is TimelockProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setTimelock(addresses.getAddress("PROTOCOL_TIMELOCK")); @@ -33,10 +29,7 @@ contract TimelockProposal_02 is TimelockProposal { /// STATICCALL -- not recorded for the run stage Vault timelockVault = Vault(addresses.getAddress("TIMELOCK_VAULT")); address token = addresses.getAddress("TIMELOCK_TOKEN"); - (uint256 amount, ) = timelockVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = timelockVault.deposits(address(token), address(timelock)); /// CALLS -- mutative and recorded timelockVault.withdraw(token, payable(address(timelock)), amount); @@ -56,10 +49,7 @@ contract TimelockProposal_02 is TimelockProposal { uint256 balance = token.balanceOf(address(timelockVault)); assertEq(balance, 0); - (uint256 amount, ) = timelockVault.deposits( - address(token), - address(timelock) - ); + (uint256 amount,) = timelockVault.deposits(address(token), address(timelock)); assertEq(amount, 0); assertEq(token.balanceOf(address(timelock)), 10_000_000e18); diff --git a/src/proposals/state-diff/StateDiffTimelockProposal_01.sol b/src/proposals/state-diff/StateDiffTimelockProposal_01.sol index ecd714a..85d51be 100644 --- a/src/proposals/state-diff/StateDiffTimelockProposal_01.sol +++ b/src/proposals/state-diff/StateDiffTimelockProposal_01.sol @@ -18,11 +18,7 @@ contract StateDiffTimelockProposal_01 is TimelockProposal { function run() public override { setPrimaryForkId(vm.createSelectFork("sepolia")); - setAddresses( - new Addresses( - vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")) - ) - ); + setAddresses(new Addresses(vm.envOr("ADDRESSES_PATH", string("addresses/Addresses.json")))); setTimelock(addresses.getAddress("PROTOCOL_TIMELOCK")); @@ -38,23 +34,15 @@ contract StateDiffTimelockProposal_01 is TimelockProposal { Token token = new Token(); // add TOKEN address - addresses.addAddress( - "TOKEN", - address(token), - true - ); + addresses.addAddress("TOKEN", address(token), true); - TokenWrapper tokenWrapper= new TokenWrapper(address(token)); + TokenWrapper tokenWrapper = new TokenWrapper(address(token)); // transfer 100 tokens to token wrapper contract token.transfer(address(tokenWrapper), 100 ether); // add TOKEN_WRAPPER address - addresses.addAddress( - "TOKEN_WRAPPER", - address(tokenWrapper), - true - ); + addresses.addAddress("TOKEN_WRAPPER", address(tokenWrapper), true); // transfer ownership to timelock controller tokenWrapper.transferOwnership(timelock); @@ -76,6 +64,5 @@ contract StateDiffTimelockProposal_01 is TimelockProposal { _simulateActions(dev, dev); } - function validate() public view override { - } + function validate() public view override {} } diff --git a/test/bravo/BravoPostProposalCheck.sol b/test/bravo/BravoPostProposalCheck.sol index 412f739..2bb9307 100644 --- a/test/bravo/BravoPostProposalCheck.sol +++ b/test/bravo/BravoPostProposalCheck.sol @@ -17,9 +17,7 @@ contract BravoPostProposalCheck is Test { string memory output = string(vm.ffi(inputs)); - GovernorBravoProposal bravoProposal = GovernorBravoProposal( - deployCode(output) - ); + GovernorBravoProposal bravoProposal = GovernorBravoProposal(deployCode(output)); vm.makePersistent(address(bravoProposal)); // Execute proposals diff --git a/test/bravo/BravoVaultIntegrationTestSepolia.t.sol b/test/bravo/BravoVaultIntegrationTestSepolia.t.sol index c9d0266..4764302 100644 --- a/test/bravo/BravoVaultIntegrationTestSepolia.t.sol +++ b/test/bravo/BravoVaultIntegrationTestSepolia.t.sol @@ -17,17 +17,14 @@ contract BravoVaultIntegrationTestSepolia is BravoPostProposalCheck { governorVault.whitelistToken(address(token), true); - assertTrue( - governorVault.tokenWhitelist(address(token)), - "Token should be whitelisted" - ); + assertTrue(governorVault.tokenWhitelist(address(token)), "Token should be whitelisted"); } function test_depositToVault() public { Vault governorVault = Vault(addresses.getAddress("BRAVO_VAULT")); address timelock = addresses.getAddress("PROTOCOL_TIMELOCK_BRAVO"); address token = addresses.getAddress("BRAVO_VAULT_TOKEN"); - (uint256 prevDeposit, ) = governorVault.deposits(token, timelock); + (uint256 prevDeposit,) = governorVault.deposits(token, timelock); uint256 depositAmount = 100; vm.startPrank(timelock); @@ -35,10 +32,7 @@ contract BravoVaultIntegrationTestSepolia is BravoPostProposalCheck { Token(token).approve(address(governorVault), depositAmount); governorVault.deposit(address(token), depositAmount); - (uint256 amount, ) = governorVault.deposits(token, timelock); - assertTrue( - amount == (prevDeposit + depositAmount), - "Token should be deposited" - ); + (uint256 amount,) = governorVault.deposits(token, timelock); + assertTrue(amount == (prevDeposit + depositAmount), "Token should be deposited"); } } diff --git a/test/governor-oz/OZGovernorPostProposalCheck.sol b/test/governor-oz/OZGovernorPostProposalCheck.sol index 6973b47..49c42d8 100644 --- a/test/governor-oz/OZGovernorPostProposalCheck.sol +++ b/test/governor-oz/OZGovernorPostProposalCheck.sol @@ -17,9 +17,7 @@ contract OZGovernorPostProposalCheck is Test { string memory output = string(vm.ffi(inputs)); - OZGovernorProposal ozGovernorproposal = OZGovernorProposal( - deployCode(output) - ); + OZGovernorProposal ozGovernorproposal = OZGovernorProposal(deployCode(output)); vm.makePersistent(address(ozGovernorproposal)); // Execute proposals diff --git a/test/governor-oz/OZGovernorVaultIntegrationTestSepolia.sol b/test/governor-oz/OZGovernorVaultIntegrationTestSepolia.sol index 8420d17..99e1ef6 100644 --- a/test/governor-oz/OZGovernorVaultIntegrationTestSepolia.sol +++ b/test/governor-oz/OZGovernorVaultIntegrationTestSepolia.sol @@ -17,17 +17,14 @@ contract OZGovernorVaultIntegrationTestSepolia is OZGovernorPostProposalCheck { ozGovernorVault.whitelistToken(address(token), true); - assertTrue( - ozGovernorVault.tokenWhitelist(address(token)), - "Token should be whitelisted" - ); + assertTrue(ozGovernorVault.tokenWhitelist(address(token)), "Token should be whitelisted"); } function test_depositToVault() public { Vault ozGovernorVault = Vault(addresses.getAddress("OZ_GOVERNOR_VAULT")); address ozGovernorTimelock = addresses.getAddress("OZ_GOVERNOR_TIMELOCK"); address governanceToken = addresses.getAddress("OZ_GOVERNOR_VAULT_TOKEN"); - (uint256 prevDeposit, ) = ozGovernorVault.deposits(governanceToken, ozGovernorTimelock); + (uint256 prevDeposit,) = ozGovernorVault.deposits(governanceToken, ozGovernorTimelock); uint256 depositAmount = 100; vm.startPrank(ozGovernorTimelock); @@ -35,10 +32,7 @@ contract OZGovernorVaultIntegrationTestSepolia is OZGovernorPostProposalCheck { Token(governanceToken).approve(address(ozGovernorVault), depositAmount); ozGovernorVault.deposit(address(governanceToken), depositAmount); - (uint256 amount, ) = ozGovernorVault.deposits(governanceToken, ozGovernorTimelock); - assertTrue( - amount == (prevDeposit + depositAmount), - "Token should be deposited" - ); + (uint256 amount,) = ozGovernorVault.deposits(governanceToken, ozGovernorTimelock); + assertTrue(amount == (prevDeposit + depositAmount), "Token should be deposited"); } } diff --git a/test/multisig/MultisigPostProposalCheck.sol b/test/multisig/MultisigPostProposalCheck.sol index 0a97a93..0136ac4 100644 --- a/test/multisig/MultisigPostProposalCheck.sol +++ b/test/multisig/MultisigPostProposalCheck.sol @@ -17,9 +17,7 @@ contract MultisigPostProposalCheck is Test { string memory output = string(vm.ffi(inputs)); - MultisigProposal multisigProposal = MultisigProposal( - deployCode(output) - ); + MultisigProposal multisigProposal = MultisigProposal(deployCode(output)); vm.makePersistent(address(multisigProposal)); // Execute proposals diff --git a/test/multisig/MultisigVaultIntegrationTestSepolia.t.sol b/test/multisig/MultisigVaultIntegrationTestSepolia.t.sol index ac93cd8..e2b2d6e 100644 --- a/test/multisig/MultisigVaultIntegrationTestSepolia.t.sol +++ b/test/multisig/MultisigVaultIntegrationTestSepolia.t.sol @@ -24,10 +24,7 @@ contract MultisigVaultIntegrationTestSepolia is MultisigPostProposalCheck { multisigVault.whitelistToken(address(token), true); // Asserts that the token is successfully whitelisted - assertTrue( - multisigVault.tokenWhitelist(address(token)), - "Token should be whitelisted" - ); + assertTrue(multisigVault.tokenWhitelist(address(token)), "Token should be whitelisted"); } // Tests deposit functionality in the Vault contract @@ -39,10 +36,7 @@ contract MultisigVaultIntegrationTestSepolia is MultisigPostProposalCheck { // Retrieves the address of the token to be deposited address token = addresses.getAddress("MULTISIG_TOKEN"); - (uint256 prevDeposits, ) = multisigVault.deposits( - address(token), - multisig - ); + (uint256 prevDeposits,) = multisigVault.deposits(address(token), multisig); uint256 depositAmount = 100; @@ -56,11 +50,8 @@ contract MultisigVaultIntegrationTestSepolia is MultisigPostProposalCheck { multisigVault.deposit(address(token), depositAmount); // Retrieves the deposit amount of the token in the Vault for the multisig address - (uint256 amount, ) = multisigVault.deposits(address(token), multisig); + (uint256 amount,) = multisigVault.deposits(address(token), multisig); // Asserts that the deposit amount is equal to previous deposit + depositAmount - assertTrue( - amount == prevDeposits + depositAmount, - "Token should be deposited" - ); + assertTrue(amount == prevDeposits + depositAmount, "Token should be deposited"); } } diff --git a/test/timelock/TimelockPostProposalCheck.sol b/test/timelock/TimelockPostProposalCheck.sol index 15ce0f8..681dfd9 100644 --- a/test/timelock/TimelockPostProposalCheck.sol +++ b/test/timelock/TimelockPostProposalCheck.sol @@ -17,9 +17,7 @@ contract TimelockPostProposalCheck is Test { string memory output = string(vm.ffi(inputs)); - TimelockProposal timelockProposal = TimelockProposal( - deployCode(output) - ); + TimelockProposal timelockProposal = TimelockProposal(deployCode(output)); vm.makePersistent(address(timelockProposal)); // Execute proposals diff --git a/test/timelock/TimelockVaultIntegrationTestSepolia.t.sol b/test/timelock/TimelockVaultIntegrationTestSepolia.t.sol index 4639ed9..c431b2c 100644 --- a/test/timelock/TimelockVaultIntegrationTestSepolia.t.sol +++ b/test/timelock/TimelockVaultIntegrationTestSepolia.t.sol @@ -17,10 +17,7 @@ contract TimelockVaultIntegrationTestSepolia is TimelockPostProposalCheck { timelockVault.whitelistToken(address(token), true); - assertTrue( - timelockVault.tokenWhitelist(address(token)), - "Token should be whitelisted" - ); + assertTrue(timelockVault.tokenWhitelist(address(token)), "Token should be whitelisted"); } function test_depositToVault() public { @@ -28,10 +25,7 @@ contract TimelockVaultIntegrationTestSepolia is TimelockPostProposalCheck { address timelock = addresses.getAddress("PROTOCOL_TIMELOCK"); address token = addresses.getAddress("TIMELOCK_TOKEN"); - (uint256 prevDeposits, ) = timelockVault.deposits( - address(token), - timelock - ); + (uint256 prevDeposits,) = timelockVault.deposits(address(token), timelock); uint256 depositAmount = 100; vm.startPrank(timelock); @@ -39,10 +33,7 @@ contract TimelockVaultIntegrationTestSepolia is TimelockPostProposalCheck { Token(token).approve(address(timelockVault), depositAmount); timelockVault.deposit(address(token), depositAmount); - (uint256 amount, ) = timelockVault.deposits(address(token), timelock); - assertTrue( - amount == prevDeposits + depositAmount, - "Token should be deposited" - ); + (uint256 amount,) = timelockVault.deposits(address(token), timelock); + assertTrue(amount == prevDeposits + depositAmount, "Token should be deposited"); } }