- ID: 318
- Proposer: 0x683a4F9915D6216f73d6Df50151725036bD26C02
- Targets: 0xd1B3E25fD7C8AE7CADDC6F71b461b79CD4ddcFa3; 0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711; 0x158a6bC04F0828318821baE797f50B0A1299d45b
- Executor: 0xEE56e2B3D491590B5b31738cC34d5232F378a8D5 (Short executor)
- Simulation: https://dashboard.tenderly.co/me/simulator/c4be537c-02c0-4489-85f3-4a3547cfc590
Proposal text
Given the MAI/MIMATIC drawdown to 0.88 over the past 24 hours, after the July drawdown to 0.94, MAI/MIMATIC has been trading outside of its intended peg to $1. Gauntlet recommends freezing MAI/MIMATIC and setting MAI/MIMATIC LTV -> 0.
Chain | Asset | Action |
---|---|---|
Arbitrum | MAI/MIMATIC | Freeze Reserve, set LTV -> 0 |
Optimism | MAI/MIMATIC | Freeze Reserve, set LTV -> 0 |
Avalanche | MAI/MIMATIC | Freeze Reserve, set LTV -> 0 |
Polygon | MAI/MIMATIC | Freeze Reserve, set LTV -> 0 |
The proposal implements changes on Arbitrum, Optimism, Polygon, Avalanche v3 using the following pre-deployed payloads:
- Optimism:
0x24bdacf6bbebaf567123da16cdb79a266597e92b
- Arbitrum:
0xf22c8255ea615b3da6ca5cf5aecc8956bff07aa8
- Polygon:
0x2ee993533a482fe0f22d0fdf1b84ae1a0537e5ed
Changes on Avalanche can be implemented using the pre-deployed steward located at 0xc12ad8b3d242b1eddc1c8319d1d58608e67043ed
Gauntlet has not received any compensation from any third-party in exchange for recommending any of the actions contained in this proposal.
Copyright and related rights waived via CC0.
By approving this proposal, you agree that any services provided by Gauntlet shall be governed by the terms of service available at gauntlet.network/tos.
Info:
- State changes:
# KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
# Lib_ResolvedDelegateProxy at `0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1`
@@ Slot `0x00000000000000000000000000000000000000000000000000000000000000cd` @@
- "0x000000000000000000000000000000000000000000000000000000000000bfe3"
+ "0x000000000000000000000000000000000000000000000000000000000000bfe4"
# StateSender at `0x28e4F3a7f651294B9564800b2D01f35189A5bFbE`
@@ counter @@
- 2764974
+ 2764975
# TransparentUpgradeableProxy at `0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a` with implementation Bridge at `0x1066CEcC8880948FE55e427E94F1FF221d626591`
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000006` @@
- "0x00000000000000000000000000000000000000000000000000000000001062e2"
+ "0x00000000000000000000000000000000000000000000000000000000001062e3"
@@ Slot `0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f378c7021` @@
- "0x0000000000000000000000000000000000000000000000000000000000000000"
+ "0x9e9736fb930a742204409af7bf459d1dc869ccb77d13450a7bb8df0f90531e3d"
# Proxy at `0xbEb5Fc579115071764c7423A4f12eDde41f106Ed` with implementation OptimismPortal at `0x28a55488fef40005309e2DA0040DbE9D300a64AB`
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000001` @@
- "0x0000000001149d58000000000007812e0000000000000000000000003b9aca00"
+ "0x0000000001149d6c00000000002240940000000000000000000000003b9aca00"
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000001` @@
- "0x0000000001149d58000000000007812e0000000000000000000000003b9aca00"
+ "0x0000000001149d6c00000000002240940000000000000000000000003b9aca00"
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000001` @@
- "0x0000000001149d58000000000007812e0000000000000000000000003b9aca00"
+ "0x0000000001149d6c00000000002240940000000000000000000000003b9aca00"
Info:
- There is no SELFDESTRUCT inside of delegated call
Info:
- Events Emitted:
- TransparentUpgradeableProxy at
0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a
with implementation Bridge at0x1066CEcC8880948FE55e427E94F1FF221d626591
MessageDelivered(messageIndex: 1073890, beforeInboxAcc: 0xf43602ded08d5099b15f6e0aaec24a57ba2c2bfb720bbf110b49bb330588cdc8, inbox: 0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f, kind: 9, sender: 0xff67e2b3d491590b5b31738cc34d5232f378b9e6, messageDataHash: 0x9d6555d3aa912f4698d71e1bc4fb7c269d1499b184e41e1e9708f50f374ab24f, baseFeeL1: 19785711020, timestamp: 1694618435)
- TransparentUpgradeableProxy at
0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f
with implementation Inbox at0x5aED5f8A1e3607476F1f81c3d8fe126deB0aFE94
InboxMessageDelivered(messageNum: 1073890, data: 0x0000000000000000000000007d9103572be58ffe99dc390e8246f02dcae6f611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021d78b7c3fec000000000000000000000000000000000000000000000000000008432ed9ddec00000000000000000000000007d9103572be58ffe99dc390e8246f02dcae6f611000000000000000000000000bbd9f90699c1fa0d7a65870d241dd1f1217c96eb000000000000000000000000000000000000000000000000000000000006ddd0000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000244d9a4cbdf00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f22c8255ea615b3da6ca5cf5aecc8956bff07aa800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009657865637574652829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001)
- Proxy at
0xbEb5Fc579115071764c7423A4f12eDde41f106Ed
with implementation OptimismPortal at0x28a55488fef40005309e2DA0040DbE9D300a64AB
TransactionDeposited(from: 0x36bde71c97b33cc4729cf772ae268934f7ab70b2, to: 0x4200000000000000000000000000000000000007, version: 0, opaqueData: 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022409400d764ad0b000100000000000000000000000000000000000000000000000000000000bfe3000000000000000000000000ee56e2b3d491590b5b31738cc34d5232f378a8d50000000000000000000000007d9103572be58ffe99dc390e8246f02dcae6f611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000244d9a4cbdf00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000024bdacf6bbebaf567123da16cdb79a266597e92b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000965786563757465282900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000)
- Lib_ResolvedDelegateProxy at
0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1
SentMessage(target: 0x7d9103572be58ffe99dc390e8246f02dcae6f611, sender: 0xee56e2b3d491590b5b31738cc34d5232f378a8d5, message: 0xd9a4cbdf00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000024bdacf6bbebaf567123da16cdb79a266597e92b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009657865637574652829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001, messageNonce: 1766847064778384329583297500742918515827483896875618958121606201292668899, gasLimit: 1920000)
SentMessageExtension1(sender: 0xee56e2b3d491590b5b31738cc34d5232f378a8d5, value: 0)
- StateSender at
0x28e4F3a7f651294B9564800b2D01f35189A5bFbE
StateSynced(id: 2764975, contractAddress: 0x8397259c983751daf40400790063935a11afa28a, data: 0x000000000000000000000000ee56e2b3d491590b5b31738cc34d5232f378a8d5000000000000000000000000dc9a35b16db4e126cfedc41322b3a36454b1f7720000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ee993533a482fe0f22d0fdf1b84ae1a0537e5ed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009657865637574652829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001)
- EthRobotKeeper at
0x9EEa1Ba822d204077e9f90a92D30432417184587
ActionSucceeded(id: 318, action: 1)
- KeeperRegistry at
0x02777053d6764996e594c3E88AF1D58D5363a2e6
UpkeepPerformed(id: 38708010855340815800266444206792387479170521527111639306025178205742164078384, success: true, from: 0x98924befaa16b607b3e168b6c57c9528af5cc076, payment: 0, performData: 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000013e0000000000000000000000000000000000000000000000000000000000000001)
- TransparentUpgradeableProxy at
Info:
- Targets:
- 0xd1B3E25fD7C8AE7CADDC6F71b461b79CD4ddcFa3: Contract (not verified)
- 0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711: Contract (not verified)
- 0x158a6bC04F0828318821baE797f50B0A1299d45b: Contract (not verified)
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)
- 0x9eea1ba822d204077e9f90a92d30432417184587: Contract (verified) (EthRobotKeeper)
- 0xec568fffba86c094cf06b22134b23074dfe2252c: Contract (verified) (AaveGovernanceV2)
- 0xee56e2b3d491590b5b31738cc34d5232f378a8d5: Contract (verified) (Executor)
- 0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e: Contract (verified) (GovernanceStrategy)
- 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9: Contract (verified) (InitializableAdminUpgradeabilityProxy)
- 0x96f68837877fd0414b55050c9e794aecdbcfca59: Contract (verified) (AaveTokenV2)
- 0xd1b3e25fd7c8ae7caddc6f71b461b79cd4ddcfa3: Contract (not verified)
- 0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f: Contract (verified) (TransparentUpgradeableProxy)
- 0x5aed5f8a1e3607476f1f81c3d8fe126deb0afe94: Contract (verified) (Inbox)
- 0x8315177ab297ba92a06054ce80a67ed4dbd7ed3a: Contract (verified) (TransparentUpgradeableProxy)
- 0x1066cecc8880948fe55e427e94f1ff221d626591: Contract (verified) (Bridge)
- 0x5f5c02875a8e9b5a26fbd09040abcfdeb2aa6711: Contract (verified) (CrosschainForwarderOptimism)
- 0x5e4e65926ba27467555eb562121fac00d24e9dd2: Contract (verified) (CanonicalTransactionChain)
- 0x25ace71c97b33cc4729cf772ae268934f7ab5fa1: Contract (verified) (Lib_ResolvedDelegateProxy)
- 0xde1fcfb0851916ca5101820a69b13a4e276bd81f: Contract (verified) (Lib_AddressManager)
- 0x2150bc3c64cbfddbac9815ef615d6ab8671bfe43: Contract (verified) (L1CrossDomainMessenger)
- 0xbeb5fc579115071764c7423a4f12edde41f106ed: Contract (verified) (Proxy)
- 0x28a55488fef40005309e2da0040dbe9d300a64ab: Contract (verified) (OptimismPortal)
- 0x229047fed2591dbec1ef1118d64f7af3db9eb290: Contract (verified) (Proxy)
- 0x5efa852e92800d1c982711761e45c3fe39a2b6d8: Contract (verified) (SystemConfig)
- 0x158a6bc04f0828318821bae797f50b0a1299d45b: Contract (verified) (CrosschainForwarderPolygon)
- 0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2: Contract (verified) (FxRoot)
- 0x28e4f3a7f651294b9564800b2d01f35189a5bfbe: Contract (verified) (StateSender)
Info:
View Details
View warnings for KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x02777053d6764996e594c3e88af1d58d5363a2e6-KeeperRegistry' running
View warnings for Bridge at `0x1066CEcC8880948FE55e427E94F1FF221d626591`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x1066cecc8880948fe55e427e94f1ff221d626591-Bridge' running
View warnings for CrosschainForwarderPolygon at `0x158a6bC04F0828318821baE797f50B0A1299d45b`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
View warnings for EACAggregatorProxy at `0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
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 L1CrossDomainMessenger at `0x2150Bc3c64cbfDDbaC9815EF615D6AB8671bfe43`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x2150bc3c64cbfddbac9815ef615d6ab8671bfe43-L1CrossDomainMessenger' running
View warnings for Proxy at `0x229047fed2591dbec1eF1118d64F7aF3dB9EB290` with implementation SystemConfig at `0x5efa852e92800D1C982711761e45c3FE39a2b6D8`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x229047fed2591dbec1ef1118d64f7af3db9eb290-Proxy' running
View warnings for Lib_ResolvedDelegateProxy at `0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x25ace71c97b33cc4729cf772ae268934f7ab5fa1-Lib_ResolvedDelegateProxy' running
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 OptimismPortal at `0x28a55488fef40005309e2DA0040DbE9D300a64AB`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x28a55488fef40005309e2da0040dbe9d300a64ab-OptimismPortal' running
View warnings for StateSender at `0x28e4F3a7f651294B9564800b2D01f35189A5bFbE`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
View warnings for TransparentUpgradeableProxy at `0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f` with implementation Inbox at `0x5aED5f8A1e3607476F1f81c3d8fe126deB0aFE94`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f-TransparentUpgradeableProxy' running
View warnings for Inbox at `0x5aED5f8A1e3607476F1f81c3d8fe126deB0aFE94`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5aed5f8a1e3607476f1f81c3d8fe126deb0afe94-Inbox' running
View warnings for CanonicalTransactionChain at `0x5E4e65926BA27467555EB562121fac00D24E9dD2`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5e4e65926ba27467555eb562121fac00d24e9dd2-CanonicalTransactionChain' running
View warnings for SystemConfig at `0x5efa852e92800D1C982711761e45c3FE39a2b6D8`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5efa852e92800d1c982711761e45c3fe39a2b6d8-SystemConfig' running
View warnings for CrosschainForwarderOptimism at `0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5f5c02875a8e9b5a26fbd09040abcfdeb2aa6711-CrosschainForwarderOptimism' running
View warnings for AccessControlledOffchainAggregator at `0x785433d8b06D77D68dF6be63944742130A4530d1`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x785433d8b06d77d68df6be63944742130a4530d1-AccessControlledOffchainAggregator' running
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 (Aave) at `0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9` with implementation AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9-InitializableAdminUpgradeabilityProxy' running
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 TransparentUpgradeableProxy at `0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a` with implementation Bridge at `0x1066CEcC8880948FE55e427E94F1FF221d626591`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x8315177ab297ba92a06054ce80a67ed4dbd7ed3a-TransparentUpgradeableProxy' running
View warnings for AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x96f68837877fd0414b55050c9e794aecdbcfca59-AaveTokenV2' running
WARNING:CryticCompile:Warning: src/contracts/AaveTokenV2.sol:453:18: Warning: This declaration shadows an existing declaration.
constructor (string memory name, string memory symbol) public {
^----------------^
src/contracts/AaveTokenV2.sol:462:5: The shadowed declaration is here:
function name() public view returns (string memory) {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:453:38: Warning: This declaration shadows an existing declaration.
constructor (string memory name, string memory symbol) public {
^------------------^
src/contracts/AaveTokenV2.sol:470:5: The shadowed declaration is here:
function symbol() public view returns (string memory) {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:35:3: Warning: Interface functions are implicitly "virtual"
function delegateByType(address delegatee, DelegationType delegationType) external virtual;
^-----------------------------------------------------------------------------------------^
Warning: src/contracts/AaveTokenV2.sol:40:3: Warning: Interface functions are implicitly "virtual"
function delegate(address delegatee) external virtual;
^----------------------------------------------------^
Warning: src/contracts/AaveTokenV2.sol:45:3: Warning: Interface functions are implicitly "virtual"
function getDelegateeByType(address delegator, DelegationType delegationType)
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:56:3: Warning: Interface functions are implicitly "virtual"
function getPowerCurrent(address user, DelegationType delegationType)
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:66:3: Warning: Interface functions are implicitly "virtual"
function getPowerAtBlock(
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:75:3: Warning: Interface functions are implicitly "virtual"
function totalSupplyAt(uint256 blockNumber) external virtual view returns (uint256);
^----------------------------------------------------------------------------------^
Warning: src/contracts/AaveTokenV2.sol:453:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor (string memory name, string memory symbol) public {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:1164:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor() ERC20(NAME, SYMBOL) public {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:913:26: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function totalSupplyAt(uint256 blockNumber) external override view returns (uint256) {
^-----------------^
Warning: src/contracts/AaveTokenV2.sol:1079:5: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
uint128 oldValue,
^--------------^
View warnings for EthRobotKeeper at `0x9EEa1Ba822d204077e9f90a92D30432417184587`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x9eea1ba822d204077e9f90a92d30432417184587-EthRobotKeeper' running
View warnings for GovernanceStrategy at `0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
View warnings for AccessControlledOffchainAggregator at `0xbba12740DE905707251525477bAD74985DeC46D2`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xbba12740de905707251525477bad74985dec46d2-AccessControlledOffchainAggregator' running
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 Proxy at `0xbEb5Fc579115071764c7423A4f12eDde41f106Ed` with implementation OptimismPortal at `0x28a55488fef40005309e2DA0040DbE9D300a64AB`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xbeb5fc579115071764c7423a4f12edde41f106ed-Proxy' running
View warnings for EACAggregatorProxy at `0xDC530D9457755926550b59e8ECcdaE7624181557`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
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`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xde1fcfb0851916ca5101820a69b13a4e276bd81f-Lib_AddressManager' running
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 FxRoot at `0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
Info:
View Details
Slither report for KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x02777053d6764996e594c3e88af1d58d5363a2e6-KeeperRegistry' running
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 180, in run_solc_standard_json
solc_json_output = json.loads(stdout)
File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 814, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 91, in process_all
compilations = compile_all(target, **vars(args))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 647, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 132, in __init__
self._compile(**kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 554, in _compile
self._platform.compile(self, **kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/etherscan.py", line 389, in compile
solc_standard_json.standalone_compile(
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 79, 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 210, in run_solc_standard_json
raise InvalidCompilation(f"Invalid solc compilation {stderr}")
crytic_compile.platform.exceptions.InvalidCompilation: Invalid solc compilation Traceback (most recent call last):
File "/home/runner/.local/bin/solc", line 8, in <module>
sys.exit(solc())
File "/home/runner/.local/lib/python3.10/site-packages/solc_select/__main__.py", line 94, in solc
subprocess.run(
File "/usr/lib/python3.10/subprocess.py", line 503, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.10/subprocess.py", line 971, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: '/home/runner/.solc-select/artifacts/solc-0.8.13/solc-0.8.13'
ERROR:root:Error in 0x02777053d6764996e594c3e88af1d58d5363a2e6
ERROR:root:Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 180, in run_solc_standard_json
solc_json_output = json.loads(stdout)
File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 814, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/home/runner/.local/lib/python3.10/site-packages/slither/__main__.py", line 91, in process_all
compilations = compile_all(target, **vars(args))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 647, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 132, in __init__
self._compile(**kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/crytic_compile.py", line 554, in _compile
self._platform.compile(self, **kwargs)
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/etherscan.py", line 389, in compile
solc_standard_json.standalone_compile(
File "/home/runner/.local/lib/python3.10/site-packages/crytic_compile/platform/solc_standard_json.py", line 79, 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 210, in run_solc_standard_json
raise InvalidCompilation(f"Invalid solc compilation {stderr}")
crytic_compile.platform.exceptions.InvalidCompilation: Invalid solc compilation Traceback (most recent call last):
File "/home/runner/.local/bin/solc", line 8, in <module>
sys.exit(solc())
File "/home/runner/.local/lib/python3.10/site-packages/solc_select/__main__.py", line 94, in solc
subprocess.run(
File "/usr/lib/python3.10/subprocess.py", line 503, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.10/subprocess.py", line 971, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: '/home/runner/.solc-select/artifacts/solc-0.8.13/solc-0.8.13'
Slither report for Bridge at `0x1066CEcC8880948FE55e427E94F1FF221d626591`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x1066cecc8880948fe55e427e94f1ff221d626591-Bridge' running
INFO:Detectors:
Reentrancy in Bridge.executeCall(address,uint256,bytes) (src/bridge/Bridge.sol#205-222):
External calls:
- (success,returnData) = to.call{value: value}(data) (src/bridge/Bridge.sol#219)
State variables written after the call(s):
- _activeOutbox = prevOutbox (src/bridge/Bridge.sol#220)
Bridge._activeOutbox (src/bridge/Bridge.sol#46) can be used in cross function reentrancies:
- Bridge.activeOutbox() (src/bridge/Bridge.sol#77-85)
- Bridge.executeCall(address,uint256,bytes) (src/bridge/Bridge.sol#205-222)
- Bridge.initialize(IOwnable) (src/bridge/Bridge.sol#61-64)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
INFO:Detectors:
Bridge.setSequencerInbox(address)._sequencerInbox (src/bridge/Bridge.sol#224) lacks a zero-check on :
- sequencerInbox = _sequencerInbox (src/bridge/Bridge.sol#225)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Reentrancy in Bridge.executeCall(address,uint256,bytes) (src/bridge/Bridge.sol#205-222):
External calls:
- (success,returnData) = to.call{value: value}(data) (src/bridge/Bridge.sol#219)
Event emitted after the call(s):
- BridgeCallTriggered(msg.sender,to,value,data) (src/bridge/Bridge.sol#221)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
Bridge.addMessageToDelayedAccumulator(uint8,address,uint64,uint64,uint256,bytes32) (src/bridge/Bridge.sol#169-203) uses timestamp for comparisons
Dangerous comparisons:
- count > 0 (src/bridge/Bridge.sol#188)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
AddressUpgradeable.functionCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#85-87) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#95-101) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-120) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-149) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Low level call in Bridge.executeCall(address,uint256,bytes) (src/bridge/Bridge.sol#205-222):
- (success,returnData) = to.call{value: value}(data) (src/bridge/Bridge.sol#219)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Parameter Bridge.setSequencerInbox(address)._sequencerInbox (src/bridge/Bridge.sol#224) is not in mixedCase
Variable DelegateCallAware.__self (src/libraries/DelegateCallAware.sol#12) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x1066cecc8880948fe55e427e94f1ff221d626591 analyzed (7 contracts with 82 detectors), 19 result(s) found
Slither report for CrosschainForwarderPolygon at `0x158a6bC04F0828318821baE797f50B0A1299d45b`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
INFO:Slither:0x158a6bc04f0828318821bae797f50b0a1299d45b analyzed (2 contracts with 82 detectors), 0 result(s) found
Slither report for EACAggregatorProxy at `0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
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.proposedGetRoundData(uint80) (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#353-367) ignores return value by proposedAggregator.getRoundData(_roundId) (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#366)
AggregatorProxy.proposedLatestRoundData() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#380-394) ignores return value by proposedAggregator.latestRoundData() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#393)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
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 82 detectors), 34 result(s) found
Slither report for L1CrossDomainMessenger at `0x2150Bc3c64cbfDDbaC9815EF615D6AB8671bfe43`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x2150bc3c64cbfddbac9815ef615d6ab8671bfe43-L1CrossDomainMessenger' running
INFO:Detectors:
Initializable is re-used:
- Initializable (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#57-138)
- Initializable (node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol#57-138)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused
INFO:Detectors:
ResourceMetering._metered(uint64,uint256) (contracts/L1/ResourceMetering.sol#92-164) performs a multiplication on the result of a division:
- targetResourceLimit = int256(uint256(config.maxResourceLimit)) / int256(uint256(config.elasticityMultiplier)) (contracts/L1/ResourceMetering.sol#97-98)
- baseFeeDelta = (int256(uint256(params.prevBaseFee)) * gasUsedDelta) / (targetResourceLimit * int256(uint256(config.baseFeeMaxChangeDenominator))) (contracts/L1/ResourceMetering.sol#105-106)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#117)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#121)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#122)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#124)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#125)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#126)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- prod0 = prod0 / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#105)
- result = prod0 * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#132)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- y = ((y * x) >> 96) + 57155421227552351082224309758442 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#60)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- p = p * x + (4385272521454847904659076985693276 << 96) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#63)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 50020603652535783019961831881945 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#67)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) - 533845033583426703283633433725380 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#68)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 3604857256930695427073651918091429 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#69)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) - 14423608567350463180887372962807573 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#70)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 26449188498355588339934803723976023 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#71)
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) performs a multiplication on the result of a division:
- x = xxRound_rpow_asm_0 / scalar (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#253)
- zx_rpow_asm_0 = z * x (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#258)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
INFO:Detectors:
L2OutputOracle.latestBlockNumber() (contracts/L1/L2OutputOracle.sol#324-329) uses a dangerous strict equality:
- l2Outputs.length == 0 (contracts/L1/L2OutputOracle.sol#325-328)
L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256) (contracts/L1/L2OutputOracle.sol#179-229) uses a dangerous strict equality:
- require(bool,string)(_l2BlockNumber == nextBlockNumber(),L2OutputOracle: block number must be equal to next expected block number) (contracts/L1/L2OutputOracle.sol#190-193)
OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[]) (contracts/L1/OptimismPortal.sol#242-318) uses a dangerous strict equality:
- require(bool,string)(provenWithdrawal.timestamp == 0 || L2_ORACLE.getL2Output(provenWithdrawal.l2OutputIndex).outputRoot != provenWithdrawal.outputRoot,OptimismPortal: withdrawal hash has already been proven) (contracts/L1/OptimismPortal.sol#276-281)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (contracts/universal/CrossDomainMessenger.sol#303-413) uses tx.origin for authorization: tx.origin == Constants.ESTIMATION_ADDRESS (contracts/universal/CrossDomainMessenger.sol#386)
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (contracts/universal/CrossDomainMessenger.sol#303-413) uses tx.origin for authorization: tx.origin == Constants.ESTIMATION_ADDRESS (contracts/universal/CrossDomainMessenger.sol#409)
OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (contracts/L1/OptimismPortal.sol#325-420) uses tx.origin for authorization: success == false && tx.origin == Constants.ESTIMATION_ADDRESS (contracts/L1/OptimismPortal.sol#417)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin
INFO:Detectors:
MerkleTrie._getSharedNibbleLength(bytes,bytes).shared (contracts/libraries/trie/MerkleTrie.sol#279) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (contracts/universal/CrossDomainMessenger.sol#303-413) ignores return value by (version) = Encoding.decodeVersionedNonce(_nonce) (contracts/universal/CrossDomainMessenger.sol#311)
Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Hashing.sol#61-77) ignores return value by (version) = Encoding.decodeVersionedNonce(_nonce) (contracts/libraries/Hashing.sol#69)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
CrossDomainMessenger.xDomainMsgSender (contracts/universal/CrossDomainMessenger.sol#179) is written in both
xDomainMsgSender = _sender (contracts/universal/CrossDomainMessenger.sol#393)
xDomainMsgSender = Constants.DEFAULT_L2_SENDER (contracts/universal/CrossDomainMessenger.sol#395)
OptimismPortal.l2Sender (contracts/L1/OptimismPortal.sol#67) is written in both
l2Sender = _tx.sender (contracts/L1/OptimismPortal.sol#396)
l2Sender = Constants.DEFAULT_L2_SENDER (contracts/L1/OptimismPortal.sol#408)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write
INFO:Detectors:
SystemConfig.constructor(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#94) shadows:
- OwnableUpgradeable._owner (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#126) shadows:
- OwnableUpgradeable._owner (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._sender (contracts/universal/CrossDomainMessenger.sol#305) lacks a zero-check on :
- xDomainMsgSender = _sender (contracts/universal/CrossDomainMessenger.sol#393)
L2OutputOracle.constructor(uint256,uint256,uint256,uint256,address,address,uint256)._proposer (contracts/L1/L2OutputOracle.sol#95) lacks a zero-check on :
- PROPOSER = _proposer (contracts/L1/L2OutputOracle.sol#107)
L2OutputOracle.constructor(uint256,uint256,uint256,uint256,address,address,uint256)._challenger (contracts/L1/L2OutputOracle.sol#96) lacks a zero-check on :
- CHALLENGER = _challenger (contracts/L1/L2OutputOracle.sol#108)
OptimismPortal.constructor(L2OutputOracle,address,bool,SystemConfig)._guardian (contracts/L1/OptimismPortal.sol#152) lacks a zero-check on :
- GUARDIAN = _guardian (contracts/L1/OptimismPortal.sol#157)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
L2OutputOracle.initialize(uint256,uint256) (contracts/L1/L2OutputOracle.sol#120-131) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_startingTimestamp <= block.timestamp,L2OutputOracle: starting L2 timestamp must be less than current time) (contracts/L1/L2OutputOracle.sol#124-127)
L2OutputOracle.deleteL2Outputs(uint256) (contracts/L1/L2OutputOracle.sol#141-167) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_l2OutputIndex < l2Outputs.length,L2OutputOracle: cannot delete outputs after the latest output index) (contracts/L1/L2OutputOracle.sol#148-151)
- require(bool,string)(block.timestamp - l2Outputs[_l2OutputIndex].timestamp < FINALIZATION_PERIOD_SECONDS,L2OutputOracle: cannot delete outputs that have already been finalized) (contracts/L1/L2OutputOracle.sol#154-157)
L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256) (contracts/L1/L2OutputOracle.sol#179-229) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_l2BlockNumber == nextBlockNumber(),L2OutputOracle: block number must be equal to next expected block number) (contracts/L1/L2OutputOracle.sol#190-193)
- require(bool,string)(computeL2Timestamp(_l2BlockNumber) < block.timestamp,L2OutputOracle: cannot propose L2 output in the future) (contracts/L1/L2OutputOracle.sol#195-198)
L2OutputOracle.getL2OutputIndexAfter(uint256) (contracts/L1/L2OutputOracle.sol#255-281) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_l2BlockNumber <= latestBlockNumber(),L2OutputOracle: cannot get output for a block that has not been proposed) (contracts/L1/L2OutputOracle.sol#257-260)
- require(bool,string)(l2Outputs.length > 0,L2OutputOracle: cannot get output as no outputs have been proposed yet) (contracts/L1/L2OutputOracle.sol#263-266)
- lo < hi (contracts/L1/L2OutputOracle.sol#271)
- l2Outputs[mid].l2BlockNumber < _l2BlockNumber (contracts/L1/L2OutputOracle.sol#273)
L2OutputOracle.latestBlockNumber() (contracts/L1/L2OutputOracle.sol#324-329) uses timestamp for comparisons
Dangerous comparisons:
- l2Outputs.length == 0 (contracts/L1/L2OutputOracle.sol#325-328)
OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[]) (contracts/L1/OptimismPortal.sol#242-318) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(provenWithdrawal.timestamp == 0 || L2_ORACLE.getL2Output(provenWithdrawal.l2OutputIndex).outputRoot != provenWithdrawal.outputRoot,OptimismPortal: withdrawal hash has already been proven) (contracts/L1/OptimismPortal.sol#276-281)
OptimismPortal._isFinalizationPeriodElapsed(uint256) (contracts/L1/OptimismPortal.sol#504-506) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > _timestamp + L2_ORACLE.FINALIZATION_PERIOD_SECONDS() (contracts/L1/OptimismPortal.sol#505)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
L2OutputOracle.deleteL2Outputs(uint256) (contracts/L1/L2OutputOracle.sol#141-167) uses assembly
- INLINE ASM (contracts/L1/L2OutputOracle.sol#162-164)
SystemConfig.unsafeBlockSigner() (contracts/L1/SystemConfig.sol#166-173) uses assembly
- INLINE ASM (contracts/L1/SystemConfig.sol#169-171)
SystemConfig._setUnsafeBlockSigner(address) (contracts/L1/SystemConfig.sol#232-237) uses assembly
- INLINE ASM (contracts/L1/SystemConfig.sol#234-236)
Bytes.slice(bytes,uint256,uint256) (contracts/libraries/Bytes.sol#21-88) uses assembly
- INLINE ASM (contracts/libraries/Bytes.sol#34-85)
Encoding.encodeVersionedNonce(uint240,uint16) (contracts/libraries/Encoding.sol#137-143) uses assembly
- INLINE ASM (contracts/libraries/Encoding.sol#139-141)
Encoding.decodeVersionedNonce(uint256) (contracts/libraries/Encoding.sol#153-161) uses assembly
- INLINE ASM (contracts/libraries/Encoding.sol#156-159)
SafeCall.send(address,uint256,uint256) (contracts/libraries/SafeCall.sol#17-35) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#23-33)
SafeCall.call(address,uint256,uint256,bytes) (contracts/libraries/SafeCall.sol#45-64) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#52-62)
SafeCall.hasMinGas(uint256,uint256) (contracts/libraries/SafeCall.sol#91-100) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#93-98)
SafeCall.callWithMinGas(address,uint256,uint256,bytes) (contracts/libraries/SafeCall.sol#112-159) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#120-157)
RLPReader.toRLPItem(bytes) (contracts/libraries/rlp/RLPReader.sol#51-64) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#59-61)
RLPReader.readList(RLPReader.RLPItem) (contracts/libraries/rlp/RLPReader.sol#73-119) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#114-116)
RLPReader._decodeLength(RLPReader.RLPItem) (contracts/libraries/rlp/RLPReader.sol#186-316) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#205-207)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#224-226)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#244-246)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#254-256)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#290-292)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#300-302)
RLPReader._copy(RLPReader.MemoryPointer,uint256,uint256) (contracts/libraries/rlp/RLPReader.sol#327-358) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#341-355)
RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/RLPWriter.sol#154-180) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#164-166)
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#175-179)
RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/RLPWriter.sol#190-220) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#203-205)
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#211-213)
AddressUpgradeable.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Address.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Address.sol#213-216)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#66-70)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#86-93)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#100-109)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#73-78)
FixedPointMathLib.lnWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#92-150) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#126-131)
FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#156-173) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#161-172)
FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#175-194) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#180-193)
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#201-281)
FixedPointMathLib.sqrt(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#288-350) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#289-349)
FixedPointMathLib.log2(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#352-365) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#355-364)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (contracts/L1/OptimismPortal.sol#325-420) compares to a boolean constant:
-require(bool,string)(finalizedWithdrawals[withdrawalHash] == false,OptimismPortal: withdrawal has already been finalized) (contracts/L1/OptimismPortal.sol#387-390)
OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (contracts/L1/OptimismPortal.sol#325-420) compares to a boolean constant:
-success == false && tx.origin == Constants.ESTIMATION_ADDRESS (contracts/L1/OptimismPortal.sol#417)
OptimismPortal.whenNotPaused() (contracts/L1/OptimismPortal.sol#137-140) compares to a boolean constant:
-require(bool,string)(paused == false,OptimismPortal: paused) (contracts/L1/OptimismPortal.sol#138)
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (contracts/universal/CrossDomainMessenger.sol#303-413) compares to a boolean constant:
-require(bool,string)(successfulMessages[versionedHash] == false,CrossDomainMessenger: message has already been relayed) (contracts/universal/CrossDomainMessenger.sol#360-363)
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (contracts/universal/CrossDomainMessenger.sol#303-413) compares to a boolean constant:
-require(bool,string)(successfulMessages[oldHash] == false,CrossDomainMessenger: legacy withdrawal already relayed) (contracts/universal/CrossDomainMessenger.sol#321-324)
CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (contracts/universal/CrossDomainMessenger.sol#303-413) compares to a boolean constant:
-require(bool,string)(_isUnsafeTarget(_target) == false,CrossDomainMessenger: cannot send message to blocked system address) (contracts/universal/CrossDomainMessenger.sol#355-358)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality
INFO:Detectors:
Address.functionCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#85-87) is never used and should be removed
Address.functionCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#95-101) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#114-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#128-139) is never used and should be removed
Address.functionDelegateCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#184-193) is never used and should be removed
Address.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#147-149) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#157-166) is never used and should be removed
Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#60-65) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#201-221) is never used and should be removed
AddressAliasHelper.undoL1ToL2Alias(address) (contracts/vendor/AddressAliasHelper.sol#38-42) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#85-87) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#95-101) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-120) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-149) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) is never used and should be removed
Burn.eth(uint256) (contracts/libraries/Burn.sol#14-16) is never used and should be removed
Burn.gas(uint256) (contracts/libraries/Burn.sol#23-29) is never used and should be removed
Constants.DEFAULT_RESOURCE_CONFIG() (contracts/libraries/Constants.sol#34-48) is never used and should be removed
ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed
ContextUpgradeable._msgData() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Encoding.sol#53-69) is never used and should be removed
Encoding.encodeDepositTransaction(Types.UserDepositTransaction) (contracts/libraries/Encoding.sol#22-38) is never used and should be removed
FixedPointMathLib.divWadDown(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#21-23) is never used and should be removed
FixedPointMathLib.divWadUp(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#25-27) is never used and should be removed
FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#156-173) is never used and should be removed
FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#175-194) is never used and should be removed
FixedPointMathLib.mulWadDown(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#13-15) is never used and should be removed
FixedPointMathLib.mulWadUp(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#17-19) is never used and should be removed
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) is never used and should be removed
FixedPointMathLib.sqrt(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#288-350) is never used and should be removed
Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Hashing.sol#61-77) is never used and should be removed
Hashing.hashDepositSource(bytes32,uint256) (contracts/libraries/Hashing.sol#39-46) is never used and should be removed
Hashing.hashDepositTransaction(Types.UserDepositTransaction) (contracts/libraries/Hashing.sol#21-27) is never used and should be removed
Initializable._disableInitializers() (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#131-137) is never used and should be removed
Math.average(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#34-37) is never used and should be removed
Math.ceilDiv(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#45-48) is never used and should be removed
Math.min(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#26-28) is never used and should be removed
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) is never used and should be removed
Math.mulDiv(uint256,uint256,uint256,Math.Rounding) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#140-151) is never used and should be removed
Math.sqrt(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#158-214) is never used and should be removed
Math.sqrt(uint256,Math.Rounding) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#219-225) is never used and should be removed
RLPReader.readBytes(bytes) (contracts/libraries/rlp/RLPReader.sol#162-164) is never used and should be removed
RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/RLPWriter.sol#190-220) is never used and should be removed
RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/RLPWriter.sol#154-180) is never used and should be removed
RLPWriter._toBinary(uint256) (contracts/libraries/rlp/RLPWriter.sol#128-144) is never used and should be removed
RLPWriter._writeLength(uint256,uint256) (contracts/libraries/rlp/RLPWriter.sol#97-119) is never used and should be removed
RLPWriter.writeAddress(address) (contracts/libraries/rlp/RLPWriter.sol#61-63) is never used and should be removed
RLPWriter.writeBool(bool) (contracts/libraries/rlp/RLPWriter.sol#83-87) is never used and should be removed
RLPWriter.writeBytes(bytes) (contracts/libraries/rlp/RLPWriter.sol#19-29) is never used and should be removed
RLPWriter.writeList(bytes[]) (contracts/libraries/rlp/RLPWriter.sol#38-41) is never used and should be removed
RLPWriter.writeString(string) (contracts/libraries/rlp/RLPWriter.sol#50-52) is never used and should be removed
RLPWriter.writeUint(uint256) (contracts/libraries/rlp/RLPWriter.sol#72-74) is never used and should be removed
SafeCall.send(address,uint256,uint256) (contracts/libraries/SafeCall.sol#17-35) is never used and should be removed
SecureMerkleTrie.get(bytes,bytes[],bytes32) (contracts/libraries/trie/SecureMerkleTrie.sol#45-52) is never used and should be removed
SignedMath.abs(int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#37-42) is never used and should be removed
SignedMath.average(int256,int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#28-32) is never used and should be removed
Strings.toHexString(address) (node_modules/@openzeppelin/contracts/utils/Strings.sol#72-74) is never used and should be removed
Strings.toHexString(uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#41-52) is never used and should be removed
Strings.toHexString(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#57-67) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in AddressUpgradeable.sendValue(address,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Low level call in Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#60-65):
- (success) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts/utils/Address.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#137)
Low level call in Address.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#157-166):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#184-193):
- (success,returndata) = target.delegatecall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#191)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Variable L1CrossDomainMessenger.PORTAL (contracts/L1/L1CrossDomainMessenger.sol#20) is not in mixedCase
Parameter L2OutputOracle.initialize(uint256,uint256)._startingBlockNumber (contracts/L1/L2OutputOracle.sol#120) is not in mixedCase
Parameter L2OutputOracle.initialize(uint256,uint256)._startingTimestamp (contracts/L1/L2OutputOracle.sol#120) is not in mixedCase
Parameter L2OutputOracle.deleteL2Outputs(uint256)._l2OutputIndex (contracts/L1/L2OutputOracle.sol#141) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._outputRoot (contracts/L1/L2OutputOracle.sol#180) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#181) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockHash (contracts/L1/L2OutputOracle.sol#182) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is not in mixedCase
Parameter L2OutputOracle.getL2Output(uint256)._l2OutputIndex (contracts/L1/L2OutputOracle.sol#239) is not in mixedCase
Parameter L2OutputOracle.getL2OutputIndexAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#255) is not in mixedCase
Parameter L2OutputOracle.getL2OutputAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#291) is not in mixedCase
Parameter L2OutputOracle.computeL2Timestamp(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#347) is not in mixedCase
Variable L2OutputOracle.SUBMISSION_INTERVAL (contracts/L1/L2OutputOracle.sol#20) is not in mixedCase
Variable L2OutputOracle.L2_BLOCK_TIME (contracts/L1/L2OutputOracle.sol#25) is not in mixedCase
Variable L2OutputOracle.CHALLENGER (contracts/L1/L2OutputOracle.sol#30) is not in mixedCase
Variable L2OutputOracle.PROPOSER (contracts/L1/L2OutputOracle.sol#35) is not in mixedCase
Variable L2OutputOracle.FINALIZATION_PERIOD_SECONDS (contracts/L1/L2OutputOracle.sol#40) is not in mixedCase
Parameter OptimismPortal.initialize(bool)._paused (contracts/L1/OptimismPortal.sol#165) is not in mixedCase
Parameter OptimismPortal.minimumGasLimit(uint64)._byteCount (contracts/L1/OptimismPortal.sol#196) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._tx (contracts/L1/OptimismPortal.sol#243) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._l2OutputIndex (contracts/L1/OptimismPortal.sol#244) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._outputRootProof (contracts/L1/OptimismPortal.sol#245) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._withdrawalProof (contracts/L1/OptimismPortal.sol#246) is not in mixedCase
Parameter OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction)._tx (contracts/L1/OptimismPortal.sol#325) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._to (contracts/L1/OptimismPortal.sol#435) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._value (contracts/L1/OptimismPortal.sol#436) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._gasLimit (contracts/L1/OptimismPortal.sol#437) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._isCreation (contracts/L1/OptimismPortal.sol#438) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._data (contracts/L1/OptimismPortal.sol#439) is not in mixedCase
Parameter OptimismPortal.isOutputFinalized(uint256)._l2OutputIndex (contracts/L1/OptimismPortal.sol#493) is not in mixedCase
Variable OptimismPortal.L2_ORACLE (contracts/L1/OptimismPortal.sol#50) is not in mixedCase
Variable OptimismPortal.SYSTEM_CONFIG (contracts/L1/OptimismPortal.sol#55) is not in mixedCase
Variable OptimismPortal.GUARDIAN (contracts/L1/OptimismPortal.sol#60) is not in mixedCase
Function ResourceMetering.__ResourceMetering_init() (contracts/L1/ResourceMetering.sol#179-185) is not in mixedCase
Variable ResourceMetering.__gap (contracts/L1/ResourceMetering.sol#68) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#126) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._overhead (contracts/L1/SystemConfig.sol#127) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._scalar (contracts/L1/SystemConfig.sol#128) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._batcherHash (contracts/L1/SystemConfig.sol#129) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._gasLimit (contracts/L1/SystemConfig.sol#130) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._unsafeBlockSigner (contracts/L1/SystemConfig.sol#131) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._config (contracts/L1/SystemConfig.sol#132) is not in mixedCase
Parameter SystemConfig.setUnsafeBlockSigner(address)._unsafeBlockSigner (contracts/L1/SystemConfig.sol#180) is not in mixedCase
Parameter SystemConfig.setBatcherHash(bytes32)._batcherHash (contracts/L1/SystemConfig.sol#192) is not in mixedCase
Parameter SystemConfig.setGasConfig(uint256,uint256)._overhead (contracts/L1/SystemConfig.sol#205) is not in mixedCase
Parameter SystemConfig.setGasConfig(uint256,uint256)._scalar (contracts/L1/SystemConfig.sol#205) is not in mixedCase
Parameter SystemConfig.setGasLimit(uint64)._gasLimit (contracts/L1/SystemConfig.sol#218) is not in mixedCase
Parameter SystemConfig.setResourceConfig(ResourceMetering.ResourceConfig)._config (contracts/L1/SystemConfig.sol#256) is not in mixedCase
Variable SystemConfig._resourceConfig (contracts/L1/SystemConfig.sol#71) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._value (contracts/libraries/Arithmetic.sol#22) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._min (contracts/libraries/Arithmetic.sol#23) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._max (contracts/libraries/Arithmetic.sol#24) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._coefficient (contracts/libraries/Arithmetic.sol#40) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._denominator (contracts/libraries/Arithmetic.sol#41) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._exponent (contracts/libraries/Arithmetic.sol#42) is not in mixedCase
Parameter Burn.eth(uint256)._amount (contracts/libraries/Burn.sol#14) is not in mixedCase
Parameter Burn.gas(uint256)._amount (contracts/libraries/Burn.sol#23) is not in mixedCase
Parameter Bytes.slice(bytes,uint256,uint256)._bytes (contracts/libraries/Bytes.sol#22) is not in mixedCase
Parameter Bytes.slice(bytes,uint256,uint256)._start (contracts/libraries/Bytes.sol#23) is not in mixedCase
Parameter Bytes.slice(bytes,uint256,uint256)._length (contracts/libraries/Bytes.sol#24) is not in mixedCase
Parameter Bytes.slice(bytes,uint256)._bytes (contracts/libraries/Bytes.sol#99) is not in mixedCase
Parameter Bytes.slice(bytes,uint256)._start (contracts/libraries/Bytes.sol#99) is not in mixedCase
Parameter Bytes.toNibbles(bytes)._bytes (contracts/libraries/Bytes.sol#114) is not in mixedCase
Parameter Bytes.equal(bytes,bytes)._bytes (contracts/libraries/Bytes.sol#139) is not in mixedCase
Parameter Bytes.equal(bytes,bytes)._other (contracts/libraries/Bytes.sol#139) is not in mixedCase
Function Constants.DEFAULT_RESOURCE_CONFIG() (contracts/libraries/Constants.sol#34-48) is not in mixedCase
Parameter Encoding.encodeDepositTransaction(Types.UserDepositTransaction)._tx (contracts/libraries/Encoding.sol#22) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Encoding.sol#54) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Encoding.sol#55) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Encoding.sol#56) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Encoding.sol#57) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Encoding.sol#58) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Encoding.sol#59) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._target (contracts/libraries/Encoding.sol#82) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._sender (contracts/libraries/Encoding.sol#83) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._data (contracts/libraries/Encoding.sol#84) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._nonce (contracts/libraries/Encoding.sol#85) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Encoding.sol#110) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Encoding.sol#111) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Encoding.sol#112) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Encoding.sol#113) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Encoding.sol#114) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Encoding.sol#115) is not in mixedCase
Parameter Encoding.encodeVersionedNonce(uint240,uint16)._nonce (contracts/libraries/Encoding.sol#137) is not in mixedCase
Parameter Encoding.encodeVersionedNonce(uint240,uint16)._version (contracts/libraries/Encoding.sol#137) is not in mixedCase
Parameter Encoding.decodeVersionedNonce(uint256)._nonce (contracts/libraries/Encoding.sol#153) is not in mixedCase
Parameter Hashing.hashDepositTransaction(Types.UserDepositTransaction)._tx (contracts/libraries/Hashing.sol#21) is not in mixedCase
Parameter Hashing.hashDepositSource(bytes32,uint256)._l1BlockHash (contracts/libraries/Hashing.sol#39) is not in mixedCase
Parameter Hashing.hashDepositSource(bytes32,uint256)._logIndex (contracts/libraries/Hashing.sol#39) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Hashing.sol#62) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Hashing.sol#63) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Hashing.sol#64) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Hashing.sol#65) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Hashing.sol#66) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Hashing.sol#67) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._target (contracts/libraries/Hashing.sol#90) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._sender (contracts/libraries/Hashing.sol#91) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._data (contracts/libraries/Hashing.sol#92) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._nonce (contracts/libraries/Hashing.sol#93) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Hashing.sol#111) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Hashing.sol#112) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Hashing.sol#113) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Hashing.sol#114) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Hashing.sol#115) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Hashing.sol#116) is not in mixedCase
Parameter Hashing.hashWithdrawal(Types.WithdrawalTransaction)._tx (contracts/libraries/Hashing.sol#138) is not in mixedCase
Parameter Hashing.hashOutputRootProof(Types.OutputRootProof)._outputRootProof (contracts/libraries/Hashing.sol#157) is not in mixedCase
Parameter SafeCall.send(address,uint256,uint256)._target (contracts/libraries/SafeCall.sol#18) is not in mixedCase
Parameter SafeCall.send(address,uint256,uint256)._gas (contracts/libraries/SafeCall.sol#19) is not in mixedCase
Parameter SafeCall.send(address,uint256,uint256)._value (contracts/libraries/SafeCall.sol#20) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._target (contracts/libraries/SafeCall.sol#46) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._gas (contracts/libraries/SafeCall.sol#47) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._value (contracts/libraries/SafeCall.sol#48) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._calldata (contracts/libraries/SafeCall.sol#49) is not in mixedCase
Parameter SafeCall.hasMinGas(uint256,uint256)._minGas (contracts/libraries/SafeCall.sol#91) is not in mixedCase
Parameter SafeCall.hasMinGas(uint256,uint256)._reservedGas (contracts/libraries/SafeCall.sol#91) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._target (contracts/libraries/SafeCall.sol#113) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._minGas (contracts/libraries/SafeCall.sol#114) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._value (contracts/libraries/SafeCall.sol#115) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._calldata (contracts/libraries/SafeCall.sol#116) is not in mixedCase
Parameter RLPReader.toRLPItem(bytes)._in (contracts/libraries/rlp/RLPReader.sol#51) is not in mixedCase
Parameter RLPReader.readList(RLPReader.RLPItem)._in (contracts/libraries/rlp/RLPReader.sol#73) is not in mixedCase
Parameter RLPReader.readList(bytes)._in (contracts/libraries/rlp/RLPReader.sol#128) is not in mixedCase
Parameter RLPReader.readBytes(RLPReader.RLPItem)._in (contracts/libraries/rlp/RLPReader.sol#139) is not in mixedCase
Parameter RLPReader.readBytes(bytes)._in (contracts/libraries/rlp/RLPReader.sol#162) is not in mixedCase
Parameter RLPReader.readRawBytes(RLPReader.RLPItem)._in (contracts/libraries/rlp/RLPReader.sol#173) is not in mixedCase
Parameter RLPWriter.writeBytes(bytes)._in (contracts/libraries/rlp/RLPWriter.sol#19) is not in mixedCase
Parameter RLPWriter.writeList(bytes[])._in (contracts/libraries/rlp/RLPWriter.sol#38) is not in mixedCase
Parameter RLPWriter.writeString(string)._in (contracts/libraries/rlp/RLPWriter.sol#50) is not in mixedCase
Parameter RLPWriter.writeAddress(address)._in (contracts/libraries/rlp/RLPWriter.sol#61) is not in mixedCase
Parameter RLPWriter.writeUint(uint256)._in (contracts/libraries/rlp/RLPWriter.sol#72) is not in mixedCase
Parameter RLPWriter.writeBool(bool)._in (contracts/libraries/rlp/RLPWriter.sol#83) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._key (contracts/libraries/trie/MerkleTrie.sol#74) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._value (contracts/libraries/trie/MerkleTrie.sol#75) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._proof (contracts/libraries/trie/MerkleTrie.sol#76) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._root (contracts/libraries/trie/MerkleTrie.sol#77) is not in mixedCase
Parameter MerkleTrie.get(bytes,bytes[],bytes32)._key (contracts/libraries/trie/MerkleTrie.sol#92) is not in mixedCase
Parameter MerkleTrie.get(bytes,bytes[],bytes32)._proof (contracts/libraries/trie/MerkleTrie.sol#93) is not in mixedCase
Parameter MerkleTrie.get(bytes,bytes[],bytes32)._root (contracts/libraries/trie/MerkleTrie.sol#94) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._key (contracts/libraries/trie/SecureMerkleTrie.sol#27) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._value (contracts/libraries/trie/SecureMerkleTrie.sol#28) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._proof (contracts/libraries/trie/SecureMerkleTrie.sol#29) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._root (contracts/libraries/trie/SecureMerkleTrie.sol#30) is not in mixedCase
Parameter SecureMerkleTrie.get(bytes,bytes[],bytes32)._key (contracts/libraries/trie/SecureMerkleTrie.sol#46) is not in mixedCase
Parameter SecureMerkleTrie.get(bytes,bytes[],bytes32)._proof (contracts/libraries/trie/SecureMerkleTrie.sol#47) is not in mixedCase
Parameter SecureMerkleTrie.get(bytes,bytes[],bytes32)._root (contracts/libraries/trie/SecureMerkleTrie.sol#48) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer0.spacer_0_0_20 (contracts/universal/CrossDomainMessenger.sol#23) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_1_0_1600 (contracts/universal/CrossDomainMessenger.sol#41) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_51_0_20 (contracts/universal/CrossDomainMessenger.sol#49) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_52_0_1568 (contracts/universal/CrossDomainMessenger.sol#57) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_101_0_1 (contracts/universal/CrossDomainMessenger.sol#65) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_102_0_1568 (contracts/universal/CrossDomainMessenger.sol#73) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_151_0_32 (contracts/universal/CrossDomainMessenger.sol#80) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_152_0_1568 (contracts/universal/CrossDomainMessenger.sol#87) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_201_0_32 (contracts/universal/CrossDomainMessenger.sol#94) is not in mixedCase
Variable CrossDomainMessengerLegacySpacer1.spacer_202_0_32 (contracts/universal/CrossDomainMessenger.sol#101) is not in mixedCase
Parameter CrossDomainMessenger.sendMessage(address,bytes,uint32)._target (contracts/universal/CrossDomainMessenger.sol#260) is not in mixedCase
Parameter CrossDomainMessenger.sendMessage(address,bytes,uint32)._message (contracts/universal/CrossDomainMessenger.sol#261) is not in mixedCase
Parameter CrossDomainMessenger.sendMessage(address,bytes,uint32)._minGasLimit (contracts/universal/CrossDomainMessenger.sol#262) is not in mixedCase
Parameter CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/universal/CrossDomainMessenger.sol#304) is not in mixedCase
Parameter CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._sender (contracts/universal/CrossDomainMessenger.sol#305) is not in mixedCase
Parameter CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._target (contracts/universal/CrossDomainMessenger.sol#306) is not in mixedCase
Parameter CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._value (contracts/universal/CrossDomainMessenger.sol#307) is not in mixedCase
Parameter CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._minGasLimit (contracts/universal/CrossDomainMessenger.sol#308) is not in mixedCase
Parameter CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes)._message (contracts/universal/CrossDomainMessenger.sol#309) is not in mixedCase
Parameter CrossDomainMessenger.baseGas(bytes,uint32)._message (contracts/universal/CrossDomainMessenger.sol#453) is not in mixedCase
Parameter CrossDomainMessenger.baseGas(bytes,uint32)._minGasLimit (contracts/universal/CrossDomainMessenger.sol#453) is not in mixedCase
Function CrossDomainMessenger.__CrossDomainMessenger_init() (contracts/universal/CrossDomainMessenger.sol#477-479) is not in mixedCase
Variable CrossDomainMessenger.OTHER_MESSENGER (contracts/universal/CrossDomainMessenger.sol#164) is not in mixedCase
Variable CrossDomainMessenger.__gap (contracts/universal/CrossDomainMessenger.sol#200) is not in mixedCase
Variable Semver.MAJOR_VERSION (contracts/universal/Semver.sol#14) is not in mixedCase
Variable Semver.MINOR_VERSION (contracts/universal/Semver.sol#19) is not in mixedCase
Variable Semver.PATCH_VERSION (contracts/universal/Semver.sol#24) is not in mixedCase
Constant AddressAliasHelper.offset (contracts/vendor/AddressAliasHelper.sol#22) is not in UPPER_CASE_WITH_UNDERSCORES
Function OwnableUpgradeable.__Ownable_init() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#29-31) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#33-35) is not in mixedCase
Variable OwnableUpgradeable.__gap (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#94) is not in mixedCase
Function ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable CrossDomainMessenger.OTHER_MESSENGER (contracts/universal/CrossDomainMessenger.sol#164) is too similar to CrossDomainMessenger.constructor(address)._otherMessenger (contracts/universal/CrossDomainMessenger.sol#245)
Variable L2OutputOracle.SUBMISSION_INTERVAL (contracts/L1/L2OutputOracle.sol#20) is too similar to L2OutputOracle.constructor(uint256,uint256,uint256,uint256,address,address,uint256)._submissionInterval (contracts/L1/L2OutputOracle.sol#91)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#181)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.getL2OutputAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#291)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.getL2OutputIndexAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#255)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.computeL2Timestamp(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#347)
Variable RLPReader._decodeLength(RLPReader.RLPItem).firstByteOfContent_scope_0 (contracts/libraries/rlp/RLPReader.sol#243) is too similar to RLPReader._decodeLength(RLPReader.RLPItem).firstByteOfContent_scope_2 (contracts/libraries/rlp/RLPReader.sol#289)
Variable CrossDomainMessengerLegacySpacer1.spacer_102_0_1568 (contracts/universal/CrossDomainMessenger.sol#73) is too similar to CrossDomainMessengerLegacySpacer1.spacer_152_0_1568 (contracts/universal/CrossDomainMessenger.sol#87)
Variable CrossDomainMessengerLegacySpacer1.spacer_201_0_32 (contracts/universal/CrossDomainMessenger.sol#94) is too similar to CrossDomainMessengerLegacySpacer1.spacer_202_0_32 (contracts/universal/CrossDomainMessenger.sol#101)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Detectors:
Constants.ESTIMATION_ADDRESS (contracts/libraries/Constants.sol#21) is never used in Constants (contracts/libraries/Constants.sol#12-49)
Constants.DEFAULT_L2_SENDER (contracts/libraries/Constants.sol#28) is never used in Constants (contracts/libraries/Constants.sol#12-49)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
INFO:Slither:0x2150bc3c64cbfddbac9815ef615d6ab8671bfe43 analyzed (34 contracts with 82 detectors), 336 result(s) found
Slither report for Proxy at `0x229047fed2591dbec1eF1118d64F7aF3dB9EB290` with implementation SystemConfig at `0x5efa852e92800D1C982711761e45c3FE39a2b6D8`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x229047fed2591dbec1ef1118d64f7af3db9eb290-Proxy' running
INFO:Detectors:
Proxy.upgradeToAndCall(address,bytes)._implementation (contracts/universal/Proxy.sol#98) lacks a zero-check on :
- (success,returndata) = _implementation.delegatecall(_data) (contracts/universal/Proxy.sol#106)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Modifier Proxy.proxyCallIfNotAdmin() (contracts/universal/Proxy.sol#48-55) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Proxy._setImplementation(address) (contracts/universal/Proxy.sol#143-148) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#144-146)
Proxy._changeAdmin(address) (contracts/universal/Proxy.sol#155-161) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#157-159)
Proxy._doProxyCall() (contracts/universal/Proxy.sol#166-190) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#170-189)
Proxy._getImplementation() (contracts/universal/Proxy.sol#197-203) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#199-201)
Proxy._getAdmin() (contracts/universal/Proxy.sol#210-216) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#212-214)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Low level call in Proxy.upgradeToAndCall(address,bytes) (contracts/universal/Proxy.sol#98-109):
- (success,returndata) = _implementation.delegatecall(_data) (contracts/universal/Proxy.sol#106)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Parameter Proxy.upgradeTo(address)._implementation (contracts/universal/Proxy.sol#87) is not in mixedCase
Parameter Proxy.upgradeToAndCall(address,bytes)._implementation (contracts/universal/Proxy.sol#98) is not in mixedCase
Parameter Proxy.upgradeToAndCall(address,bytes)._data (contracts/universal/Proxy.sol#98) is not in mixedCase
Parameter Proxy.changeAdmin(address)._admin (contracts/universal/Proxy.sol#116) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x229047fed2591dbec1ef1118d64f7af3db9eb290 analyzed (1 contracts with 82 detectors), 12 result(s) found
Slither report for Lib_ResolvedDelegateProxy at `0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x25ace71c97b33cc4729cf772ae268934f7ab5fa1-Lib_ResolvedDelegateProxy' running
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 82 detectors), 11 result(s) found
Slither report for OptimismPortal at `0x28a55488fef40005309e2DA0040DbE9D300a64AB`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x28a55488fef40005309e2da0040dbe9d300a64ab-OptimismPortal' running
INFO:Detectors:
Initializable is re-used:
- Initializable (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#57-138)
- Initializable (node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol#57-138)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused
INFO:Detectors:
ResourceMetering._metered(uint64,uint256) (contracts/L1/ResourceMetering.sol#92-164) performs a multiplication on the result of a division:
- targetResourceLimit = int256(uint256(config.maxResourceLimit)) / int256(uint256(config.elasticityMultiplier)) (contracts/L1/ResourceMetering.sol#97-98)
- baseFeeDelta = (int256(uint256(params.prevBaseFee)) * gasUsedDelta) / (targetResourceLimit * int256(uint256(config.baseFeeMaxChangeDenominator))) (contracts/L1/ResourceMetering.sol#105-106)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#117)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#121)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#122)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#124)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#125)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#126)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- prod0 = prod0 / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#105)
- result = prod0 * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#132)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- y = ((y * x) >> 96) + 57155421227552351082224309758442 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#60)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- p = p * x + (4385272521454847904659076985693276 << 96) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#63)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 50020603652535783019961831881945 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#67)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) - 533845033583426703283633433725380 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#68)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 3604857256930695427073651918091429 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#69)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) - 14423608567350463180887372962807573 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#70)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 26449188498355588339934803723976023 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#71)
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) performs a multiplication on the result of a division:
- x = xxRound_rpow_asm_0 / scalar (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#253)
- zx_rpow_asm_0 = z * x (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#258)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
INFO:Detectors:
L2OutputOracle.latestBlockNumber() (contracts/L1/L2OutputOracle.sol#324-329) uses a dangerous strict equality:
- l2Outputs.length == 0 (contracts/L1/L2OutputOracle.sol#325-328)
L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256) (contracts/L1/L2OutputOracle.sol#179-229) uses a dangerous strict equality:
- require(bool,string)(_l2BlockNumber == nextBlockNumber(),L2OutputOracle: block number must be equal to next expected block number) (contracts/L1/L2OutputOracle.sol#190-193)
OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[]) (contracts/L1/OptimismPortal.sol#242-318) uses a dangerous strict equality:
- require(bool,string)(provenWithdrawal.timestamp == 0 || L2_ORACLE.getL2Output(provenWithdrawal.l2OutputIndex).outputRoot != provenWithdrawal.outputRoot,OptimismPortal: withdrawal hash has already been proven) (contracts/L1/OptimismPortal.sol#276-281)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (contracts/L1/OptimismPortal.sol#325-420) uses tx.origin for authorization: success == false && tx.origin == Constants.ESTIMATION_ADDRESS (contracts/L1/OptimismPortal.sol#417)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin
INFO:Detectors:
MerkleTrie._getSharedNibbleLength(bytes,bytes).shared (contracts/libraries/trie/MerkleTrie.sol#279) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Hashing.sol#61-77) ignores return value by (version) = Encoding.decodeVersionedNonce(_nonce) (contracts/libraries/Hashing.sol#69)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
OptimismPortal.l2Sender (contracts/L1/OptimismPortal.sol#67) is written in both
l2Sender = _tx.sender (contracts/L1/OptimismPortal.sol#396)
l2Sender = Constants.DEFAULT_L2_SENDER (contracts/L1/OptimismPortal.sol#408)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write
INFO:Detectors:
SystemConfig.constructor(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#94) shadows:
- OwnableUpgradeable._owner (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#126) shadows:
- OwnableUpgradeable._owner (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
L2OutputOracle.constructor(uint256,uint256,uint256,uint256,address,address,uint256)._proposer (contracts/L1/L2OutputOracle.sol#95) lacks a zero-check on :
- PROPOSER = _proposer (contracts/L1/L2OutputOracle.sol#107)
L2OutputOracle.constructor(uint256,uint256,uint256,uint256,address,address,uint256)._challenger (contracts/L1/L2OutputOracle.sol#96) lacks a zero-check on :
- CHALLENGER = _challenger (contracts/L1/L2OutputOracle.sol#108)
OptimismPortal.constructor(L2OutputOracle,address,bool,SystemConfig)._guardian (contracts/L1/OptimismPortal.sol#152) lacks a zero-check on :
- GUARDIAN = _guardian (contracts/L1/OptimismPortal.sol#157)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
L2OutputOracle.initialize(uint256,uint256) (contracts/L1/L2OutputOracle.sol#120-131) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_startingTimestamp <= block.timestamp,L2OutputOracle: starting L2 timestamp must be less than current time) (contracts/L1/L2OutputOracle.sol#124-127)
L2OutputOracle.deleteL2Outputs(uint256) (contracts/L1/L2OutputOracle.sol#141-167) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_l2OutputIndex < l2Outputs.length,L2OutputOracle: cannot delete outputs after the latest output index) (contracts/L1/L2OutputOracle.sol#148-151)
- require(bool,string)(block.timestamp - l2Outputs[_l2OutputIndex].timestamp < FINALIZATION_PERIOD_SECONDS,L2OutputOracle: cannot delete outputs that have already been finalized) (contracts/L1/L2OutputOracle.sol#154-157)
L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256) (contracts/L1/L2OutputOracle.sol#179-229) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_l2BlockNumber == nextBlockNumber(),L2OutputOracle: block number must be equal to next expected block number) (contracts/L1/L2OutputOracle.sol#190-193)
- require(bool,string)(computeL2Timestamp(_l2BlockNumber) < block.timestamp,L2OutputOracle: cannot propose L2 output in the future) (contracts/L1/L2OutputOracle.sol#195-198)
L2OutputOracle.getL2OutputIndexAfter(uint256) (contracts/L1/L2OutputOracle.sol#255-281) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_l2BlockNumber <= latestBlockNumber(),L2OutputOracle: cannot get output for a block that has not been proposed) (contracts/L1/L2OutputOracle.sol#257-260)
- require(bool,string)(l2Outputs.length > 0,L2OutputOracle: cannot get output as no outputs have been proposed yet) (contracts/L1/L2OutputOracle.sol#263-266)
- lo < hi (contracts/L1/L2OutputOracle.sol#271)
- l2Outputs[mid].l2BlockNumber < _l2BlockNumber (contracts/L1/L2OutputOracle.sol#273)
L2OutputOracle.latestBlockNumber() (contracts/L1/L2OutputOracle.sol#324-329) uses timestamp for comparisons
Dangerous comparisons:
- l2Outputs.length == 0 (contracts/L1/L2OutputOracle.sol#325-328)
OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[]) (contracts/L1/OptimismPortal.sol#242-318) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(provenWithdrawal.timestamp == 0 || L2_ORACLE.getL2Output(provenWithdrawal.l2OutputIndex).outputRoot != provenWithdrawal.outputRoot,OptimismPortal: withdrawal hash has already been proven) (contracts/L1/OptimismPortal.sol#276-281)
OptimismPortal._isFinalizationPeriodElapsed(uint256) (contracts/L1/OptimismPortal.sol#504-506) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > _timestamp + L2_ORACLE.FINALIZATION_PERIOD_SECONDS() (contracts/L1/OptimismPortal.sol#505)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
L2OutputOracle.deleteL2Outputs(uint256) (contracts/L1/L2OutputOracle.sol#141-167) uses assembly
- INLINE ASM (contracts/L1/L2OutputOracle.sol#162-164)
SystemConfig.unsafeBlockSigner() (contracts/L1/SystemConfig.sol#166-173) uses assembly
- INLINE ASM (contracts/L1/SystemConfig.sol#169-171)
SystemConfig._setUnsafeBlockSigner(address) (contracts/L1/SystemConfig.sol#232-237) uses assembly
- INLINE ASM (contracts/L1/SystemConfig.sol#234-236)
Bytes.slice(bytes,uint256,uint256) (contracts/libraries/Bytes.sol#21-88) uses assembly
- INLINE ASM (contracts/libraries/Bytes.sol#34-85)
Encoding.encodeVersionedNonce(uint240,uint16) (contracts/libraries/Encoding.sol#137-143) uses assembly
- INLINE ASM (contracts/libraries/Encoding.sol#139-141)
Encoding.decodeVersionedNonce(uint256) (contracts/libraries/Encoding.sol#153-161) uses assembly
- INLINE ASM (contracts/libraries/Encoding.sol#156-159)
SafeCall.send(address,uint256,uint256) (contracts/libraries/SafeCall.sol#17-35) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#23-33)
SafeCall.call(address,uint256,uint256,bytes) (contracts/libraries/SafeCall.sol#45-64) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#52-62)
SafeCall.hasMinGas(uint256,uint256) (contracts/libraries/SafeCall.sol#91-100) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#93-98)
SafeCall.callWithMinGas(address,uint256,uint256,bytes) (contracts/libraries/SafeCall.sol#112-159) uses assembly
- INLINE ASM (contracts/libraries/SafeCall.sol#120-157)
RLPReader.toRLPItem(bytes) (contracts/libraries/rlp/RLPReader.sol#51-64) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#59-61)
RLPReader.readList(RLPReader.RLPItem) (contracts/libraries/rlp/RLPReader.sol#73-119) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#114-116)
RLPReader._decodeLength(RLPReader.RLPItem) (contracts/libraries/rlp/RLPReader.sol#186-316) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#205-207)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#224-226)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#244-246)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#254-256)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#290-292)
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#300-302)
RLPReader._copy(RLPReader.MemoryPointer,uint256,uint256) (contracts/libraries/rlp/RLPReader.sol#327-358) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPReader.sol#341-355)
RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/RLPWriter.sol#154-180) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#164-166)
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#175-179)
RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/RLPWriter.sol#190-220) uses assembly
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#203-205)
- INLINE ASM (contracts/libraries/rlp/RLPWriter.sol#211-213)
AddressUpgradeable.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Address.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Address.sol#213-216)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#66-70)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#86-93)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#100-109)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#73-78)
FixedPointMathLib.lnWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#92-150) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#126-131)
FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#156-173) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#161-172)
FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#175-194) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#180-193)
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#201-281)
FixedPointMathLib.sqrt(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#288-350) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#289-349)
FixedPointMathLib.log2(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#352-365) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#355-364)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (contracts/L1/OptimismPortal.sol#325-420) compares to a boolean constant:
-require(bool,string)(finalizedWithdrawals[withdrawalHash] == false,OptimismPortal: withdrawal has already been finalized) (contracts/L1/OptimismPortal.sol#387-390)
OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (contracts/L1/OptimismPortal.sol#325-420) compares to a boolean constant:
-success == false && tx.origin == Constants.ESTIMATION_ADDRESS (contracts/L1/OptimismPortal.sol#417)
OptimismPortal.whenNotPaused() (contracts/L1/OptimismPortal.sol#137-140) compares to a boolean constant:
-require(bool,string)(paused == false,OptimismPortal: paused) (contracts/L1/OptimismPortal.sol#138)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality
INFO:Detectors:
Address.functionCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#85-87) is never used and should be removed
Address.functionCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#95-101) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#114-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#128-139) is never used and should be removed
Address.functionDelegateCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#184-193) is never used and should be removed
Address.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#147-149) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#157-166) is never used and should be removed
Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#60-65) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#201-221) is never used and should be removed
AddressAliasHelper.undoL1ToL2Alias(address) (contracts/vendor/AddressAliasHelper.sol#38-42) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#85-87) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#95-101) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-120) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-149) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) is never used and should be removed
Burn.eth(uint256) (contracts/libraries/Burn.sol#14-16) is never used and should be removed
Burn.gas(uint256) (contracts/libraries/Burn.sol#23-29) is never used and should be removed
Constants.DEFAULT_RESOURCE_CONFIG() (contracts/libraries/Constants.sol#34-48) is never used and should be removed
ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed
ContextUpgradeable._msgData() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
Encoding.decodeVersionedNonce(uint256) (contracts/libraries/Encoding.sol#153-161) is never used and should be removed
Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Encoding.sol#53-69) is never used and should be removed
Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256) (contracts/libraries/Encoding.sol#81-95) is never used and should be removed
Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Encoding.sol#109-127) is never used and should be removed
Encoding.encodeDepositTransaction(Types.UserDepositTransaction) (contracts/libraries/Encoding.sol#22-38) is never used and should be removed
Encoding.encodeVersionedNonce(uint240,uint16) (contracts/libraries/Encoding.sol#137-143) is never used and should be removed
FixedPointMathLib.divWadDown(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#21-23) is never used and should be removed
FixedPointMathLib.divWadUp(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#25-27) is never used and should be removed
FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#156-173) is never used and should be removed
FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#175-194) is never used and should be removed
FixedPointMathLib.mulWadDown(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#13-15) is never used and should be removed
FixedPointMathLib.mulWadUp(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#17-19) is never used and should be removed
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) is never used and should be removed
FixedPointMathLib.sqrt(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#288-350) is never used and should be removed
Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Hashing.sol#61-77) is never used and should be removed
Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256) (contracts/libraries/Hashing.sol#89-96) is never used and should be removed
Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes) (contracts/libraries/Hashing.sol#110-129) is never used and should be removed
Hashing.hashDepositSource(bytes32,uint256) (contracts/libraries/Hashing.sol#39-46) is never used and should be removed
Hashing.hashDepositTransaction(Types.UserDepositTransaction) (contracts/libraries/Hashing.sol#21-27) is never used and should be removed
Initializable._disableInitializers() (node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol#131-137) is never used and should be removed
Math.average(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#34-37) is never used and should be removed
Math.ceilDiv(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#45-48) is never used and should be removed
Math.min(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#26-28) is never used and should be removed
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) is never used and should be removed
Math.mulDiv(uint256,uint256,uint256,Math.Rounding) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#140-151) is never used and should be removed
Math.sqrt(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#158-214) is never used and should be removed
Math.sqrt(uint256,Math.Rounding) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#219-225) is never used and should be removed
RLPReader.readBytes(bytes) (contracts/libraries/rlp/RLPReader.sol#162-164) is never used and should be removed
RLPWriter._flatten(bytes[]) (contracts/libraries/rlp/RLPWriter.sol#190-220) is never used and should be removed
RLPWriter._memcpy(uint256,uint256,uint256) (contracts/libraries/rlp/RLPWriter.sol#154-180) is never used and should be removed
RLPWriter._toBinary(uint256) (contracts/libraries/rlp/RLPWriter.sol#128-144) is never used and should be removed
RLPWriter._writeLength(uint256,uint256) (contracts/libraries/rlp/RLPWriter.sol#97-119) is never used and should be removed
RLPWriter.writeAddress(address) (contracts/libraries/rlp/RLPWriter.sol#61-63) is never used and should be removed
RLPWriter.writeBool(bool) (contracts/libraries/rlp/RLPWriter.sol#83-87) is never used and should be removed
RLPWriter.writeBytes(bytes) (contracts/libraries/rlp/RLPWriter.sol#19-29) is never used and should be removed
RLPWriter.writeList(bytes[]) (contracts/libraries/rlp/RLPWriter.sol#38-41) is never used and should be removed
RLPWriter.writeString(string) (contracts/libraries/rlp/RLPWriter.sol#50-52) is never used and should be removed
RLPWriter.writeUint(uint256) (contracts/libraries/rlp/RLPWriter.sol#72-74) is never used and should be removed
SafeCall.call(address,uint256,uint256,bytes) (contracts/libraries/SafeCall.sol#45-64) is never used and should be removed
SafeCall.send(address,uint256,uint256) (contracts/libraries/SafeCall.sol#17-35) is never used and should be removed
SecureMerkleTrie.get(bytes,bytes[],bytes32) (contracts/libraries/trie/SecureMerkleTrie.sol#45-52) is never used and should be removed
SignedMath.abs(int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#37-42) is never used and should be removed
SignedMath.average(int256,int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#28-32) is never used and should be removed
Strings.toHexString(address) (node_modules/@openzeppelin/contracts/utils/Strings.sol#72-74) is never used and should be removed
Strings.toHexString(uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#41-52) is never used and should be removed
Strings.toHexString(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#57-67) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in AddressUpgradeable.sendValue(address,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Low level call in Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#60-65):
- (success) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts/utils/Address.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#137)
Low level call in Address.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#157-166):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#184-193):
- (success,returndata) = target.delegatecall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#191)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Parameter L2OutputOracle.initialize(uint256,uint256)._startingBlockNumber (contracts/L1/L2OutputOracle.sol#120) is not in mixedCase
Parameter L2OutputOracle.initialize(uint256,uint256)._startingTimestamp (contracts/L1/L2OutputOracle.sol#120) is not in mixedCase
Parameter L2OutputOracle.deleteL2Outputs(uint256)._l2OutputIndex (contracts/L1/L2OutputOracle.sol#141) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._outputRoot (contracts/L1/L2OutputOracle.sol#180) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#181) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockHash (contracts/L1/L2OutputOracle.sol#182) is not in mixedCase
Parameter L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is not in mixedCase
Parameter L2OutputOracle.getL2Output(uint256)._l2OutputIndex (contracts/L1/L2OutputOracle.sol#239) is not in mixedCase
Parameter L2OutputOracle.getL2OutputIndexAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#255) is not in mixedCase
Parameter L2OutputOracle.getL2OutputAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#291) is not in mixedCase
Parameter L2OutputOracle.computeL2Timestamp(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#347) is not in mixedCase
Variable L2OutputOracle.SUBMISSION_INTERVAL (contracts/L1/L2OutputOracle.sol#20) is not in mixedCase
Variable L2OutputOracle.L2_BLOCK_TIME (contracts/L1/L2OutputOracle.sol#25) is not in mixedCase
Variable L2OutputOracle.CHALLENGER (contracts/L1/L2OutputOracle.sol#30) is not in mixedCase
Variable L2OutputOracle.PROPOSER (contracts/L1/L2OutputOracle.sol#35) is not in mixedCase
Variable L2OutputOracle.FINALIZATION_PERIOD_SECONDS (contracts/L1/L2OutputOracle.sol#40) is not in mixedCase
Parameter OptimismPortal.initialize(bool)._paused (contracts/L1/OptimismPortal.sol#165) is not in mixedCase
Parameter OptimismPortal.minimumGasLimit(uint64)._byteCount (contracts/L1/OptimismPortal.sol#196) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._tx (contracts/L1/OptimismPortal.sol#243) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._l2OutputIndex (contracts/L1/OptimismPortal.sol#244) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._outputRootProof (contracts/L1/OptimismPortal.sol#245) is not in mixedCase
Parameter OptimismPortal.proveWithdrawalTransaction(Types.WithdrawalTransaction,uint256,Types.OutputRootProof,bytes[])._withdrawalProof (contracts/L1/OptimismPortal.sol#246) is not in mixedCase
Parameter OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction)._tx (contracts/L1/OptimismPortal.sol#325) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._to (contracts/L1/OptimismPortal.sol#435) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._value (contracts/L1/OptimismPortal.sol#436) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._gasLimit (contracts/L1/OptimismPortal.sol#437) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._isCreation (contracts/L1/OptimismPortal.sol#438) is not in mixedCase
Parameter OptimismPortal.depositTransaction(address,uint256,uint64,bool,bytes)._data (contracts/L1/OptimismPortal.sol#439) is not in mixedCase
Parameter OptimismPortal.isOutputFinalized(uint256)._l2OutputIndex (contracts/L1/OptimismPortal.sol#493) is not in mixedCase
Variable OptimismPortal.L2_ORACLE (contracts/L1/OptimismPortal.sol#50) is not in mixedCase
Variable OptimismPortal.SYSTEM_CONFIG (contracts/L1/OptimismPortal.sol#55) is not in mixedCase
Variable OptimismPortal.GUARDIAN (contracts/L1/OptimismPortal.sol#60) is not in mixedCase
Function ResourceMetering.__ResourceMetering_init() (contracts/L1/ResourceMetering.sol#179-185) is not in mixedCase
Variable ResourceMetering.__gap (contracts/L1/ResourceMetering.sol#68) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#126) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._overhead (contracts/L1/SystemConfig.sol#127) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._scalar (contracts/L1/SystemConfig.sol#128) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._batcherHash (contracts/L1/SystemConfig.sol#129) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._gasLimit (contracts/L1/SystemConfig.sol#130) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._unsafeBlockSigner (contracts/L1/SystemConfig.sol#131) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._config (contracts/L1/SystemConfig.sol#132) is not in mixedCase
Parameter SystemConfig.setUnsafeBlockSigner(address)._unsafeBlockSigner (contracts/L1/SystemConfig.sol#180) is not in mixedCase
Parameter SystemConfig.setBatcherHash(bytes32)._batcherHash (contracts/L1/SystemConfig.sol#192) is not in mixedCase
Parameter SystemConfig.setGasConfig(uint256,uint256)._overhead (contracts/L1/SystemConfig.sol#205) is not in mixedCase
Parameter SystemConfig.setGasConfig(uint256,uint256)._scalar (contracts/L1/SystemConfig.sol#205) is not in mixedCase
Parameter SystemConfig.setGasLimit(uint64)._gasLimit (contracts/L1/SystemConfig.sol#218) is not in mixedCase
Parameter SystemConfig.setResourceConfig(ResourceMetering.ResourceConfig)._config (contracts/L1/SystemConfig.sol#256) is not in mixedCase
Variable SystemConfig._resourceConfig (contracts/L1/SystemConfig.sol#71) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._value (contracts/libraries/Arithmetic.sol#22) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._min (contracts/libraries/Arithmetic.sol#23) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._max (contracts/libraries/Arithmetic.sol#24) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._coefficient (contracts/libraries/Arithmetic.sol#40) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._denominator (contracts/libraries/Arithmetic.sol#41) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._exponent (contracts/libraries/Arithmetic.sol#42) is not in mixedCase
Parameter Burn.eth(uint256)._amount (contracts/libraries/Burn.sol#14) is not in mixedCase
Parameter Burn.gas(uint256)._amount (contracts/libraries/Burn.sol#23) is not in mixedCase
Parameter Bytes.slice(bytes,uint256,uint256)._bytes (contracts/libraries/Bytes.sol#22) is not in mixedCase
Parameter Bytes.slice(bytes,uint256,uint256)._start (contracts/libraries/Bytes.sol#23) is not in mixedCase
Parameter Bytes.slice(bytes,uint256,uint256)._length (contracts/libraries/Bytes.sol#24) is not in mixedCase
Parameter Bytes.slice(bytes,uint256)._bytes (contracts/libraries/Bytes.sol#99) is not in mixedCase
Parameter Bytes.slice(bytes,uint256)._start (contracts/libraries/Bytes.sol#99) is not in mixedCase
Parameter Bytes.toNibbles(bytes)._bytes (contracts/libraries/Bytes.sol#114) is not in mixedCase
Parameter Bytes.equal(bytes,bytes)._bytes (contracts/libraries/Bytes.sol#139) is not in mixedCase
Parameter Bytes.equal(bytes,bytes)._other (contracts/libraries/Bytes.sol#139) is not in mixedCase
Function Constants.DEFAULT_RESOURCE_CONFIG() (contracts/libraries/Constants.sol#34-48) is not in mixedCase
Parameter Encoding.encodeDepositTransaction(Types.UserDepositTransaction)._tx (contracts/libraries/Encoding.sol#22) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Encoding.sol#54) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Encoding.sol#55) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Encoding.sol#56) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Encoding.sol#57) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Encoding.sol#58) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Encoding.sol#59) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._target (contracts/libraries/Encoding.sol#82) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._sender (contracts/libraries/Encoding.sol#83) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._data (contracts/libraries/Encoding.sol#84) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV0(address,address,bytes,uint256)._nonce (contracts/libraries/Encoding.sol#85) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Encoding.sol#110) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Encoding.sol#111) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Encoding.sol#112) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Encoding.sol#113) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Encoding.sol#114) is not in mixedCase
Parameter Encoding.encodeCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Encoding.sol#115) is not in mixedCase
Parameter Encoding.encodeVersionedNonce(uint240,uint16)._nonce (contracts/libraries/Encoding.sol#137) is not in mixedCase
Parameter Encoding.encodeVersionedNonce(uint240,uint16)._version (contracts/libraries/Encoding.sol#137) is not in mixedCase
Parameter Encoding.decodeVersionedNonce(uint256)._nonce (contracts/libraries/Encoding.sol#153) is not in mixedCase
Parameter Hashing.hashDepositTransaction(Types.UserDepositTransaction)._tx (contracts/libraries/Hashing.sol#21) is not in mixedCase
Parameter Hashing.hashDepositSource(bytes32,uint256)._l1BlockHash (contracts/libraries/Hashing.sol#39) is not in mixedCase
Parameter Hashing.hashDepositSource(bytes32,uint256)._logIndex (contracts/libraries/Hashing.sol#39) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Hashing.sol#62) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Hashing.sol#63) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Hashing.sol#64) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Hashing.sol#65) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Hashing.sol#66) is not in mixedCase
Parameter Hashing.hashCrossDomainMessage(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Hashing.sol#67) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._target (contracts/libraries/Hashing.sol#90) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._sender (contracts/libraries/Hashing.sol#91) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._data (contracts/libraries/Hashing.sol#92) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV0(address,address,bytes,uint256)._nonce (contracts/libraries/Hashing.sol#93) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._nonce (contracts/libraries/Hashing.sol#111) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._sender (contracts/libraries/Hashing.sol#112) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._target (contracts/libraries/Hashing.sol#113) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._value (contracts/libraries/Hashing.sol#114) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._gasLimit (contracts/libraries/Hashing.sol#115) is not in mixedCase
Parameter Hashing.hashCrossDomainMessageV1(uint256,address,address,uint256,uint256,bytes)._data (contracts/libraries/Hashing.sol#116) is not in mixedCase
Parameter Hashing.hashWithdrawal(Types.WithdrawalTransaction)._tx (contracts/libraries/Hashing.sol#138) is not in mixedCase
Parameter Hashing.hashOutputRootProof(Types.OutputRootProof)._outputRootProof (contracts/libraries/Hashing.sol#157) is not in mixedCase
Parameter SafeCall.send(address,uint256,uint256)._target (contracts/libraries/SafeCall.sol#18) is not in mixedCase
Parameter SafeCall.send(address,uint256,uint256)._gas (contracts/libraries/SafeCall.sol#19) is not in mixedCase
Parameter SafeCall.send(address,uint256,uint256)._value (contracts/libraries/SafeCall.sol#20) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._target (contracts/libraries/SafeCall.sol#46) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._gas (contracts/libraries/SafeCall.sol#47) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._value (contracts/libraries/SafeCall.sol#48) is not in mixedCase
Parameter SafeCall.call(address,uint256,uint256,bytes)._calldata (contracts/libraries/SafeCall.sol#49) is not in mixedCase
Parameter SafeCall.hasMinGas(uint256,uint256)._minGas (contracts/libraries/SafeCall.sol#91) is not in mixedCase
Parameter SafeCall.hasMinGas(uint256,uint256)._reservedGas (contracts/libraries/SafeCall.sol#91) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._target (contracts/libraries/SafeCall.sol#113) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._minGas (contracts/libraries/SafeCall.sol#114) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._value (contracts/libraries/SafeCall.sol#115) is not in mixedCase
Parameter SafeCall.callWithMinGas(address,uint256,uint256,bytes)._calldata (contracts/libraries/SafeCall.sol#116) is not in mixedCase
Parameter RLPReader.toRLPItem(bytes)._in (contracts/libraries/rlp/RLPReader.sol#51) is not in mixedCase
Parameter RLPReader.readList(RLPReader.RLPItem)._in (contracts/libraries/rlp/RLPReader.sol#73) is not in mixedCase
Parameter RLPReader.readList(bytes)._in (contracts/libraries/rlp/RLPReader.sol#128) is not in mixedCase
Parameter RLPReader.readBytes(RLPReader.RLPItem)._in (contracts/libraries/rlp/RLPReader.sol#139) is not in mixedCase
Parameter RLPReader.readBytes(bytes)._in (contracts/libraries/rlp/RLPReader.sol#162) is not in mixedCase
Parameter RLPReader.readRawBytes(RLPReader.RLPItem)._in (contracts/libraries/rlp/RLPReader.sol#173) is not in mixedCase
Parameter RLPWriter.writeBytes(bytes)._in (contracts/libraries/rlp/RLPWriter.sol#19) is not in mixedCase
Parameter RLPWriter.writeList(bytes[])._in (contracts/libraries/rlp/RLPWriter.sol#38) is not in mixedCase
Parameter RLPWriter.writeString(string)._in (contracts/libraries/rlp/RLPWriter.sol#50) is not in mixedCase
Parameter RLPWriter.writeAddress(address)._in (contracts/libraries/rlp/RLPWriter.sol#61) is not in mixedCase
Parameter RLPWriter.writeUint(uint256)._in (contracts/libraries/rlp/RLPWriter.sol#72) is not in mixedCase
Parameter RLPWriter.writeBool(bool)._in (contracts/libraries/rlp/RLPWriter.sol#83) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._key (contracts/libraries/trie/MerkleTrie.sol#74) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._value (contracts/libraries/trie/MerkleTrie.sol#75) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._proof (contracts/libraries/trie/MerkleTrie.sol#76) is not in mixedCase
Parameter MerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._root (contracts/libraries/trie/MerkleTrie.sol#77) is not in mixedCase
Parameter MerkleTrie.get(bytes,bytes[],bytes32)._key (contracts/libraries/trie/MerkleTrie.sol#92) is not in mixedCase
Parameter MerkleTrie.get(bytes,bytes[],bytes32)._proof (contracts/libraries/trie/MerkleTrie.sol#93) is not in mixedCase
Parameter MerkleTrie.get(bytes,bytes[],bytes32)._root (contracts/libraries/trie/MerkleTrie.sol#94) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._key (contracts/libraries/trie/SecureMerkleTrie.sol#27) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._value (contracts/libraries/trie/SecureMerkleTrie.sol#28) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._proof (contracts/libraries/trie/SecureMerkleTrie.sol#29) is not in mixedCase
Parameter SecureMerkleTrie.verifyInclusionProof(bytes,bytes,bytes[],bytes32)._root (contracts/libraries/trie/SecureMerkleTrie.sol#30) is not in mixedCase
Parameter SecureMerkleTrie.get(bytes,bytes[],bytes32)._key (contracts/libraries/trie/SecureMerkleTrie.sol#46) is not in mixedCase
Parameter SecureMerkleTrie.get(bytes,bytes[],bytes32)._proof (contracts/libraries/trie/SecureMerkleTrie.sol#47) is not in mixedCase
Parameter SecureMerkleTrie.get(bytes,bytes[],bytes32)._root (contracts/libraries/trie/SecureMerkleTrie.sol#48) is not in mixedCase
Variable Semver.MAJOR_VERSION (contracts/universal/Semver.sol#14) is not in mixedCase
Variable Semver.MINOR_VERSION (contracts/universal/Semver.sol#19) is not in mixedCase
Variable Semver.PATCH_VERSION (contracts/universal/Semver.sol#24) is not in mixedCase
Constant AddressAliasHelper.offset (contracts/vendor/AddressAliasHelper.sol#22) is not in UPPER_CASE_WITH_UNDERSCORES
Function OwnableUpgradeable.__Ownable_init() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#29-31) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#33-35) is not in mixedCase
Variable OwnableUpgradeable.__gap (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#94) is not in mixedCase
Function ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.getL2OutputIndexAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#255)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.computeL2Timestamp(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#347)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.getL2OutputAfter(uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#291)
Variable L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l1BlockNumber (contracts/L1/L2OutputOracle.sol#183) is too similar to L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256)._l2BlockNumber (contracts/L1/L2OutputOracle.sol#181)
Variable L2OutputOracle.SUBMISSION_INTERVAL (contracts/L1/L2OutputOracle.sol#20) is too similar to L2OutputOracle.constructor(uint256,uint256,uint256,uint256,address,address,uint256)._submissionInterval (contracts/L1/L2OutputOracle.sol#91)
Variable RLPReader._decodeLength(RLPReader.RLPItem).firstByteOfContent_scope_0 (contracts/libraries/rlp/RLPReader.sol#243) is too similar to RLPReader._decodeLength(RLPReader.RLPItem).firstByteOfContent_scope_2 (contracts/libraries/rlp/RLPReader.sol#289)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Detectors:
Constants.ESTIMATION_ADDRESS (contracts/libraries/Constants.sol#21) is never used in Constants (contracts/libraries/Constants.sol#12-49)
Constants.DEFAULT_L2_SENDER (contracts/libraries/Constants.sol#28) is never used in Constants (contracts/libraries/Constants.sol#12-49)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
INFO:Slither:0x28a55488fef40005309e2da0040dbe9d300a64ab analyzed (29 contracts with 82 detectors), 307 result(s) found
Slither report for StateSender at `0x28e4F3a7f651294B9564800b2D01f35189A5bFbE`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
INFO:Detectors:
SafeMath.div(uint256,uint256) (crytic-export/etherscan-contracts/0x28e4f3a7f651294b9564800b2d01f35189a5bfbe-StateSender.sol#96-103) is never used and should be removed
SafeMath.mod(uint256,uint256) (crytic-export/etherscan-contracts/0x28e4f3a7f651294b9564800b2d01f35189a5bfbe-StateSender.sol#129-132) is never used and should be removed
SafeMath.mul(uint256,uint256) (crytic-export/etherscan-contracts/0x28e4f3a7f651294b9564800b2d01f35189a5bfbe-StateSender.sol#79-91) is never used and should be removed
SafeMath.sub(uint256,uint256) (crytic-export/etherscan-contracts/0x28e4f3a7f651294b9564800b2d01f35189a5bfbe-StateSender.sol#108-113) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Slither:0x28e4f3a7f651294b9564800b2d01f35189a5bfbe analyzed (3 contracts with 82 detectors), 4 result(s) found
Slither report for TransparentUpgradeableProxy at `0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f` with implementation Inbox at `0x5aED5f8A1e3607476F1f81c3d8fe126deB0aFE94`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f-TransparentUpgradeableProxy' running
INFO:Detectors:
UpgradeableProxy.constructor(address,bytes) (@openzeppelin/contracts/proxy/UpgradeableProxy.sol#24-30) ignores return value by Address.functionDelegateCall(_logic,_data) (@openzeppelin/contracts/proxy/UpgradeableProxy.sol#28)
TransparentUpgradeableProxy.upgradeToAndCall(address,bytes) (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#116-119) ignores return value by Address.functionDelegateCall(newImplementation,data) (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#118)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Modifier TransparentUpgradeableProxy.ifAdmin() (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#53-59) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Proxy._delegate(address) (@openzeppelin/contracts/proxy/Proxy.sol#21-41) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/Proxy.sol#23-40)
TransparentUpgradeableProxy._admin() (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#124-130) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#127-129)
TransparentUpgradeableProxy._setAdmin(address) (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#135-142) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol#139-141)
UpgradeableProxy._implementation() (@openzeppelin/contracts/proxy/UpgradeableProxy.sol#47-53) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/UpgradeableProxy.sol#50-52)
UpgradeableProxy._setImplementation(address) (@openzeppelin/contracts/proxy/UpgradeableProxy.sol#68-77) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/UpgradeableProxy.sol#74-76)
Address.isContract(address) (@openzeppelin/contracts/utils/Address.sol#26-35) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#33)
Address._verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#171-188) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#180-183)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#79-81) is never used and should be removed
Address.functionCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#89-91) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#104-106) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#114-121) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#129-131) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#139-145) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#53-59) 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#53-59):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#57)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#114-121):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#119)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#139-145):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#143)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#163-169):
- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#167)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Slither:0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f analyzed (4 contracts with 82 detectors), 21 result(s) found
Slither report for Inbox at `0x5aED5f8A1e3607476F1f81c3d8fe126deB0aFE94`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5aed5f8a1e3607476f1f81c3d8fe126deb0afe94-Inbox' running
INFO:Detectors:
GasRefundEnabled.refundsGas(IGasRefunder) (src/libraries/IGasRefunder.sol#20-41) ignores return value by gasRefunder.onGasSpent(address(msg.sender),startGasLeft - gasleft()(),calldataSize) (src/libraries/IGasRefunder.sol#39)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Reentrancy in Inbox._deliverMessage(uint8,address,bytes) (src/bridge/Inbox.sol#608-618):
External calls:
- msgNum = deliverToBridge(_kind,_sender,keccak256(bytes)(_messageData)) (src/bridge/Inbox.sol#615)
- bridge.enqueueDelayedMessage{value: msg.value}(kind,AddressAliasHelper.applyL1ToL2Alias(sender),messageDataHash) (src/bridge/Inbox.sol#625-630)
Event emitted after the call(s):
- InboxMessageDelivered(msgNum,_messageData) (src/bridge/Inbox.sol#616)
Reentrancy in Inbox.sendL2MessageFromOrigin(bytes) (src/bridge/Inbox.sol#130-144):
External calls:
- msgNum = deliverToBridge(L2_MSG,msg.sender,keccak256(bytes)(messageData)) (src/bridge/Inbox.sol#141)
- bridge.enqueueDelayedMessage{value: msg.value}(kind,AddressAliasHelper.applyL1ToL2Alias(sender),messageDataHash) (src/bridge/Inbox.sol#625-630)
Event emitted after the call(s):
- InboxMessageDeliveredFromOrigin(msgNum) (src/bridge/Inbox.sol#142)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
AddressUpgradeable.functionCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#85-87) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#95-101) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-120) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-149) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) is never used and should be removed
ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed
ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
Messages.accumulateInboxMessage(bytes32,bytes32) (src/bridge/Messages.sol#31-37) is never used and should be removed
Messages.messageHash(uint8,address,uint64,uint64,uint256,uint256,bytes32) (src/bridge/Messages.sol#8-29) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Function PausableUpgradeable.__Pausable_init() (@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#34-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#102) is not in mixedCase
Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-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#36) is not in mixedCase
Function ISequencerInbox.HEADER_LENGTH() (src/bridge/ISequencerInbox.sol#61) is not in mixedCase
Function ISequencerInbox.DATA_AUTHENTICATED_FLAG() (src/bridge/ISequencerInbox.sol#66) is not in mixedCase
Parameter Inbox.setAllowListEnabled(bool)._allowListEnabled (src/bridge/Inbox.sol#70) is not in mixedCase
Parameter Inbox.initialize(IBridge,ISequencerInbox)._bridge (src/bridge/Inbox.sol#115) is not in mixedCase
Parameter Inbox.initialize(IBridge,ISequencerInbox)._sequencerInbox (src/bridge/Inbox.sol#115) is not in mixedCase
Variable DelegateCallAware.__self (src/libraries/DelegateCallAware.sol#12) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x5aed5f8a1e3607476f1f81c3d8fe126deb0afe94 analyzed (16 contracts with 82 detectors), 32 result(s) found
Slither report for CanonicalTransactionChain at `0x5E4e65926BA27467555EB562121fac00D24E9dD2`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5e4e65926ba27467555eb562121fac00d24e9dd2-CanonicalTransactionChain' running
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 82 detectors), 127 result(s) found
Slither report for SystemConfig at `0x5efa852e92800D1C982711761e45c3FE39a2b6D8`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5efa852e92800d1c982711761e45c3fe39a2b6d8-SystemConfig' running
INFO:Detectors:
Initializable is re-used:
- Initializable (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#57-138)
- Initializable (node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol#57-138)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused
INFO:Detectors:
ResourceMetering._metered(uint64,uint256) (contracts/L1/ResourceMetering.sol#92-164) performs a multiplication on the result of a division:
- targetResourceLimit = int256(uint256(config.maxResourceLimit)) / int256(uint256(config.elasticityMultiplier)) (contracts/L1/ResourceMetering.sol#97-98)
- baseFeeDelta = (int256(uint256(params.prevBaseFee)) * gasUsedDelta) / (targetResourceLimit * int256(uint256(config.baseFeeMaxChangeDenominator))) (contracts/L1/ResourceMetering.sol#105-106)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#117)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#121)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#122)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#124)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#125)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#126)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) performs a multiplication on the result of a division:
- prod0 = prod0 / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#105)
- result = prod0 * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#132)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- y = ((y * x) >> 96) + 57155421227552351082224309758442 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#60)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- p = p * x + (4385272521454847904659076985693276 << 96) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#63)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 50020603652535783019961831881945 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#67)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) - 533845033583426703283633433725380 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#68)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 3604857256930695427073651918091429 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#69)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) - 14423608567350463180887372962807573 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#70)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) performs a multiplication on the result of a division:
- x = (x << 78) / 5 ** 18 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#47)
- q = ((q * x) >> 96) + 26449188498355588339934803723976023 (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#71)
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) performs a multiplication on the result of a division:
- x = xxRound_rpow_asm_0 / scalar (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#253)
- zx_rpow_asm_0 = z * x (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#258)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
INFO:Detectors:
SystemConfig.constructor(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#94) shadows:
- OwnableUpgradeable._owner (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#126) shadows:
- OwnableUpgradeable._owner (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#22) (state variable)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
SystemConfig.unsafeBlockSigner() (contracts/L1/SystemConfig.sol#166-173) uses assembly
- INLINE ASM (contracts/L1/SystemConfig.sol#169-171)
SystemConfig._setUnsafeBlockSigner(address) (contracts/L1/SystemConfig.sol#232-237) uses assembly
- INLINE ASM (contracts/L1/SystemConfig.sol#234-236)
AddressUpgradeable.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Address.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Address.sol#213-216)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#66-70)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#86-93)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#100-109)
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#73-78)
FixedPointMathLib.lnWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#92-150) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#126-131)
FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#156-173) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#161-172)
FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#175-194) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#180-193)
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#201-281)
FixedPointMathLib.sqrt(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#288-350) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#289-349)
FixedPointMathLib.log2(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#352-365) uses assembly
- INLINE ASM (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#355-364)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.functionCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#85-87) is never used and should be removed
Address.functionCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#95-101) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#114-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#128-139) is never used and should be removed
Address.functionDelegateCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#184-193) is never used and should be removed
Address.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#147-149) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#157-166) is never used and should be removed
Address.isContract(address) (node_modules/@openzeppelin/contracts/utils/Address.sol#36-42) is never used and should be removed
Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#60-65) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#201-221) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#85-87) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#95-101) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-120) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-149) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) is never used and should be removed
Arithmetic.cdexp(int256,int256,int256) (contracts/libraries/Arithmetic.sol#39-47) is never used and should be removed
Arithmetic.clamp(int256,int256,int256) (contracts/libraries/Arithmetic.sol#21-27) is never used and should be removed
Burn.eth(uint256) (contracts/libraries/Burn.sol#14-16) is never used and should be removed
Burn.gas(uint256) (contracts/libraries/Burn.sol#23-29) is never used and should be removed
ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed
ContextUpgradeable._msgData() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
FixedPointMathLib.divWadDown(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#21-23) is never used and should be removed
FixedPointMathLib.divWadUp(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#25-27) is never used and should be removed
FixedPointMathLib.expWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#34-90) is never used and should be removed
FixedPointMathLib.lnWad(int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#92-150) is never used and should be removed
FixedPointMathLib.log2(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#352-365) is never used and should be removed
FixedPointMathLib.mulDivDown(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#156-173) is never used and should be removed
FixedPointMathLib.mulDivUp(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#175-194) is never used and should be removed
FixedPointMathLib.mulWadDown(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#13-15) is never used and should be removed
FixedPointMathLib.mulWadUp(uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#17-19) is never used and should be removed
FixedPointMathLib.powWad(int256,int256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#29-32) is never used and should be removed
FixedPointMathLib.rpow(uint256,uint256,uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#196-282) is never used and should be removed
FixedPointMathLib.sqrt(uint256) (node_modules/@rari-capital/solmate/src/utils/FixedPointMathLib.sol#288-350) is never used and should be removed
Initializable._disableInitializers() (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#131-137) is never used and should be removed
Math.average(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#34-37) is never used and should be removed
Math.ceilDiv(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#45-48) is never used and should be removed
Math.max(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#19-21) is never used and should be removed
Math.min(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#26-28) is never used and should be removed
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#55-135) is never used and should be removed
Math.mulDiv(uint256,uint256,uint256,Math.Rounding) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#140-151) is never used and should be removed
Math.sqrt(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#158-214) is never used and should be removed
Math.sqrt(uint256,Math.Rounding) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#219-225) is never used and should be removed
ResourceMetering.__ResourceMetering_init() (contracts/L1/ResourceMetering.sol#179-185) is never used and should be removed
ResourceMetering._metered(uint64,uint256) (contracts/L1/ResourceMetering.sol#92-164) is never used and should be removed
SignedMath.abs(int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#37-42) is never used and should be removed
SignedMath.average(int256,int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#28-32) is never used and should be removed
SignedMath.max(int256,int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#13-15) is never used and should be removed
SignedMath.min(int256,int256) (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#20-22) is never used and should be removed
Strings.toHexString(address) (node_modules/@openzeppelin/contracts/utils/Strings.sol#72-74) is never used and should be removed
Strings.toHexString(uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#41-52) is never used and should be removed
Strings.toHexString(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#57-67) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in AddressUpgradeable.sendValue(address,uint256) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Low level call in Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#60-65):
- (success) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts/utils/Address.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#137)
Low level call in Address.functionStaticCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#157-166):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (node_modules/@openzeppelin/contracts/utils/Address.sol#184-193):
- (success,returndata) = target.delegatecall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#191)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Function ResourceMetering.__ResourceMetering_init() (contracts/L1/ResourceMetering.sol#179-185) is not in mixedCase
Variable ResourceMetering.__gap (contracts/L1/ResourceMetering.sol#68) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._owner (contracts/L1/SystemConfig.sol#126) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._overhead (contracts/L1/SystemConfig.sol#127) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._scalar (contracts/L1/SystemConfig.sol#128) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._batcherHash (contracts/L1/SystemConfig.sol#129) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._gasLimit (contracts/L1/SystemConfig.sol#130) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._unsafeBlockSigner (contracts/L1/SystemConfig.sol#131) is not in mixedCase
Parameter SystemConfig.initialize(address,uint256,uint256,bytes32,uint64,address,ResourceMetering.ResourceConfig)._config (contracts/L1/SystemConfig.sol#132) is not in mixedCase
Parameter SystemConfig.setUnsafeBlockSigner(address)._unsafeBlockSigner (contracts/L1/SystemConfig.sol#180) is not in mixedCase
Parameter SystemConfig.setBatcherHash(bytes32)._batcherHash (contracts/L1/SystemConfig.sol#192) is not in mixedCase
Parameter SystemConfig.setGasConfig(uint256,uint256)._overhead (contracts/L1/SystemConfig.sol#205) is not in mixedCase
Parameter SystemConfig.setGasConfig(uint256,uint256)._scalar (contracts/L1/SystemConfig.sol#205) is not in mixedCase
Parameter SystemConfig.setGasLimit(uint64)._gasLimit (contracts/L1/SystemConfig.sol#218) is not in mixedCase
Parameter SystemConfig.setResourceConfig(ResourceMetering.ResourceConfig)._config (contracts/L1/SystemConfig.sol#256) is not in mixedCase
Variable SystemConfig._resourceConfig (contracts/L1/SystemConfig.sol#71) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._value (contracts/libraries/Arithmetic.sol#22) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._min (contracts/libraries/Arithmetic.sol#23) is not in mixedCase
Parameter Arithmetic.clamp(int256,int256,int256)._max (contracts/libraries/Arithmetic.sol#24) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._coefficient (contracts/libraries/Arithmetic.sol#40) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._denominator (contracts/libraries/Arithmetic.sol#41) is not in mixedCase
Parameter Arithmetic.cdexp(int256,int256,int256)._exponent (contracts/libraries/Arithmetic.sol#42) is not in mixedCase
Parameter Burn.eth(uint256)._amount (contracts/libraries/Burn.sol#14) is not in mixedCase
Parameter Burn.gas(uint256)._amount (contracts/libraries/Burn.sol#23) is not in mixedCase
Variable Semver.MAJOR_VERSION (contracts/universal/Semver.sol#14) is not in mixedCase
Variable Semver.MINOR_VERSION (contracts/universal/Semver.sol#19) is not in mixedCase
Variable Semver.PATCH_VERSION (contracts/universal/Semver.sol#24) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#29-31) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#33-35) is not in mixedCase
Variable OwnableUpgradeable.__gap (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#94) is not in mixedCase
Function ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
ResourceMetering (contracts/L1/ResourceMetering.sol#15-186) does not implement functions:
- ResourceMetering._resourceConfig() (contracts/L1/ResourceMetering.sol#172)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions
INFO:Detectors:
ResourceMetering.__gap (contracts/L1/ResourceMetering.sol#68) is never used in ResourceMetering (contracts/L1/ResourceMetering.sol#15-186)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
INFO:Slither:0x5efa852e92800d1c982711761e45c3fe39a2b6d8 analyzed (16 contracts with 82 detectors), 130 result(s) found
Slither report for CrosschainForwarderOptimism at `0x5f5C02875a8e9B5A26fbd09040ABCfDeb2AA6711`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x5f5c02875a8e9b5a26fbd09040abcfdeb2aa6711-CrosschainForwarderOptimism' running
INFO:Slither:0x5f5c02875a8e9b5a26fbd09040abcfdeb2aa6711 analyzed (5 contracts with 82 detectors), 0 result(s) found
Slither report for AccessControlledOffchainAggregator at `0x785433d8b06D77D68dF6be63944742130A4530d1`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x785433d8b06d77d68df6be63944742130a4530d1-AccessControlledOffchainAggregator' running
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:
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).counts (OffchainAggregatorBilling.sol#162) is a local variable never initialized
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
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.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.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) 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.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
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)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) 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)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0x785433d8b06d77d68df6be63944742130a4530d1 analyzed (12 contracts with 82 detectors), 120 result(s) found
Slither report for InitializableAdminUpgradeabilityProxy (Aave) at `0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9` with implementation AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9-InitializableAdminUpgradeabilityProxy' running
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 82 detectors), 57 result(s) found
Slither report for TransparentUpgradeableProxy at `0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a` with implementation Bridge at `0x1066CEcC8880948FE55e427E94F1FF221d626591`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x8315177ab297ba92a06054ce80a67ed4dbd7ed3a-TransparentUpgradeableProxy' running
INFO:Detectors:
ERC1967Upgrade._upgradeToAndCall(address,bytes,bool) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#65-74) ignores return value by Address.functionDelegateCall(newImplementation,data) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#72)
ERC1967Upgrade._upgradeBeaconToAndCall(address,bytes,bool) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#174-184) ignores return value by Address.functionDelegateCall(IBeacon(newBeacon).implementation(),data) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#182)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Modifier TransparentUpgradeableProxy.ifAdmin() (@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#46-52) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Proxy._delegate(address) (@openzeppelin/contracts/proxy/Proxy.sol#22-45) uses assembly
- INLINE ASM (@openzeppelin/contracts/proxy/Proxy.sol#23-44)
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#213-216)
StorageSlot.getAddressSlot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#52-56) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/StorageSlot.sol#53-55)
StorageSlot.getBooleanSlot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#61-65) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/StorageSlot.sol#62-64)
StorageSlot.getBytes32Slot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#70-74) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/StorageSlot.sol#71-73)
StorageSlot.getUint256Slot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#79-83) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/StorageSlot.sol#80-82)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
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.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
ERC1967Upgrade._getBeacon() (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#152-154) is never used and should be removed
ERC1967Upgrade._setBeacon(address) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#159-166) is never used and should be removed
ERC1967Upgrade._upgradeBeaconToAndCall(address,bytes,bool) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#174-184) is never used and should be removed
ERC1967Upgrade._upgradeToAndCallUUPS(address,bytes,bool) (@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol#81-99) is never used and should be removed
StorageSlot.getBooleanSlot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#61-65) is never used and should be removed
StorageSlot.getBytes32Slot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#70-74) is never used and should be removed
StorageSlot.getUint256Slot(bytes32) (@openzeppelin/contracts/utils/StorageSlot.sol#79-83) is never used and should be removed
TransparentUpgradeableProxy._admin() (@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#114-116) 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)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
TransparentUpgradeableProxy (@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#29-125) should inherit from IBeacon (@openzeppelin/contracts/proxy/beacon/IBeacon.sol#9-16)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance
INFO:Slither:0x8315177ab297ba92a06054ce80a67ed4dbd7ed3a analyzed (8 contracts with 82 detectors), 29 result(s) found
Slither report for AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x96f68837877fd0414b55050c9e794aecdbcfca59-AaveTokenV2' running
Warning: src/contracts/AaveTokenV2.sol:453:18: Warning: This declaration shadows an existing declaration.
constructor (string memory name, string memory symbol) public {
^----------------^
src/contracts/AaveTokenV2.sol:462:5: The shadowed declaration is here:
function name() public view returns (string memory) {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:453:38: Warning: This declaration shadows an existing declaration.
constructor (string memory name, string memory symbol) public {
^------------------^
src/contracts/AaveTokenV2.sol:470:5: The shadowed declaration is here:
function symbol() public view returns (string memory) {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:35:3: Warning: Interface functions are implicitly "virtual"
function delegateByType(address delegatee, DelegationType delegationType) external virtual;
^-----------------------------------------------------------------------------------------^
Warning: src/contracts/AaveTokenV2.sol:40:3: Warning: Interface functions are implicitly "virtual"
function delegate(address delegatee) external virtual;
^----------------------------------------------------^
Warning: src/contracts/AaveTokenV2.sol:45:3: Warning: Interface functions are implicitly "virtual"
function getDelegateeByType(address delegator, DelegationType delegationType)
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:56:3: Warning: Interface functions are implicitly "virtual"
function getPowerCurrent(address user, DelegationType delegationType)
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:66:3: Warning: Interface functions are implicitly "virtual"
function getPowerAtBlock(
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:75:3: Warning: Interface functions are implicitly "virtual"
function totalSupplyAt(uint256 blockNumber) external virtual view returns (uint256);
^----------------------------------------------------------------------------------^
Warning: src/contracts/AaveTokenV2.sol:453:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor (string memory name, string memory symbol) public {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:1164:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
constructor() ERC20(NAME, SYMBOL) public {
^ (Relevant source part starts here and spans across multiple lines).
Warning: src/contracts/AaveTokenV2.sol:913:26: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
function totalSupplyAt(uint256 blockNumber) external override view returns (uint256) {
^-----------------^
Warning: src/contracts/AaveTokenV2.sol:1079:5: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
uint128 oldValue,
^--------------^
INFO:Detectors:
AaveTokenV2._votingSnapshots (src/contracts/AaveTokenV2.sol#1137) is never initialized. It is used in:
- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
AaveTokenV2._votingSnapshotsCounts (src/contracts/AaveTokenV2.sol#1139) is never initialized. It is used in:
- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
AaveTokenV2._aaveGovernance (src/contracts/AaveTokenV2.sol#1144) is never initialized. It is used in:
- AaveTokenV2._beforeTokenTransfer(address,address,uint256) (src/contracts/AaveTokenV2.sol#1236-1266)
AaveTokenV2.DOMAIN_SEPARATOR (src/contracts/AaveTokenV2.sol#1146) is never initialized. It is used in:
- AaveTokenV2.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1194-1218)
- AaveTokenV2.delegateByTypeBySig(address,IGovernancePowerDelegationToken.DelegationType,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1299-1317)
- AaveTokenV2.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1328-1344)
AaveTokenV2._propositionPowerSnapshots (src/contracts/AaveTokenV2.sol#1157) is never initialized. It is used in:
- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
AaveTokenV2._propositionPowerSnapshotsCounts (src/contracts/AaveTokenV2.sol#1158) is never initialized. It is used in:
- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables
INFO:Detectors:
GovernancePowerDelegationERC20._searchByBlockNumber(mapping(address => mapping(uint256 => GovernancePowerDelegationERC20.Snapshot)),mapping(address => uint256),address,uint256) (src/contracts/AaveTokenV2.sol#1012-1050) uses a dangerous strict equality:
- snapshot.blockNumber == blockNumber (src/contracts/AaveTokenV2.sol#1041)
GovernancePowerDelegationERC20._writeSnapshot(mapping(address => mapping(uint256 => GovernancePowerDelegationERC20.Snapshot)),mapping(address => uint256),address,uint128,uint128) (src/contracts/AaveTokenV2.sol#1075-1097) uses a dangerous strict equality:
- ownerSnapshotsCount != 0 && snapshotsOwner[ownerSnapshotsCount - 1].blockNumber == currentBlock (src/contracts/AaveTokenV2.sol#1089-1090)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
ERC20.constructor(string,string).name (src/contracts/AaveTokenV2.sol#453) shadows:
- ERC20.name() (src/contracts/AaveTokenV2.sol#462-464) (function)
ERC20.constructor(string,string).symbol (src/contracts/AaveTokenV2.sol#453) shadows:
- ERC20.symbol() (src/contracts/AaveTokenV2.sol#470-472) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Reentrancy in AaveTokenV2.initialize(address[],uint256[],address,address,uint256) (src/contracts/AaveTokenV2.sol#1171-1181):
External calls:
- IERC20(tokens[i]).safeTransfer(aaveMerkleDistributor,amounts[i]) (src/contracts/AaveTokenV2.sol#1175)
Event emitted after the call(s):
- TokensRescued(tokens[i],aaveMerkleDistributor,amounts[i]) (src/contracts/AaveTokenV2.sol#1177)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
AaveTokenV2.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1194-1218) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,INVALID_EXPIRATION) (src/contracts/AaveTokenV2.sol#1205)
AaveTokenV2.delegateByTypeBySig(address,IGovernancePowerDelegationToken.DelegationType,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1299-1317) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= expiry,INVALID_EXPIRATION) (src/contracts/AaveTokenV2.sol#1315)
AaveTokenV2.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1328-1344) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= expiry,INVALID_EXPIRATION) (src/contracts/AaveTokenV2.sol#1341)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address.isContract(address) (src/contracts/AaveTokenV2.sol#368-379) uses assembly
- INLINE ASM (src/contracts/AaveTokenV2.sol#375-377)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.sendValue(address,uint256) (src/contracts/AaveTokenV2.sol#397-403) is never used and should be removed
Context._msgData() (src/contracts/AaveTokenV2.sol#94-97) is never used and should be removed
ERC20._beforeTokenTransfer(address,address,uint256) (src/contracts/AaveTokenV2.sol#702) is never used and should be removed
ERC20._burn(address,uint256) (src/contracts/AaveTokenV2.sol#646-654) is never used and should be removed
ERC20._mint(address,uint256) (src/contracts/AaveTokenV2.sol#625-633) is never used and should be removed
ERC20._setupDecimals(uint8) (src/contracts/AaveTokenV2.sol#684-686) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (src/contracts/AaveTokenV2.sol#745-755) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (src/contracts/AaveTokenV2.sol#736-743) is never used and should be removed
SafeMath.div(uint256,uint256) (src/contracts/AaveTokenV2.sol#280-282) is never used and should be removed
SafeMath.div(uint256,uint256,string) (src/contracts/AaveTokenV2.sol#295-306) is never used and should be removed
SafeMath.mod(uint256,uint256) (src/contracts/AaveTokenV2.sol#319-321) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (src/contracts/AaveTokenV2.sol#334-341) is never used and should be removed
SafeMath.mul(uint256,uint256) (src/contracts/AaveTokenV2.sol#255-267) 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) (src/contracts/AaveTokenV2.sol#397-403):
- (success) = recipient.call{value: amount}() (src/contracts/AaveTokenV2.sol#401)
Low level call in SafeERC20.callOptionalReturn(IERC20,bytes) (src/contracts/AaveTokenV2.sol#757-769):
- (success,returndata) = address(token).call(data) (src/contracts/AaveTokenV2.sol#761)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Variable ERC20._name (src/contracts/AaveTokenV2.sol#440) is not in mixedCase
Variable ERC20._symbol (src/contracts/AaveTokenV2.sol#441) is not in mixedCase
Variable VersionedInitializable.______gap (src/contracts/AaveTokenV2.sol#809) is not in mixedCase
Variable AaveTokenV2._nonces (src/contracts/AaveTokenV2.sol#1135) is not in mixedCase
Variable AaveTokenV2._votingSnapshots (src/contracts/AaveTokenV2.sol#1137) is not in mixedCase
Variable AaveTokenV2._votingSnapshotsCounts (src/contracts/AaveTokenV2.sol#1139) is not in mixedCase
Variable AaveTokenV2._aaveGovernance (src/contracts/AaveTokenV2.sol#1144) is not in mixedCase
Variable AaveTokenV2.DOMAIN_SEPARATOR (src/contracts/AaveTokenV2.sol#1146) is not in mixedCase
Variable AaveTokenV2._votingDelegates (src/contracts/AaveTokenV2.sol#1155) is not in mixedCase
Variable AaveTokenV2._propositionPowerSnapshots (src/contracts/AaveTokenV2.sol#1157) is not in mixedCase
Variable AaveTokenV2._propositionPowerSnapshotsCounts (src/contracts/AaveTokenV2.sol#1158) is not in mixedCase
Variable AaveTokenV2._propositionPowerDelegates (src/contracts/AaveTokenV2.sol#1160) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Redundant expression "this (src/contracts/AaveTokenV2.sol#95)" inContext (src/contracts/AaveTokenV2.sol#89-98)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
INFO:Detectors:
AaveTokenV2.DECIMALS (src/contracts/AaveTokenV2.sol#1130) is never used in AaveTokenV2 (src/contracts/AaveTokenV2.sol#1124-1346)
AaveTokenV2.EIP712_DOMAIN (src/contracts/AaveTokenV2.sol#1148-1150) is never used in AaveTokenV2 (src/contracts/AaveTokenV2.sol#1124-1346)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
INFO:Slither:0x96f68837877fd0414b55050c9e794aecdbcfca59 analyzed (11 contracts with 82 detectors), 45 result(s) found
Slither report for EthRobotKeeper at `0x9EEa1Ba822d204077e9f90a92D30432417184587`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x9eea1ba822d204077e9f90a92d30432417184587-EthRobotKeeper' running
INFO:Detectors:
EthRobotKeeper._squeezeAndShuffleActions(IEthRobotKeeper.ActionWithId[],uint256) (src/contracts/EthRobotKeeper.sol#242-264) uses a weak PRNG: "n = i + (randomNumber % (actions.length - i)) (src/contracts/EthRobotKeeper.sol#257)"
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG
INFO:Detectors:
EthRobotKeeper.performUpkeep(bytes).isActionPerformed (src/contracts/EthRobotKeeper.sol#117) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
EthRobotKeeper.constructor(address).governanceV2 (src/contracts/EthRobotKeeper.sol#34) lacks a zero-check on :
- GOVERNANCE_V2 = governanceV2 (src/contracts/EthRobotKeeper.sol#35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
EthRobotKeeper.checkUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#42-108) has external calls inside a loop: proposalState = IAaveGovernanceV2(GOVERNANCE_V2).getProposalState(proposalId) (src/contracts/EthRobotKeeper.sol#57-58)
EthRobotKeeper.checkUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#42-108) has external calls inside a loop: proposal = IAaveGovernanceV2(GOVERNANCE_V2).getProposalById(proposalId) (src/contracts/EthRobotKeeper.sol#59-60)
EthRobotKeeper._canProposalBeCancelled(IAaveGovernanceV2.ProposalState,IAaveGovernanceV2.ProposalWithoutVotes) (src/contracts/EthRobotKeeper.sol#216-234) has external calls inside a loop: proposalValidator.validateProposalCancellation(IAaveGovernanceV2(GOVERNANCE_V2),proposal.creator,block.number - 1) (src/contracts/EthRobotKeeper.sol#228-233)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: proposal = IAaveGovernanceV2(GOVERNANCE_V2).getProposalById(proposalId) (src/contracts/EthRobotKeeper.sol#124-125)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: proposalState = IAaveGovernanceV2(GOVERNANCE_V2).getProposalState(proposalId) (src/contracts/EthRobotKeeper.sol#126-127)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: IAaveGovernanceV2(GOVERNANCE_V2).cancel(proposalId) (src/contracts/EthRobotKeeper.sol#132)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: IAaveGovernanceV2(GOVERNANCE_V2).queue(proposalId) (src/contracts/EthRobotKeeper.sol#136)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: IAaveGovernanceV2(GOVERNANCE_V2).execute(proposalId) (src/contracts/EthRobotKeeper.sol#142)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149):
External calls:
- IAaveGovernanceV2(GOVERNANCE_V2).cancel(proposalId) (src/contracts/EthRobotKeeper.sol#132)
- IAaveGovernanceV2(GOVERNANCE_V2).queue(proposalId) (src/contracts/EthRobotKeeper.sol#136)
- IAaveGovernanceV2(GOVERNANCE_V2).execute(proposalId) (src/contracts/EthRobotKeeper.sol#142)
Event emitted after the call(s):
- ActionSucceeded(proposalId,action) (src/contracts/EthRobotKeeper.sol#134)
- ActionSucceeded(proposalId,action) (src/contracts/EthRobotKeeper.sol#138)
- ActionSucceeded(proposalId,action) (src/contracts/EthRobotKeeper.sol#144)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
EthRobotKeeper._canProposalBeExecuted(IAaveGovernanceV2.ProposalState,IAaveGovernanceV2.ProposalWithoutVotes) (src/contracts/EthRobotKeeper.sol#197-208) uses timestamp for comparisons
Dangerous comparisons:
- proposalState == IAaveGovernanceV2.ProposalState.Queued && block.timestamp >= proposal.executionTime (src/contracts/EthRobotKeeper.sol#202-203)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
EthRobotKeeper.checkUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#42-108) uses assembly
- INLINE ASM (src/contracts/EthRobotKeeper.sol#92-94)
- INLINE ASM (src/contracts/EthRobotKeeper.sol#101-103)
EthRobotKeeper._squeezeAndShuffleActions(IEthRobotKeeper.ActionWithId[],uint256) (src/contracts/EthRobotKeeper.sol#242-264) uses assembly
- INLINE ASM (src/contracts/EthRobotKeeper.sol#248-250)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Context._msgData() (lib/solidity-utils/src/contracts/oz-common/Context.sol#22-24) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Function IExecutorWithTimelock.GRACE_PERIOD() (lib/aave-address-book/src/AaveGovernanceV2.sol#159) is not in mixedCase
Function IExecutorWithTimelock.MINIMUM_DELAY() (lib/aave-address-book/src/AaveGovernanceV2.sol#165) is not in mixedCase
Function IExecutorWithTimelock.MAXIMUM_DELAY() (lib/aave-address-book/src/AaveGovernanceV2.sol#171) is not in mixedCase
Function IAaveGovernanceV2.__abdicate() (lib/aave-address-book/src/AaveGovernanceV2.sol#444) is not in mixedCase
Variable EthRobotKeeper.GOVERNANCE_V2 (src/contracts/EthRobotKeeper.sol#19) is not in mixedCase
Variable EthRobotKeeper._disabledProposals (src/contracts/EthRobotKeeper.sol#27) is not in mixedCase
Function IAaveCLRobotOperator.LINK_TOKEN() (src/interfaces/IAaveCLRobotOperator.sol#133) is not in mixedCase
Function IAaveCLRobotOperator.KEEPER_REGISTRY() (src/interfaces/IAaveCLRobotOperator.sol#139) is not in mixedCase
Function IAaveCLRobotOperator.KEEPER_REGISTRAR() (src/interfaces/IAaveCLRobotOperator.sol#145) is not in mixedCase
Function IEthRobotKeeper.GOVERNANCE_V2() (src/interfaces/IEthRobotKeeper.sol#58) is not in mixedCase
Function IEthRobotKeeper.MAX_ACTIONS() (src/interfaces/IEthRobotKeeper.sol#65) is not in mixedCase
Function IEthRobotKeeper.MAX_SKIP() (src/interfaces/IEthRobotKeeper.sol#71) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x9eea1ba822d204077e9f90a92d30432417184587 analyzed (11 contracts with 82 detectors), 28 result(s) found
Slither report for GovernanceStrategy at `0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
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 82 detectors), 4 result(s) found
Slither report for AccessControlledOffchainAggregator at `0xbba12740DE905707251525477bAD74985DeC46D2`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xbba12740de905707251525477bad74985dec46d2-AccessControlledOffchainAggregator' running
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:
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).gas (OffchainAggregatorBilling.sol#163) is a local variable never initialized
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).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.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.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) 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.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.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) 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)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0xbba12740de905707251525477bad74985dec46d2 analyzed (12 contracts with 82 detectors), 120 result(s) found
Slither report for Proxy at `0xbEb5Fc579115071764c7423A4f12eDde41f106Ed` with implementation OptimismPortal at `0x28a55488fef40005309e2DA0040DbE9D300a64AB`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xbeb5fc579115071764c7423a4f12edde41f106ed-Proxy' running
INFO:Detectors:
Proxy.upgradeToAndCall(address,bytes)._implementation (contracts/universal/Proxy.sol#98) lacks a zero-check on :
- (success,returndata) = _implementation.delegatecall(_data) (contracts/universal/Proxy.sol#106)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Modifier Proxy.proxyCallIfNotAdmin() (contracts/universal/Proxy.sol#48-55) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Proxy._setImplementation(address) (contracts/universal/Proxy.sol#143-148) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#144-146)
Proxy._changeAdmin(address) (contracts/universal/Proxy.sol#155-161) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#157-159)
Proxy._doProxyCall() (contracts/universal/Proxy.sol#166-190) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#170-189)
Proxy._getImplementation() (contracts/universal/Proxy.sol#197-203) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#199-201)
Proxy._getAdmin() (contracts/universal/Proxy.sol#210-216) uses assembly
- INLINE ASM (contracts/universal/Proxy.sol#212-214)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Low level call in Proxy.upgradeToAndCall(address,bytes) (contracts/universal/Proxy.sol#98-109):
- (success,returndata) = _implementation.delegatecall(_data) (contracts/universal/Proxy.sol#106)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Parameter Proxy.upgradeTo(address)._implementation (contracts/universal/Proxy.sol#87) is not in mixedCase
Parameter Proxy.upgradeToAndCall(address,bytes)._implementation (contracts/universal/Proxy.sol#98) is not in mixedCase
Parameter Proxy.upgradeToAndCall(address,bytes)._data (contracts/universal/Proxy.sol#98) is not in mixedCase
Parameter Proxy.changeAdmin(address)._admin (contracts/universal/Proxy.sol#116) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0xbeb5fc579115071764c7423a4f12edde41f106ed analyzed (1 contracts with 82 detectors), 12 result(s) found
Slither report for EACAggregatorProxy at `0xDC530D9457755926550b59e8ECcdaE7624181557`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
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.proposedGetRoundData(uint80) (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#353-367) ignores return value by proposedAggregator.getRoundData(_roundId) (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#366)
AggregatorProxy.proposedLatestRoundData() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#380-394) ignores return value by proposedAggregator.latestRoundData() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#393)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
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 82 detectors), 34 result(s) found
Slither report for Lib_AddressManager at `0xdE1FCfB0851916CA5101820A69b13a4E276bd81F`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xde1fcfb0851916ca5101820a69b13a4e276bd81f-Lib_AddressManager' running
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 82 detectors), 6 result(s) found
Slither report for FxRoot at `0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
INFO:Detectors:
FxRoot.setFxChild(address)._fxChild (crytic-export/etherscan-contracts/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2-FxRoot.sol#24) lacks a zero-check on :
- fxChild = _fxChild (crytic-export/etherscan-contracts/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2-FxRoot.sol#26)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Parameter FxRoot.setFxChild(address)._fxChild (crytic-export/etherscan-contracts/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2-FxRoot.sol#24) is not in mixedCase
Parameter FxRoot.sendMessageToChild(address,bytes)._receiver (crytic-export/etherscan-contracts/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2-FxRoot.sol#29) is not in mixedCase
Parameter FxRoot.sendMessageToChild(address,bytes)._data (crytic-export/etherscan-contracts/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2-FxRoot.sol#29) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
FxRoot.stateSender (crytic-export/etherscan-contracts/0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2-FxRoot.sol#17) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
INFO:Slither:0xfe5e5d361b2ad62c541bab87c45a0b9b018389a2 analyzed (3 contracts with 82 detectors), 5 result(s) found