Updated as of block 16967814 at 4/3/2023, 6:08:59 AM ET
- ID: 183
- Proposer: 0x329c54289Ff5D6B7b7daE13592C6B1EDA1543eD4
- Start Block: 16856289 (3/18/2023, 2:01:35 PM ET)
- End Block: 16875489 (3/21/2023, 6:42:11 AM ET)
- Targets: 0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711
- Executor: 0xEE56e2B3D491590B5b31738cC34d5232F378a8D5 (Short executor)
- Simulation: https://dashboard.tenderly.co/me/simulator/affd7198-e0a7-4c02-b4e9-ad3a8d8aa850
Proposal text
This proposal is to enable Lido DAO to distribute OP rewards across the Aave v3 Optimism Liquidity Pool.
The Emission_Admin
role for OP on Optimism is currently assigned to the Optimism team and is to be transferred to Lido DAO.
Lido DAO seeks to distribute OP rewards across to the Aave v3 Optimism deployment. To achieve this, the EmissionManager
function reassigns an owner to the Emission_Admin
role for OP.
The wallet with Emission Admin
permission for OP then controls the distribution of OP and LDO rewards on the Optimism Liquidity Pool. This proposal will enable LDO and OP rewards to be distributed across the Optimism v3 deployment.
Lido DAO has received a grant nominated in OP tokens that are to be used for bootstrapping the adoption of wstETH on the Optimism network. A portion of these rewards are to be distributed on the Aave v3 deployment.
The Lido Liquidity Mining Committee (LMC) will be determining the emission rate and duration that OP rewards are offered on the Aave v3 deployment.
Typically, the LMC meets and determines the next 30 days rewards to be distributed on a rolling basis. This means each month, the committee will determine if to extend the OP rewards, or change the amount of OP being offered across the Aave v3 Liquidity Pools on Optimism.
The EmissionManager
, a governance controlled function, assigns the Emission_Admin
role for a specified token, OP, on each respective network.
The Emission_Admin
role controls the distribution of the specified token, OP, across the specified Aave deployment.
The Emission_Admin
can distribute OP anywhere across the Aave v3 on the Optimism Liquidity Pool.
Emission Admin: 0x5033823F27c5f977707B58F0351adcD732C955Dd
setEmissionAdmin(address reward, address admin)
OP Address Reward: 0x4200000000000000000000000000000000000042
OP Address Admin: 0x5033823F27c5f977707B58F0351adcD732C955Dd
The relevant links for this proposal are shown:
The proposal Payload was reviewed by Bored Ghost Developing.
Copyright and related rights waived via CC0.
Info:
- State changes:
# KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
@@ `s_upkeep` key `"95299183306293242919258731417449887125989356901836642522229237728515662948291"`.balance @@
- 11781169203758844470
+ 10142115812064376427
@@ `s_upkeep` key `"95299183306293242919258731417449887125989356901836642522229237728515662948291"`.executeGas @@
- 769308106
+ 1504954773
@@ Slot `0x91b6ce6b78ac0e1b186eeab09aac1b28a4b9dc5dd1de3b8d878bb27d914aa01f` @@
- "0x0000002c21dd2a83a0c86a9215918ff7f6c44592c81d999b442956b07d26cc44"
+ "0x0000002c389c40e3cca17e5d15918ff7f6c44592c81d999b442956b07d26cc44"
# CanonicalTransactionChain at `0x5E4e65926BA27467555EB562121fac00D24E9dD2`
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000006` @@
- "0x000000000000000000000000000000000000000000000000000000000004edad"
+ "0x000000000000000000000000000000000000000000000000000000000004edae"
@@ Slot `0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f3785e899` @@
- "0x0000000000000000000000000000000000000000000000000000000000000000"
+ "0x1fe4e9422c7fcf5e01ad7de0ffafa0905f294e77aa12ebaa4ab0a2918bbef3ae"
@@ Slot `0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f3785e89a` @@
- "0x0000000000000000000000000000000000000000000000000000000000000000"
+ "0x000000000000000000000000000000000000000000000001019bbd00641adc1f"
Info:
- There is no SELFDESTRUCT inside of delegated call
Info:
- Events Emitted:
- CanonicalTransactionChain at
0x5E4e65926BA27467555EB562121fac00D24E9dD2
TransactionEnqueued(_l1TxOrigin: 0x36bde71c97b33cc4729cf772ae268934f7ab70b2, _target: 0x4200000000000000000000000000000000000007, _gasLimit: 1920000, _data: 0xcbd4ece90000000000000000000000007d9103572be58ffe99dc390e8246f02dcae6f611000000000000000000000000ee56e2b3d491590b5b31738cc34d5232f378a8d50000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000004edad0000000000000000000000000000000000000000000000000000000000000244d9a4cbdf00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004b8d3277d49e114c8f2d6e0b2ed310e29226fe160000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000965786563757465282900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000, _queueIndex: 322989, _timestamp: 1679481887)
- Lib_ResolvedDelegateProxy at
0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1
SentMessage(target: 0x7d9103572be58ffe99dc390e8246f02dcae6f611, sender: 0xee56e2b3d491590b5b31738cc34d5232f378a8d5, message: 0xd9a4cbdf00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004b8d3277d49e114c8f2d6e0b2ed310e29226fe1600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009657865637574652829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001, messageNonce: 322989, gasLimit: 1920000)
- KeeperRegistry at
0x02777053d6764996e594c3E88AF1D58D5363a2e6
UpkeepPerformed(id: 95299183306293242919258731417449887125989356901836642522229237728515662948291, success: true, from: 0x98924befaa16b607b3e168b6c57c9528af5cc076, payment: 1639053391694468043, performData: 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000b70000000000000000000000000000000000000000000000000000000000000001)
- CanonicalTransactionChain at
Info:
- Targets:
- 0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711: Contract (verified) (CrosschainForwarderOptimism)
Info:
- Touched address:
- 0x98924befaA16b607b3E168b6C57C9528AF5CC076: EOA (verification not applicable)
- 0x02777053d6764996e594c3E88AF1D58D5363a2e6: Contract (verified) (KeeperRegistry)
- 0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C: Contract (verified) (EACAggregatorProxy)
- 0x785433d8b06D77D68dF6be63944742130A4530d1: Contract (verified) (AccessControlledOffchainAggregator)
- 0xDC530D9457755926550b59e8ECcdaE7624181557: Contract (verified) (EACAggregatorProxy)
- 0xbba12740DE905707251525477bAD74985DeC46D2: Contract (verified) (AccessControlledOffchainAggregator)
- 0x943AcD0c93d7a8Bee7dA5Fd0DC3d0028237074d6: Contract (verified) (EthRobotKeeper)
- 0xEC568fffba86c094cf06b22134B23074DFE2252c: Contract (verified) (AaveGovernanceV2)
- 0xEE56e2B3D491590B5b31738cC34d5232F378a8D5: Contract (verified) (Executor)
- 0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e: Contract (verified) (GovernanceStrategy)
- 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9: Contract (verified) (InitializableAdminUpgradeabilityProxy)
- 0x96F68837877fd0414B55050c9e794AECdBcfCA59: Contract (not verified)
- 0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711: Contract (verified) (CrosschainForwarderOptimism)
- 0x5E4e65926BA27467555EB562121fac00D24E9dD2: Contract (verified) (CanonicalTransactionChain)
- 0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1: Contract (verified) (Lib_ResolvedDelegateProxy)
- 0xdE1FCfB0851916CA5101820A69b13a4E276bd81F: Contract (verified) (Lib_AddressManager)
- 0xd9166833FF12A5F900ccfBf2c8B62a90F1Ca1FD5: Contract (verified) (L1CrossDomainMessenger)
Info:
View Details
View warnings for EACAggregatorProxy at `0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C`
WARNING:CryticCompile:Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
uint16 phaseId
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
function addPhase(
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
function parseIds(
^ (Relevant source part starts here and spans across multiple lines).
View warnings for Lib_ResolvedDelegateProxy at `0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1`
WARNING:CryticCompile:Warning: @openzeppelin/contracts/access/Ownable.sol:26:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor () internal {
^ (Relevant source part starts here and spans across multiple lines).
View warnings for CrosschainForwarderOptimism at `0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711`
ERROR:CryticCompile:ParserError: ParserError: Source "governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/optimism/CrosschainForwarderOptimism.sol:4:1:
|
4 | import {ICrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/optimism/CrosschainForwarderOptimism.sol:5:1:
|
5 | import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
View warnings for AccessControlledOffchainAggregator at `0x785433d8b06D77D68dF6be63944742130A4530d1`
WARNING:CryticCompile:Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
int192 latestAnswer,
^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
function latestAnswer()
^ (Relevant source part starts here and spans across multiple lines).
Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
uint64 latestTimestamp
^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
function latestTimestamp()
^ (Relevant source part starts here and spans across multiple lines).
Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
string memory description
^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
function description()
^ (Relevant source part starts here and spans across multiple lines).
View warnings for InitializableAdminUpgradeabilityProxy at `0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9` with implementation unknown contract name at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
WARNING:CryticCompile:Warning: contracts/open-zeppelin/Address.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/BaseUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/Proxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/SafeMath.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/UpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol:13:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
fallback () payable external {
^ (Relevant source part starts here and spans across multiple lines).
Warning: contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
fallback () payable external {
^ (Relevant source part starts here and spans across multiple lines).
Warning: contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol:12:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
fallback () payable external {
^ (Relevant source part starts here and spans across multiple lines).
Warning: contracts/utils/MockTransferHook.sol:9:25: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function onTransfer(address from, address to, uint256 amount) external override {
^----------^
Warning: contracts/utils/MockTransferHook.sol:9:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function onTransfer(address from, address to, uint256 amount) external override {
^--------^
Warning: contracts/utils/MockTransferHook.sol:9:51: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function onTransfer(address from, address to, uint256 amount) external override {
^------------^
View warnings for EthRobotKeeper at `0x943AcD0c93d7a8Bee7dA5Fd0DC3d0028237074d6`
ERROR:CryticCompile:ParserError: ParserError: Source "aave-address-book/AaveGovernanceV2.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/EthRobotKeeper.sol:4:1:
|
4 | import {IAaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "solidity-utils/contracts/oz-common/Ownable.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/EthRobotKeeper.sol:7:1:
|
7 | import {Ownable} from 'solidity-utils/contracts/oz-common/Ownable.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "chainlink-brownie-contracts/interfaces/AutomationCompatibleInterface.sol" not found: File not found. Searched the following locations: "".
--> src/interfaces/IGovernanceRobotKeeper.sol:4:1:
|
4 | import {AutomationCompatibleInterface} from 'chainlink-brownie-contracts/interfaces/AutomationCompatibleInterface.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "aave-address-book/AaveGovernanceV2.sol" not found: File not found. Searched the following locations: "".
--> src/interfaces/IProposalValidator.sol:5:1:
|
5 | import {IAaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
View warnings for AccessControlledOffchainAggregator at `0xbba12740DE905707251525477bAD74985DeC46D2`
WARNING:CryticCompile:Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
int192 latestAnswer,
^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
function latestAnswer()
^ (Relevant source part starts here and spans across multiple lines).
Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
uint64 latestTimestamp
^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
function latestTimestamp()
^ (Relevant source part starts here and spans across multiple lines).
Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
string memory description
^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
function description()
^ (Relevant source part starts here and spans across multiple lines).
View warnings for L1CrossDomainMessenger at `0xd9166833FF12A5F900ccfBf2c8B62a90F1Ca1FD5`
WARNING:CryticCompile:Warning: Warning: Function state mutability can be restricted to pure
--> contracts/L1/messaging/L1CrossDomainMessenger.sol:307:5:
|
307 | function _verifyStorageProof(
| ^ (Relevant source part starts here and spans across multiple lines).
View warnings for EACAggregatorProxy at `0xDC530D9457755926550b59e8ECcdaE7624181557`
WARNING:CryticCompile:Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
uint16 phaseId
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
function addPhase(
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
function parseIds(
^ (Relevant source part starts here and spans across multiple lines).
View warnings for Lib_AddressManager at `0xdE1FCfB0851916CA5101820A69b13a4E276bd81F`
WARNING:CryticCompile:Warning: @openzeppelin/contracts/access/Ownable.sol:26:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor () internal {
^ (Relevant source part starts here and spans across multiple lines).
Info:
View Details
Slither report for KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
INFO:Detectors:
KeeperRegistry.addFunds(uint256,uint96) (contracts/v0.8/KeeperRegistry.sol#297-302) ignores return value by LINK.transferFrom(msg.sender,address(this),amount) (contracts/v0.8/KeeperRegistry.sol#300)
KeeperRegistry.withdrawFunds(uint256,address) (contracts/v0.8/KeeperRegistry.sol#331-355) ignores return value by LINK.transfer(to,amountToWithdraw) (contracts/v0.8/KeeperRegistry.sol#354)
KeeperRegistry.withdrawOwnerFunds() (contracts/v0.8/KeeperRegistry.sol#360-368) ignores return value by LINK.transfer(msg.sender,amount) (contracts/v0.8/KeeperRegistry.sol#367)
KeeperRegistry.recoverFunds() (contracts/v0.8/KeeperRegistry.sol#389-392) ignores return value by LINK.transfer(msg.sender,total - s_expectedLinkBalance) (contracts/v0.8/KeeperRegistry.sol#391)
KeeperRegistry.withdrawPayment(address,address) (contracts/v0.8/KeeperRegistry.sol#399-408) ignores return value by LINK.transfer(to,keeper.balance) (contracts/v0.8/KeeperRegistry.sol#407)
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) ignores return value by LINK.transfer(destination,totalBalanceRemaining) (contracts/v0.8/KeeperRegistry.sol#682)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer
INFO:Detectors:
KeeperBase.preventExecution() (contracts/v0.8/KeeperBase.sol#11-15) uses tx.origin for authorization: tx.origin != address(0) (contracts/v0.8/KeeperBase.sol#12)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin
INFO:Detectors:
KeeperRegistry.cancelUpkeep(uint256) (contracts/v0.8/KeeperRegistry.sol#273-289) ignores return value by s_upkeepIDs.remove(id) (contracts/v0.8/KeeperRegistry.sol#286)
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) ignores return value by s_upkeepIDs.remove(id) (contracts/v0.8/KeeperRegistry.sol#670)
KeeperRegistry._createUpkeep(uint256,address,uint32,address,uint96,bytes) (contracts/v0.8/KeeperRegistry.sol#723-745) ignores return value by s_upkeepIDs.add(id) (contracts/v0.8/KeeperRegistry.sol#744)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Reentrancy in KeeperRegistry.addFunds(uint256,uint96) (contracts/v0.8/KeeperRegistry.sol#297-302):
External calls:
- LINK.transferFrom(msg.sender,address(this),amount) (contracts/v0.8/KeeperRegistry.sol#300)
Event emitted after the call(s):
- FundsAdded(id,msg.sender,amount) (contracts/v0.8/KeeperRegistry.sol#301)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
KeeperRegistry._getFeedData() (contracts/v0.8/KeeperRegistry.sol#753-771) uses timestamp for comparisons
Dangerous comparisons:
- (staleFallback && stalenessSeconds < block.timestamp - timestamp) || feedValue <= 0 (contracts/v0.8/KeeperRegistry.sol#759)
- (staleFallback && stalenessSeconds < block.timestamp - timestamp) || feedValue <= 0 (contracts/v0.8/KeeperRegistry.sol#765)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#213-216)
EnumerableSet.values(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#274-283) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#278-280)
EnumerableSet.values(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#347-356) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#351-353)
KeeperRegistry._callWithExactGas(uint256,address,bytes) (contracts/v0.8/KeeperRegistry.sol#792-817) uses assembly
- INLINE ASM (contracts/v0.8/KeeperRegistry.sol#797-815)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) has costly operations inside a loop:
- delete s_upkeep[id] (contracts/v0.8/KeeperRegistry.sol#668)
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) has costly operations inside a loop:
- delete s_checkData[id] (contracts/v0.8/KeeperRegistry.sol#669)
KeeperRegistry._createUpkeep(uint256,address,uint32,address,uint96,bytes) (contracts/v0.8/KeeperRegistry.sol#723-745) has costly operations inside a loop:
- s_expectedLinkBalance = s_expectedLinkBalance + balance (contracts/v0.8/KeeperRegistry.sol#742)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
INFO:Detectors:
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#85-87) is never used and should be removed
Address.functionCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#95-101) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#114-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#128-139) is never used and should be removed
Address.functionDelegateCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#184-193) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#147-149) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#157-166) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#60-65) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
EnumerableSet._values(EnumerableSet.Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#142-144) is never used and should be removed
EnumerableSet.add(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#224-226) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#158-160) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#262-264) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#196-198) is never used and should be removed
EnumerableSet.contains(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#241-243) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#175-177) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#314-316) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#248-250) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#182-184) is never used and should be removed
EnumerableSet.remove(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#234-236) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#168-170) is never used and should be removed
EnumerableSet.values(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#274-283) is never used and should be removed
EnumerableSet.values(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#208-210) is never used and should be removed
EnumerableSet.values(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#347-356) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#60-65):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#137)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#157-166):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#184-193):
- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#191)
Low level call in KeeperRegistry.checkUpkeep(uint256,address) (contracts/v0.8/KeeperRegistry.sol#226-252):
- (success,result) = upkeep.target.call{gas: s_storage.checkGasLimit}(callData) (contracts/v0.8/KeeperRegistry.sol#241)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Variable ConfirmedOwnerWithProposal.s_owner (contracts/v0.8/ConfirmedOwnerWithProposal.sol#11) is not in mixedCase
Variable ConfirmedOwnerWithProposal.s_pendingOwner (contracts/v0.8/ConfirmedOwnerWithProposal.sol#12) is not in mixedCase
Variable KeeperRegistry.s_keeperList (contracts/v0.8/KeeperRegistry.sol#48) is not in mixedCase
Variable KeeperRegistry.s_upkeepIDs (contracts/v0.8/KeeperRegistry.sol#49) is not in mixedCase
Variable KeeperRegistry.s_upkeep (contracts/v0.8/KeeperRegistry.sol#50) is not in mixedCase
Variable KeeperRegistry.s_keeperInfo (contracts/v0.8/KeeperRegistry.sol#51) is not in mixedCase
Variable KeeperRegistry.s_proposedPayee (contracts/v0.8/KeeperRegistry.sol#52) is not in mixedCase
Variable KeeperRegistry.s_checkData (contracts/v0.8/KeeperRegistry.sol#53) is not in mixedCase
Variable KeeperRegistry.s_peerRegistryMigrationPermission (contracts/v0.8/KeeperRegistry.sol#54) is not in mixedCase
Variable KeeperRegistry.s_storage (contracts/v0.8/KeeperRegistry.sol#55) is not in mixedCase
Variable KeeperRegistry.s_fallbackGasPrice (contracts/v0.8/KeeperRegistry.sol#56) is not in mixedCase
Variable KeeperRegistry.s_fallbackLinkPrice (contracts/v0.8/KeeperRegistry.sol#57) is not in mixedCase
Variable KeeperRegistry.s_ownerLinkBalance (contracts/v0.8/KeeperRegistry.sol#58) is not in mixedCase
Variable KeeperRegistry.s_expectedLinkBalance (contracts/v0.8/KeeperRegistry.sol#59) is not in mixedCase
Variable KeeperRegistry.s_transcoder (contracts/v0.8/KeeperRegistry.sol#60) is not in mixedCase
Variable KeeperRegistry.s_registrar (contracts/v0.8/KeeperRegistry.sol#61) is not in mixedCase
Variable KeeperRegistry.LINK (contracts/v0.8/KeeperRegistry.sol#63) is not in mixedCase
Variable KeeperRegistry.LINK_ETH_FEED (contracts/v0.8/KeeperRegistry.sol#64) is not in mixedCase
Variable KeeperRegistry.FAST_GAS_FEED (contracts/v0.8/KeeperRegistry.sol#65) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x02777053d6764996e594c3E88AF1D58D5363a2e6 analyzed (20 contracts with 79 detectors), 69 result(s) found
Slither report for EACAggregatorProxy at `0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C`
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
uint16 phaseId
^------------^
crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
function addPhase(
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
function parseIds(
^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
AggregatorProxy.getRoundData(uint80).roundId_scope_0 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#283) is a local variable never initialized
AggregatorProxy.latestRoundData().updatedAt_scope_3 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#334) is a local variable never initialized
AggregatorProxy.latestRoundData().answer_scope_1 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#332) is a local variable never initialized
AggregatorProxy.getRoundData(uint80).updatedAt_scope_3 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#286) is a local variable never initialized
AggregatorProxy.latestRoundData().roundId_scope_0 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#331) is a local variable never initialized
AggregatorProxy.getRoundData(uint80).answer_scope_1 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#284) is a local variable never initialized
AggregatorProxy.latestRoundData().startedAt_scope_2 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#333) is a local variable never initialized
AggregatorProxy.getRoundData(uint80).startedAt_scope_2 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#285) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
AggregatorProxy.getAnswer(uint256).phaseId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#189) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getAnswer(uint256).aggregator (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#190) shadows:
- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getTimestamp(uint256).phaseId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#214) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getTimestamp(uint256).aggregator (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#215) shadows:
- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getRoundData(uint80).phaseId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#280) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getRoundData(uint80).roundId_scope_0 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#283) shadows:
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#273) (return variable)
AggregatorProxy.getRoundData(uint80).answer_scope_1 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#284) shadows:
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#274) (return variable)
AggregatorProxy.getRoundData(uint80).startedAt_scope_2 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#285) shadows:
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#275) (return variable)
AggregatorProxy.getRoundData(uint80).updatedAt_scope_3 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#286) shadows:
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#276) (return variable)
AggregatorProxy.latestRoundData().roundId_scope_0 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#331) shadows:
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#321) (return variable)
AggregatorProxy.latestRoundData().answer_scope_1 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#332) shadows:
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#322) (return variable)
AggregatorProxy.latestRoundData().startedAt_scope_2 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#333) shadows:
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#323) (return variable)
AggregatorProxy.latestRoundData().updatedAt_scope_3 (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#334) shadows:
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#324) (return variable)
AggregatorProxy.parseIds(uint256).phaseId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#513) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.addPhaseIds(uint80,int256,uint256,uint256,uint80,uint16).phaseId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#525) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#410-416) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#30) lacks a zero-check on :
- pendingOwner = _to (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Parameter Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#30) is not in mixedCase
Parameter AggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#180) is not in mixedCase
Parameter AggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#205) is not in mixedCase
Parameter AggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#267) is not in mixedCase
Parameter AggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#353) is not in mixedCase
Parameter AggregatorProxy.proposeAggregator(address)._aggregator (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#459) is not in mixedCase
Parameter AggregatorProxy.confirmAggregator(address)._aggregator (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#473) is not in mixedCase
Parameter AggregatorProxy.setAggregator(address)._aggregator (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#487) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._phase (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#496) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._originalId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#497) is not in mixedCase
Parameter AggregatorProxy.parseIds(uint256)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#507) is not in mixedCase
Parameter EACAggregatorProxy.setController(address)._accessController (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#582) is not in mixedCase
Parameter EACAggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#638) is not in mixedCase
Parameter EACAggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#658) is not in mixedCase
Parameter EACAggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#710) is not in mixedCase
Parameter EACAggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C-EACAggregatorProxy.sol#776) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C analyzed (7 contracts with 79 detectors), 40 result(s) found
Slither report for Lib_ResolvedDelegateProxy at `0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1`
Warning: @openzeppelin/contracts/access/Ownable.sol:26:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor () internal {
^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
Lib_ResolvedDelegateProxy.fallback() (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#49-73) uses delegatecall to a input-controlled function id
- (success,returndata) = target.delegatecall(msg.data) (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#62)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall
INFO:Detectors:
Lib_ResolvedDelegateProxy.fallback() (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#49-73) uses assembly
- INLINE ASM (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#65-67)
- INLINE ASM (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#69-71)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Lib_ResolvedDelegateProxy.fallback() (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#49-73) compares to a boolean constant:
-success == true (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#64)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality
INFO:Detectors:
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-23) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Lib_ResolvedDelegateProxy.fallback() (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#49-73):
- (success,returndata) = target.delegatecall(msg.data) (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#62)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Contract Lib_AddressManager (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#10-95) is not in CapWords
Parameter Lib_AddressManager.setAddress(string,address)._name (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#40) is not in mixedCase
Parameter Lib_AddressManager.setAddress(string,address)._address (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#41) is not in mixedCase
Parameter Lib_AddressManager.getAddress(string)._name (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#63) is not in mixedCase
Contract Lib_ResolvedDelegateProxy (contracts/optimistic-ethereum/libraries/resolver/Lib_ResolvedDelegateProxy.sol#10-74) is not in CapWords
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Redundant expression "this (@openzeppelin/contracts/utils/Context.sol#21)" inContext (@openzeppelin/contracts/utils/Context.sol#15-24)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
INFO:Slither:0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1 analyzed (4 contracts with 79 detectors), 11 result(s) found
Slither report for CanonicalTransactionChain at `0x5E4e65926BA27467555EB562121fac00D24E9dD2`
INFO:Detectors:
Reentrancy in CanonicalTransactionChain.appendSequencerBatch() (contracts/L1/rollup/CanonicalTransactionChain.sol#277-368):
External calls:
- _appendBatch(blockhash(uint256)(block.number - 1),totalElementsToAppend,numQueuedTransactions,blockTimestamp,blockNumber) (contracts/L1/rollup/CanonicalTransactionChain.sol#352-358)
- batchesRef.push(batchHeaderHash,latestBatchContext) (contracts/L1/rollup/CanonicalTransactionChain.sol#517)
State variables written after the call(s):
- _nextQueueIndex = nextQueueIndex (contracts/L1/rollup/CanonicalTransactionChain.sol#367)
CanonicalTransactionChain._nextQueueIndex (contracts/L1/rollup/CanonicalTransactionChain.sol#58) can be used in cross function reentrancies:
- CanonicalTransactionChain.appendSequencerBatch() (contracts/L1/rollup/CanonicalTransactionChain.sol#277-368)
- CanonicalTransactionChain.getNextQueueIndex() (contracts/L1/rollup/CanonicalTransactionChain.sol#143-145)
- CanonicalTransactionChain.getNumPendingQueueElements() (contracts/L1/rollup/CanonicalTransactionChain.sol#182-184)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
Reentrancy in CanonicalTransactionChain.appendSequencerBatch() (contracts/L1/rollup/CanonicalTransactionChain.sol#277-368):
External calls:
- _appendBatch(blockhash(uint256)(block.number - 1),totalElementsToAppend,numQueuedTransactions,blockTimestamp,blockNumber) (contracts/L1/rollup/CanonicalTransactionChain.sol#352-358)
- batchesRef.push(batchHeaderHash,latestBatchContext) (contracts/L1/rollup/CanonicalTransactionChain.sol#517)
Event emitted after the call(s):
- SequencerBatchAppended(nextQueueIndex - numQueuedTransactions,numQueuedTransactions,getTotalElements()) (contracts/L1/rollup/CanonicalTransactionChain.sol#360-364)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
CanonicalTransactionChain.appendSequencerBatch() (contracts/L1/rollup/CanonicalTransactionChain.sol#277-368) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(nextQueueIndex <= queueElements.length,Attempted to append more elements than are available in the queue.) (contracts/L1/rollup/CanonicalTransactionChain.sol#325-328)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
CanonicalTransactionChain.appendSequencerBatch() (contracts/L1/rollup/CanonicalTransactionChain.sol#277-368) uses assembly
- INLINE ASM (contracts/L1/rollup/CanonicalTransactionChain.sol#281-285)
CanonicalTransactionChain._getBatchContext(uint256) (contracts/L1/rollup/CanonicalTransactionChain.sol#379-400) uses assembly
- INLINE ASM (contracts/L1/rollup/CanonicalTransactionChain.sol#386-391)
CanonicalTransactionChain._getBatchExtraData() (contracts/L1/rollup/CanonicalTransactionChain.sol#407-447) uses assembly
- INLINE ASM (contracts/L1/rollup/CanonicalTransactionChain.sol#425-443)
CanonicalTransactionChain._makeBatchExtraData(uint40,uint40,uint40,uint40) (contracts/L1/rollup/CanonicalTransactionChain.sol#457-473) uses assembly
- INLINE ASM (contracts/L1/rollup/CanonicalTransactionChain.sol#464-470)
Lib_RLPReader.toRLPItem(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#42-49) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#44-46)
Lib_RLPReader.readList(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#56-88) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#83-85)
Lib_RLPReader.readBytes32(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#144-163) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#153-160)
Lib_RLPReader.readBool(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#197-209) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#202-204)
Lib_RLPReader._decodeLength(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#264-331) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#277-279)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#300-303)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#322-325)
Lib_RLPReader._copy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPReader.sol#340-376) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#352-354)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#358-360)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#372-374)
Lib_RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#143-169) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#153-155)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#164-168)
Lib_RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/Lib_RLPWriter.sol#177-207) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#190-192)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#198-200)
Lib_BytesUtils.slice(bytes,uint256,uint256) (contracts/libraries/utils/Lib_BytesUtils.sol#12-77) uses assembly
- INLINE ASM (contracts/libraries/utils/Lib_BytesUtils.sol#23-74)
Lib_BytesUtils.toBytes32(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#87-97) uses assembly
- INLINE ASM (contracts/libraries/utils/Lib_BytesUtils.sol#90-92)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
AddressAliasHelper.undoL1ToL2Alias(address) (contracts/standards/AddressAliasHelper.sol#38-42) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-22) is never used and should be removed
Lib_Bytes32Utils.fromAddress(address) (contracts/libraries/utils/Lib_Bytes32Utils.sol#44-46) is never used and should be removed
Lib_Bytes32Utils.fromBool(bool) (contracts/libraries/utils/Lib_Bytes32Utils.sol#26-28) is never used and should be removed
Lib_Bytes32Utils.toAddress(bytes32) (contracts/libraries/utils/Lib_Bytes32Utils.sol#35-37) is never used and should be removed
Lib_Bytes32Utils.toBool(bytes32) (contracts/libraries/utils/Lib_Bytes32Utils.sol#17-19) is never used and should be removed
Lib_BytesUtils.equal(bytes,bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#124-126) is never used and should be removed
Lib_BytesUtils.fromNibbles(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#114-122) is never used and should be removed
Lib_BytesUtils.slice(bytes,uint256) (contracts/libraries/utils/Lib_BytesUtils.sol#79-85) is never used and should be removed
Lib_BytesUtils.slice(bytes,uint256,uint256) (contracts/libraries/utils/Lib_BytesUtils.sol#12-77) is never used and should be removed
Lib_BytesUtils.toBytes32(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#87-97) is never used and should be removed
Lib_BytesUtils.toNibbles(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#103-112) is never used and should be removed
Lib_BytesUtils.toUint256(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#99-101) is never used and should be removed
Lib_OVMCodec.decodeEVMAccount(bytes) (contracts/libraries/codec/Lib_OVMCodec.sol#111-121) is never used and should be removed
Lib_OVMCodec.encodeTransaction(Lib_OVMCodec.Transaction) (contracts/libraries/codec/Lib_OVMCodec.sol#80-95) is never used and should be removed
Lib_OVMCodec.hashTransaction(Lib_OVMCodec.Transaction) (contracts/libraries/codec/Lib_OVMCodec.sol#102-104) is never used and should be removed
Lib_RLPReader._copy(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#383-385) is never used and should be removed
Lib_RLPReader._copy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPReader.sol#340-376) is never used and should be removed
Lib_RLPReader._decodeLength(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#264-331) is never used and should be removed
Lib_RLPReader.readAddress(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#225-233) is never used and should be removed
Lib_RLPReader.readAddress(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#240-242) is never used and should be removed
Lib_RLPReader.readBool(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#197-209) is never used and should be removed
Lib_RLPReader.readBool(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#216-218) is never used and should be removed
Lib_RLPReader.readBytes(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#104-110) is never used and should be removed
Lib_RLPReader.readBytes(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#117-119) is never used and should be removed
Lib_RLPReader.readBytes32(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#144-163) is never used and should be removed
Lib_RLPReader.readBytes32(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#170-172) is never used and should be removed
Lib_RLPReader.readList(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#56-88) is never used and should be removed
Lib_RLPReader.readList(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#95-97) is never used and should be removed
Lib_RLPReader.readRawBytes(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#249-251) is never used and should be removed
Lib_RLPReader.readString(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#126-128) is never used and should be removed
Lib_RLPReader.readString(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#135-137) is never used and should be removed
Lib_RLPReader.readUint256(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#179-181) is never used and should be removed
Lib_RLPReader.readUint256(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#188-190) is never used and should be removed
Lib_RLPReader.toRLPItem(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#42-49) is never used and should be removed
Lib_RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/Lib_RLPWriter.sol#177-207) is never used and should be removed
Lib_RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#143-169) is never used and should be removed
Lib_RLPWriter._toBinary(uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#118-134) is never used and should be removed
Lib_RLPWriter._writeLength(uint256,uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#88-110) is never used and should be removed
Lib_RLPWriter.writeAddress(address) (contracts/libraries/rlp/Lib_RLPWriter.sol#54-56) is never used and should be removed
Lib_RLPWriter.writeBool(bool) (contracts/libraries/rlp/Lib_RLPWriter.sol#72-76) is never used and should be removed
Lib_RLPWriter.writeBytes(bytes) (contracts/libraries/rlp/Lib_RLPWriter.sol#18-28) is never used and should be removed
Lib_RLPWriter.writeList(bytes[]) (contracts/libraries/rlp/Lib_RLPWriter.sol#35-38) is never used and should be removed
Lib_RLPWriter.writeString(string) (contracts/libraries/rlp/Lib_RLPWriter.sol#45-47) is never used and should be removed
Lib_RLPWriter.writeUint(uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#63-65) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Parameter CanonicalTransactionChain.setGasParams(uint256,uint256)._l2GasDiscountDivisor (contracts/L1/rollup/CanonicalTransactionChain.sol#98) is not in mixedCase
Parameter CanonicalTransactionChain.setGasParams(uint256,uint256)._enqueueGasCost (contracts/L1/rollup/CanonicalTransactionChain.sol#98) is not in mixedCase
Parameter CanonicalTransactionChain.getQueueElement(uint256)._index (contracts/L1/rollup/CanonicalTransactionChain.sol#170) is not in mixedCase
Parameter CanonicalTransactionChain.enqueue(address,uint256,bytes)._target (contracts/L1/rollup/CanonicalTransactionChain.sol#202) is not in mixedCase
Parameter CanonicalTransactionChain.enqueue(address,uint256,bytes)._gasLimit (contracts/L1/rollup/CanonicalTransactionChain.sol#203) is not in mixedCase
Parameter CanonicalTransactionChain.enqueue(address,uint256,bytes)._data (contracts/L1/rollup/CanonicalTransactionChain.sol#204) is not in mixedCase
Contract Lib_OVMCodec (contracts/libraries/codec/Lib_OVMCodec.sol#13-143) is not in CapWords
Parameter Lib_OVMCodec.encodeTransaction(Lib_OVMCodec.Transaction)._transaction (contracts/libraries/codec/Lib_OVMCodec.sol#80) is not in mixedCase
Parameter Lib_OVMCodec.hashTransaction(Lib_OVMCodec.Transaction)._transaction (contracts/libraries/codec/Lib_OVMCodec.sol#102) is not in mixedCase
Parameter Lib_OVMCodec.decodeEVMAccount(bytes)._encoded (contracts/libraries/codec/Lib_OVMCodec.sol#111) is not in mixedCase
Parameter Lib_OVMCodec.hashBatchHeader(Lib_OVMCodec.ChainBatchHeader)._batchHeader (contracts/libraries/codec/Lib_OVMCodec.sol#128) is not in mixedCase
Contract Lib_AddressManager (contracts/libraries/resolver/Lib_AddressManager.sol#10-61) is not in CapWords
Parameter Lib_AddressManager.setAddress(string,address)._name (contracts/libraries/resolver/Lib_AddressManager.sol#32) is not in mixedCase
Parameter Lib_AddressManager.setAddress(string,address)._address (contracts/libraries/resolver/Lib_AddressManager.sol#32) is not in mixedCase
Parameter Lib_AddressManager.getAddress(string)._name (contracts/libraries/resolver/Lib_AddressManager.sol#45) is not in mixedCase
Contract Lib_AddressResolver (contracts/libraries/resolver/Lib_AddressResolver.sol#10-40) is not in CapWords
Parameter Lib_AddressResolver.resolve(string)._name (contracts/libraries/resolver/Lib_AddressResolver.sol#37) is not in mixedCase
Contract Lib_RLPReader (contracts/libraries/rlp/Lib_RLPReader.sol#8-386) is not in CapWords
Parameter Lib_RLPReader.toRLPItem(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#42) is not in mixedCase
Parameter Lib_RLPReader.readList(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#56) is not in mixedCase
Parameter Lib_RLPReader.readList(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#95) is not in mixedCase
Parameter Lib_RLPReader.readBytes(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#104) is not in mixedCase
Parameter Lib_RLPReader.readBytes(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#117) is not in mixedCase
Parameter Lib_RLPReader.readString(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#126) is not in mixedCase
Parameter Lib_RLPReader.readString(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#135) is not in mixedCase
Parameter Lib_RLPReader.readBytes32(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#144) is not in mixedCase
Parameter Lib_RLPReader.readBytes32(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#170) is not in mixedCase
Parameter Lib_RLPReader.readUint256(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#179) is not in mixedCase
Parameter Lib_RLPReader.readUint256(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#188) is not in mixedCase
Parameter Lib_RLPReader.readBool(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#197) is not in mixedCase
Parameter Lib_RLPReader.readBool(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#216) is not in mixedCase
Parameter Lib_RLPReader.readAddress(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#225) is not in mixedCase
Parameter Lib_RLPReader.readAddress(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#240) is not in mixedCase
Parameter Lib_RLPReader.readRawBytes(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#249) is not in mixedCase
Contract Lib_RLPWriter (contracts/libraries/rlp/Lib_RLPWriter.sol#8-208) is not in CapWords
Parameter Lib_RLPWriter.writeBytes(bytes)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#18) is not in mixedCase
Parameter Lib_RLPWriter.writeList(bytes[])._in (contracts/libraries/rlp/Lib_RLPWriter.sol#35) is not in mixedCase
Parameter Lib_RLPWriter.writeString(string)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#45) is not in mixedCase
Parameter Lib_RLPWriter.writeAddress(address)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#54) is not in mixedCase
Parameter Lib_RLPWriter.writeUint(uint256)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#63) is not in mixedCase
Parameter Lib_RLPWriter.writeBool(bool)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#72) is not in mixedCase
Contract Lib_Bytes32Utils (contracts/libraries/utils/Lib_Bytes32Utils.sol#7-47) is not in CapWords
Parameter Lib_Bytes32Utils.toBool(bytes32)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#17) is not in mixedCase
Parameter Lib_Bytes32Utils.fromBool(bool)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#26) is not in mixedCase
Parameter Lib_Bytes32Utils.toAddress(bytes32)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#35) is not in mixedCase
Parameter Lib_Bytes32Utils.fromAddress(address)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#44) is not in mixedCase
Contract Lib_BytesUtils (contracts/libraries/utils/Lib_BytesUtils.sol#7-127) is not in CapWords
Parameter Lib_BytesUtils.slice(bytes,uint256,uint256)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#13) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256,uint256)._start (contracts/libraries/utils/Lib_BytesUtils.sol#14) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256,uint256)._length (contracts/libraries/utils/Lib_BytesUtils.sol#15) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#79) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256)._start (contracts/libraries/utils/Lib_BytesUtils.sol#79) is not in mixedCase
Parameter Lib_BytesUtils.toBytes32(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#87) is not in mixedCase
Parameter Lib_BytesUtils.toUint256(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#99) is not in mixedCase
Parameter Lib_BytesUtils.toNibbles(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#103) is not in mixedCase
Parameter Lib_BytesUtils.fromNibbles(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#114) is not in mixedCase
Parameter Lib_BytesUtils.equal(bytes,bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#124) is not in mixedCase
Parameter Lib_BytesUtils.equal(bytes,bytes)._other (contracts/libraries/utils/Lib_BytesUtils.sol#124) is not in mixedCase
Constant AddressAliasHelper.offset (contracts/standards/AddressAliasHelper.sol#22) is not in UPPER_CASE_WITH_UNDERSCORES
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable CanonicalTransactionChain._getBatchContext(uint256).numSequencedTransactions (contracts/L1/rollup/CanonicalTransactionChain.sol#381) is too similar to CanonicalTransactionChain.appendSequencerBatch().numSequencerTransactions (contracts/L1/rollup/CanonicalTransactionChain.sol#304)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Detectors:
CanonicalTransactionChain.BATCH_CONTEXT_LENGTH_POS (contracts/L1/rollup/CanonicalTransactionChain.sol#43) is never used in CanonicalTransactionChain (contracts/L1/rollup/CanonicalTransactionChain.sol#23-519)
CanonicalTransactionChain.TX_DATA_HEADER_SIZE (contracts/L1/rollup/CanonicalTransactionChain.sol#45) is never used in CanonicalTransactionChain (contracts/L1/rollup/CanonicalTransactionChain.sol#23-519)
CanonicalTransactionChain.BYTES_TILL_TX_DATA (contracts/L1/rollup/CanonicalTransactionChain.sol#46) is never used in CanonicalTransactionChain (contracts/L1/rollup/CanonicalTransactionChain.sol#23-519)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
INFO:Detectors:
CanonicalTransactionChain.maxTransactionGasLimit (contracts/L1/rollup/CanonicalTransactionChain.sol#52) should be immutable
Lib_AddressResolver.libAddressManager (contracts/libraries/resolver/Lib_AddressResolver.sol#15) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
INFO:Slither:0x5E4e65926BA27467555EB562121fac00D24E9dD2 analyzed (13 contracts with 79 detectors), 127 result(s) found
Slither report for CrosschainForwarderOptimism at `0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711`
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 837, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 90, in process_all
compilations = compile_all(target, **vars(args))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 643, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 131, in __init__
self._compile(**kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 553, in _compile
self._platform.compile(self, **kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/etherscan.py", line 362, in compile
solc_standard_json.standalone_compile(filenames, compilation_unit, working_dir=working_dir)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 66, in standalone_compile
targets_json = run_solc_standard_json(
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 181, in run_solc_standard_json
raise InvalidCompilation(solc_exception_str)
crytic_compile.platform.exceptions.InvalidCompilation: ParserError: ParserError: Source "governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/optimism/CrosschainForwarderOptimism.sol:4:1:
|
4 | import {ICrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/optimism/CrosschainForwarderOptimism.sol:5:1:
|
5 | import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR:root:Error in 0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711
ERROR:root:Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 837, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 90, in process_all
compilations = compile_all(target, **vars(args))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 643, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 131, in __init__
self._compile(**kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 553, in _compile
self._platform.compile(self, **kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/etherscan.py", line 362, in compile
solc_standard_json.standalone_compile(filenames, compilation_unit, working_dir=working_dir)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 66, in standalone_compile
targets_json = run_solc_standard_json(
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 181, in run_solc_standard_json
raise InvalidCompilation(solc_exception_str)
crytic_compile.platform.exceptions.InvalidCompilation: ParserError: ParserError: Source "governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/optimism/CrosschainForwarderOptimism.sol:4:1:
|
4 | import {ICrossDomainMessenger} from 'governance-crosschain-bridges/contracts/dependencies/optimism/interfaces/ICrossDomainMessenger.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/optimism/CrosschainForwarderOptimism.sol:5:1:
|
5 | import {IL2BridgeExecutor} from 'governance-crosschain-bridges/contracts/interfaces/IL2BridgeExecutor.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Slither report for AccessControlledOffchainAggregator at `0x785433d8b06D77D68dF6be63944742130A4530d1`
Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
int192 latestAnswer,
^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
function latestAnswer()
^ (Relevant source part starts here and spans across multiple lines).
Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
uint64 latestTimestamp
^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
function latestTimestamp()
^ (Relevant source part starts here and spans across multiple lines).
Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
string memory description
^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
function description()
^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623) passes array OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84)by reference to OffchainAggregatorBilling.oracleRewards(bytes,uint16[31]) (OffchainAggregatorBilling.sol#392-406)which only takes arrays by value
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
State variables written after the call(s):
- s_gasReimbursementsLinkWei[oracle.index] = 1 (OffchainAggregatorBilling.sol#355)
OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- s_oracleObservationsCounts[oracle.index] = 1 (OffchainAggregatorBilling.sol#354)
OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
State variables written after the call(s):
- s_gasReimbursementsLinkWei = gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#389)
OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- s_oracleObservationsCounts = observationsCounts (OffchainAggregatorBilling.sol#388)
OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
External calls:
- payOracles() (OffchainAggregatorBilling.sol#225)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
State variables written after the call(s):
- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
- s_billing = Billing(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#198-199)
OffchainAggregatorBilling.s_billing (OffchainAggregatorBilling.sol#66) can be used in cross function reentrancies:
- OffchainAggregatorBilling.getBilling() (OffchainAggregatorBilling.sol#238-257)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#189-202)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
External calls:
- payOracle(transmitter) (OffchainAggregator.sol#164)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
State variables written after the call(s):
- delete s_oracles[signer] (OffchainAggregator.sol#165)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- s_oracles[_signers[i]] = Oracle(uint8(i),Role.Signer) (OffchainAggregator.sol#176)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- s_oracles[_transmitters[i]] = Oracle(uint8(i),Role.Transmitter) (OffchainAggregator.sol#182)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- s_signers.pop() (OffchainAggregator.sol#167)
OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- s_signers.push(_signers[i]) (OffchainAggregator.sol#183)
OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- s_transmitters.pop() (OffchainAggregator.sol#168)
OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
- s_transmitters.push(_transmitters[i]) (OffchainAggregator.sol#184)
OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
External calls:
- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
State variables written after the call(s):
- s_hotVars = r.hotVars (OffchainAggregator.sol#641)
OffchainAggregator.s_hotVars (OffchainAggregator.sol#39) can be used in cross function reentrancies:
- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661)
- OffchainAggregator.latestConfigDetails() (OffchainAggregator.sol#235-245)
- OffchainAggregator.latestRound() (OffchainAggregator.sol#679-687)
- OffchainAggregator.latestRoundData() (OffchainAggregator.sol#791-817)
- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674)
- OffchainAggregator.latestTransmissionDetails() (OffchainAggregator.sol#454-473)
- OffchainAggregator.requestNewRound() (OffchainAggregator.sol#385-398)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32).r (OffchainAggregator.sol#526) is a local variable never initialized
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).gas (OffchainAggregatorBilling.sol#163) is a local variable never initialized
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).counts (OffchainAggregatorBilling.sol#162) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
OffchainAggregator.validateAnswer(uint32,int256) (OffchainAggregator.sol#309-328) ignores return value by av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
AccessControlledOffchainAggregator.constructor(uint32,uint32,uint32,uint32,uint32,address,address,int192,int192,AccessControllerInterface,AccessControllerInterface,uint8,string).description (AccessControlledOffchainAggregator.sol#25) shadows:
- AccessControlledOffchainAggregator.description() (AccessControlledOffchainAggregator.sol#108-116) (function)
- OffchainAggregator.description() (OffchainAggregator.sol#740-748) (function)
- AggregatorV3Interface.description() (AggregatorV3Interface.sol#7) (function)
OffchainAggregator.latestTransmissionDetails().latestAnswer (OffchainAggregator.sol#461) shadows:
- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661) (function)
- AggregatorInterface.latestAnswer() (AggregatorInterface.sol#5) (function)
OffchainAggregator.latestTransmissionDetails().latestTimestamp (OffchainAggregator.sol#462) shadows:
- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674) (function)
- AggregatorInterface.latestTimestamp() (AggregatorInterface.sol#6) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (Owned.sol#30) lacks a zero-check on :
- pendingOwner = _to (Owned.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358) has external calls inside a loop: require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
External calls:
- payOracle(transmitter) (OffchainAggregator.sol#164)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
State variables written after the call(s):
- s_configCount += 1 (OffchainAggregator.sol#189)
- s_hotVars.threshold = _threshold (OffchainAggregator.sol#186)
- s_hotVars.latestConfigDigest = configDigestFromConfigData(address(this),configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#192-200)
- s_hotVars.latestEpochAndRound = 0 (OffchainAggregator.sol#201)
- s_latestConfigBlockNumber = uint32(block.number) (OffchainAggregator.sol#188)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
External calls:
- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
State variables written after the call(s):
- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
- s_gasReimbursementsLinkWei[txOracle.index] = s_gasReimbursementsLinkWei[txOracle.index] + gasCostLinkWei + uint256(billing.linkGweiPerTransmission) * (1000000000) (OffchainAggregatorBilling.sol#615-617)
- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
- s_oracleObservationsCounts = oracleRewards(observers,s_oracleObservationsCounts) (OffchainAggregatorBilling.sol#580-581)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Event emitted after the call(s):
- OraclePaid(_transmitter,payee,linkWeiAmount) (OffchainAggregatorBilling.sol#356)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
Event emitted after the call(s):
- OraclePaid(transmitters[transmitteridx],payee,linkWeiAmount) (OffchainAggregatorBilling.sol#384)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
External calls:
- payOracles() (OffchainAggregatorBilling.sol#225)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
Event emitted after the call(s):
- BillingSet(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#200-201)
- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
External calls:
- payOracle(transmitter) (OffchainAggregator.sol#164)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Event emitted after the call(s):
- ConfigSet(previousConfigBlockNumber,configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#203-211)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- delete s_oracles[signer] (OffchainAggregator.sol#165)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- s_signers.pop() (OffchainAggregator.sol#167)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- s_transmitters.pop() (OffchainAggregator.sol#168)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
INFO:Detectors:
OffchainAggregator.decodeReport(bytes) (OffchainAggregator.sol#423-434) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Parameter AccessControlledOffchainAggregator.getAnswer(uint256)._roundId (AccessControlledOffchainAggregator.sol#82) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getTimestamp(uint256)._roundId (AccessControlledOffchainAggregator.sol#93) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getRoundData(uint80)._roundId (AccessControlledOffchainAggregator.sol#119) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#150) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#151) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#152) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#153) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encoded (OffchainAggregator.sol#154) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._contractAddress (OffchainAggregator.sol#215) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._configCount (OffchainAggregator.sol#216) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#217) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#218) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#219) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#220) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfig (OffchainAggregator.sol#221) is not in mixedCase
Parameter OffchainAggregator.setValidator(address)._newValidator (OffchainAggregator.sol#296) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._aggregatorRoundId (OffchainAggregator.sol#310) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._answer (OffchainAggregator.sol#311) is not in mixedCase
Parameter OffchainAggregator.setRequesterAccessController(AccessControllerInterface)._requesterAccessController (OffchainAggregator.sol#368) is not in mixedCase
Parameter OffchainAggregator.decodeReport(bytes)._report (OffchainAggregator.sol#423) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._report (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._rs (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._ss (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._report (OffchainAggregator.sol#511) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._ss (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rawVs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.getAnswer(uint256)._roundId (OffchainAggregator.sol#693) is not in mixedCase
Parameter OffchainAggregator.getTimestamp(uint256)._roundId (OffchainAggregator.sol#708) is not in mixedCase
Parameter OffchainAggregator.getRoundData(uint80)._roundId (OffchainAggregator.sol#759) is not in mixedCase
Constant OffchainAggregator.maxUint32 (OffchainAggregator.sol#19) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OffchainAggregator.s_hotVars (OffchainAggregator.sol#39) is not in mixedCase
Variable OffchainAggregator.s_transmissions (OffchainAggregator.sol#47) is not in mixedCase
Variable OffchainAggregator.s_configCount (OffchainAggregator.sol#51) is not in mixedCase
Variable OffchainAggregator.s_latestConfigBlockNumber (OffchainAggregator.sol#52) is not in mixedCase
Variable OffchainAggregator.s_validator (OffchainAggregator.sol#268) is not in mixedCase
Variable OffchainAggregator.s_requesterAccessController (OffchainAggregator.sol#334) is not in mixedCase
Variable OffchainAggregator.s_description (OffchainAggregator.sol#735) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#190) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#191) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#192) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#193) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#194) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#214) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#215) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#216) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#217) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#218) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessControllerInternal(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#266) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessController(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#284) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is not in mixedCase
Parameter OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is not in mixedCase
Parameter OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._recipient (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._amount (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.oracleObservationCount(address)._signerOrTransmitter (OffchainAggregatorBilling.sol#559) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._transmitters (OffchainAggregatorBilling.sol#660) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._payees (OffchainAggregatorBilling.sol#661) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._proposed (OffchainAggregatorBilling.sol#690) is not in mixedCase
Parameter OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._x (OffchainAggregatorBilling.sol#728) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._y (OffchainAggregatorBilling.sol#728) is not in mixedCase
Constant OffchainAggregatorBilling.maxNumOracles (OffchainAggregatorBilling.sol#45) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OffchainAggregatorBilling.s_billing (OffchainAggregatorBilling.sol#66) is not in mixedCase
Variable OffchainAggregatorBilling.LINK (OffchainAggregatorBilling.sol#71) is not in mixedCase
Variable OffchainAggregatorBilling.s_billingAccessController (OffchainAggregatorBilling.sol#73) is not in mixedCase
Variable OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) is not in mixedCase
Variable OffchainAggregatorBilling.s_payees (OffchainAggregatorBilling.sol#87-89) is not in mixedCase
Variable OffchainAggregatorBilling.s_proposedPayees (OffchainAggregatorBilling.sol#92-94) is not in mixedCase
Variable OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) is not in mixedCase
Variable OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) is not in mixedCase
Variable OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) is not in mixedCase
Variable OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) is not in mixedCase
Constant OffchainAggregatorBilling.maxUint16 (OffchainAggregatorBilling.sol#145) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.maxUint128 (OffchainAggregatorBilling.sol#146) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.accountingGasCost (OffchainAggregatorBilling.sol#435) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter Owned.transferOwnership(address)._to (Owned.sol#30) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._user (SimpleReadAccessController.sol#24) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._calldata (SimpleReadAccessController.sol#25) is not in mixedCase
Parameter SimpleWriteAccessController.hasAccess(address,bytes)._user (SimpleWriteAccessController.sol#34) is not in mixedCase
Parameter SimpleWriteAccessController.addAccess(address)._user (SimpleWriteAccessController.sol#50) is not in mixedCase
Parameter SimpleWriteAccessController.addAccessInternal(address)._user (SimpleWriteAccessController.sol#54) is not in mixedCase
Parameter SimpleWriteAccessController.removeAccess(address)._user (SimpleWriteAccessController.sol#65) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0x785433d8b06D77D68dF6be63944742130A4530d1 analyzed (12 contracts with 79 detectors), 120 result(s) found
Slither report for InitializableAdminUpgradeabilityProxy at `0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9` with implementation unknown contract name at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
Warning: contracts/open-zeppelin/Address.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/BaseUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/Proxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/SafeMath.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/UpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol:13:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
fallback () payable external {
^ (Relevant source part starts here and spans across multiple lines).
Warning: contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
fallback () payable external {
^ (Relevant source part starts here and spans across multiple lines).
Warning: contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol:12:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
fallback () payable external {
^ (Relevant source part starts here and spans across multiple lines).
Warning: contracts/utils/MockTransferHook.sol:9:25: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function onTransfer(address from, address to, uint256 amount) external override {
^----------^
Warning: contracts/utils/MockTransferHook.sol:9:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function onTransfer(address from, address to, uint256 amount) external override {
^--------^
Warning: contracts/utils/MockTransferHook.sol:9:51: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function onTransfer(address from, address to, uint256 amount) external override {
^------------^
INFO:Detectors:
InitializableUpgradeabilityProxy.initialize(address,bytes) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20-28) uses delegatecall to a input-controlled function id
- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#25)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall
INFO:Detectors:
LendToAaveMigrator.migrateFromLEND(uint256) (contracts/token/LendToAaveMigrator.sol#61-68) ignores return value by LEND.transferFrom(msg.sender,address(this),amount) (contracts/token/LendToAaveMigrator.sol#65)
LendToAaveMigrator.migrateFromLEND(uint256) (contracts/token/LendToAaveMigrator.sol#61-68) ignores return value by AAVE.transfer(msg.sender,amount.div(LEND_AAVE_RATIO)) (contracts/token/LendToAaveMigrator.sol#66)
DoubleTransferHelper.doubleSend(address,uint256,uint256) (contracts/utils/DoubleTransferHelper.sol#14-17) ignores return value by AAVE.transfer(to,amount1) (contracts/utils/DoubleTransferHelper.sol#15)
DoubleTransferHelper.doubleSend(address,uint256,uint256) (contracts/utils/DoubleTransferHelper.sol#14-17) ignores return value by AAVE.transfer(to,amount2) (contracts/utils/DoubleTransferHelper.sol#16)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer
INFO:Detectors:
AaveToken._writeSnapshot(address,uint128,uint128) (contracts/token/AaveToken.sol#138-153) uses a dangerous strict equality:
- ownerCountOfSnapshots != 0 && snapshotsOwner[ownerCountOfSnapshots.sub(1)].blockNumber == currentBlock (contracts/token/AaveToken.sol#145)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
Reentrancy in AaveToken.initialize(address,address,ITransferHook) (contracts/token/AaveToken.sol#59-85):
External calls:
- _mint(migrator,MIGRATION_AMOUNT) (contracts/token/AaveToken.sol#83)
- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
State variables written after the call(s):
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- _balances[account] = _balances[account].add(amount) (contracts/open-zeppelin/ERC20.sol#235)
ERC20._balances (contracts/open-zeppelin/ERC20.sol#38) can be used in cross function reentrancies:
- ERC20._mint(address,uint256) (contracts/open-zeppelin/ERC20.sol#229-237)
- ERC20._transfer(address,address,uint256) (contracts/open-zeppelin/ERC20.sol#209-218)
- ERC20.balanceOf(address) (contracts/open-zeppelin/ERC20.sol#105-107)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- _countsSnapshots[owner] = ownerCountOfSnapshots.add(1) (contracts/token/AaveToken.sol#149)
AaveToken._countsSnapshots (contracts/token/AaveToken.sol#38) can be used in cross function reentrancies:
- AaveToken._countsSnapshots (contracts/token/AaveToken.sol#38)
- AaveToken._writeSnapshot(address,uint128,uint128) (contracts/token/AaveToken.sol#138-153)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- snapshotsOwner[ownerCountOfSnapshots.sub(1)].value = newValue (contracts/token/AaveToken.sol#146)
- snapshotsOwner[ownerCountOfSnapshots] = Snapshot(currentBlock,newValue) (contracts/token/AaveToken.sol#148)
AaveToken._snapshots (contracts/token/AaveToken.sol#36) can be used in cross function reentrancies:
- AaveToken._snapshots (contracts/token/AaveToken.sol#36)
- AaveToken._writeSnapshot(address,uint128,uint128) (contracts/token/AaveToken.sol#138-153)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- _totalSupply = _totalSupply.add(amount) (contracts/open-zeppelin/ERC20.sol#234)
ERC20._totalSupply (contracts/open-zeppelin/ERC20.sol#42) can be used in cross function reentrancies:
- ERC20._mint(address,uint256) (contracts/open-zeppelin/ERC20.sol#229-237)
- ERC20.totalSupply() (contracts/open-zeppelin/ERC20.sol#98-100)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
ERC20.constructor(string,string).name (contracts/open-zeppelin/ERC20.sol#57) shadows:
- ERC20.name() (contracts/open-zeppelin/ERC20.sol#66-68) (function)
ERC20.constructor(string,string).symbol (contracts/open-zeppelin/ERC20.sol#57) shadows:
- ERC20.symbol() (contracts/open-zeppelin/ERC20.sol#74-76) (function)
InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._admin (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) shadows:
- BaseAdminUpgradeabilityProxy._admin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#94-99) (function)
MintableErc20.constructor(string,string,uint8).name (contracts/utils/MintableErc20.sol#11) shadows:
- ERC20.name() (contracts/open-zeppelin/ERC20.sol#66-68) (function)
MintableErc20.constructor(string,string,uint8).symbol (contracts/utils/MintableErc20.sol#11) shadows:
- ERC20.symbol() (contracts/open-zeppelin/ERC20.sol#74-76) (function)
MintableErc20.constructor(string,string,uint8).decimals (contracts/utils/MintableErc20.sol#11) shadows:
- ERC20.decimals() (contracts/open-zeppelin/ERC20.sol#91-93) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
InitializableUpgradeabilityProxy.initialize(address,bytes)._logic (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20) lacks a zero-check on :
- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#25)
BaseAdminUpgradeabilityProxy.upgradeToAndCall(address,bytes).newImplementation (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#85) lacks a zero-check on :
- (success) = newImplementation.delegatecall(data) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#87)
UpgradeabilityProxy.constructor(address,bytes)._logic (contracts/open-zeppelin/UpgradeabilityProxy.sol#19) lacks a zero-check on :
- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/UpgradeabilityProxy.sol#23)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Modifier BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Reentrancy in AaveToken.initialize(address,address,ITransferHook) (contracts/token/AaveToken.sol#59-85):
External calls:
- _mint(migrator,MIGRATION_AMOUNT) (contracts/token/AaveToken.sol#83)
- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
Event emitted after the call(s):
- SnapshotDone(owner,oldValue,newValue) (contracts/token/AaveToken.sol#152)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
- Transfer(address(0),account,amount) (contracts/open-zeppelin/ERC20.sol#236)
- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
Reentrancy in LendToAaveMigrator.migrateFromLEND(uint256) (contracts/token/LendToAaveMigrator.sol#61-68):
External calls:
- LEND.transferFrom(msg.sender,address(this),amount) (contracts/token/LendToAaveMigrator.sol#65)
- AAVE.transfer(msg.sender,amount.div(LEND_AAVE_RATIO)) (contracts/token/LendToAaveMigrator.sol#66)
Event emitted after the call(s):
- LendMigrated(msg.sender,amount) (contracts/token/LendToAaveMigrator.sol#67)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
AaveToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (contracts/token/AaveToken.sol#98-123) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,INVALID_EXPIRATION) (contracts/token/AaveToken.sol#109)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address.isContract(address) (contracts/open-zeppelin/Address.sol#24-33) uses assembly
- INLINE ASM (contracts/open-zeppelin/Address.sol#31)
BaseAdminUpgradeabilityProxy._admin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#94-99) uses assembly
- INLINE ASM (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#96-98)
BaseAdminUpgradeabilityProxy._setAdmin(address) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#105-111) uses assembly
- INLINE ASM (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#108-110)
BaseUpgradeabilityProxy._implementation() (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#30-35) uses assembly
- INLINE ASM (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#32-34)
BaseUpgradeabilityProxy._setImplementation(address) (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#50-58) uses assembly
- INLINE ASM (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#55-57)
Proxy._delegate(address) (contracts/open-zeppelin/Proxy.sol#30-49) uses assembly
- INLINE ASM (contracts/open-zeppelin/Proxy.sol#31-48)
AaveToken.initialize(address,address,ITransferHook) (contracts/token/AaveToken.sol#59-85) uses assembly
- INLINE ASM (contracts/token/AaveToken.sol#68-70)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.sendValue(address,uint256) (contracts/open-zeppelin/Address.sol#51-57) is never used and should be removed
Context._msgData() (contracts/open-zeppelin/Context.sol#20-23) is never used and should be removed
ERC20._burn(address,uint256) (contracts/open-zeppelin/ERC20.sol#250-258) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/open-zeppelin/SafeMath.sol#131-133) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/open-zeppelin/SafeMath.sol#146-149) is never used and should be removed
SafeMath.mul(uint256,uint256) (contracts/open-zeppelin/SafeMath.sol#71-83) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (contracts/open-zeppelin/Address.sol#51-57):
- (success) = recipient.call{value: amount}() (contracts/open-zeppelin/Address.sol#55)
Low level call in BaseAdminUpgradeabilityProxy.upgradeToAndCall(address,bytes) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#85-89):
- (success) = newImplementation.delegatecall(data) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#87)
Low level call in InitializableUpgradeabilityProxy.initialize(address,bytes) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20-28):
- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#25)
Low level call in UpgradeabilityProxy.constructor(address,bytes) (contracts/open-zeppelin/UpgradeabilityProxy.sol#19-26):
- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/UpgradeabilityProxy.sol#23)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
DoubleTransferHelper (contracts/utils/DoubleTransferHelper.sol#6-19) should inherit from VersionedInitializable (contracts/utils/VersionedInitializable.sol#18-44)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance
INFO:Detectors:
Variable ERC20._name (contracts/open-zeppelin/ERC20.sol#44) is not in mixedCase
Variable ERC20._symbol (contracts/open-zeppelin/ERC20.sol#45) is not in mixedCase
Parameter InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._logic (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) is not in mixedCase
Parameter InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._admin (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) is not in mixedCase
Parameter InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._data (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) is not in mixedCase
Parameter InitializableUpgradeabilityProxy.initialize(address,bytes)._logic (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20) is not in mixedCase
Parameter InitializableUpgradeabilityProxy.initialize(address,bytes)._data (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20) is not in mixedCase
Variable AaveToken._nonces (contracts/token/AaveToken.sol#34) is not in mixedCase
Variable AaveToken._snapshots (contracts/token/AaveToken.sol#36) is not in mixedCase
Variable AaveToken._countsSnapshots (contracts/token/AaveToken.sol#38) is not in mixedCase
Variable AaveToken._aaveGovernance (contracts/token/AaveToken.sol#43) is not in mixedCase
Variable AaveToken.DOMAIN_SEPARATOR (contracts/token/AaveToken.sol#45) is not in mixedCase
Variable LendToAaveMigrator.AAVE (contracts/token/LendToAaveMigrator.sol#17) is not in mixedCase
Variable LendToAaveMigrator.LEND (contracts/token/LendToAaveMigrator.sol#18) is not in mixedCase
Variable LendToAaveMigrator.LEND_AAVE_RATIO (contracts/token/LendToAaveMigrator.sol#19) is not in mixedCase
Variable LendToAaveMigrator._totalLendMigrated (contracts/token/LendToAaveMigrator.sol#22) is not in mixedCase
Variable DoubleTransferHelper.AAVE (contracts/utils/DoubleTransferHelper.sol#8) is not in mixedCase
Variable VersionedInitializable.______gap (contracts/utils/VersionedInitializable.sol#43) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Redundant expression "this (contracts/open-zeppelin/Context.sol#21)" inContext (contracts/open-zeppelin/Context.sol#15-25)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
INFO:Slither:0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 analyzed (19 contracts with 79 detectors), 57 result(s) found
Slither report for EthRobotKeeper at `0x943AcD0c93d7a8Bee7dA5Fd0DC3d0028237074d6`
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 837, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 90, in process_all
compilations = compile_all(target, **vars(args))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 643, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 131, in __init__
self._compile(**kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 553, in _compile
self._platform.compile(self, **kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/etherscan.py", line 362, in compile
solc_standard_json.standalone_compile(filenames, compilation_unit, working_dir=working_dir)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 66, in standalone_compile
targets_json = run_solc_standard_json(
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 181, in run_solc_standard_json
raise InvalidCompilation(solc_exception_str)
crytic_compile.platform.exceptions.InvalidCompilation: ParserError: ParserError: Source "aave-address-book/AaveGovernanceV2.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/EthRobotKeeper.sol:4:1:
|
4 | import {IAaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "solidity-utils/contracts/oz-common/Ownable.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/EthRobotKeeper.sol:7:1:
|
7 | import {Ownable} from 'solidity-utils/contracts/oz-common/Ownable.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "chainlink-brownie-contracts/interfaces/AutomationCompatibleInterface.sol" not found: File not found. Searched the following locations: "".
--> src/interfaces/IGovernanceRobotKeeper.sol:4:1:
|
4 | import {AutomationCompatibleInterface} from 'chainlink-brownie-contracts/interfaces/AutomationCompatibleInterface.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "aave-address-book/AaveGovernanceV2.sol" not found: File not found. Searched the following locations: "".
--> src/interfaces/IProposalValidator.sol:5:1:
|
5 | import {IAaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR:root:Error in 0x943AcD0c93d7a8Bee7dA5Fd0DC3d0028237074d6
ERROR:root:Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 837, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 90, in process_all
compilations = compile_all(target, **vars(args))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 643, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 131, in __init__
self._compile(**kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 553, in _compile
self._platform.compile(self, **kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/etherscan.py", line 362, in compile
solc_standard_json.standalone_compile(filenames, compilation_unit, working_dir=working_dir)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 66, in standalone_compile
targets_json = run_solc_standard_json(
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 181, in run_solc_standard_json
raise InvalidCompilation(solc_exception_str)
crytic_compile.platform.exceptions.InvalidCompilation: ParserError: ParserError: Source "aave-address-book/AaveGovernanceV2.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/EthRobotKeeper.sol:4:1:
|
4 | import {IAaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "solidity-utils/contracts/oz-common/Ownable.sol" not found: File not found. Searched the following locations: "".
--> src/contracts/EthRobotKeeper.sol:7:1:
|
7 | import {Ownable} from 'solidity-utils/contracts/oz-common/Ownable.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "chainlink-brownie-contracts/interfaces/AutomationCompatibleInterface.sol" not found: File not found. Searched the following locations: "".
--> src/interfaces/IGovernanceRobotKeeper.sol:4:1:
|
4 | import {AutomationCompatibleInterface} from 'chainlink-brownie-contracts/interfaces/AutomationCompatibleInterface.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: ParserError: Source "aave-address-book/AaveGovernanceV2.sol" not found: File not found. Searched the following locations: "".
--> src/interfaces/IProposalValidator.sol:5:1:
|
5 | import {IAaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Slither report for GovernanceStrategy at `0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e`
INFO:Detectors:
GovernanceStrategy.constructor(address,address).aave (crytic-export/etherscan-contracts/0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e-GovernanceStrategy.sol#78) lacks a zero-check on :
- AAVE = aave (crytic-export/etherscan-contracts/0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e-GovernanceStrategy.sol#79)
GovernanceStrategy.constructor(address,address).stkAave (crytic-export/etherscan-contracts/0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e-GovernanceStrategy.sol#78) lacks a zero-check on :
- STK_AAVE = stkAave (crytic-export/etherscan-contracts/0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e-GovernanceStrategy.sol#80)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Variable GovernanceStrategy.AAVE (crytic-export/etherscan-contracts/0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e-GovernanceStrategy.sol#70) is not in mixedCase
Variable GovernanceStrategy.STK_AAVE (crytic-export/etherscan-contracts/0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e-GovernanceStrategy.sol#71) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e analyzed (4 contracts with 79 detectors), 4 result(s) found
Slither report for AccessControlledOffchainAggregator at `0xbba12740DE905707251525477bAD74985DeC46D2`
Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
int192 latestAnswer,
^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
function latestAnswer()
^ (Relevant source part starts here and spans across multiple lines).
Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
uint64 latestTimestamp
^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
function latestTimestamp()
^ (Relevant source part starts here and spans across multiple lines).
Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
string memory description
^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
function description()
^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623) passes array OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84)by reference to OffchainAggregatorBilling.oracleRewards(bytes,uint16[31]) (OffchainAggregatorBilling.sol#392-406)which only takes arrays by value
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
State variables written after the call(s):
- s_gasReimbursementsLinkWei[oracle.index] = 1 (OffchainAggregatorBilling.sol#355)
OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- s_oracleObservationsCounts[oracle.index] = 1 (OffchainAggregatorBilling.sol#354)
OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
State variables written after the call(s):
- s_gasReimbursementsLinkWei = gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#389)
OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- s_oracleObservationsCounts = observationsCounts (OffchainAggregatorBilling.sol#388)
OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
External calls:
- payOracles() (OffchainAggregatorBilling.sol#225)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
State variables written after the call(s):
- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
- s_billing = Billing(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#198-199)
OffchainAggregatorBilling.s_billing (OffchainAggregatorBilling.sol#66) can be used in cross function reentrancies:
- OffchainAggregatorBilling.getBilling() (OffchainAggregatorBilling.sol#238-257)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#189-202)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
External calls:
- payOracle(transmitter) (OffchainAggregator.sol#164)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
State variables written after the call(s):
- delete s_oracles[signer] (OffchainAggregator.sol#165)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- s_oracles[_signers[i]] = Oracle(uint8(i),Role.Signer) (OffchainAggregator.sol#176)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- s_oracles[_transmitters[i]] = Oracle(uint8(i),Role.Transmitter) (OffchainAggregator.sol#182)
OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- s_signers.pop() (OffchainAggregator.sol#167)
OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- s_signers.push(_signers[i]) (OffchainAggregator.sol#183)
OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- s_transmitters.pop() (OffchainAggregator.sol#168)
OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
- s_transmitters.push(_transmitters[i]) (OffchainAggregator.sol#184)
OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
External calls:
- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
State variables written after the call(s):
- s_hotVars = r.hotVars (OffchainAggregator.sol#641)
OffchainAggregator.s_hotVars (OffchainAggregator.sol#39) can be used in cross function reentrancies:
- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661)
- OffchainAggregator.latestConfigDetails() (OffchainAggregator.sol#235-245)
- OffchainAggregator.latestRound() (OffchainAggregator.sol#679-687)
- OffchainAggregator.latestRoundData() (OffchainAggregator.sol#791-817)
- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674)
- OffchainAggregator.latestTransmissionDetails() (OffchainAggregator.sol#454-473)
- OffchainAggregator.requestNewRound() (OffchainAggregator.sol#385-398)
- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32).r (OffchainAggregator.sol#526) is a local variable never initialized
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).gas (OffchainAggregatorBilling.sol#163) is a local variable never initialized
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).counts (OffchainAggregatorBilling.sol#162) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
OffchainAggregator.validateAnswer(uint32,int256) (OffchainAggregator.sol#309-328) ignores return value by av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
AccessControlledOffchainAggregator.constructor(uint32,uint32,uint32,uint32,uint32,address,address,int192,int192,AccessControllerInterface,AccessControllerInterface,uint8,string).description (AccessControlledOffchainAggregator.sol#25) shadows:
- AccessControlledOffchainAggregator.description() (AccessControlledOffchainAggregator.sol#108-116) (function)
- OffchainAggregator.description() (OffchainAggregator.sol#740-748) (function)
- AggregatorV3Interface.description() (AggregatorV3Interface.sol#7) (function)
OffchainAggregator.latestTransmissionDetails().latestAnswer (OffchainAggregator.sol#461) shadows:
- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661) (function)
- AggregatorInterface.latestAnswer() (AggregatorInterface.sol#5) (function)
OffchainAggregator.latestTransmissionDetails().latestTimestamp (OffchainAggregator.sol#462) shadows:
- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674) (function)
- AggregatorInterface.latestTimestamp() (AggregatorInterface.sol#6) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (Owned.sol#30) lacks a zero-check on :
- pendingOwner = _to (Owned.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358) has external calls inside a loop: require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
External calls:
- payOracle(transmitter) (OffchainAggregator.sol#164)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
State variables written after the call(s):
- s_configCount += 1 (OffchainAggregator.sol#189)
- s_hotVars.threshold = _threshold (OffchainAggregator.sol#186)
- s_hotVars.latestConfigDigest = configDigestFromConfigData(address(this),configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#192-200)
- s_hotVars.latestEpochAndRound = 0 (OffchainAggregator.sol#201)
- s_latestConfigBlockNumber = uint32(block.number) (OffchainAggregator.sol#188)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
External calls:
- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
State variables written after the call(s):
- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
- s_gasReimbursementsLinkWei[txOracle.index] = s_gasReimbursementsLinkWei[txOracle.index] + gasCostLinkWei + uint256(billing.linkGweiPerTransmission) * (1000000000) (OffchainAggregatorBilling.sol#615-617)
- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
- s_oracleObservationsCounts = oracleRewards(observers,s_oracleObservationsCounts) (OffchainAggregatorBilling.sol#580-581)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Event emitted after the call(s):
- OraclePaid(_transmitter,payee,linkWeiAmount) (OffchainAggregatorBilling.sol#356)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
External calls:
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
Event emitted after the call(s):
- OraclePaid(transmitters[transmitteridx],payee,linkWeiAmount) (OffchainAggregatorBilling.sol#384)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
External calls:
- payOracles() (OffchainAggregatorBilling.sol#225)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
Event emitted after the call(s):
- BillingSet(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#200-201)
- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
External calls:
- payOracle(transmitter) (OffchainAggregator.sol#164)
- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Event emitted after the call(s):
- ConfigSet(previousConfigBlockNumber,configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#203-211)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- delete s_oracles[signer] (OffchainAggregator.sol#165)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- s_signers.pop() (OffchainAggregator.sol#167)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
- s_transmitters.pop() (OffchainAggregator.sol#168)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
INFO:Detectors:
OffchainAggregator.decodeReport(bytes) (OffchainAggregator.sol#423-434) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Parameter AccessControlledOffchainAggregator.getAnswer(uint256)._roundId (AccessControlledOffchainAggregator.sol#82) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getTimestamp(uint256)._roundId (AccessControlledOffchainAggregator.sol#93) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getRoundData(uint80)._roundId (AccessControlledOffchainAggregator.sol#119) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#150) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#151) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#152) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#153) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encoded (OffchainAggregator.sol#154) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._contractAddress (OffchainAggregator.sol#215) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._configCount (OffchainAggregator.sol#216) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#217) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#218) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#219) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#220) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfig (OffchainAggregator.sol#221) is not in mixedCase
Parameter OffchainAggregator.setValidator(address)._newValidator (OffchainAggregator.sol#296) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._aggregatorRoundId (OffchainAggregator.sol#310) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._answer (OffchainAggregator.sol#311) is not in mixedCase
Parameter OffchainAggregator.setRequesterAccessController(AccessControllerInterface)._requesterAccessController (OffchainAggregator.sol#368) is not in mixedCase
Parameter OffchainAggregator.decodeReport(bytes)._report (OffchainAggregator.sol#423) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._report (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._rs (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._ss (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._report (OffchainAggregator.sol#511) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._ss (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rawVs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.getAnswer(uint256)._roundId (OffchainAggregator.sol#693) is not in mixedCase
Parameter OffchainAggregator.getTimestamp(uint256)._roundId (OffchainAggregator.sol#708) is not in mixedCase
Parameter OffchainAggregator.getRoundData(uint80)._roundId (OffchainAggregator.sol#759) is not in mixedCase
Constant OffchainAggregator.maxUint32 (OffchainAggregator.sol#19) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OffchainAggregator.s_hotVars (OffchainAggregator.sol#39) is not in mixedCase
Variable OffchainAggregator.s_transmissions (OffchainAggregator.sol#47) is not in mixedCase
Variable OffchainAggregator.s_configCount (OffchainAggregator.sol#51) is not in mixedCase
Variable OffchainAggregator.s_latestConfigBlockNumber (OffchainAggregator.sol#52) is not in mixedCase
Variable OffchainAggregator.s_validator (OffchainAggregator.sol#268) is not in mixedCase
Variable OffchainAggregator.s_requesterAccessController (OffchainAggregator.sol#334) is not in mixedCase
Variable OffchainAggregator.s_description (OffchainAggregator.sol#735) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#190) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#191) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#192) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#193) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#194) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#214) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#215) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#216) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#217) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#218) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessControllerInternal(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#266) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessController(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#284) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is not in mixedCase
Parameter OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is not in mixedCase
Parameter OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._recipient (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._amount (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.oracleObservationCount(address)._signerOrTransmitter (OffchainAggregatorBilling.sol#559) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._transmitters (OffchainAggregatorBilling.sol#660) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._payees (OffchainAggregatorBilling.sol#661) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._proposed (OffchainAggregatorBilling.sol#690) is not in mixedCase
Parameter OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._x (OffchainAggregatorBilling.sol#728) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._y (OffchainAggregatorBilling.sol#728) is not in mixedCase
Constant OffchainAggregatorBilling.maxNumOracles (OffchainAggregatorBilling.sol#45) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OffchainAggregatorBilling.s_billing (OffchainAggregatorBilling.sol#66) is not in mixedCase
Variable OffchainAggregatorBilling.LINK (OffchainAggregatorBilling.sol#71) is not in mixedCase
Variable OffchainAggregatorBilling.s_billingAccessController (OffchainAggregatorBilling.sol#73) is not in mixedCase
Variable OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) is not in mixedCase
Variable OffchainAggregatorBilling.s_payees (OffchainAggregatorBilling.sol#87-89) is not in mixedCase
Variable OffchainAggregatorBilling.s_proposedPayees (OffchainAggregatorBilling.sol#92-94) is not in mixedCase
Variable OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) is not in mixedCase
Variable OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) is not in mixedCase
Variable OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) is not in mixedCase
Variable OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) is not in mixedCase
Constant OffchainAggregatorBilling.maxUint16 (OffchainAggregatorBilling.sol#145) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.maxUint128 (OffchainAggregatorBilling.sol#146) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.accountingGasCost (OffchainAggregatorBilling.sol#435) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter Owned.transferOwnership(address)._to (Owned.sol#30) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._user (SimpleReadAccessController.sol#24) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._calldata (SimpleReadAccessController.sol#25) is not in mixedCase
Parameter SimpleWriteAccessController.hasAccess(address,bytes)._user (SimpleWriteAccessController.sol#34) is not in mixedCase
Parameter SimpleWriteAccessController.addAccess(address)._user (SimpleWriteAccessController.sol#50) is not in mixedCase
Parameter SimpleWriteAccessController.addAccessInternal(address)._user (SimpleWriteAccessController.sol#54) is not in mixedCase
Parameter SimpleWriteAccessController.removeAccess(address)._user (SimpleWriteAccessController.sol#65) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0xbba12740DE905707251525477bAD74985DeC46D2 analyzed (12 contracts with 79 detectors), 120 result(s) found
Slither report for L1CrossDomainMessenger at `0xd9166833FF12A5F900ccfBf2c8B62a90F1Ca1FD5`
Warning: Warning: Function state mutability can be restricted to pure
--> contracts/L1/messaging/L1CrossDomainMessenger.sol:307:5:
|
307 | function _verifyStorageProof(
| ^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
Reentrancy in L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213):
External calls:
- (success) = _target.call(_message) (contracts/L1/messaging/L1CrossDomainMessenger.sol#197)
State variables written after the call(s):
- successfulMessages[xDomainCalldataHash] = true (contracts/L1/messaging/L1CrossDomainMessenger.sol#203)
L1CrossDomainMessenger.successfulMessages (contracts/L1/messaging/L1CrossDomainMessenger.sol#59) can be used in cross function reentrancies:
- L1CrossDomainMessenger.successfulMessages (contracts/L1/messaging/L1CrossDomainMessenger.sol#59)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
Lib_MerkleTrie._getUpdatedTrieRoot(Lib_MerkleTrie.TrieNode[],bytes).currentNode (contracts/libraries/trie/Lib_MerkleTrie.sol#461) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof)._sender (contracts/L1/messaging/L1CrossDomainMessenger.sol#162) lacks a zero-check on :
- xDomainMsgSender = _sender (contracts/L1/messaging/L1CrossDomainMessenger.sol#196)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Reentrancy in L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213):
External calls:
- (success) = _target.call(_message) (contracts/L1/messaging/L1CrossDomainMessenger.sol#197)
State variables written after the call(s):
- relayedMessages[relayId] = true (contracts/L1/messaging/L1CrossDomainMessenger.sol#212)
- xDomainMsgSender = Lib_DefaultValues.DEFAULT_XDOMAIN_SENDER (contracts/L1/messaging/L1CrossDomainMessenger.sol#198)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
INFO:Detectors:
Reentrancy in L1CrossDomainMessenger.sendMessage(address,bytes,uint32) (contracts/L1/messaging/L1CrossDomainMessenger.sol#135-154):
External calls:
- _sendXDomainMessage(ovmCanonicalTransactionChain,xDomainCalldata,_gasLimit) (contracts/L1/messaging/L1CrossDomainMessenger.sol#151)
- ICanonicalTransactionChain(_canonicalTransactionChain).enqueue(Lib_PredeployAddresses.L2_CROSS_DOMAIN_MESSENGER,_gasLimit,_message) (contracts/L1/messaging/L1CrossDomainMessenger.sol#358-362)
Event emitted after the call(s):
- SentMessage(_target,msg.sender,_message,nonce,_gasLimit) (contracts/L1/messaging/L1CrossDomainMessenger.sol#153)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
Lib_RLPReader.toRLPItem(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#42-49) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#44-46)
Lib_RLPReader.readList(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#56-88) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#83-85)
Lib_RLPReader.readBytes32(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#144-163) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#153-160)
Lib_RLPReader.readBool(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#197-209) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#202-204)
Lib_RLPReader._decodeLength(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#264-331) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#277-279)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#300-303)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#322-325)
Lib_RLPReader._copy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPReader.sol#340-376) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#352-354)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#358-360)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPReader.sol#372-374)
Lib_RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#143-169) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#153-155)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#164-168)
Lib_RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/Lib_RLPWriter.sol#177-207) uses assembly
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#190-192)
- INLINE ASM (contracts/libraries/rlp/Lib_RLPWriter.sol#198-200)
Lib_BytesUtils.slice(bytes,uint256,uint256) (contracts/libraries/utils/Lib_BytesUtils.sol#12-77) uses assembly
- INLINE ASM (contracts/libraries/utils/Lib_BytesUtils.sol#23-74)
Lib_BytesUtils.toBytes32(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#87-97) uses assembly
- INLINE ASM (contracts/libraries/utils/Lib_BytesUtils.sol#90-92)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213) compares to a boolean constant:
-require(bool,string)(blockedMessages[xDomainCalldataHash] == false,Provided message has been blocked.) (contracts/L1/messaging/L1CrossDomainMessenger.sol#186-189)
L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213) compares to a boolean constant:
-success == true (contracts/L1/messaging/L1CrossDomainMessenger.sol#202)
L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213) compares to a boolean constant:
-require(bool,string)(_verifyXDomainMessage(xDomainCalldata,_proof) == true,Provided message could not be verified.) (contracts/L1/messaging/L1CrossDomainMessenger.sol#174-177)
L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213) compares to a boolean constant:
-require(bool,string)(successfulMessages[xDomainCalldataHash] == false,Provided message has already been received.) (contracts/L1/messaging/L1CrossDomainMessenger.sol#181-184)
L1CrossDomainMessenger._verifyStateRootProof(IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#283-299) compares to a boolean constant:
-(ovmStateCommitmentChain.insideFraudProofWindow(_proof.stateRootBatchHeader) == false && ovmStateCommitmentChain.verifyStateCommitment(_proof.stateRoot,_proof.stateRootBatchHeader,_proof.stateRootProof)) (contracts/L1/messaging/L1CrossDomainMessenger.sol#292-298)
L1CrossDomainMessenger._verifyStorageProof(bytes,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#307-345) compares to a boolean constant:
-require(bool,string)(exists == true,Message passing predeploy has not been initialized or invalid proof provided.) (contracts/L1/messaging/L1CrossDomainMessenger.sol#329-332)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality
INFO:Detectors:
Lib_MerkleTrie._getNewPath(Lib_MerkleTrie.TrieNode[],uint256,bytes,bytes,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#286-445) has a high cyclomatic complexity (14).
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity
INFO:Detectors:
AddressAliasHelper.undoL1ToL2Alias(address) (contracts/standards/AddressAliasHelper.sol#38-42) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-22) is never used and should be removed
ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#17-19) is never used and should be removed
ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
Lib_Bytes32Utils.fromAddress(address) (contracts/libraries/utils/Lib_Bytes32Utils.sol#44-46) is never used and should be removed
Lib_Bytes32Utils.fromBool(bool) (contracts/libraries/utils/Lib_Bytes32Utils.sol#26-28) is never used and should be removed
Lib_Bytes32Utils.toAddress(bytes32) (contracts/libraries/utils/Lib_Bytes32Utils.sol#35-37) is never used and should be removed
Lib_Bytes32Utils.toBool(bytes32) (contracts/libraries/utils/Lib_Bytes32Utils.sol#17-19) is never used and should be removed
Lib_BytesUtils.fromNibbles(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#114-122) is never used and should be removed
Lib_BytesUtils.toUint256(bytes) (contracts/libraries/utils/Lib_BytesUtils.sol#99-101) is never used and should be removed
Lib_MerkleTrie._addHexPrefix(bytes,bool) (contracts/libraries/trie/Lib_MerkleTrie.sol#768-778) is never used and should be removed
Lib_MerkleTrie._editBranchIndex(Lib_MerkleTrie.TrieNode,uint8,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#752-760) is never used and should be removed
Lib_MerkleTrie._editBranchValue(Lib_MerkleTrie.TrieNode,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#735-743) is never used and should be removed
Lib_MerkleTrie._editExtensionNodeValue(Lib_MerkleTrie.TrieNode,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#680-694) is never used and should be removed
Lib_MerkleTrie._getNewPath(Lib_MerkleTrie.TrieNode[],uint256,bytes,bytes,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#286-445) is never used and should be removed
Lib_MerkleTrie._getNodeHash(bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#579-585) is never used and should be removed
Lib_MerkleTrie._getNodeKey(Lib_MerkleTrie.TrieNode) (contracts/libraries/trie/Lib_MerkleTrie.sol#560-562) is never used and should be removed
Lib_MerkleTrie._getNodeType(Lib_MerkleTrie.TrieNode) (contracts/libraries/trie/Lib_MerkleTrie.sol#592-607) is never used and should be removed
Lib_MerkleTrie._getUpdatedTrieRoot(Lib_MerkleTrie.TrieNode[],bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#453-505) is never used and should be removed
Lib_MerkleTrie._joinNodeArrays(Lib_MerkleTrie.TrieNode[],uint256,Lib_MerkleTrie.TrieNode[],uint256) (contracts/libraries/trie/Lib_MerkleTrie.sol#807-826) is never used and should be removed
Lib_MerkleTrie._makeEmptyBranchNode() (contracts/libraries/trie/Lib_MerkleTrie.sol#721-727) is never used and should be removed
Lib_MerkleTrie._makeExtensionNode(bytes,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#662-672) is never used and should be removed
Lib_MerkleTrie._makeLeafNode(bytes,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#705-715) is never used and should be removed
Lib_MerkleTrie._makeNode(Lib_RLPReader.RLPItem[]) (contracts/libraries/trie/Lib_MerkleTrie.sol#644-654) is never used and should be removed
Lib_MerkleTrie._makeNode(bytes[]) (contracts/libraries/trie/Lib_MerkleTrie.sol#633-637) is never used and should be removed
Lib_MerkleTrie._removeHexPrefix(bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#785-795) is never used and should be removed
Lib_MerkleTrie.getSingleNodeRootHash(bytes,bytes) (contracts/libraries/trie/Lib_MerkleTrie.sol#145-151) is never used and should be removed
Lib_MerkleTrie.update(bytes,bytes,bytes,bytes32) (contracts/libraries/trie/Lib_MerkleTrie.sol#92-108) is never used and should be removed
Lib_OVMCodec.encodeTransaction(Lib_OVMCodec.Transaction) (contracts/libraries/codec/Lib_OVMCodec.sol#80-95) is never used and should be removed
Lib_OVMCodec.hashBatchHeader(Lib_OVMCodec.ChainBatchHeader) (contracts/libraries/codec/Lib_OVMCodec.sol#128-142) is never used and should be removed
Lib_OVMCodec.hashTransaction(Lib_OVMCodec.Transaction) (contracts/libraries/codec/Lib_OVMCodec.sol#102-104) is never used and should be removed
Lib_RLPReader.readAddress(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#225-233) is never used and should be removed
Lib_RLPReader.readAddress(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#240-242) is never used and should be removed
Lib_RLPReader.readBool(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#197-209) is never used and should be removed
Lib_RLPReader.readBool(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#216-218) is never used and should be removed
Lib_RLPReader.readBytes(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#117-119) is never used and should be removed
Lib_RLPReader.readBytes32(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#170-172) is never used and should be removed
Lib_RLPReader.readString(Lib_RLPReader.RLPItem) (contracts/libraries/rlp/Lib_RLPReader.sol#126-128) is never used and should be removed
Lib_RLPReader.readString(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#135-137) is never used and should be removed
Lib_RLPReader.readUint256(bytes) (contracts/libraries/rlp/Lib_RLPReader.sol#188-190) is never used and should be removed
Lib_RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/Lib_RLPWriter.sol#177-207) is never used and should be removed
Lib_RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#143-169) is never used and should be removed
Lib_RLPWriter._toBinary(uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#118-134) is never used and should be removed
Lib_RLPWriter._writeLength(uint256,uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#88-110) is never used and should be removed
Lib_RLPWriter.writeAddress(address) (contracts/libraries/rlp/Lib_RLPWriter.sol#54-56) is never used and should be removed
Lib_RLPWriter.writeBool(bool) (contracts/libraries/rlp/Lib_RLPWriter.sol#72-76) is never used and should be removed
Lib_RLPWriter.writeBytes(bytes) (contracts/libraries/rlp/Lib_RLPWriter.sol#18-28) is never used and should be removed
Lib_RLPWriter.writeList(bytes[]) (contracts/libraries/rlp/Lib_RLPWriter.sol#35-38) is never used and should be removed
Lib_RLPWriter.writeString(string) (contracts/libraries/rlp/Lib_RLPWriter.sol#45-47) is never used and should be removed
Lib_RLPWriter.writeUint(uint256) (contracts/libraries/rlp/Lib_RLPWriter.sol#63-65) is never used and should be removed
Lib_SecureMerkleTrie.getSingleNodeRootHash(bytes,bytes) (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#81-88) is never used and should be removed
Lib_SecureMerkleTrie.update(bytes,bytes,bytes,bytes32) (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#48-56) is never used and should be removed
OwnableUpgradeable.__Ownable_init() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#28-31) is never used and should be removed
PausableUpgradeable.__Pausable_init() (@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#33-36) is never used and should be removed
PausableUpgradeable._unpause() (@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#92-95) is never used and should be removed
ReentrancyGuardUpgradeable.__ReentrancyGuard_init() (@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#39-41) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof) (contracts/L1/messaging/L1CrossDomainMessenger.sol#160-213):
- (success) = _target.call(_message) (contracts/L1/messaging/L1CrossDomainMessenger.sol#197)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Function OwnableUpgradeable.__Ownable_init() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#28-31) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#33-35) is not in mixedCase
Variable OwnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#77) is not in mixedCase
Function PausableUpgradeable.__Pausable_init() (@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#33-36) is not in mixedCase
Function PausableUpgradeable.__Pausable_init_unchained() (@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#38-40) is not in mixedCase
Variable PausableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#96) is not in mixedCase
Function ReentrancyGuardUpgradeable.__ReentrancyGuard_init() (@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#39-41) is not in mixedCase
Function ReentrancyGuardUpgradeable.__ReentrancyGuard_init_unchained() (@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#43-45) is not in mixedCase
Variable ReentrancyGuardUpgradeable.__gap (@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#67) is not in mixedCase
Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#17-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#30) is not in mixedCase
Parameter L1CrossDomainMessenger.initialize(address)._libAddressManager (contracts/L1/messaging/L1CrossDomainMessenger.sol#81) is not in mixedCase
Parameter L1CrossDomainMessenger.blockMessage(bytes32)._xDomainCalldataHash (contracts/L1/messaging/L1CrossDomainMessenger.sol#107) is not in mixedCase
Parameter L1CrossDomainMessenger.allowMessage(bytes32)._xDomainCalldataHash (contracts/L1/messaging/L1CrossDomainMessenger.sol#116) is not in mixedCase
Parameter L1CrossDomainMessenger.sendMessage(address,bytes,uint32)._target (contracts/L1/messaging/L1CrossDomainMessenger.sol#136) is not in mixedCase
Parameter L1CrossDomainMessenger.sendMessage(address,bytes,uint32)._message (contracts/L1/messaging/L1CrossDomainMessenger.sol#137) is not in mixedCase
Parameter L1CrossDomainMessenger.sendMessage(address,bytes,uint32)._gasLimit (contracts/L1/messaging/L1CrossDomainMessenger.sol#138) is not in mixedCase
Parameter L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof)._target (contracts/L1/messaging/L1CrossDomainMessenger.sol#161) is not in mixedCase
Parameter L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof)._sender (contracts/L1/messaging/L1CrossDomainMessenger.sol#162) is not in mixedCase
Parameter L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof)._message (contracts/L1/messaging/L1CrossDomainMessenger.sol#163) is not in mixedCase
Parameter L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof)._messageNonce (contracts/L1/messaging/L1CrossDomainMessenger.sol#164) is not in mixedCase
Parameter L1CrossDomainMessenger.relayMessage(address,address,bytes,uint256,IL1CrossDomainMessenger.L2MessageInclusionProof)._proof (contracts/L1/messaging/L1CrossDomainMessenger.sol#165) is not in mixedCase
Parameter L1CrossDomainMessenger.replayMessage(address,address,bytes,uint256,uint32,uint32)._target (contracts/L1/messaging/L1CrossDomainMessenger.sol#220) is not in mixedCase
Parameter L1CrossDomainMessenger.replayMessage(address,address,bytes,uint256,uint32,uint32)._sender (contracts/L1/messaging/L1CrossDomainMessenger.sol#221) is not in mixedCase
Parameter L1CrossDomainMessenger.replayMessage(address,address,bytes,uint256,uint32,uint32)._message (contracts/L1/messaging/L1CrossDomainMessenger.sol#222) is not in mixedCase
Parameter L1CrossDomainMessenger.replayMessage(address,address,bytes,uint256,uint32,uint32)._queueIndex (contracts/L1/messaging/L1CrossDomainMessenger.sol#223) is not in mixedCase
Parameter L1CrossDomainMessenger.replayMessage(address,address,bytes,uint256,uint32,uint32)._oldGasLimit (contracts/L1/messaging/L1CrossDomainMessenger.sol#224) is not in mixedCase
Parameter L1CrossDomainMessenger.replayMessage(address,address,bytes,uint256,uint32,uint32)._newGasLimit (contracts/L1/messaging/L1CrossDomainMessenger.sol#225) is not in mixedCase
Contract Lib_CrossDomainUtils (contracts/libraries/bridge/Lib_CrossDomainUtils.sol#10-34) is not in CapWords
Parameter Lib_CrossDomainUtils.encodeXDomainCalldata(address,address,bytes,uint256)._target (contracts/libraries/bridge/Lib_CrossDomainUtils.sol#20) is not in mixedCase
Parameter Lib_CrossDomainUtils.encodeXDomainCalldata(address,address,bytes,uint256)._sender (contracts/libraries/bridge/Lib_CrossDomainUtils.sol#21) is not in mixedCase
Parameter Lib_CrossDomainUtils.encodeXDomainCalldata(address,address,bytes,uint256)._message (contracts/libraries/bridge/Lib_CrossDomainUtils.sol#22) is not in mixedCase
Parameter Lib_CrossDomainUtils.encodeXDomainCalldata(address,address,bytes,uint256)._messageNonce (contracts/libraries/bridge/Lib_CrossDomainUtils.sol#23) is not in mixedCase
Contract Lib_OVMCodec (contracts/libraries/codec/Lib_OVMCodec.sol#13-143) is not in CapWords
Parameter Lib_OVMCodec.encodeTransaction(Lib_OVMCodec.Transaction)._transaction (contracts/libraries/codec/Lib_OVMCodec.sol#80) is not in mixedCase
Parameter Lib_OVMCodec.hashTransaction(Lib_OVMCodec.Transaction)._transaction (contracts/libraries/codec/Lib_OVMCodec.sol#102) is not in mixedCase
Parameter Lib_OVMCodec.decodeEVMAccount(bytes)._encoded (contracts/libraries/codec/Lib_OVMCodec.sol#111) is not in mixedCase
Parameter Lib_OVMCodec.hashBatchHeader(Lib_OVMCodec.ChainBatchHeader)._batchHeader (contracts/libraries/codec/Lib_OVMCodec.sol#128) is not in mixedCase
Contract Lib_DefaultValues (contracts/libraries/constants/Lib_DefaultValues.sol#7-12) is not in CapWords
Contract Lib_PredeployAddresses (contracts/libraries/constants/Lib_PredeployAddresses.sol#7-21) is not in CapWords
Contract Lib_AddressManager (contracts/libraries/resolver/Lib_AddressManager.sol#10-61) is not in CapWords
Parameter Lib_AddressManager.setAddress(string,address)._name (contracts/libraries/resolver/Lib_AddressManager.sol#32) is not in mixedCase
Parameter Lib_AddressManager.setAddress(string,address)._address (contracts/libraries/resolver/Lib_AddressManager.sol#32) is not in mixedCase
Parameter Lib_AddressManager.getAddress(string)._name (contracts/libraries/resolver/Lib_AddressManager.sol#45) is not in mixedCase
Contract Lib_AddressResolver (contracts/libraries/resolver/Lib_AddressResolver.sol#10-40) is not in CapWords
Parameter Lib_AddressResolver.resolve(string)._name (contracts/libraries/resolver/Lib_AddressResolver.sol#37) is not in mixedCase
Contract Lib_RLPReader (contracts/libraries/rlp/Lib_RLPReader.sol#8-386) is not in CapWords
Parameter Lib_RLPReader.toRLPItem(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#42) is not in mixedCase
Parameter Lib_RLPReader.readList(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#56) is not in mixedCase
Parameter Lib_RLPReader.readList(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#95) is not in mixedCase
Parameter Lib_RLPReader.readBytes(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#104) is not in mixedCase
Parameter Lib_RLPReader.readBytes(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#117) is not in mixedCase
Parameter Lib_RLPReader.readString(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#126) is not in mixedCase
Parameter Lib_RLPReader.readString(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#135) is not in mixedCase
Parameter Lib_RLPReader.readBytes32(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#144) is not in mixedCase
Parameter Lib_RLPReader.readBytes32(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#170) is not in mixedCase
Parameter Lib_RLPReader.readUint256(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#179) is not in mixedCase
Parameter Lib_RLPReader.readUint256(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#188) is not in mixedCase
Parameter Lib_RLPReader.readBool(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#197) is not in mixedCase
Parameter Lib_RLPReader.readBool(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#216) is not in mixedCase
Parameter Lib_RLPReader.readAddress(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#225) is not in mixedCase
Parameter Lib_RLPReader.readAddress(bytes)._in (contracts/libraries/rlp/Lib_RLPReader.sol#240) is not in mixedCase
Parameter Lib_RLPReader.readRawBytes(Lib_RLPReader.RLPItem)._in (contracts/libraries/rlp/Lib_RLPReader.sol#249) is not in mixedCase
Contract Lib_RLPWriter (contracts/libraries/rlp/Lib_RLPWriter.sol#8-208) is not in CapWords
Parameter Lib_RLPWriter.writeBytes(bytes)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#18) is not in mixedCase
Parameter Lib_RLPWriter.writeList(bytes[])._in (contracts/libraries/rlp/Lib_RLPWriter.sol#35) is not in mixedCase
Parameter Lib_RLPWriter.writeString(string)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#45) is not in mixedCase
Parameter Lib_RLPWriter.writeAddress(address)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#54) is not in mixedCase
Parameter Lib_RLPWriter.writeUint(uint256)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#63) is not in mixedCase
Parameter Lib_RLPWriter.writeBool(bool)._in (contracts/libraries/rlp/Lib_RLPWriter.sol#72) is not in mixedCase
Contract Lib_MerkleTrie (contracts/libraries/trie/Lib_MerkleTrie.sol#12-827) is not in CapWords
Parameter Lib_MerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._key (contracts/libraries/trie/Lib_MerkleTrie.sol#71) is not in mixedCase
Parameter Lib_MerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._value (contracts/libraries/trie/Lib_MerkleTrie.sol#72) is not in mixedCase
Parameter Lib_MerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._proof (contracts/libraries/trie/Lib_MerkleTrie.sol#73) is not in mixedCase
Parameter Lib_MerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._root (contracts/libraries/trie/Lib_MerkleTrie.sol#74) is not in mixedCase
Parameter Lib_MerkleTrie.update(bytes,bytes,bytes,bytes32)._key (contracts/libraries/trie/Lib_MerkleTrie.sol#93) is not in mixedCase
Parameter Lib_MerkleTrie.update(bytes,bytes,bytes,bytes32)._value (contracts/libraries/trie/Lib_MerkleTrie.sol#94) is not in mixedCase
Parameter Lib_MerkleTrie.update(bytes,bytes,bytes,bytes32)._proof (contracts/libraries/trie/Lib_MerkleTrie.sol#95) is not in mixedCase
Parameter Lib_MerkleTrie.update(bytes,bytes,bytes,bytes32)._root (contracts/libraries/trie/Lib_MerkleTrie.sol#96) is not in mixedCase
Parameter Lib_MerkleTrie.get(bytes,bytes,bytes32)._key (contracts/libraries/trie/Lib_MerkleTrie.sol#119) is not in mixedCase
Parameter Lib_MerkleTrie.get(bytes,bytes,bytes32)._proof (contracts/libraries/trie/Lib_MerkleTrie.sol#120) is not in mixedCase
Parameter Lib_MerkleTrie.get(bytes,bytes,bytes32)._root (contracts/libraries/trie/Lib_MerkleTrie.sol#121) is not in mixedCase
Parameter Lib_MerkleTrie.getSingleNodeRootHash(bytes,bytes)._key (contracts/libraries/trie/Lib_MerkleTrie.sol#145) is not in mixedCase
Parameter Lib_MerkleTrie.getSingleNodeRootHash(bytes,bytes)._value (contracts/libraries/trie/Lib_MerkleTrie.sol#145) is not in mixedCase
Contract Lib_SecureMerkleTrie (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#10-102) is not in CapWords
Parameter Lib_SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._key (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#28) is not in mixedCase
Parameter Lib_SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._value (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#29) is not in mixedCase
Parameter Lib_SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._proof (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#30) is not in mixedCase
Parameter Lib_SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes,bytes32)._root (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#31) is not in mixedCase
Parameter Lib_SecureMerkleTrie.update(bytes,bytes,bytes,bytes32)._key (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#49) is not in mixedCase
Parameter Lib_SecureMerkleTrie.update(bytes,bytes,bytes,bytes32)._value (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#50) is not in mixedCase
Parameter Lib_SecureMerkleTrie.update(bytes,bytes,bytes,bytes32)._proof (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#51) is not in mixedCase
Parameter Lib_SecureMerkleTrie.update(bytes,bytes,bytes,bytes32)._root (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#52) is not in mixedCase
Parameter Lib_SecureMerkleTrie.get(bytes,bytes,bytes32)._key (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#67) is not in mixedCase
Parameter Lib_SecureMerkleTrie.get(bytes,bytes,bytes32)._proof (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#68) is not in mixedCase
Parameter Lib_SecureMerkleTrie.get(bytes,bytes,bytes32)._root (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#69) is not in mixedCase
Parameter Lib_SecureMerkleTrie.getSingleNodeRootHash(bytes,bytes)._key (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#81) is not in mixedCase
Parameter Lib_SecureMerkleTrie.getSingleNodeRootHash(bytes,bytes)._value (contracts/libraries/trie/Lib_SecureMerkleTrie.sol#81) is not in mixedCase
Contract Lib_Bytes32Utils (contracts/libraries/utils/Lib_Bytes32Utils.sol#7-47) is not in CapWords
Parameter Lib_Bytes32Utils.toBool(bytes32)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#17) is not in mixedCase
Parameter Lib_Bytes32Utils.fromBool(bool)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#26) is not in mixedCase
Parameter Lib_Bytes32Utils.toAddress(bytes32)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#35) is not in mixedCase
Parameter Lib_Bytes32Utils.fromAddress(address)._in (contracts/libraries/utils/Lib_Bytes32Utils.sol#44) is not in mixedCase
Contract Lib_BytesUtils (contracts/libraries/utils/Lib_BytesUtils.sol#7-127) is not in CapWords
Parameter Lib_BytesUtils.slice(bytes,uint256,uint256)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#13) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256,uint256)._start (contracts/libraries/utils/Lib_BytesUtils.sol#14) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256,uint256)._length (contracts/libraries/utils/Lib_BytesUtils.sol#15) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#79) is not in mixedCase
Parameter Lib_BytesUtils.slice(bytes,uint256)._start (contracts/libraries/utils/Lib_BytesUtils.sol#79) is not in mixedCase
Parameter Lib_BytesUtils.toBytes32(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#87) is not in mixedCase
Parameter Lib_BytesUtils.toUint256(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#99) is not in mixedCase
Parameter Lib_BytesUtils.toNibbles(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#103) is not in mixedCase
Parameter Lib_BytesUtils.fromNibbles(bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#114) is not in mixedCase
Parameter Lib_BytesUtils.equal(bytes,bytes)._bytes (contracts/libraries/utils/Lib_BytesUtils.sol#124) is not in mixedCase
Parameter Lib_BytesUtils.equal(bytes,bytes)._other (contracts/libraries/utils/Lib_BytesUtils.sol#124) is not in mixedCase
Constant AddressAliasHelper.offset (contracts/standards/AddressAliasHelper.sol#22) is not in UPPER_CASE_WITH_UNDERSCORES
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0xd9166833FF12A5F900ccfBf2c8B62a90F1Ca1FD5 analyzed (26 contracts with 79 detectors), 196 result(s) found
Slither report for EACAggregatorProxy at `0xDC530D9457755926550b59e8ECcdaE7624181557`
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
uint80 roundId,
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
uint80 roundId,
^------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
int256 answer,
^-----------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
int256 answer,
^-----------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
uint256 startedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
uint256 startedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
uint256 updatedAt,
^---------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
uint256 updatedAt,
^---------------^
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
uint16 phaseId
^------------^
crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
function phaseId()
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
function addPhase(
^ (Relevant source part starts here and spans across multiple lines).
Warning: crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
function parseIds(
^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
AggregatorProxy.getRoundData(uint80).roundId_scope_0 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#283) is a local variable never initialized
AggregatorProxy.latestRoundData().updatedAt_scope_3 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#334) is a local variable never initialized
AggregatorProxy.getRoundData(uint80).startedAt_scope_2 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#285) is a local variable never initialized
AggregatorProxy.latestRoundData().answer_scope_1 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#332) is a local variable never initialized
AggregatorProxy.getRoundData(uint80).updatedAt_scope_3 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#286) is a local variable never initialized
AggregatorProxy.latestRoundData().startedAt_scope_2 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#333) is a local variable never initialized
AggregatorProxy.getRoundData(uint80).answer_scope_1 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#284) is a local variable never initialized
AggregatorProxy.latestRoundData().roundId_scope_0 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#331) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
AggregatorProxy.getAnswer(uint256).phaseId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#189) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getAnswer(uint256).aggregator (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#190) shadows:
- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getTimestamp(uint256).phaseId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#214) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getTimestamp(uint256).aggregator (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#215) shadows:
- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getRoundData(uint80).phaseId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#280) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getRoundData(uint80).roundId_scope_0 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#283) shadows:
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#273) (return variable)
- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#273) (return variable)
AggregatorProxy.getRoundData(uint80).answer_scope_1 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#284) shadows:
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#274) (return variable)
- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#274) (return variable)
AggregatorProxy.getRoundData(uint80).startedAt_scope_2 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#285) shadows:
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#275) (return variable)
- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#275) (return variable)
AggregatorProxy.getRoundData(uint80).updatedAt_scope_3 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#286) shadows:
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#276) (return variable)
- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#276) (return variable)
AggregatorProxy.latestRoundData().roundId_scope_0 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#331) shadows:
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#321) (return variable)
- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#321) (return variable)
AggregatorProxy.latestRoundData().answer_scope_1 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#332) shadows:
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#322) (return variable)
- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#322) (return variable)
AggregatorProxy.latestRoundData().startedAt_scope_2 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#333) shadows:
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#323) (return variable)
- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#323) (return variable)
AggregatorProxy.latestRoundData().updatedAt_scope_3 (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#334) shadows:
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#324) (return variable)
- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#324) (return variable)
AggregatorProxy.parseIds(uint256).phaseId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#513) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.addPhaseIds(uint80,int256,uint256,uint256,uint80,uint16).phaseId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#525) shadows:
- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#410-416) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#30) lacks a zero-check on :
- pendingOwner = _to (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Parameter Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#30) is not in mixedCase
Parameter AggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#180) is not in mixedCase
Parameter AggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#205) is not in mixedCase
Parameter AggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#267) is not in mixedCase
Parameter AggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#353) is not in mixedCase
Parameter AggregatorProxy.proposeAggregator(address)._aggregator (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#459) is not in mixedCase
Parameter AggregatorProxy.confirmAggregator(address)._aggregator (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#473) is not in mixedCase
Parameter AggregatorProxy.setAggregator(address)._aggregator (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#487) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._phase (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#496) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._originalId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#497) is not in mixedCase
Parameter AggregatorProxy.parseIds(uint256)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#507) is not in mixedCase
Parameter EACAggregatorProxy.setController(address)._accessController (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#582) is not in mixedCase
Parameter EACAggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#638) is not in mixedCase
Parameter EACAggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#658) is not in mixedCase
Parameter EACAggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#710) is not in mixedCase
Parameter EACAggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xDC530D9457755926550b59e8ECcdaE7624181557-EACAggregatorProxy.sol#776) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0xDC530D9457755926550b59e8ECcdaE7624181557 analyzed (7 contracts with 79 detectors), 40 result(s) found
Slither report for Lib_AddressManager at `0xdE1FCfB0851916CA5101820A69b13a4E276bd81F`
Warning: @openzeppelin/contracts/access/Ownable.sol:26:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor () internal {
^ (Relevant source part starts here and spans across multiple lines).
INFO:Detectors:
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-23) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Contract Lib_AddressManager (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#10-95) is not in CapWords
Parameter Lib_AddressManager.setAddress(string,address)._name (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#40) is not in mixedCase
Parameter Lib_AddressManager.setAddress(string,address)._address (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#41) is not in mixedCase
Parameter Lib_AddressManager.getAddress(string)._name (contracts/optimistic-ethereum/libraries/resolver/Lib_AddressManager.sol#63) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Redundant expression "this (@openzeppelin/contracts/utils/Context.sol#21)" inContext (@openzeppelin/contracts/utils/Context.sol#15-24)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
INFO:Slither:0xdE1FCfB0851916CA5101820A69b13a4E276bd81F analyzed (3 contracts with 79 detectors), 6 result(s) found