Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SHIP-3004] ZKSync: implement uptime feed validator #14245

Merged
Merged
Show file tree
Hide file tree
Changes from 70 commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
2ff3892
intial commit
jlaveracll Aug 23, 2024
1c75022
cleanup
jlaveracll Aug 26, 2024
f1cdb54
Update ZKSyncValidator.sol
jlaveracll Aug 26, 2024
7f7f942
Update ZKSyncValidator.sol
jlaveracll Aug 27, 2024
3b76e51
Merge branch 'SHIP-3004/develop-sequencer-uptime-feed-contract' of gi…
jlaveracll Aug 27, 2024
f7f93e2
initial commit
jlaveracll Aug 27, 2024
87fe5d1
Merge branch 'develop' of github.com:smartcontractkit/chainlink into …
jlaveracll Aug 27, 2024
13078a8
Merge branch 'SHIP-3004/develop-sequencer-uptime-feed-contract' of gi…
jlaveracll Aug 27, 2024
0b7b769
address feedback
jlaveracll Aug 28, 2024
8927ee6
Update ZKSyncSequencerUptimeFeed.sol
jlaveracll Aug 28, 2024
e93d909
Update ZKSyncSequencerUptimeFeed.sol
jlaveracll Aug 28, 2024
a9c29db
Update ZKSyncSequencerUptimeFeed.sol
jlaveracll Aug 28, 2024
b0acfcb
Merge branch 'develop' of github.com:smartcontractkit/chainlink into …
jlaveracll Aug 28, 2024
57a35aa
Update ZKSyncValidator.sol
jlaveracll Aug 28, 2024
cf3aeb5
Update ZKSyncValidator.sol
jlaveracll Aug 28, 2024
d3b9b81
merge
jlaveracll Aug 28, 2024
becabc3
tmp
jlaveracll Aug 28, 2024
752c8fe
Add ZKSync L2EP validator contract
jlaveracll Aug 29, 2024
1963a67
Update smart-peas-brake.md
jlaveracll Aug 29, 2024
5354c29
Merge branch 'SHIP-3004/develop-sequencer-uptime-feed-contract' of gi…
jlaveracll Aug 29, 2024
201c30b
cleanup
jlaveracll Aug 29, 2024
72eabda
combine branches into a single one
jlaveracll Aug 29, 2024
e241c79
Update ZKSyncValidator.sol
jlaveracll Aug 29, 2024
9503a31
fix zksync contracts version
jlaveracll Aug 29, 2024
ea87262
Revert "fix zksync contracts version"
jlaveracll Aug 29, 2024
7f0b5ec
cleanup
jlaveracll Aug 29, 2024
8844db2
Update ZKSyncSequencerUptimeFeed.sol
jlaveracll Aug 29, 2024
291f874
cleanup
jlaveracll Aug 29, 2024
9e1f05b
[Bot] Update changeset file with jira issue
app-token-issuer-infra-releng[bot] Aug 29, 2024
2bd937c
test update foundry solc version
jlaveracll Aug 29, 2024
8717025
Merge branch 'SHIP-3004/develop-sequencer-uptime-feed-contract' of gi…
jlaveracll Aug 29, 2024
0ea4f71
try again!
jlaveracll Aug 29, 2024
a6f5a41
cleanup unused params
jlaveracll Aug 29, 2024
d2fc894
l2ep auto detect solc
jlaveracll Aug 29, 2024
37fbc7c
Fixes l2 tx request logic and adds payable
mohamed-mehany Aug 30, 2024
7e9b9cd
address feedback
jlaveracll Aug 30, 2024
7343968
lint
jlaveracll Aug 30, 2024
0116933
Fix zksync contracts verision
jlaveracll Aug 30, 2024
1e33010
Update package.json
jlaveracll Aug 30, 2024
1a96644
Update pnpm-lock.yaml
jlaveracll Aug 30, 2024
d27a153
Address more feedback
jlaveracll Aug 30, 2024
7ea3cb0
Update ZKSyncValidator.sol
jlaveracll Aug 30, 2024
43108b2
temp adding tests
jlaveracll Aug 30, 2024
65161a7
add zksync l2ep tests
chris-de-leon-cll Aug 31, 2024
68c3b76
Merge branch 'develop' into SHIP-3004/develop-sequencer-uptime-feed-c…
chris-de-leon-cll Aug 31, 2024
6eaf135
update foundry.toml
chris-de-leon-cll Aug 31, 2024
8ac6b84
update llo-feeds gas snapshot
chris-de-leon-cll Aug 31, 2024
af061f4
share interface
RensR Sep 1, 2024
4cc5042
interface starts with I
RensR Sep 1, 2024
357b033
more interfaces start with I
RensR Sep 1, 2024
3d3f1ea
extract base BaseSequencerUptimeFeed
RensR Sep 1, 2024
427790b
let scroll use the BaseSequencerUptimeFeed
RensR Sep 1, 2024
5d3a3d0
golf base impl
RensR Sep 1, 2024
e08e302
let opt use base
RensR Sep 1, 2024
1f0bcdb
reduce custom version to minimum
RensR Sep 1, 2024
8cfe099
extract BaseValidator
RensR Sep 2, 2024
7e5f62b
enforce ITypeAndVersion at BaseSequencerUptimeFeed level
RensR Sep 2, 2024
e232f0e
improve compile script
RensR Sep 2, 2024
f5b91fd
Merge pull request #14301 from smartcontractkit/create-base-contracts
jlaveracll Sep 2, 2024
25d0431
Merge branch 'develop' of github.com:smartcontractkit/chainlink into …
jlaveracll Sep 2, 2024
4cc96bc
address feedback
jlaveracll Sep 2, 2024
2d054c9
Update BaseSequencerUptimeFeed.sol
jlaveracll Sep 2, 2024
37b8620
cleaning up solidity versions
jlaveracll Sep 2, 2024
c09e699
Update .gas-snapshot
jlaveracll Sep 2, 2024
57644c6
temporarily adding tolerance
jlaveracll Sep 2, 2024
c50bf41
Adds new gas snapshot and removing tolerance
mohamed-mehany Sep 2, 2024
9f1ba0f
L2EP gas snapshot
mohamed-mehany Sep 2, 2024
29bb365
Modify gas-snapshot
mohamed-mehany Sep 2, 2024
3514bb1
Modifies gas snapshot
mohamed-mehany Sep 2, 2024
d319c52
Merge branch 'develop' of github.com:smartcontractkit/chainlink into …
jlaveracll Sep 3, 2024
1058836
Reverting some change
jlaveracll Sep 3, 2024
1ef5442
refer to internal addressaliashelper
jlaveracll Sep 3, 2024
20865f4
Update l2ep.gas-snapshot
jlaveracll Sep 3, 2024
bde8ae6
Update hardhat.config.ts
jlaveracll Sep 3, 2024
e0380d8
Updates gas snapshot
mohamed-mehany Sep 3, 2024
69e93c1
Updates gas snapshot
mohamed-mehany Sep 3, 2024
96b3e2f
bump to 0.8.24
RensR Sep 3, 2024
b680be0
rm zksync npm
RensR Sep 3, 2024
522d4bc
Revert "rm zksync npm"
RensR Sep 3, 2024
28f853e
fix versions
RensR Sep 3, 2024
0b989e3
Merge branch 'develop' of github.com:smartcontractkit/chainlink into …
jlaveracll Sep 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions contracts/.changeset/heavy-balloons-cheat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"chainlink": patch
---

