Commit cd23d53a authored by Kevin Chen's avatar Kevin Chen

Run lint checks on fault detector source.

parent 24523e52
...@@ -85,9 +85,7 @@ export const updateOracleCache = async ( ...@@ -85,9 +85,7 @@ export const updateOracleCache = async (
// Throw the events into the cache. // Throw the events into the cache.
for (const event of events) { for (const event of events) {
cache.eventCache[ cache.eventCache[oracle.getEventIndex(event.args).toNumber()] = {
oracle.getEventIndex(event.args).toNumber()
] = {
blockNumber: event.blockNumber, blockNumber: event.blockNumber,
transactionHash: event.transactionHash, transactionHash: event.transactionHash,
args: event.args, args: event.args,
......
...@@ -16,7 +16,7 @@ import { ...@@ -16,7 +16,7 @@ import {
OEL1ContractsLike, OEL1ContractsLike,
} from '@eth-optimism/sdk' } from '@eth-optimism/sdk'
import { Provider } from '@ethersproject/abstract-provider' import { Provider } from '@ethersproject/abstract-provider'
import { ethers, Transaction } from 'ethers' import { ethers } from 'ethers'
import dateformat from 'dateformat' import dateformat from 'dateformat'
import { version } from '../package.json' import { version } from '../package.json'
...@@ -164,7 +164,10 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> { ...@@ -164,7 +164,10 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> {
contracts.OptimismPortal = portalAddress contracts.OptimismPortal = portalAddress
this.logger.info('fetching L2OutputOracle contract from OptimismPortal') this.logger.info('fetching L2OutputOracle contract from OptimismPortal')
const opts = { portalAddress, signerOrProvider: this.options.l1RpcProvider } const opts = {
portalAddress,
signerOrProvider: this.options.l1RpcProvider,
}
const portalContract = getOEContract('OptimismPortal', l2ChainId, opts) const portalContract = getOEContract('OptimismPortal', l2ChainId, opts)
contracts.L2OutputOracle = await portalContract.L2_ORACLE() contracts.L2OutputOracle = await portalContract.L2_ORACLE()
} }
...@@ -202,8 +205,11 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> { ...@@ -202,8 +205,11 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> {
this.state.diverged = false this.state.diverged = false
// We use this a lot, a bit cleaner to pull out to the top level of the state object. // We use this a lot, a bit cleaner to pull out to the top level of the state object.
this.state.faultProofWindow = await this.state.messenger.getChallengePeriodSeconds() this.state.faultProofWindow =
this.logger.info(`fault proof window is ${this.state.faultProofWindow} seconds`) await this.state.messenger.getChallengePeriodSeconds()
this.logger.info(
`fault proof window is ${this.state.faultProofWindow} seconds`
)
const outputOracle = this.state.messenger.contracts.l1.L2OutputOracle const outputOracle = this.state.messenger.contracts.l1.L2OutputOracle
this.state.outputOracle = { this.state.outputOracle = {
...@@ -344,10 +350,7 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> { ...@@ -344,10 +350,7 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> {
try { try {
outputBlock = await ( outputBlock = await (
this.options.l2RpcProvider as ethers.providers.JsonRpcProvider this.options.l2RpcProvider as ethers.providers.JsonRpcProvider
).send('eth_getBlockByNumber', [ ).send('eth_getBlockByNumber', [toRpcHexString(outputBlockNumber), false])
toRpcHexString(outputBlockNumber),
false,
])
} catch (err) { } catch (err) {
this.logger.error('failed to fetch output block', { this.logger.error('failed to fetch output block', {
error: err, error: err,
...@@ -408,7 +411,7 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> { ...@@ -408,7 +411,7 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> {
new Date( new Date(
(ethers.BigNumber.from(outputBlock.timestamp).toNumber() + (ethers.BigNumber.from(outputBlock.timestamp).toNumber() +
this.state.faultProofWindow) * this.state.faultProofWindow) *
1000 1000
), ),
'mmmm dS, yyyy, h:MM:ss TT' 'mmmm dS, yyyy, h:MM:ss TT'
), ),
......
import hre from 'hardhat' import hre from 'hardhat'
import { Contract, utils } from 'ethers' import { Contract, utils } from 'ethers'
import { toRpcHexString } from '@eth-optimism/core-utils' import { toRpcHexString } from '@eth-optimism/core-utils'
import { import { getContractFactory } from '@eth-optimism/contracts-bedrock'
getContractFactory,
getContractInterface,
} from '@eth-optimism/contracts-bedrock'
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'
import { smock, FakeContract } from '@defi-wonderland/smock'
import { expect } from './setup' import { expect } from './setup'
import { import {
...@@ -21,8 +17,8 @@ describe('helpers', () => { ...@@ -21,8 +17,8 @@ describe('helpers', () => {
l2BlockTime: 2, l2BlockTime: 2,
l2OutputOracleStartingBlockNumber: 0, l2OutputOracleStartingBlockNumber: 0,
l2OutputOracleStartingTimestamp: 0, l2OutputOracleStartingTimestamp: 0,
l2OutputOracleProposer: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", l2OutputOracleProposer: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
l2OutputOracleChallenger: "0x6925B8704Ff96DEe942623d6FB5e946EF5884b63", l2OutputOracleChallenger: '0x6925B8704Ff96DEe942623d6FB5e946EF5884b63',
// Can be any non-zero value, 1000 is fine. // Can be any non-zero value, 1000 is fine.
finalizationPeriodSeconds: 1000, finalizationPeriodSeconds: 1000,
} }
...@@ -35,10 +31,8 @@ describe('helpers', () => { ...@@ -35,10 +31,8 @@ describe('helpers', () => {
let L2OutputOracle: Contract let L2OutputOracle: Contract
let oracle: OutputOracle let oracle: OutputOracle
beforeEach(async () => { beforeEach(async () => {
L2OutputOracle = await getContractFactory( L2OutputOracle = await getContractFactory('L2OutputOracle', signer).deploy(
'L2OutputOracle', deployConfig.l2OutputOracleSubmissionInterval,
signer
).deploy(deployConfig.l2OutputOracleSubmissionInterval,
deployConfig.l2BlockTime, deployConfig.l2BlockTime,
deployConfig.l2OutputOracleStartingBlockNumber, deployConfig.l2OutputOracleStartingBlockNumber,
deployConfig.l2OutputOracleStartingTimestamp, deployConfig.l2OutputOracleStartingTimestamp,
...@@ -61,9 +55,11 @@ describe('helpers', () => { ...@@ -61,9 +55,11 @@ describe('helpers', () => {
const latestBlock = await hre.ethers.provider.getBlock('latest') const latestBlock = await hre.ethers.provider.getBlock('latest')
const params = { const params = {
_outputRoot: utils.formatBytes32String('testhash'), _outputRoot: utils.formatBytes32String('testhash'),
_l2BlockNumber: deployConfig.l2OutputOracleStartingBlockNumber + deployConfig.l2OutputOracleSubmissionInterval, _l2BlockNumber:
deployConfig.l2OutputOracleStartingBlockNumber +
deployConfig.l2OutputOracleSubmissionInterval,
_l1BlockHash: latestBlock.hash, _l1BlockHash: latestBlock.hash,
_l1BlockNumber: latestBlock.number _l1BlockNumber: latestBlock.number,
} }
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
...@@ -95,9 +91,11 @@ describe('helpers', () => { ...@@ -95,9 +91,11 @@ describe('helpers', () => {
const latestBlock = await hre.ethers.provider.getBlock('latest') const latestBlock = await hre.ethers.provider.getBlock('latest')
const params = { const params = {
_outputRoot: utils.formatBytes32String('testhash'), _outputRoot: utils.formatBytes32String('testhash'),
_l2BlockNumber: deployConfig.l2OutputOracleStartingBlockNumber + deployConfig.l2OutputOracleSubmissionInterval, _l2BlockNumber:
deployConfig.l2OutputOracleStartingBlockNumber +
deployConfig.l2OutputOracleSubmissionInterval,
_l1BlockHash: latestBlock.hash, _l1BlockHash: latestBlock.hash,
_l1BlockNumber: latestBlock.number _l1BlockNumber: latestBlock.number,
} }
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
...@@ -119,7 +117,8 @@ describe('helpers', () => { ...@@ -119,7 +117,8 @@ describe('helpers', () => {
) )
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
params._l2BlockNumber + deployConfig.l2OutputOracleSubmissionInterval * 2, params._l2BlockNumber +
deployConfig.l2OutputOracleSubmissionInterval * 2,
params._l1BlockHash, params._l1BlockHash,
params._l1BlockNumber params._l1BlockNumber
) )
...@@ -140,9 +139,11 @@ describe('helpers', () => { ...@@ -140,9 +139,11 @@ describe('helpers', () => {
const latestBlock = await hre.ethers.provider.getBlock('latest') const latestBlock = await hre.ethers.provider.getBlock('latest')
const params = { const params = {
_outputRoot: utils.formatBytes32String('testhash'), _outputRoot: utils.formatBytes32String('testhash'),
_l2BlockNumber: deployConfig.l2OutputOracleStartingBlockNumber + deployConfig.l2OutputOracleSubmissionInterval, _l2BlockNumber:
deployConfig.l2OutputOracleStartingBlockNumber +
deployConfig.l2OutputOracleSubmissionInterval,
_l1BlockHash: latestBlock.hash, _l1BlockHash: latestBlock.hash,
_l1BlockNumber: latestBlock.number _l1BlockNumber: latestBlock.number,
} }
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
...@@ -158,7 +159,8 @@ describe('helpers', () => { ...@@ -158,7 +159,8 @@ describe('helpers', () => {
) )
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
params._l2BlockNumber + deployConfig.l2OutputOracleSubmissionInterval * 2, params._l2BlockNumber +
deployConfig.l2OutputOracleSubmissionInterval * 2,
params._l1BlockHash, params._l1BlockHash,
params._l1BlockNumber params._l1BlockNumber
) )
...@@ -179,9 +181,11 @@ describe('helpers', () => { ...@@ -179,9 +181,11 @@ describe('helpers', () => {
const latestBlock = await hre.ethers.provider.getBlock('latest') const latestBlock = await hre.ethers.provider.getBlock('latest')
const params = { const params = {
_outputRoot: utils.formatBytes32String('testhash'), _outputRoot: utils.formatBytes32String('testhash'),
_l2BlockNumber: deployConfig.l2OutputOracleStartingBlockNumber + deployConfig.l2OutputOracleSubmissionInterval, _l2BlockNumber:
deployConfig.l2OutputOracleStartingBlockNumber +
deployConfig.l2OutputOracleSubmissionInterval,
_l1BlockHash: latestBlock.hash, _l1BlockHash: latestBlock.hash,
_l1BlockNumber: latestBlock.number _l1BlockNumber: latestBlock.number,
} }
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
...@@ -197,7 +201,8 @@ describe('helpers', () => { ...@@ -197,7 +201,8 @@ describe('helpers', () => {
) )
await L2OutputOracle.proposeL2Output( await L2OutputOracle.proposeL2Output(
params._outputRoot, params._outputRoot,
params._l2BlockNumber + deployConfig.l2OutputOracleSubmissionInterval * 2, params._l2BlockNumber +
deployConfig.l2OutputOracleSubmissionInterval * 2,
params._l1BlockHash, params._l1BlockHash,
params._l1BlockNumber params._l1BlockNumber
) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment