Commit d18ae135 authored by Kelvin Fichter's avatar Kelvin Fichter

fix: update ethers deps

Updates all ethers dependencies in response to the BN.js bug reported
for versions below 5.8.6. Also removes various extra dependencies to
reduce the total number of deps and simplify the process of updating in
the future.
parent 81cfd3d3
---
'@eth-optimism/integration-tests': patch
'@eth-optimism/common-ts': patch
'@eth-optimism/contracts': patch
'@eth-optimism/contracts-periphery': patch
'@eth-optimism/core-utils': patch
'@eth-optimism/data-transport-layer': patch
'@eth-optimism/fault-detector': patch
'@eth-optimism/integration-tests-bedrock': patch
'@eth-optimism/message-relayer': patch
'@eth-optimism/replica-healthcheck': patch
'@eth-optimism/sdk': patch
---
Updates all ethers versions in response to BN.js bug
import * as RLP from '@ethersproject/rlp'
import { BigNumber, BigNumberish } from '@ethersproject/bignumber'
import { getAddress } from '@ethersproject/address'
import {
hexConcat,
stripZeros,
zeroPad,
arrayify,
BytesLike,
} from '@ethersproject/bytes'
import { keccak256 } from '@ethersproject/keccak256'
import { Zero } from '@ethersproject/constants'
import { ContractReceipt, Event } from '@ethersproject/contracts'
import { BigNumber, BigNumberish, BytesLike, ContractReceipt, ethers, Event } from 'ethers'
function formatNumber(value: BigNumberish, name: string): Uint8Array {
const result = stripZeros(BigNumber.from(value).toHexString())
const result = ethers.utils.stripZeros(BigNumber.from(value).toHexString())
if (result.length > 32) {
throw new Error(`invalid length for ${name}`)
}
......@@ -22,7 +10,7 @@ function formatNumber(value: BigNumberish, name: string): Uint8Array {
function handleNumber(value: string): BigNumber {
if (value === '0x') {
return Zero
return ethers.constants.Zero
}
return BigNumber.from(value)
}
......@@ -32,7 +20,7 @@ function handleAddress(value: string): string {
// @ts-ignore
return null
}
return getAddress(value)
return ethers.utils.getAddress(value)
}
export enum SourceHashDomain {
......@@ -92,7 +80,7 @@ export class DepositTx {
hash() {
const encoded = this.encode()
return keccak256(encoded)
return ethers.utils.keccak256(encoded)
}
sourceHash() {
......@@ -114,11 +102,11 @@ export class DepositTx {
}
const l1BlockHash = this.l1BlockHash
const input = hexConcat([l1BlockHash, zeroPad(marker, 32)])
const depositIDHash = keccak256(input)
const input = ethers.utils.hexConcat([l1BlockHash, ethers.utils.zeroPad(marker, 32)])
const depositIDHash = ethers.utils.keccak256(input)
const domain = BigNumber.from(this.domain).toHexString()
const domainInput = hexConcat([zeroPad(domain, 32), depositIDHash])
this._sourceHash = keccak256(domainInput)
const domainInput = ethers.utils.hexConcat([ethers.utils.zeroPad(domain, 32), depositIDHash])
this._sourceHash = ethers.utils.keccak256(domainInput)
}
return this._sourceHash
}
......@@ -126,20 +114,20 @@ export class DepositTx {
encode() {
const fields: any = [
this.sourceHash() || '0x',
getAddress(this.from) || '0x',
this.to != null ? getAddress(this.to) : '0x',
ethers.utils.getAddress(this.from) || '0x',
this.to != null ? ethers.utils.getAddress(this.to) : '0x',
formatNumber(this.mint || 0, 'mint'),
formatNumber(this.value || 0, 'value'),
formatNumber(this.gas || 0, 'gas'),
this.data || '0x',
]
return hexConcat([this.type, RLP.encode(fields)])
return ethers.utils.hexConcat([this.type, ethers.utils.RLP.encode(fields)])
}
decode(raw: BytesLike, extra: DepostTxExtraOpts = {}) {
const payload = arrayify(raw)
const transaction = RLP.decode(payload.slice(1))
const payload = ethers.utils.arrayify(raw)
const transaction = ethers.utils.RLP.decode(payload.slice(1))
this._sourceHash = transaction[0]
this.from = handleAddress(transaction[1])
......
......@@ -6,14 +6,10 @@
"license": "MIT",
"dependencies": {
"@eth-optimism/contracts": "^0.5.21",
"@ethersproject/address": "^5.6.0",
"@ethersproject/bignumber": "^5.6.0",
"@ethersproject/bytes": "^5.6.1",
"@ethersproject/keccak256": "^5.6.0",
"@ethersproject/rlp": "^5.6.0",
"@openzeppelin/contracts": "^4.5.0",
"@openzeppelin/contracts-upgradeable": "^4.5.2",
"hardhat": "^2.7.1",
"ethers": "^5.6.8",
"hardhat": "^2.9.6",
"merkle-patricia-tree": "^4.2.4",
"rlp": "^2.2.7"
},
......@@ -57,7 +53,7 @@
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-promise": "^5.1.0",
"ethereum-waffle": "^3.0.0",
"ethers": "^5.0.0",
"ethers": "^5.6.8",
"hardhat-deploy": "^0.11.4",
"hardhat-gas-reporter": "^1.0.4",
"prettier": "^2.3.2",
......
This diff is collapsed.
......@@ -31,9 +31,9 @@
"@eth-optimism/contracts": "0.5.24",
"@eth-optimism/core-utils": "0.8.4",
"@eth-optimism/sdk": "1.1.5",
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/providers": "^5.5.3",
"@ethersproject/transactions": "^5.5.0",
"@ethersproject/abstract-provider": "^5.6.1",
"@ethersproject/providers": "^5.6.8",
"@ethersproject/transactions": "^5.6.2",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-waffle": "^2.0.1",
"@openzeppelin/contracts": "^4.4.0",
......@@ -62,8 +62,8 @@
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"ethereum-waffle": "^3.3.0",
"ethers": "^5.5.4",
"hardhat": "^2.9.2",
"ethers": "^5.6.8",
"hardhat": "^2.9.6",
"hardhat-gas-reporter": "^1.0.4",
"lint-staged": "11.0.0",
"mocha": "^8.4.0",
......
......@@ -6,6 +6,6 @@
},
"license": "MIT",
"dependencies": {
"hardhat": "^2.9.2"
"hardhat": "^2.9.6"
}
}
......@@ -26,10 +26,25 @@
]
},
"private": true,
"scripts": {
"clean": "yarn lerna run clean --parallel",
"build": "yarn lerna run build",
"test": "yarn lerna run test --parallel",
"test:coverage": "yarn lerna run test:coverage --parallel",
"lint": "yarn lerna run lint",
"lint:ts:check": "yarn lerna run lint:ts:check",
"lint:check": "yarn lerna run lint:check",
"lint:fix": "yarn lerna run lint:fix --parallel",
"postinstall": "patch-package",
"ready": "yarn lint && yarn test",
"prepare": "husky install",
"release": "yarn build && yarn changeset publish"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.26.0",
"@typescript-eslint/parser": "^4.26.0",
"babel-eslint": "^10.1.0",
"doctoc": "2.1.0",
"eslint": "^7.27.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.23.4",
......@@ -41,32 +56,16 @@
"husky": "^6.0.0",
"lerna": "^4.0.0",
"lint-staged": "11.0.0",
"markdownlint": "^0.24.0",
"markdownlint-cli2": "^0.3.2",
"patch-package": "^6.4.7",
"prettier": "^2.3.1",
"typescript": "^4.6.2",
"doctoc": "2.1.0",
"lint-staged": "11.0.0",
"markdownlint": "^0.24.0",
"markdownlint-cli2": "^0.3.2"
},
"scripts": {
"clean": "yarn lerna run clean --parallel",
"build": "yarn lerna run build",
"test": "yarn lerna run test --parallel",
"test:coverage": "yarn lerna run test:coverage --parallel",
"lint": "yarn lerna run lint",
"lint:ts:check": "yarn lerna run lint:ts:check",
"lint:check": "yarn lerna run lint:check",
"lint:fix": "yarn lerna run lint:fix --parallel",
"postinstall": "patch-package",
"ready": "yarn lint && yarn test",
"prepare": "husky install",
"release": "yarn build && yarn changeset publish"
"typescript": "^4.6.2"
},
"dependencies": {
"@changesets/cli": "^2.16.0",
"@codechecks/client": "^0.1.11",
"@ethersproject/abstract-provider": "5.5.1",
"@ethersproject/abstract-provider": "^5.6.1",
"@openzeppelin/contracts": "^4.3.2",
"@openzeppelin/contracts-upgradeable": "^4.3.2"
}
......
......@@ -37,7 +37,7 @@
"commander": "^9.0.0",
"dotenv": "^16.0.0",
"envalid": "^7.2.2",
"ethers": "^5.5.4",
"ethers": "^5.6.8",
"express": "^4.17.1",
"lodash": "^4.17.21",
"pino": "^6.11.3",
......@@ -46,8 +46,8 @@
"prom-client": "^13.1.0"
},
"devDependencies": {
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/abstract-signer": "^5.5.0",
"@ethersproject/abstract-provider": "^5.6.1",
"@ethersproject/abstract-signer": "^5.6.2",
"@types/chai": "^4.2.18",
"@types/express": "^4.17.12",
"@types/mocha": "^8.2.2",
......
......@@ -54,7 +54,7 @@
"@openzeppelin/contracts": "4.3.2"
},
"devDependencies": {
"@ethersproject/hardware-wallets": "^5.5.0",
"@ethersproject/hardware-wallets": "^5.6.1",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-etherscan": "^3.0.3",
"@nomiclabs/hardhat-waffle": "^2.0.1",
......@@ -77,9 +77,9 @@
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"ethereum-waffle": "^3.3.0",
"ethers": "^5.5.4",
"hardhat": "^2.9.2",
"hardhat-deploy": "^0.9.3",
"ethers": "^5.6.8",
"hardhat": "^2.9.6",
"hardhat-deploy": "^0.11.10",
"istanbul": "^0.4.5",
"lint-staged": "11.0.0",
"mocha": "^8.4.0",
......
ignores: [
"@codechecks/client",
"@ethersproject/bytes",
"@ethersproject/providers",
"@openzeppelin/contracts",
"@openzeppelin/contracts-upgradeable",
"@typechain/ethers-v5",
......
......@@ -2,7 +2,7 @@
> FailingReceiver
......
......@@ -6,13 +6,15 @@ import * as dotenv from 'dotenv'
import '@nomiclabs/hardhat-ethers'
import '@nomiclabs/hardhat-waffle'
import '@nomiclabs/hardhat-etherscan'
import 'hardhat-deploy'
import '@primitivefi/hardhat-dodoc'
import '@typechain/hardhat'
import './tasks'
import 'hardhat-deploy'
import 'hardhat-gas-reporter'
import '@primitivefi/hardhat-dodoc'
import 'hardhat-output-validator'
// Hardhat tasks
import './tasks'
// Load environment variables from .env
dotenv.config()
......
......@@ -58,16 +58,16 @@
},
"dependencies": {
"@eth-optimism/core-utils": "0.8.4",
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/abstract-signer": "^5.5.0",
"@ethersproject/hardware-wallets": "^5.5.0"
"@ethersproject/abstract-provider": "^5.6.1",
"@ethersproject/abstract-signer": "^5.6.2"
},
"devDependencies": {
"@codechecks/client": "^0.1.11",
"@defi-wonderland/smock": "^2.0.2",
"@ethersproject/abi": "^5.6.0",
"@ethersproject/bytes": "^5.6.0",
"@ethersproject/providers": "^5.6.0",
"@ethersproject/abi": "^5.6.3",
"@ethersproject/bytes": "^5.6.1",
"@ethersproject/hardware-wallets": "^5.6.1",
"@ethersproject/providers": "^5.6.8",
"@nomiclabs/ethereumjs-vm": "^4.2.2",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-etherscan": "^3.0.3",
......@@ -98,10 +98,10 @@
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"ethereum-waffle": "^3.3.0",
"ethers": "^5.5.4",
"ethers": "^5.6.8",
"glob": "^7.1.6",
"hardhat": "^2.9.2",
"hardhat-deploy": "^0.9.3",
"hardhat": "^2.9.6",
"hardhat-deploy": "^0.11.10",
"hardhat-gas-reporter": "^1.0.4",
"hardhat-output-validator": "^0.1.18",
"istanbul": "^0.4.5",
......
......@@ -269,9 +269,7 @@ describe('CanonicalTransactionChain', () => {
it('should revert when accessing a non-existent element', async () => {
await expect(
CanonicalTransactionChain.getQueueElement(0)
).to.be.revertedWith(
'reverted with panic code 0x32 (Array accessed at an out-of-bounds or negative index)'
)
).to.be.revertedWith('reverted with panic code 50')
})
describe('when the requested element exists', () => {
......
......@@ -32,14 +32,12 @@
"url": "https://github.com/ethereum-optimism/optimism.git"
},
"dependencies": {
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/bytes": "^5.5.0",
"@ethersproject/providers": "^5.5.3",
"@ethersproject/transactions": "^5.5.0",
"@ethersproject/web": "^5.5.1",
"@ethersproject/abstract-provider": "^5.6.1",
"@ethersproject/providers": "^5.6.8",
"@ethersproject/transactions": "^5.6.2",
"bufio": "^1.0.7",
"chai": "^4.3.4",
"ethers": "^5.5.4"
"ethers": "^5.6.8"
},
"devDependencies": {
"@types/chai": "^4.2.18",
......
/* Imports: External */
import { BigNumber, ethers } from 'ethers'
import { hexZeroPad } from '@ethersproject/bytes'
/**
* Removes "0x" from start of a string if it exists.
......@@ -131,5 +130,5 @@ export const hexStringEquals = (stringA: string, stringB: string): boolean => {
* @return Number cast as a hex string.
*/
export const bytes32ify = (value: number | BigNumber): string => {
return hexZeroPad(BigNumber.from(value).toHexString(), 32)
return ethers.utils.hexZeroPad(BigNumber.from(value).toHexString(), 32)
}
......@@ -4,7 +4,7 @@
import { ethers } from 'ethers'
import { Provider } from '@ethersproject/providers'
import { ConnectionInfo } from '@ethersproject/web'
import { ConnectionInfo } from 'ethers/lib/utils'
export interface HttpHeaders {
[key: string]: string
......
......@@ -39,8 +39,8 @@
"@eth-optimism/common-ts": "0.2.7",
"@eth-optimism/contracts": "0.5.24",
"@eth-optimism/core-utils": "0.8.4",
"@ethersproject/providers": "^5.5.3",
"@ethersproject/transactions": "^5.5.0",
"@ethersproject/providers": "^5.6.8",
"@ethersproject/transactions": "^5.6.2",
"@sentry/node": "^6.3.1",
"@sentry/tracing": "^6.3.1",
"@types/express": "^4.17.12",
......@@ -49,7 +49,7 @@
"bfj": "^7.0.2",
"cors": "^2.8.5",
"dotenv": "^10.0.0",
"ethers": "^5.5.4",
"ethers": "^5.6.8",
"express": "^4.17.1",
"express-prom-bundle": "^6.3.6",
"level": "^6.0.1",
......@@ -75,7 +75,7 @@
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"hardhat": "^2.9.2",
"hardhat": "^2.9.6",
"lint-staged": "11.0.0",
"mocha": "^8.4.0",
"pino-pretty": "^4.7.1",
......
......@@ -35,7 +35,7 @@
"@types/dateformat": "^5.0.0",
"@types/node": "^17.0.23",
"dateformat": "^4.5.1",
"ethers": "^5.6.2",
"ethers": "^5.6.8",
"ts-node": "^10.7.0",
"typescript": "^4.6.3"
},
......@@ -43,6 +43,6 @@
"@eth-optimism/common-ts": "^0.2.4",
"@eth-optimism/core-utils": "^0.8.1",
"@eth-optimism/sdk": "^1.1.4",
"@ethersproject/abstract-provider": "^5.6.0"
"@ethersproject/abstract-provider": "^5.6.1"
}
}
......@@ -30,9 +30,9 @@
"@eth-optimism/contracts": "0.5.20",
"@eth-optimism/core-utils": "0.8.3",
"@eth-optimism/sdk": "1.0.4",
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/providers": "^5.5.3",
"@ethersproject/transactions": "^5.5.0",
"@ethersproject/abstract-provider": "^5.6.1",
"@ethersproject/providers": "^5.6.8",
"@ethersproject/transactions": "^5.6.2",
"@types/chai": "^4.2.18",
"@types/chai-as-promised": "^7.1.4",
"@types/mocha": "^8.2.2",
......@@ -55,7 +55,7 @@
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"ethereum-waffle": "^3.3.0",
"ethers": "^5.5.4",
"ethers": "^5.6.8",
"mocha": "^8.4.0",
"node-fetch": "^2.6.7",
"prom-client": "^14.0.1",
......
This diff is collapsed.
......@@ -34,10 +34,10 @@
"@eth-optimism/common-ts": "0.2.7",
"@eth-optimism/core-utils": "0.8.4",
"@eth-optimism/sdk": "1.1.5",
"ethers": "^5.5.4"
"ethers": "^5.6.8"
},
"devDependencies": {
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/abstract-provider": "^5.6.1",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-waffle": "^2.0.1",
"@typescript-eslint/eslint-plugin": "^4.26.0",
......@@ -52,7 +52,7 @@
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"ethereum-waffle": "^3.3.0",
"hardhat": "^2.9.2",
"hardhat": "^2.9.6",
"lint-staged": "11.0.0",
"prettier": "^2.3.1",
"ts-node": "^10.0.0",
......
......@@ -34,7 +34,7 @@
"dependencies": {
"@eth-optimism/common-ts": "0.2.7",
"@eth-optimism/core-utils": "0.8.4",
"@ethersproject/abstract-provider": "^5.5.1"
"@ethersproject/abstract-provider": "^5.6.1"
},
"devDependencies": {
"@types/node": "^15.12.2",
......
......@@ -32,9 +32,9 @@
"url": "https://github.com/ethereum-optimism/optimism.git"
},
"devDependencies": {
"@ethersproject/abstract-provider": "^5.5.1",
"@ethersproject/abstract-signer": "^5.5.0",
"@ethersproject/transactions": "^5.5.0",
"@ethersproject/abstract-provider": "^5.6.1",
"@ethersproject/abstract-signer": "^5.6.2",
"@ethersproject/transactions": "^5.6.2",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-waffle": "^2.0.1",
"@types/chai": "^4.2.18",
......@@ -54,8 +54,8 @@
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-unicorn": "^32.0.1",
"ethereum-waffle": "^3.4.0",
"ethers": "^5.5.4",
"hardhat": "^2.9.2",
"ethers": "^5.6.8",
"hardhat": "^2.9.6",
"lint-staged": "11.0.0",
"mocha": "^8.4.0",
"nyc": "^15.1.0",
......
This diff is collapsed.
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