#added Add ZKSync L2EP SequencerUptimeFeed contract
#added Add ZKSync L2EP Validator contract


SHIP-3004
254 changes: 142 additions & 112 deletions contracts/.gas-snapshot

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion contracts/foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ test = 'src/v0.8/automation/test'
optimizer_runs = 1_000_000
src = 'src/v0.8/l2ep'
test = 'src/v0.8/l2ep/test'
solc_version = '0.8.19'

[profile.llo-feeds]
optimizer_runs = 1_000_000
Expand Down
206 changes: 113 additions & 93 deletions contracts/gas-snapshots/l2ep.gas-snapshot

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions contracts/gas-snapshots/llo-feeds.gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ DestinationFeeManagerProcessFeeTest:test_poolIdsCannotBeZeroAddress() (gas: 1179
DestinationFeeManagerProcessFeeTest:test_processFeeAsProxy() (gas: 123807)
DestinationFeeManagerProcessFeeTest:test_processFeeDefaultReportsStillVerifiesWithEmptyQuote() (gas: 29767)
DestinationFeeManagerProcessFeeTest:test_processFeeEmitsEventIfNotEnoughLink() (gas: 167721)
DestinationFeeManagerProcessFeeTest:test_processFeeIfSubscriberIsSelf() (gas: 30107)
DestinationFeeManagerProcessFeeTest:test_processFeeIfSubscriberIsSelf() (gas: 32607)
DestinationFeeManagerProcessFeeTest:test_processFeeNative() (gas: 180514)
DestinationFeeManagerProcessFeeTest:test_processFeeUsesCorrectDigest() (gas: 125076)
DestinationFeeManagerProcessFeeTest:test_processFeeWithDefaultReportPayloadAndQuoteStillVerifies() (gas: 31844)
Expand Down Expand Up @@ -299,7 +299,7 @@ FeeManagerProcessFeeTest:test_payLinkDeficitTwice() (gas: 198803)
FeeManagerProcessFeeTest:test_processFeeAsProxy() (gas: 117088)
FeeManagerProcessFeeTest:test_processFeeDefaultReportsStillVerifiesWithEmptyQuote() (gas: 27462)
FeeManagerProcessFeeTest:test_processFeeEmitsEventIfNotEnoughLink() (gas: 163205)
FeeManagerProcessFeeTest:test_processFeeIfSubscriberIsSelf() (gas: 27827)
FeeManagerProcessFeeTest:test_processFeeIfSubscriberIsSelf() (gas: 30327)
FeeManagerProcessFeeTest:test_processFeeNative() (gas: 173826)
FeeManagerProcessFeeTest:test_processFeeUsesCorrectDigest() (gas: 118379)
FeeManagerProcessFeeTest:test_processFeeWithDefaultReportPayloadAndQuoteStillVerifies() (gas: 29536)
Expand Down
7 changes: 7 additions & 0 deletions contracts/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ let config = {
version: '0.8.19',
settings: COMPILER_SETTINGS,
},
{
version: '0.8.20',
RensR marked this conversation as resolved.
Show resolved Hide resolved
settings: {
...COMPILER_SETTINGS,
evmVersion: 'paris',
},
},
{
version: '0.8.24',
settings: {
Expand Down
1 change: 1 addition & 0 deletions contracts/package.json
chris-de-leon-cll marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
"@openzeppelin/contracts": "4.9.3",
"@openzeppelin/contracts-upgradeable": "4.9.3",
"@scroll-tech/contracts": "0.1.0",
"@zksync/contracts": "git+https://github.com/matter-labs/era-contracts.git#446d391d34bdb48255d5f8fef8a8248925fc98b9",
"semver": "^7.6.3"
}
}
9 changes: 9 additions & 0 deletions contracts/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions contracts/remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ forge-std/=src/v0.8/vendor/forge-std/src/
hardhat/=node_modules/hardhat/
@eth-optimism/=node_modules/@eth-optimism/
@scroll-tech/=node_modules/@scroll-tech/
@zksync/=node_modules/@zksync/
39 changes: 9 additions & 30 deletions contracts/scripts/native_solc_compile_all_l2ep
Original file line number Diff line number Diff line change
@@ -1,59 +1,38 @@
#!/usr/bin/env bash

###########
# Logging #
###########

set -e

echo " ┌──────────────────────────────────────────────┐"
echo " │ Compiling L2EP contracts... │"
echo " └──────────────────────────────────────────────┘"

######################
# Helper Variable(s) #
######################

export SOLC_VERSION="0.8.19"
SOLC_VERSION="0.8.19"
OPTIMIZE_RUNS=1000000

SCRIPTPATH="$(
cd "$(dirname "$0")" >/dev/null 2>&1
pwd -P
)"
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
python3 -m pip install --require-hashes -r $SCRIPTPATH/requirements.txt
solc-select install $SOLC_VERSION
solc-select use $SOLC_VERSION

ROOT="$(
cd "$(dirname "$0")" >/dev/null 2>&1
cd ../ && pwd -P
)"

######################
# Helper Function(s) #
######################

compileContract() {
local optimize_runs=1000000
local version="$1"
local srcpath="$2"
solc \
@openzeppelin/=$ROOT/node_modules/@openzeppelin/ \
@eth-optimism/=$ROOT/node_modules/@eth-optimism/ \
@scroll-tech/=$ROOT/node_modules/@scroll-tech/ \
--overwrite --optimize --optimize-runs $optimize_runs --metadata-hash none \
--overwrite --optimize --optimize-runs $OPTIMIZE_RUNS --metadata-hash none \
-o $ROOT/solc/v$SOLC_VERSION/l2ep/"$version" \
--abi --bin \
--allow-paths $ROOT/src/v0.8,$ROOT/node_modules \
--abi --bin --allow-paths $ROOT/src/v0.8,$ROOT/node_modules \
--evm-version paris \
$ROOT/src/v0.8/l2ep/"$srcpath"
}

#################
# Version 1.0.0 #
#################

python3 -m pip install --require-hashes -r $SCRIPTPATH/requirements.txt

solc-select install $SOLC_VERSION
solc-select use $SOLC_VERSION

compileContract v1_0_0 dev/arbitrum/ArbitrumValidator.sol
compileContract v1_0_0 dev/arbitrum/ArbitrumSequencerUptimeFeed.sol
compileContract v1_0_0 dev/arbitrum/ArbitrumCrossDomainForwarder.sol
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
pragma solidity ^0.8.0;

import {CrossDomainOwnable} from "./CrossDomainOwnable.sol";
import {DelegateForwarderInterface} from "./interfaces/DelegateForwarderInterface.sol";
import {IDelegateForwarder} from "./interfaces/IDelegateForwarder.sol";

/**
* @title CrossDomainDelegateForwarder - L1 xDomain account representation (with delegatecall support)
* @notice L2 Contract which receives messages from a specific L1 address and transparently forwards them to the destination.
* @dev Any other L2 contract which uses this contract's address as a privileged position,
* can consider that position to be held by the `l1Owner`
*/
abstract contract CrossDomainDelegateForwarder is DelegateForwarderInterface, CrossDomainOwnable {}
abstract contract CrossDomainDelegateForwarder is IDelegateForwarder, CrossDomainOwnable {}
4 changes: 2 additions & 2 deletions contracts/src/v0.8/l2ep/dev/CrossDomainForwarder.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
pragma solidity ^0.8.0;

import {CrossDomainOwnable} from "./CrossDomainOwnable.sol";
import {ForwarderInterface} from "./interfaces/ForwarderInterface.sol";
import {IForwarder} from "./interfaces/IForwarder.sol";

/**
* @title CrossDomainForwarder - L1 xDomain account representation
* @notice L2 Contract which receives messages from a specific L1 address and transparently forwards them to the destination.
* @dev Any other L2 contract which uses this contract's address as a privileged position,
* can consider that position to be held by the `l1Owner`
*/
abstract contract CrossDomainForwarder is ForwarderInterface, CrossDomainOwnable {}
abstract contract CrossDomainForwarder is IForwarder, CrossDomainOwnable {}
4 changes: 2 additions & 2 deletions contracts/src/v0.8/l2ep/dev/CrossDomainOwnable.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
pragma solidity ^0.8.0;

import {ConfirmedOwner} from "../../shared/access/ConfirmedOwner.sol";
import {CrossDomainOwnableInterface} from "./interfaces/CrossDomainOwnableInterface.sol";
import {ICrossDomainOwnable} from "./interfaces/ICrossDomainOwnable.sol";

/**
* @title The CrossDomainOwnable contract
* @notice A contract with helpers for cross-domain contract ownership.
*/
contract CrossDomainOwnable is CrossDomainOwnableInterface, ConfirmedOwner {
contract CrossDomainOwnable is ICrossDomainOwnable, ConfirmedOwner {
address internal s_l1Owner;
address internal s_l1PendingOwner;

Expand Down
4 changes: 2 additions & 2 deletions contracts/src/v0.8/l2ep/dev/Flags.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {AccessControllerInterface} from "../../shared/interfaces/AccessControlle
import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";

/* dev dependencies - to be re/moved after audit */
import {FlagsInterface} from "./interfaces/FlagsInterface.sol";
import {IFlags} from "./interfaces/IFlags.sol";

/**
* @title The Flags contract
Expand All @@ -18,7 +18,7 @@ import {FlagsInterface} from "./interfaces/FlagsInterface.sol";
* FlagOn events you should filter for addresses you care about.
*/
// solhint-disable gas-custom-errors
contract Flags is ITypeAndVersion, FlagsInterface, SimpleReadAccessController {
contract Flags is ITypeAndVersion, IFlags, SimpleReadAccessController {
AccessControllerInterface public raisingAccessController;
AccessControllerInterface public loweringAccessController;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {TypeAndVersionInterface} from "../../../interfaces/TypeAndVersionInterface.sol";
import {ITypeAndVersion} from "../../../shared/interfaces/ITypeAndVersion.sol";
// solhint-disable-next-line no-unused-import
import {ForwarderInterface} from "../interfaces/ForwarderInterface.sol";
import {IForwarder} from "../interfaces/IForwarder.sol";

import {CrossDomainForwarder} from "../CrossDomainForwarder.sol";
import {CrossDomainOwnable} from "../CrossDomainOwnable.sol";
Expand All @@ -17,7 +17,7 @@ import {Address} from "../../../vendor/openzeppelin-solidity/v4.7.3/contracts/ut
* @dev Any other L2 contract which uses this contract's address as a privileged position,
* can be considered to be owned by the `l1Owner`
*/
contract ArbitrumCrossDomainForwarder is TypeAndVersionInterface, CrossDomainForwarder {
contract ArbitrumCrossDomainForwarder is ITypeAndVersion, CrossDomainForwarder {
/**
* @notice creates a new Arbitrum xDomain Forwarder contract
* @param l1OwnerAddr the L1 owner address that will be allowed to call the forward fn
Expand All @@ -31,7 +31,7 @@ contract ArbitrumCrossDomainForwarder is TypeAndVersionInterface, CrossDomainFor
* - ArbitrumCrossDomainForwarder 0.1.0: initial release
* - ArbitrumCrossDomainForwarder 1.0.0: Use OZ Address, CrossDomainOwnable
*
* @inheritdoc TypeAndVersionInterface
* @inheritdoc ITypeAndVersion
*/
function typeAndVersion() external pure virtual override returns (string memory) {
return "ArbitrumCrossDomainForwarder 1.0.0";
Expand All @@ -46,7 +46,7 @@ contract ArbitrumCrossDomainForwarder is TypeAndVersionInterface, CrossDomainFor

/**
* @dev forwarded only if L2 Messenger calls with `xDomainMessageSender` being the L1 owner address
* @inheritdoc ForwarderInterface
* @inheritdoc IForwarder
*/
function forward(address target, bytes memory data) external virtual override onlyL1Owner {
Address.functionCall(target, data, "Forwarder call reverted");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
pragma solidity ^0.8.0;

// solhint-disable-next-line no-unused-import
import {TypeAndVersionInterface} from "../../../interfaces/TypeAndVersionInterface.sol";
import {ITypeAndVersion} from "../../../shared/interfaces/ITypeAndVersion.sol";
// solhint-disable-next-line no-unused-import
import {ForwarderInterface} from "../interfaces/ForwarderInterface.sol";
import {DelegateForwarderInterface} from "../interfaces/DelegateForwarderInterface.sol";
import {IForwarder} from "../interfaces/IForwarder.sol";
import {IDelegateForwarder} from "../interfaces/IDelegateForwarder.sol";

import {ArbitrumCrossDomainForwarder} from "./ArbitrumCrossDomainForwarder.sol";

Expand All @@ -17,7 +17,7 @@ import {Address} from "../../../vendor/openzeppelin-solidity/v4.7.3/contracts/ut
* @dev Any other L2 contract which uses this contract's address as a privileged position,
* can be considered to be simultaneously owned by the `l1Owner` and L2 `owner`
*/
contract ArbitrumCrossDomainGovernor is DelegateForwarderInterface, ArbitrumCrossDomainForwarder {
contract ArbitrumCrossDomainGovernor is IDelegateForwarder, ArbitrumCrossDomainForwarder {
/**
* @notice creates a new Arbitrum xDomain Forwarder contract
* @param l1OwnerAddr the L1 owner address that will be allowed to call the forward fn
Expand All @@ -30,23 +30,23 @@ contract ArbitrumCrossDomainGovernor is DelegateForwarderInterface, ArbitrumCros
*
* - ArbitrumCrossDomainGovernor 1.0.0: initial release
*
* @inheritdoc TypeAndVersionInterface
* @inheritdoc ITypeAndVersion
*/
function typeAndVersion() external pure virtual override returns (string memory) {
return "ArbitrumCrossDomainGovernor 1.0.0";
}

/**
* @dev forwarded only if L2 Messenger calls with `msg.sender` being the L1 owner address, or called by the L2 owner
* @inheritdoc ForwarderInterface
* @inheritdoc IForwarder
*/
function forward(address target, bytes memory data) external override onlyLocalOrCrossDomainOwner {
Address.functionCall(target, data, "Governor call reverted");
}

/**
* @dev forwarded only if L2 Messenger calls with `msg.sender` being the L1 owner address, or called by the L2 owner
* @inheritdoc DelegateForwarderInterface
* @inheritdoc IDelegateForwarder
*/
function forwardDelegate(address target, bytes memory data) external override onlyLocalOrCrossDomainOwner {
Address.functionDelegateCall(target, data, "Governor delegatecall reverted");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import {AddressAliasHelper} from "../../../vendor/arb-bridge-eth/v0.8.0-custom/c
import {AggregatorInterface} from "../../../shared/interfaces/AggregatorInterface.sol";
import {AggregatorV3Interface} from "../../../shared/interfaces/AggregatorV3Interface.sol";
import {AggregatorV2V3Interface} from "../../../shared/interfaces/AggregatorV2V3Interface.sol";
import {TypeAndVersionInterface} from "../../../interfaces/TypeAndVersionInterface.sol";
import {FlagsInterface} from "../interfaces/FlagsInterface.sol";
import {ArbitrumSequencerUptimeFeedInterface} from "../interfaces/ArbitrumSequencerUptimeFeedInterface.sol";
import {ITypeAndVersion} from "../../../shared/interfaces/ITypeAndVersion.sol";
import {IFlags} from "../interfaces/IFlags.sol";
import {ISequencerUptimeFeed} from "../interfaces/ISequencerUptimeFeed.sol";
import {SimpleReadAccessController} from "../../../shared/access/SimpleReadAccessController.sol";

/**
Expand All @@ -18,8 +18,8 @@ import {SimpleReadAccessController} from "../../../shared/access/SimpleReadAcces
*/
contract ArbitrumSequencerUptimeFeed is
AggregatorV2V3Interface,
ArbitrumSequencerUptimeFeedInterface,
TypeAndVersionInterface,
ISequencerUptimeFeed,
ITypeAndVersion,
SimpleReadAccessController
{
/// @dev Round info (for uptime history)
Expand Down Expand Up @@ -62,7 +62,7 @@ contract ArbitrumSequencerUptimeFeed is

/// @dev Flags contract to raise/lower flags on, during status transitions
// solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i
FlagsInterface public immutable FLAGS;
IFlags public immutable FLAGS;
/// @dev L1 address
address private s_l1Sender;
/// @dev s_latestRoundId == 0 means this contract is uninitialized.
Expand All @@ -76,7 +76,7 @@ contract ArbitrumSequencerUptimeFeed is
constructor(address flagsAddress, address l1SenderAddress) {
_setL1Sender(l1SenderAddress);

FLAGS = FlagsInterface(flagsAddress);
FLAGS = IFlags(flagsAddress);
}

/**
Expand Down Expand Up @@ -120,7 +120,7 @@ contract ArbitrumSequencerUptimeFeed is
*
* - ArbitrumSequencerUptimeFeed 1.0.0: initial release
*
* @inheritdoc TypeAndVersionInterface
* @inheritdoc ITypeAndVersion
*/
function typeAndVersion() external pure virtual override returns (string memory) {
return "ArbitrumSequencerUptimeFeed 1.0.0";
Expand Down
Loading
Loading