Commit e3300c42 authored by Mark Tyneway's avatar Mark Tyneway Committed by GitHub

Merge pull request #6148 from ethereum-optimism/feat/ctb-dead-ts

contracts-bedrock: delete dead typescript
parents ee058e41 d59ac98d
...@@ -130,8 +130,8 @@ jobs: ...@@ -130,8 +130,8 @@ jobs:
- persist_to_workspace: - persist_to_workspace:
root: "." root: "."
paths: paths:
- "packages/*/dist" - "packages/**/dist"
- "packages/*/artifacts" - "packages/contracts-bedrock/forge-artifacts"
docker-build: docker-build:
environment: environment:
...@@ -574,12 +574,12 @@ jobs: ...@@ -574,12 +574,12 @@ jobs:
steps: steps:
- checkout - checkout
- attach_workspace: { at: "." } - attach_workspace: { at: "." }
- check-changed:
patterns: sdk,contracts-bedrock,contracts
- restore_cache: - restore_cache:
name: Restore Yarn Package Cache name: Restore Yarn Package Cache
keys: keys:
- yarn-packages-v2-{{ checksum "yarn.lock" }} - yarn-packages-v2-{{ checksum "yarn.lock" }}
- check-changed:
patterns: sdk,contracts-bedrock,contracts
- run: - run:
name: anvil-l1 name: anvil-l1
background: true background: true
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
"configsProject": [ "configsProject": [
"{projectRoot}/foundry.toml", "{projectRoot}/foundry.toml",
"{projectRoot}/tsconfig.json", "{projectRoot}/tsconfig.json",
"{projectRoot}/hardhat.config.ts",
"{projectRoot}/package.json" "{projectRoot}/package.json"
], ],
"default": ["{projectRoot}/**/*", "configsWorkspace"], "default": ["{projectRoot}/**/*", "configsWorkspace"],
...@@ -38,8 +37,6 @@ ...@@ -38,8 +37,6 @@
], ],
"productionSrc": [ "productionSrc": [
"{projectRoot}/src/**/*", "{projectRoot}/src/**/*",
"!{projectRoot}/src/contract-artifacts.ts",
"!{projectRoot}/src/contract-deployed-artifacts.ts",
"!{projectRoot}/src/**/*.spec.ts" "!{projectRoot}/src/**/*.spec.ts"
], ],
"productionContracts": ["{projectRoot}/contracts/**/*"], "productionContracts": ["{projectRoot}/contracts/**/*"],
...@@ -63,16 +60,6 @@ ...@@ -63,16 +60,6 @@
"dependsOn": ["^build"], "dependsOn": ["^build"],
"outputs": ["{projectRoot}/artifacts", "{projectRoot}/forge-artifacts"] "outputs": ["{projectRoot}/artifacts", "{projectRoot}/forge-artifacts"]
}, },
"autogen:artifacts": {
"inputs": [
"configsWorkspace",
"configsProject",
"productionContracts",
"^productionContracts"
],
"dependsOn": ["^build", "build:contracts"],
"outputs": ["srcGenerated"]
},
"build": { "build": {
"inputs": [ "inputs": [
"configsWorkspace", "configsWorkspace",
...@@ -80,7 +67,7 @@ ...@@ -80,7 +67,7 @@
"production", "production",
"^production" "^production"
], ],
"dependsOn": ["^build", "autogen:artifacts", "build:contracts"], "dependsOn": ["^build", "build:contracts"],
"outputs": ["{projectRoot}/dist"] "outputs": ["{projectRoot}/dist"]
} }
} }
......
...@@ -45,7 +45,7 @@ version: ...@@ -45,7 +45,7 @@ version:
compile: compile:
cd ../packages/contracts-bedrock/ && \ cd ../packages/contracts-bedrock/ && \
yarn clean && \ yarn clean && \
npx hardhat compile yarn build
system-config-bindings: compile system-config-bindings: compile
./gen_bindings.sh contracts/L1/SystemConfig.sol:SystemConfig $(pkg) ./gen_bindings.sh contracts/L1/SystemConfig.sol:SystemConfig $(pkg)
......
...@@ -12,7 +12,8 @@ import ( ...@@ -12,7 +12,8 @@ import (
"text/template" "text/template"
"github.com/ethereum-optimism/optimism/op-bindings/ast" "github.com/ethereum-optimism/optimism/op-bindings/ast"
"github.com/ethereum-optimism/optimism/op-bindings/hardhat" "github.com/ethereum-optimism/optimism/op-bindings/solc"
"github.com/ethereum/go-ethereum/common/hexutil"
) )
type flags struct { type flags struct {
...@@ -33,14 +34,16 @@ type data struct { ...@@ -33,14 +34,16 @@ type data struct {
} }
type forgeArtifact struct { type forgeArtifact struct {
StorageLayout *solc.StorageLayout `json:"storageLayout"`
DeployedBytecode struct { DeployedBytecode struct {
SourceMap string `json:"sourceMap"` SourceMap string `json:"sourceMap"`
Object hexutil.Bytes `json:"object"`
} `json:"deployedBytecode"` } `json:"deployedBytecode"`
} }
func main() { func main() {
var f flags var f flags
flag.StringVar(&f.ArtifactsDir, "artifacts", "", "Comma-separated list of directories containing artifacts and build info") flag.StringVar(&f.ArtifactsDir, "artifacts", "", "Comma-separated list of directories build info")
flag.StringVar(&f.ForgeArtifacts, "forge-artifacts", "", "Forge artifacts directory, to load sourcemaps from, if available") flag.StringVar(&f.ForgeArtifacts, "forge-artifacts", "", "Forge artifacts directory, to load sourcemaps from, if available")
flag.StringVar(&f.OutDir, "out", "", "Output directory to put code in") flag.StringVar(&f.OutDir, "out", "", "Output directory to put code in")
flag.StringVar(&f.Contracts, "contracts", "", "Comma-separated list of contracts to generate code for") flag.StringVar(&f.Contracts, "contracts", "", "Comma-separated list of contracts to generate code for")
...@@ -64,25 +67,28 @@ func main() { ...@@ -64,25 +67,28 @@ func main() {
log.Fatalf("must define a list of contracts") log.Fatalf("must define a list of contracts")
} }
hh, err := hardhat.New("dummy", artifacts, nil)
if err != nil {
log.Fatalln("error reading artifacts:", err)
}
t := template.Must(template.New("artifact").Parse(tmpl)) t := template.Must(template.New("artifact").Parse(tmpl))
for _, name := range contracts { for _, name := range contracts {
art, err := hh.GetArtifact(name) forgeArtifactData, err := os.ReadFile(path.Join(f.ForgeArtifacts, name+".sol", name+".json"))
if err != nil { if errors.Is(err, os.ErrNotExist) {
log.Fatalf("error reading artifact %s: %v\n", name, err) log.Printf("cannot find forge-artifact with source-map data of %q\n", name)
} }
storage, err := hh.GetStorageLayout(name) var artifact forgeArtifact
if err := json.Unmarshal(forgeArtifactData, &artifact); err != nil {
log.Fatalf("failed to parse forge artifact of %q: %v\n", name, err)
}
if err != nil { if err != nil {
log.Fatalf("error reading storage layout %s: %v\n", name, err) log.Fatalf("error reading storage layout %s: %v\n", name, err)
} }
canonicalStorage := ast.CanonicalizeASTIDs(storage)
storage := artifact.StorageLayout
if storage == nil {
log.Fatalf("no storage layout for %s\n", name)
}
canonicalStorage := ast.CanonicalizeASTIDs(storage)
ser, err := json.Marshal(canonicalStorage) ser, err := json.Marshal(canonicalStorage)
if err != nil { if err != nil {
log.Fatalf("error marshaling storage: %v\n", err) log.Fatalf("error marshaling storage: %v\n", err)
...@@ -108,7 +114,7 @@ func main() { ...@@ -108,7 +114,7 @@ func main() {
d := data{ d := data{
Name: name, Name: name,
StorageLayout: serStr, StorageLayout: serStr,
DeployedBin: art.DeployedBytecode.String(), DeployedBin: artifact.DeployedBytecode.Object.String(),
Package: f.Package, Package: f.Package,
DeployedSourceMap: deployedSourceMap, DeployedSourceMap: deployedSourceMap,
} }
......
import { DeployConfig } from '../src/deploy-config'
import config from './devnetL1.json'
export default config satisfies DeployConfig
import { DeployConfig } from '../src/deploy-config'
import config from './getting-started.json'
export default config satisfies DeployConfig
import { DeployConfig } from '../src/deploy-config'
import config from './goerli-forked.json'
export default config satisfies DeployConfig
import { DeployConfig } from '../src/deploy-config'
import config from './goerli.json'
export default config satisfies DeployConfig
import { DeployConfig } from '../src/deploy-config'
import config from './hardhat.json'
export default config satisfies DeployConfig
import { DeployConfig } from '../src/deploy-config'
const config: DeployConfig = {
finalSystemOwner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
controller: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
portalGuardian: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
proxyAdminOwner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
l1StartingBlockTag:
'0x126e52a0cc0ae18948f567ee9443f4a8f0db67c437706e35baee424eb314a0d0',
l1ChainID: 1,
l2ChainID: 10,
l2BlockTime: 2,
maxSequencerDrift: 600,
sequencerWindowSize: 3600,
channelTimeout: 300,
p2pSequencerAddress: '0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65',
batchInboxAddress: '0xff00000000000000000000000000000000000010',
batchSenderAddress: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
l2OutputOracleSubmissionInterval: 20,
l2OutputOracleStartingTimestamp: 1679069195,
l2OutputOracleStartingBlockNumber: 79149704,
l2OutputOracleProposer: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
l2OutputOracleChallenger: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
finalizationPeriodSeconds: 2,
baseFeeVaultRecipient: '0x90F79bf6EB2c4f870365E785982E1f101E93b906',
l1FeeVaultRecipient: '0x90F79bf6EB2c4f870365E785982E1f101E93b906',
sequencerFeeVaultRecipient: '0x90F79bf6EB2c4f870365E785982E1f101E93b906',
baseFeeVaultMinimumWithdrawalAmount: '0x8ac7230489e80000',
l1FeeVaultMinimumWithdrawalAmount: '0x8ac7230489e80000',
sequencerFeeVaultMinimumWithdrawalAmount: '0x8ac7230489e80000',
baseFeeVaultWithdrawalNetwork: 0,
l1FeeVaultWithdrawalNetwork: 0,
sequencerFeeVaultWithdrawalNetwork: 0,
enableGovernance: true,
governanceTokenName: 'Optimism',
governanceTokenSymbol: 'OP',
governanceTokenOwner: '0x90F79bf6EB2c4f870365E785982E1f101E93b906',
l2GenesisBlockGasLimit: '0x17D7840',
l2GenesisBlockCoinbase: '0x4200000000000000000000000000000000000011',
l2GenesisBlockBaseFeePerGas: '0x3b9aca00',
gasPriceOracleOverhead: 2100,
gasPriceOracleScalar: 1000000,
eip1559Denominator: 50,
eip1559Elasticity: 10,
l2GenesisRegolithTimeOffset: '0x0',
}
export default config
import { DeployConfig } from '../src/deploy-config'
import mainnetJson from './mainnet.json'
// NOTE: The 'mainnet' network is currently being used for bedrock migration rehearsals.
// The system configured below is not yet live on mainnet, and many of the addresses used are
// unsafe for a production system.
// Re-export the mainnet json as a DeployConfig object.
//
// Notice, the following roles in the system are assigned to the:
// Optimism Foundation Mulitisig:
// - finalSystemOwner
// - controller
// - portalGuardian
// - proxyAdminOwner
// - l2OutputOracleChallenger
//
// The following roles are assigned to the same fee recipient:
// - baseFeeVaultRecipient
// - l1FeeVaultRecipient
// - sequencerFeeVaultRecipient
//
// The following role is assigned to the Mint Manager contract:
// - governanceTokenOwner
export default mainnetJson satisfies DeployConfig
import { ethers } from 'ethers'
import { HardhatUserConfig } from 'hardhat/config'
import dotenv from 'dotenv'
// Hardhat plugins
import '@eth-optimism/hardhat-deploy-config'
import '@foundry-rs/hardhat-forge'
import '@nomiclabs/hardhat-ethers'
import 'hardhat-deploy'
// Hardhat tasks
import './tasks'
// Deploy configuration
import { deployConfigSpec } from './src/deploy-config'
// Load environment variables
dotenv.config()
const config: HardhatUserConfig = {
networks: {
hardhat: {
live: false,
},
local: {
live: false,
url: 'http://localhost:8545',
saveDeployments: !!process.env.SAVE_DEPLOYMENTS || false,
accounts: [
'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
],
},
// NOTE: The 'mainnet' network is currently being used for mainnet rehearsals.
mainnet: {
url: process.env.L1_RPC || 'https://mainnet-l1-rehearsal.optimism.io',
accounts: [
process.env.PRIVATE_KEY_DEPLOYER ||
'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
],
},
devnetL1: {
live: false,
url: 'http://localhost:8545',
accounts: [
'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
],
},
devnetL2: {
live: false,
url: process.env.RPC_URL || 'http://localhost:9545',
accounts: [
'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
],
},
hivenet: {
chainId: Number(process.env.CHAIN_ID),
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
},
goerli: {
chainId: 5,
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
companionNetworks: {
l2: 'optimism-goerli',
},
},
'optimism-goerli': {
chainId: 420,
url: process.env.L2_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
companionNetworks: {
l1: 'goerli',
},
},
'alpha-1': {
chainId: 5,
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
},
deployer: {
chainId: Number(process.env.CHAIN_ID),
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
live: process.env.VERIFY_CONTRACTS === 'true',
},
'mainnet-forked': {
chainId: 1,
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
live: false,
},
'goerli-forked': {
chainId: 5,
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
live: true,
},
'internal-devnet': {
chainId: 5,
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
live: true,
},
'getting-started': {
chainId: 5,
url: process.env.L1_RPC || '',
accounts: [process.env.PRIVATE_KEY_DEPLOYER || ethers.constants.HashZero],
live: true,
},
},
foundry: {
buildInfo: true,
},
paths: {
deploy: './deploy',
deployments: './deployments',
deployConfig: './deploy-config',
},
namedAccounts: {
deployer: {
default: 0,
},
},
deployConfigSpec,
external: {
contracts: [
{
artifacts: '../contracts/artifacts',
},
],
deployments: {
goerli: [
'../contracts/deployments/goerli',
'../contracts-periphery/deployments/goerli',
],
mainnet: [
'../contracts/deployments/mainnet',
'../contracts-periphery/deployments/mainnet',
],
'mainnet-forked': [
'../contracts/deployments/mainnet',
'../contracts-periphery/deployments/mainnet',
],
'goerli-forked': [
'../contracts/deployments/goerli',
'../contracts-periphery/deployments/goerli',
],
},
},
solidity: {
compilers: [
{
version: '0.8.15',
settings: {
optimizer: { enabled: true, runs: 10_000 },
},
},
{
version: '0.5.17', // Required for WETH9
settings: {
optimizer: { enabled: true, runs: 10_000 },
},
},
],
settings: {
metadata: {
bytecodeHash:
process.env.FOUNDRY_PROFILE === 'echidna' ? 'ipfs' : 'none',
},
outputSelection: {
'*': {
'*': ['metadata', 'storageLayout'],
},
},
},
},
}
export default config
...@@ -2,36 +2,28 @@ ...@@ -2,36 +2,28 @@
"name": "@eth-optimism/contracts-bedrock", "name": "@eth-optimism/contracts-bedrock",
"version": "0.15.0", "version": "0.15.0",
"description": "Contracts for Optimism Specs", "description": "Contracts for Optimism Specs",
"main": "dist/index",
"types": "dist/index",
"license": "MIT", "license": "MIT",
"files": [ "files": [
"dist/**/*.js", "forge-artifacts/**/*.json",
"dist/**/*.d.ts",
"dist/types/**/*.ts",
"artifacts/contracts/**/*.json",
"deployments/**/*.json", "deployments/**/*.json",
"contracts/**/*.sol" "contracts/**/*.sol"
], ],
"scripts": { "scripts": {
"bindings": "cd ../../op-bindings && make", "bindings": "cd ../../op-bindings && make",
"build:with-metadata": "FOUNDRY_PROFILE=echidna yarn build:forge", "build:with-metadata": "FOUNDRY_PROFILE=echidna yarn build:forge",
"build": "npx nx build:ts && npx nx typechain", "build": "npx nx build:contracts",
"prebuild:contracts": "./scripts/verify-foundry-install.sh", "prebuild:contracts": "./scripts/verify-foundry-install.sh",
"build:contracts": "yarn build:hardhat", "build:contracts": "yarn build:forge",
"build:forge": "forge build", "build:forge": "forge build",
"build:hardhat": "hardhat compile",
"build:ts": "tsc -p tsconfig.build.json",
"build:differential": "go build -o ./scripts/differential-testing/differential-testing ./scripts/differential-testing", "build:differential": "go build -o ./scripts/differential-testing/differential-testing ./scripts/differential-testing",
"build:fuzz": "(cd test-case-generator && go build ./cmd/fuzz.go)", "build:fuzz": "(cd test-case-generator && go build ./cmd/fuzz.go)",
"autogen:artifacts": "ts-node scripts/generate-artifacts.ts",
"autogen:invariant-docs": "ts-node scripts/invariant-doc-gen.ts", "autogen:invariant-docs": "ts-node scripts/invariant-doc-gen.ts",
"test": "yarn build:differential && yarn build:fuzz && forge test", "test": "yarn build:differential && yarn build:fuzz && forge test",
"coverage": "yarn build:differential && yarn build:fuzz && forge coverage", "coverage": "yarn build:differential && yarn build:fuzz && forge coverage",
"coverage:lcov": "yarn build:differential && yarn build:fuzz && forge coverage --report lcov", "coverage:lcov": "yarn build:differential && yarn build:fuzz && forge coverage --report lcov",
"gas-snapshot": "yarn build:differential && yarn build:fuzz && forge snapshot --no-match-test 'testDiff|testFuzz|invariant|generateArtifact'", "gas-snapshot": "yarn build:differential && yarn build:fuzz && forge snapshot --no-match-test 'testDiff|testFuzz|invariant|generateArtifact'",
"storage-snapshot": "./scripts/storage-snapshot.sh", "storage-snapshot": "./scripts/storage-snapshot.sh",
"validate-deploy-configs": "hardhat compile && hardhat generate-deploy-config && ./scripts/validate-deploy-configs.sh", "validate-deploy-configs": "./scripts/validate-deploy-configs.sh",
"validate-spacers": "forge build && npx ts-node scripts/validate-spacers.ts", "validate-spacers": "forge build && npx ts-node scripts/validate-spacers.ts",
"slither": "./scripts/slither.sh", "slither": "./scripts/slither.sh",
"slither:triage": "TRIAGE_MODE=1 ./scripts/slither.sh", "slither:triage": "TRIAGE_MODE=1 ./scripts/slither.sh",
...@@ -44,7 +36,6 @@ ...@@ -44,7 +36,6 @@
"lint:contracts:fix": "yarn solhint --fix 'contracts/**/!(DisputeTypes).sol' && yarn prettier --write 'contracts/**/!(DisputeTypes).sol'", "lint:contracts:fix": "yarn solhint --fix 'contracts/**/!(DisputeTypes).sol' && yarn prettier --write 'contracts/**/!(DisputeTypes).sol'",
"lint:fix": "yarn lint:contracts:fix && yarn lint:ts:fix", "lint:fix": "yarn lint:contracts:fix && yarn lint:ts:fix",
"lint": "yarn lint:fix && yarn lint:check", "lint": "yarn lint:fix && yarn lint:check",
"typechain": "typechain --target ethers-v5 --out-dir dist/types --glob 'artifacts/!(build-info)/**/+([a-zA-Z0-9_]).json'",
"echidna:aliasing": "echidna-test --contract EchidnaFuzzAddressAliasing --config ./echidna.yaml .", "echidna:aliasing": "echidna-test --contract EchidnaFuzzAddressAliasing --config ./echidna.yaml .",
"echidna:burn:gas": "echidna-test --contract EchidnaFuzzBurnGas --config ./echidna.yaml .", "echidna:burn:gas": "echidna-test --contract EchidnaFuzzBurnGas --config ./echidna.yaml .",
"echidna:burn:eth": "echidna-test --contract EchidnaFuzzBurnEth --config ./echidna.yaml .", "echidna:burn:eth": "echidna-test --contract EchidnaFuzzBurnEth --config ./echidna.yaml .",
...@@ -57,35 +48,19 @@ ...@@ -57,35 +48,19 @@
"@eth-optimism/core-utils": "^0.12.1", "@eth-optimism/core-utils": "^0.12.1",
"@openzeppelin/contracts": "4.7.3", "@openzeppelin/contracts": "4.7.3",
"@openzeppelin/contracts-upgradeable": "4.7.3", "@openzeppelin/contracts-upgradeable": "4.7.3",
"@rari-capital/solmate": "https://github.com/rari-capital/solmate.git#8f9b23f8838670afda0fd8983f2c41e8037ae6bc",
"clones-with-immutable-args": "https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args.git#105efee1b9127ed7f6fedf139e1fc796ce8791f2",
"ethers": "^5.7.0" "ethers": "^5.7.0"
}, },
"devDependencies": { "devDependencies": {
"@eth-optimism/hardhat-deploy-config": "^0.2.6",
"@ethersproject/abstract-provider": "^5.7.0",
"@ethersproject/abstract-signer": "^5.7.0",
"ethereumjs-wallet": "^1.0.2",
"@defi-wonderland/smock": "^2.0.2",
"@foundry-rs/hardhat-forge": "^0.1.17",
"@nomiclabs/hardhat-ethers": "^2.0.0",
"@nomiclabs/hardhat-waffle": "^2.0.0",
"@rari-capital/solmate": "https://github.com/rari-capital/solmate.git#8f9b23f8838670afda0fd8983f2c41e8037ae6bc",
"clones-with-immutable-args": "https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args.git#105efee1b9127ed7f6fedf139e1fc796ce8791f2",
"@typechain/ethers-v5": "^10.1.0",
"@typescript-eslint/eslint-plugin": "^5.45.1", "@typescript-eslint/eslint-plugin": "^5.45.1",
"@typescript-eslint/parser": "^5.45.1", "@typescript-eslint/parser": "^5.45.1",
"bip39": "^3.0.4",
"chai": "^4.2.0",
"dotenv": "^16.0.0",
"ds-test": "https://github.com/dapphub/ds-test.git#9310e879db8ba3ea6d5c6489a579118fd264a3f5", "ds-test": "https://github.com/dapphub/ds-test.git#9310e879db8ba3ea6d5c6489a579118fd264a3f5",
"ethereum-waffle": "^3.0.0",
"forge-std": "https://github.com/foundry-rs/forge-std.git#e8a047e3f40f13fa37af6fe14e6e06283d9a060e", "forge-std": "https://github.com/foundry-rs/forge-std.git#e8a047e3f40f13fa37af6fe14e6e06283d9a060e",
"glob": "^7.1.6", "glob": "^7.1.6",
"hardhat": "^2.9.6",
"hardhat-deploy": "^0.11.4",
"solhint": "^3.3.7", "solhint": "^3.3.7",
"solhint-plugin-prettier": "^0.0.5", "solhint-plugin-prettier": "^0.0.5",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typechain": "^8.1.0",
"typescript": "^4.9.3" "typescript": "^4.9.3"
} }
} }
import { ethers } from 'ethers'
/**
* Gets the hardhat artifact for the given contract name.
* Will throw an error if the contract artifact is not found.
*
* @param name Contract name.
* @returns The artifact for the given contract name.
*/
export const getContractDefinition = (name: string): any => {
// We import this using `require` because hardhat tries to build this file when compiling
// the contracts, but we need the contracts to be compiled before the contract-artifacts.ts
// file can be generated.
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { getContractArtifact } = require('./contract-artifacts')
const artifact = getContractArtifact(name)
if (artifact === undefined) {
throw new Error(`Unable to find artifact for contract: ${name}`)
}
return artifact
}
/**
* Gets an ethers Interface instance for the given contract name.
*
* @param name Contract name.
* @returns The interface for the given contract name.
*/
export const getContractInterface = (name: string): ethers.utils.Interface => {
const definition = getContractDefinition(name)
return new ethers.utils.Interface(definition.abi)
}
/**
* Gets an ethers ContractFactory instance for the given contract name.
*
* @param name Contract name.
* @param signer The signer for the ContractFactory to use.
* @returns The contract factory for the given contract name.
*/
export const getContractFactory = (
name: string,
signer?: ethers.Signer
): ethers.ContractFactory => {
const definition = getContractDefinition(name)
const contractInterface = getContractInterface(name)
return new ethers.ContractFactory(
contractInterface,
definition.bytecode,
signer
)
}
export * from './constants'
export * from './contract-defs'
import fs from 'fs'
import path from 'path'
import { task } from 'hardhat/config'
import { HardhatRuntimeEnvironment } from 'hardhat/types'
task(
'generate-deploy-config',
'generates a json config file for the current network'
).setAction(async ({}, hre: HardhatRuntimeEnvironment) => {
try {
const base = path.join(hre.config.paths.deployConfig, hre.network.name)
if (fs.existsSync(`${base}.ts`)) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const config = require(`${base}.ts`).default
fs.writeFileSync(`${base}.json`, JSON.stringify(config, null, 2), 'utf8')
} else {
throw new Error('not found')
}
} catch (err) {
throw new Error(
`error while loading deploy config for network: ${hre.network.name}, ${err}`
)
}
})
import './solidity'
import './generate-deploy-config'
import { subtask } from 'hardhat/config'
import { TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS } from 'hardhat/builtin-tasks/task-names'
subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(
async (_, __, runSuper) => {
const paths = await runSuper()
return paths.filter((p: string) => !p.endsWith('.t.sol'))
}
)
...@@ -4,10 +4,8 @@ ...@@ -4,10 +4,8 @@
"outDir": "./dist" "outDir": "./dist"
}, },
"include": [ "include": [
"src/**/*",
"deploy-config/**/*", "deploy-config/**/*",
"deploy-config/**/*.json", "deploy-config/**/*.json",
"tasks/**/*",
"scripts/**/*" "scripts/**/*"
] ]
} }
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
"url": "https://github.com/ethereum-optimism/optimism.git" "url": "https://github.com/ethereum-optimism/optimism.git"
}, },
"dependencies": { "dependencies": {
"ethers": "^5.7.0",
"@ethersproject/abi": "^5.7.0", "@ethersproject/abi": "^5.7.0",
"@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0",
"@ethersproject/address": "^5.7.0", "@ethersproject/address": "^5.7.0",
......
...@@ -9,3 +9,4 @@ export * from './deposit-transaction' ...@@ -9,3 +9,4 @@ export * from './deposit-transaction'
export * from './encoding' export * from './encoding'
export * from './hashing' export * from './hashing'
export * from './op-provider' export * from './op-provider'
export * from './constants'
...@@ -13,8 +13,10 @@ import { ...@@ -13,8 +13,10 @@ import {
BlockTag, BlockTag,
} from '@ethersproject/abstract-provider' } from '@ethersproject/abstract-provider'
import { predeploys } from '@eth-optimism/contracts' import { predeploys } from '@eth-optimism/contracts'
import { getContractInterface } from '@eth-optimism/contracts-bedrock'
import { hexStringEquals } from '@eth-optimism/core-utils' import { hexStringEquals } from '@eth-optimism/core-utils'
import l1StandardBridgeArtifact from '@eth-optimism/contracts-bedrock/forge-artifacts/L1StandardBridge.sol/L1StandardBridge.json'
import l2StandardBridgeArtifact from '@eth-optimism/contracts-bedrock/forge-artifacts/L2StandardBridge.sol/L2StandardBridge.json'
import optimismMintableERC20 from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismMintableERC20.sol/OptimismMintableERC20.json'
import { CrossChainMessenger } from '../cross-chain-messenger' import { CrossChainMessenger } from '../cross-chain-messenger'
import { import {
...@@ -50,12 +52,12 @@ export class StandardBridgeAdapter implements IBridgeAdapter { ...@@ -50,12 +52,12 @@ export class StandardBridgeAdapter implements IBridgeAdapter {
this.messenger = opts.messenger this.messenger = opts.messenger
this.l1Bridge = new Contract( this.l1Bridge = new Contract(
toAddress(opts.l1Bridge), toAddress(opts.l1Bridge),
getContractInterface('L1StandardBridge'), l1StandardBridgeArtifact.abi,
this.messenger.l1Provider this.messenger.l1Provider
) )
this.l2Bridge = new Contract( this.l2Bridge = new Contract(
toAddress(opts.l2Bridge), toAddress(opts.l2Bridge),
getContractInterface('L2StandardBridge'), l2StandardBridgeArtifact.abi,
this.messenger.l2Provider this.messenger.l2Provider
) )
} }
...@@ -157,7 +159,7 @@ export class StandardBridgeAdapter implements IBridgeAdapter { ...@@ -157,7 +159,7 @@ export class StandardBridgeAdapter implements IBridgeAdapter {
try { try {
const contract = new Contract( const contract = new Contract(
toAddress(l2Token), toAddress(l2Token),
getContractInterface('OptimismMintableERC20'), optimismMintableERC20.abi,
this.messenger.l2Provider this.messenger.l2Provider
) )
// Don't support ETH deposits or withdrawals via this bridge. // Don't support ETH deposits or withdrawals via this bridge.
...@@ -207,7 +209,7 @@ export class StandardBridgeAdapter implements IBridgeAdapter { ...@@ -207,7 +209,7 @@ export class StandardBridgeAdapter implements IBridgeAdapter {
const token = new Contract( const token = new Contract(
toAddress(l1Token), toAddress(l1Token),
getContractInterface('OptimismMintableERC20'), // Any ERC20 will do optimismMintableERC20.abi,
this.messenger.l1Provider this.messenger.l1Provider
) )
...@@ -274,7 +276,7 @@ export class StandardBridgeAdapter implements IBridgeAdapter { ...@@ -274,7 +276,7 @@ export class StandardBridgeAdapter implements IBridgeAdapter {
const token = new Contract( const token = new Contract(
toAddress(l1Token), toAddress(l1Token),
getContractInterface('OptimismMintableERC20'), // Any ERC20 will do optimismMintableERC20.abi,
this.messenger.l1Provider this.messenger.l1Provider
) )
......
import { import { predeploys } from '@eth-optimism/core-utils'
predeploys, import { ethers } from 'ethers'
getDeployedContractDefinition,
} from '@eth-optimism/contracts'
import { predeploys as bedrockPredeploys } from '@eth-optimism/contracts-bedrock'
import portalArtifactsMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/OptimismPortalProxy.json' import portalArtifactsMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/OptimismPortalProxy.json'
import portalArtifactsGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/OptimismPortalProxy.json' import portalArtifactsGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/OptimismPortalProxy.json'
import l2OutputOracleArtifactsMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/L2OutputOracleProxy.json' import l2OutputOracleArtifactsMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/L2OutputOracleProxy.json'
import l2OutputOracleArtifactsGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/L2OutputOracleProxy.json' import l2OutputOracleArtifactsGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/L2OutputOracleProxy.json'
import addressManagerArtifactMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/AddressManager.json'
import addressManagerArtifactGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/AddressManager.json'
import l1StandardBridgeArtifactMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/L1StandardBridgeProxy.json'
import l1StandardBridgeArtifactGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/L1StandardBridgeProxy.json'
import l1CrossDomainMessengerArtifactMainnet from '@eth-optimism/contracts-bedrock/deployments/mainnet/L1CrossDomainMessengerProxy.json'
import l1CrossDomainMessengerArtifactGoerli from '@eth-optimism/contracts-bedrock/deployments/goerli/L1CrossDomainMessengerProxy.json'
const portalAddresses = { const portalAddresses = {
mainnet: portalArtifactsMainnet, mainnet: portalArtifactsMainnet.address,
goerli: portalArtifactsGoerli, goerli: portalArtifactsGoerli.address,
} }
const l2OutputOracleAddresses = { const l2OutputOracleAddresses = {
mainnet: l2OutputOracleArtifactsMainnet, mainnet: l2OutputOracleArtifactsMainnet.address,
goerli: l2OutputOracleArtifactsGoerli, goerli: l2OutputOracleArtifactsGoerli.address,
}
const addressManagerAddresses = {
mainnet: addressManagerArtifactMainnet.address,
goerli: addressManagerArtifactGoerli.address,
}
const l1StandardBridgeAddresses = {
mainnet: l1StandardBridgeArtifactMainnet.address,
goerli: l1StandardBridgeArtifactGoerli.address,
}
const l1CrossDomainMessengerAddresses = {
mainnet: l1CrossDomainMessengerArtifactMainnet.address,
goerli: l1CrossDomainMessengerArtifactGoerli.address,
}
// legacy
const stateCommitmentChainAddresses = {
mainnet: '0xBe5dAb4A2e9cd0F27300dB4aB94BeE3A233AEB19',
goerli: '0x9c945aC97Baf48cB784AbBB61399beB71aF7A378',
}
// legacy
const canonicalTransactionChainAddresses = {
mainnet: '0x5E4e65926BA27467555EB562121fac00D24E9dD2',
goerli: '0x607F755149cFEB3a14E1Dc3A4E2450Cde7dfb04D',
} }
import { import {
...@@ -55,20 +85,19 @@ export const CHAIN_BLOCK_TIMES: { ...@@ -55,20 +85,19 @@ export const CHAIN_BLOCK_TIMES: {
/** /**
* Full list of default L2 contract addresses. * Full list of default L2 contract addresses.
* TODO(tynes): migrate to predeploys from contracts-bedrock
*/ */
export const DEFAULT_L2_CONTRACT_ADDRESSES: OEL2ContractsLike = { export const DEFAULT_L2_CONTRACT_ADDRESSES: OEL2ContractsLike = {
L2CrossDomainMessenger: predeploys.L2CrossDomainMessenger, L2CrossDomainMessenger: predeploys.L2CrossDomainMessenger,
L2ToL1MessagePasser: predeploys.OVM_L2ToL1MessagePasser, L2ToL1MessagePasser: predeploys.L2ToL1MessagePasser,
L2StandardBridge: predeploys.L2StandardBridge, L2StandardBridge: predeploys.L2StandardBridge,
OVM_L1BlockNumber: predeploys.OVM_L1BlockNumber, OVM_L1BlockNumber: predeploys.L1BlockNumber,
OVM_L2ToL1MessagePasser: predeploys.OVM_L2ToL1MessagePasser, OVM_L2ToL1MessagePasser: predeploys.L2ToL1MessagePasser,
OVM_DeployerWhitelist: predeploys.OVM_DeployerWhitelist, OVM_DeployerWhitelist: predeploys.DeployerWhitelist,
OVM_ETH: predeploys.OVM_ETH, OVM_ETH: predeploys.LegacyERC20ETH,
OVM_GasPriceOracle: predeploys.OVM_GasPriceOracle, OVM_GasPriceOracle: predeploys.GasPriceOracle,
OVM_SequencerFeeVault: predeploys.OVM_SequencerFeeVault, OVM_SequencerFeeVault: predeploys.SequencerFeeVault,
WETH: predeploys.WETH9, WETH: predeploys.WETH9,
BedrockMessagePasser: bedrockPredeploys.L2ToL1MessagePasser, BedrockMessagePasser: predeploys.L2ToL1MessagePasser,
} }
/** /**
...@@ -78,22 +107,15 @@ export const DEFAULT_L2_CONTRACT_ADDRESSES: OEL2ContractsLike = { ...@@ -78,22 +107,15 @@ export const DEFAULT_L2_CONTRACT_ADDRESSES: OEL2ContractsLike = {
* @returns The L1 contracts for the given network. * @returns The L1 contracts for the given network.
*/ */
const getL1ContractsByNetworkName = (network: string): OEL1ContractsLike => { const getL1ContractsByNetworkName = (network: string): OEL1ContractsLike => {
// TODO this doesn't code split and makes the sdk artifacts way too big
const getDeployedAddress = (name: string) => {
return getDeployedContractDefinition(name, network).address
}
return { return {
AddressManager: getDeployedAddress('Lib_AddressManager'), AddressManager: addressManagerAddresses[network],
L1CrossDomainMessenger: getDeployedAddress( L1CrossDomainMessenger: l1CrossDomainMessengerAddresses[network],
'Proxy__OVM_L1CrossDomainMessenger' L1StandardBridge: l1StandardBridgeAddresses[network],
), StateCommitmentChain: stateCommitmentChainAddresses[network],
L1StandardBridge: getDeployedAddress('Proxy__OVM_L1StandardBridge'), CanonicalTransactionChain: canonicalTransactionChainAddresses[network],
StateCommitmentChain: getDeployedAddress('StateCommitmentChain'), BondManager: ethers.constants.AddressZero,
CanonicalTransactionChain: getDeployedAddress('CanonicalTransactionChain'), OptimismPortal: portalAddresses[network],
BondManager: getDeployedAddress('BondManager'), L2OutputOracle: l2OutputOracleAddresses[network],
OptimismPortal: portalAddresses[network].address,
L2OutputOracle: l2OutputOracleAddresses[network].address,
} }
} }
......
import { getContractInterface, predeploys } from '@eth-optimism/contracts' import { getContractInterface, predeploys } from '@eth-optimism/contracts'
import { getContractInterface as getContractInterfaceBedrock } from '@eth-optimism/contracts-bedrock'
import { ethers, Contract } from 'ethers' import { ethers, Contract } from 'ethers'
import l1StandardBridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L1StandardBridge.sol/L1StandardBridge.json'
import l2StandardBridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L2StandardBridge.sol/L2StandardBridge.json'
import optimismMintableERC20 from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismMintableERC20.sol/OptimismMintableERC20.json'
import optimismPortal from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismPortal.sol/OptimismPortal.json'
import l1CrossDomainMessenger from '@eth-optimism/contracts-bedrock/forge-artifacts/L1CrossDomainMessenger.sol/L1CrossDomainMessenger.json'
import l2CrossDomainMessenger from '@eth-optimism/contracts-bedrock/forge-artifacts/L2CrossDomainMessenger.sol/L2CrossDomainMessenger.json'
import optimismMintableERC20Factory from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismMintableERC20Factory.sol/OptimismMintableERC20Factory.json'
import proxyAdmin from '@eth-optimism/contracts-bedrock/forge-artifacts/ProxyAdmin.sol/ProxyAdmin.json'
import l2OutputOracle from '@eth-optimism/contracts-bedrock/forge-artifacts/L2OutputOracle.sol/L2OutputOracle.json'
import l1ERC721Bridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L1ERC721Bridge.sol/L1ERC721Bridge.json'
import l2ERC721Bridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L2ERC721Bridge.sol/L2ERC721Bridge.json'
import l1Block from '@eth-optimism/contracts-bedrock/forge-artifacts/L1Block.sol/L1Block.json'
import l2ToL1MessagePasser from '@eth-optimism/contracts-bedrock/forge-artifacts/L2ToL1MessagePasser.sol/L2ToL1MessagePasser.json'
import gasPriceOracle from '@eth-optimism/contracts-bedrock/forge-artifacts/GasPriceOracle.sol/GasPriceOracle.json'
import { toAddress } from './coercion' import { toAddress } from './coercion'
import { DeepPartial } from './type-utils' import { DeepPartial } from './type-utils'
...@@ -32,6 +45,59 @@ const NAME_REMAPPING = { ...@@ -32,6 +45,59 @@ const NAME_REMAPPING = {
BedrockMessagePasser: 'L2ToL1MessagePasser' as const, BedrockMessagePasser: 'L2ToL1MessagePasser' as const,
} }
const getContractInterfaceBedrock = (name: string): ethers.utils.Interface => {
let artifact: any = ''
switch (name) {
case 'Lib_AddressManager':
case 'AddressManager':
artifact = ''
break
case 'L1CrossDomainMessenger':
artifact = l1CrossDomainMessenger
break
case 'L1ERC721Bridge':
artifact = l1ERC721Bridge
break
case 'L2OutputOracle':
artifact = l2OutputOracle
break
case 'OptimismMintableERC20Factory':
artifact = optimismMintableERC20Factory
break
case 'ProxyAdmin':
artifact = proxyAdmin
break
case 'L1StandardBridge':
artifact = l1StandardBridge
break
case 'L2StandardBridge':
artifact = l2StandardBridge
break
case 'OptimismPortal':
artifact = optimismPortal
break
case 'L2CrossDomainMessenger':
artifact = l2CrossDomainMessenger
break
case 'OptimismMintableERC20':
artifact = optimismMintableERC20
break
case 'L2ERC721Bridge':
artifact = l2ERC721Bridge
break
case 'L1Block':
artifact = l1Block
break
case 'L2ToL1MessagePasser':
artifact = l2ToL1MessagePasser
break
case 'GasPriceOracle':
artifact = gasPriceOracle
break
}
return new ethers.utils.Interface(artifact.abi)
}
/** /**
* Returns an ethers.Contract object for the given name, connected to the appropriate address for * Returns an ethers.Contract object for the given name, connected to the appropriate address for
* the given L2 chain ID. Users can also provide a custom address to connect the contract to * the given L2 chain ID. Users can also provide a custom address to connect the contract to
......
...@@ -5,11 +5,16 @@ import { HardhatRuntimeEnvironment } from 'hardhat/types' ...@@ -5,11 +5,16 @@ import { HardhatRuntimeEnvironment } from 'hardhat/types'
import '@nomiclabs/hardhat-ethers' import '@nomiclabs/hardhat-ethers'
import 'hardhat-deploy' import 'hardhat-deploy'
import { Event, Contract, Wallet, providers, utils } from 'ethers' import { Event, Contract, Wallet, providers, utils } from 'ethers'
import { import { predeploys, sleep } from '@eth-optimism/core-utils'
predeploys, import Artifact__WETH9 from '@eth-optimism/contracts-bedrock/forge-artifacts/WETH9.sol/WETH9.json'
getContractDefinition, import Artifact__OptimismMintableERC20TokenFactory from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismMintableERC20Factory.sol/OptimismMintableERC20Factory.json'
} from '@eth-optimism/contracts-bedrock' import Artifact__OptimismMintableERC20Token from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismMintableERC20.sol/OptimismMintableERC20.json'
import { sleep } from '@eth-optimism/core-utils' import Artifact__L2ToL1MessagePasser from '@eth-optimism/contracts-bedrock/forge-artifacts/L2ToL1MessagePasser.sol/L2ToL1MessagePasser.json'
import Artifact__L2CrossDomainMessenger from '@eth-optimism/contracts-bedrock/forge-artifacts/L2CrossDomainMessenger.sol/L2CrossDomainMessenger.json'
import Artifact__L2StandardBridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L2StandardBridge.sol/L2StandardBridge.json'
import Artifact__OptimismPortal from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismPortal.sol/OptimismPortal.json'
import Artifact__L1CrossDomainMessenger from '@eth-optimism/contracts-bedrock/forge-artifacts/L1CrossDomainMessenger.sol/L1CrossDomainMessenger.json'
import Artifact__L1StandardBridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L1StandardBridge.sol/L1StandardBridge.json'
import { import {
CrossChainMessenger, CrossChainMessenger,
...@@ -26,10 +31,9 @@ const deployWETH9 = async ( ...@@ -26,10 +31,9 @@ const deployWETH9 = async (
const signers = await hre.ethers.getSigners() const signers = await hre.ethers.getSigners()
const signer = signers[0] const signer = signers[0]
const Artifact__WETH9 = await getContractDefinition('WETH9')
const Factory__WETH9 = new hre.ethers.ContractFactory( const Factory__WETH9 = new hre.ethers.ContractFactory(
Artifact__WETH9.abi, Artifact__WETH9.abi,
Artifact__WETH9.bytecode, Artifact__WETH9.bytecode.object,
signer signer
) )
...@@ -54,13 +58,6 @@ const createOptimismMintableERC20 = async ( ...@@ -54,13 +58,6 @@ const createOptimismMintableERC20 = async (
L1ERC20: Contract, L1ERC20: Contract,
l2Signer: Wallet l2Signer: Wallet
): Promise<Contract> => { ): Promise<Contract> => {
const Artifact__OptimismMintableERC20Token = await getContractDefinition(
'OptimismMintableERC20'
)
const Artifact__OptimismMintableERC20TokenFactory =
await getContractDefinition('OptimismMintableERC20Factory')
const OptimismMintableERC20TokenFactory = new Contract( const OptimismMintableERC20TokenFactory = new Contract(
predeploys.OptimismMintableERC20Factory, predeploys.OptimismMintableERC20Factory,
Artifact__OptimismMintableERC20TokenFactory.abi, Artifact__OptimismMintableERC20TokenFactory.abi,
...@@ -153,30 +150,6 @@ task('deposit-erc20', 'Deposits WETH9 onto L2.') ...@@ -153,30 +150,6 @@ task('deposit-erc20', 'Deposits WETH9 onto L2.')
} as OEContractsLike } as OEContractsLike
} }
const Artifact__L2ToL1MessagePasser = await getContractDefinition(
'L2ToL1MessagePasser'
)
const Artifact__L2CrossDomainMessenger = await getContractDefinition(
'L2CrossDomainMessenger'
)
const Artifact__L2StandardBridge = await getContractDefinition(
'L2StandardBridge'
)
const Artifact__OptimismPortal = await getContractDefinition(
'OptimismPortal'
)
const Artifact__L1CrossDomainMessenger = await getContractDefinition(
'L1CrossDomainMessenger'
)
const Artifact__L1StandardBridge = await getContractDefinition(
'L1StandardBridge'
)
const OptimismPortal = new hre.ethers.Contract( const OptimismPortal = new hre.ethers.Contract(
contractAddrs.l1.OptimismPortal, contractAddrs.l1.OptimismPortal,
Artifact__OptimismPortal.abi, Artifact__OptimismPortal.abi,
......
...@@ -4,11 +4,14 @@ import { task, types } from 'hardhat/config' ...@@ -4,11 +4,14 @@ import { task, types } from 'hardhat/config'
import '@nomiclabs/hardhat-ethers' import '@nomiclabs/hardhat-ethers'
import 'hardhat-deploy' import 'hardhat-deploy'
import { Deployment } from 'hardhat-deploy/types' import { Deployment } from 'hardhat-deploy/types'
import { import { predeploys } from '@eth-optimism/core-utils'
predeploys,
getContractDefinition,
} from '@eth-optimism/contracts-bedrock'
import { providers, utils, ethers } from 'ethers' import { providers, utils, ethers } from 'ethers'
import Artifact__L2ToL1MessagePasser from '@eth-optimism/contracts-bedrock/forge-artifacts/L2ToL1MessagePasser.sol/L2ToL1MessagePasser.json'
import Artifact__L2CrossDomainMessenger from '@eth-optimism/contracts-bedrock/forge-artifacts/L2CrossDomainMessenger.sol/L2CrossDomainMessenger.json'
import Artifact__L2StandardBridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L2StandardBridge.sol/L2StandardBridge.json'
import Artifact__OptimismPortal from '@eth-optimism/contracts-bedrock/forge-artifacts/OptimismPortal.sol/OptimismPortal.json'
import Artifact__L1CrossDomainMessenger from '@eth-optimism/contracts-bedrock/forge-artifacts/L1CrossDomainMessenger.sol/L1CrossDomainMessenger.json'
import Artifact__L1StandardBridge from '@eth-optimism/contracts-bedrock/forge-artifacts/L1StandardBridge.sol/L1StandardBridge.json'
import { import {
CrossChainMessenger, CrossChainMessenger,
...@@ -142,30 +145,6 @@ task('deposit-eth', 'Deposits ether to L2.') ...@@ -142,30 +145,6 @@ task('deposit-eth', 'Deposits ether to L2.')
} }
} }
const Artifact__L2ToL1MessagePasser = await getContractDefinition(
'L2ToL1MessagePasser'
)
const Artifact__L2CrossDomainMessenger = await getContractDefinition(
'L2CrossDomainMessenger'
)
const Artifact__L2StandardBridge = await getContractDefinition(
'L2StandardBridge'
)
const Artifact__OptimismPortal = await getContractDefinition(
'OptimismPortal'
)
const Artifact__L1CrossDomainMessenger = await getContractDefinition(
'L1CrossDomainMessenger'
)
const Artifact__L1StandardBridge = await getContractDefinition(
'L1StandardBridge'
)
const OptimismPortal = new hre.ethers.Contract( const OptimismPortal = new hre.ethers.Contract(
contractAddrs.l1.OptimismPortal, contractAddrs.l1.OptimismPortal,
Artifact__OptimismPortal.abi, Artifact__OptimismPortal.abi,
......
import { task, types } from 'hardhat/config' import { task, types } from 'hardhat/config'
import { HardhatRuntimeEnvironment } from 'hardhat/types' import { HardhatRuntimeEnvironment } from 'hardhat/types'
import { Wallet, providers } from 'ethers' import { Wallet, providers } from 'ethers'
import { predeploys } from '@eth-optimism/contracts-bedrock' import { predeploys } from '@eth-optimism/core-utils'
import 'hardhat-deploy' import 'hardhat-deploy'
import '@nomiclabs/hardhat-ethers' import '@nomiclabs/hardhat-ethers'
......
...@@ -562,17 +562,6 @@ ...@@ -562,17 +562,6 @@
dependencies: dependencies:
"@jridgewell/trace-mapping" "0.3.9" "@jridgewell/trace-mapping" "0.3.9"
"@defi-wonderland/smock@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@defi-wonderland/smock/-/smock-2.0.2.tgz#0be863a61420fb162190c9be8798befada179f30"
integrity sha512-nZtnUftPkMmFedqDzBqQrZWX+6Q3fK5MNMK3R6mLTg8Ig087A7ifs1KH9vGGpZ3p9RdgC+scUy9KfDASp2SKxg==
dependencies:
diff "^5.0.0"
lodash.isequal "^4.5.0"
lodash.isequalwith "^4.4.0"
rxjs "^7.2.0"
semver "^7.3.5"
"@defi-wonderland/smock@^2.0.7": "@defi-wonderland/smock@^2.0.7":
version "2.0.7" version "2.0.7"
resolved "https://registry.yarnpkg.com/@defi-wonderland/smock/-/smock-2.0.7.tgz#59d5fc93e175ad120c5dcdd8294e07525606c855" resolved "https://registry.yarnpkg.com/@defi-wonderland/smock/-/smock-2.0.7.tgz#59d5fc93e175ad120c5dcdd8294e07525606c855"
...@@ -2135,32 +2124,6 @@ ...@@ -2135,32 +2124,6 @@
"@ethersproject/properties" "^5.7.0" "@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0" "@ethersproject/strings" "^5.7.0"
"@foundry-rs/easy-foundryup@^0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@foundry-rs/easy-foundryup/-/easy-foundryup-0.1.3.tgz#f5281aff6b3a98f277bdafcb4330e71f80979ed4"
integrity sha512-Funb4hrSBeikKCmccFT/d3Ud5o92tlIZHTJeMCVk5b54/+CHZHr4g7MmtvO5xrGhxrOebQ0L+ojIj+VixgW7ug==
dependencies:
command-exists "^1.2.9"
ts-interface-checker "^0.1.9"
"@foundry-rs/hardhat-forge@^0.1.17":
version "0.1.17"
resolved "https://registry.yarnpkg.com/@foundry-rs/hardhat-forge/-/hardhat-forge-0.1.17.tgz#8f59fdb0189e6b89c6dd5644e543ae4e33e0d0f5"
integrity sha512-2wxzxA12CQmT11PH/KigyVTNm/4vzsVtzVZow6gwCbC41fTyf73a5qbggHZFRR74JXfmvVSkX1BJitTmdzQvxw==
dependencies:
"@foundry-rs/easy-foundryup" "^0.1.3"
"@nomiclabs/hardhat-ethers" "^2.0.0"
"@nomiclabs/hardhat-waffle" "^2.0.0"
"@types/sinon-chai" "^3.2.3"
"@types/web3" "1.0.19"
camelcase-keys "7.0.2"
debug "^4.1.1"
ethers "^5.0.0"
fs-extra "^10.1.0"
glob "^7.1.3"
"true-case-path" "^2.2.1"
ts-interface-checker "^0.1.9"
"@humanwhocodes/config-array@^0.9.2": "@humanwhocodes/config-array@^0.9.2":
version "0.9.5" version "0.9.5"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
...@@ -2419,16 +2382,16 @@ ...@@ -2419,16 +2382,16 @@
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
util.promisify "^1.0.0" util.promisify "^1.0.0"
"@nomiclabs/hardhat-ethers@^2.0.0", "@nomiclabs/hardhat-ethers@^2.0.6":
version "2.0.6"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.6.tgz#1c695263d5b46a375dcda48c248c4fba9dfe2fc2"
integrity sha512-q2Cjp20IB48rEn2NPjR1qxsIQBvFVYW9rFRCFq+bC4RUrn1Ljz3g4wM8uSlgIBZYBi2JMXxmOzFqHraczxq4Ng==
"@nomiclabs/hardhat-ethers@^2.0.2": "@nomiclabs/hardhat-ethers@^2.0.2":
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.2.tgz#c472abcba0c5185aaa4ad4070146e95213c68511" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.2.tgz#c472abcba0c5185aaa4ad4070146e95213c68511"
integrity sha512-6quxWe8wwS4X5v3Au8q1jOvXYEPkS1Fh+cME5u6AwNdnI4uERvPlVjlgRWzpnb+Rrt1l/cEqiNRH9GlsBMSDQg== integrity sha512-6quxWe8wwS4X5v3Au8q1jOvXYEPkS1Fh+cME5u6AwNdnI4uERvPlVjlgRWzpnb+Rrt1l/cEqiNRH9GlsBMSDQg==
"@nomiclabs/hardhat-ethers@^2.0.6":
version "2.0.6"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.6.tgz#1c695263d5b46a375dcda48c248c4fba9dfe2fc2"
integrity sha512-q2Cjp20IB48rEn2NPjR1qxsIQBvFVYW9rFRCFq+bC4RUrn1Ljz3g4wM8uSlgIBZYBi2JMXxmOzFqHraczxq4Ng==
"@nomiclabs/hardhat-etherscan@^3.0.3": "@nomiclabs/hardhat-etherscan@^3.0.3":
version "3.0.3" version "3.0.3"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.0.3.tgz#ca54a03351f3de41f9f5240e37bea9d64fa24e64" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.0.3.tgz#ca54a03351f3de41f9f5240e37bea9d64fa24e64"
...@@ -2442,14 +2405,6 @@ ...@@ -2442,14 +2405,6 @@
semver "^6.3.0" semver "^6.3.0"
undici "^4.14.1" undici "^4.14.1"
"@nomiclabs/hardhat-waffle@^2.0.0", "@nomiclabs/hardhat-waffle@^2.0.3":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1"
integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg==
dependencies:
"@types/sinon-chai" "^3.2.3"
"@types/web3" "1.0.19"
"@nomiclabs/hardhat-waffle@^2.0.1": "@nomiclabs/hardhat-waffle@^2.0.1":
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz#5d43654fba780720c5033dea240fe14f70ef4bd2" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz#5d43654fba780720c5033dea240fe14f70ef4bd2"
...@@ -2458,6 +2413,14 @@ ...@@ -2458,6 +2413,14 @@
"@types/sinon-chai" "^3.2.3" "@types/sinon-chai" "^3.2.3"
"@types/web3" "1.0.19" "@types/web3" "1.0.19"
"@nomiclabs/hardhat-waffle@^2.0.3":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1"
integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg==
dependencies:
"@types/sinon-chai" "^3.2.3"
"@types/web3" "1.0.19"
"@nrwl/cli@15.6.0": "@nrwl/cli@15.6.0":
version "15.6.0" version "15.6.0"
resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.6.0.tgz#c6e2856b17170973084bc103d70fdb6b18b950b4" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.6.0.tgz#c6e2856b17170973084bc103d70fdb6b18b950b4"
...@@ -3049,11 +3012,6 @@ ...@@ -3049,11 +3012,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.1.tgz#c6b9198178da504dfca1fd0be9b2e1002f1586f0" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.1.tgz#c6b9198178da504dfca1fd0be9b2e1002f1586f0"
integrity sha512-ncRdc45SoYJ2H4eWU9ReDfp3vtFqDYhjOsKlFFUDEn8V1Bgr2RjYal8YT5byfadWIRluhPFU6JiDOl0H6Sl87A== integrity sha512-ncRdc45SoYJ2H4eWU9ReDfp3vtFqDYhjOsKlFFUDEn8V1Bgr2RjYal8YT5byfadWIRluhPFU6JiDOl0H6Sl87A==
"@types/node@11.11.6":
version "11.11.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a"
integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==
"@types/node@^10.0.3": "@types/node@^10.0.3":
version "10.17.60" version "10.17.60"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
...@@ -3544,7 +3502,7 @@ aes-js@3.0.0: ...@@ -3544,7 +3502,7 @@ aes-js@3.0.0:
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=
aes-js@^3.1.1, aes-js@^3.1.2: aes-js@^3.1.1:
version "3.1.2" version "3.1.2"
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a"
integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==
...@@ -4653,16 +4611,6 @@ bip39@2.5.0: ...@@ -4653,16 +4611,6 @@ bip39@2.5.0:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
unorm "^1.3.3" unorm "^1.3.3"
bip39@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0"
integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==
dependencies:
"@types/node" "11.11.6"
create-hash "^1.1.0"
pbkdf2 "^3.0.9"
randombytes "^2.0.1"
bl@^4.0.3: bl@^4.0.3:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
...@@ -5045,16 +4993,6 @@ callsites@^3.0.0: ...@@ -5045,16 +4993,6 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
camelcase-keys@7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252"
integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==
dependencies:
camelcase "^6.3.0"
map-obj "^4.1.0"
quick-lru "^5.1.1"
type-fest "^1.2.1"
camelcase-keys@^6.2.2: camelcase-keys@^6.2.2:
version "6.2.2" version "6.2.2"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
...@@ -5079,7 +5017,7 @@ camelcase@^6.0.0: ...@@ -5079,7 +5017,7 @@ camelcase@^6.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
camelcase@^6.2.0, camelcase@^6.3.0: camelcase@^6.2.0:
version "6.3.0" version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
...@@ -5546,7 +5484,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: ...@@ -5546,7 +5484,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
dependencies: dependencies:
delayed-stream "~1.0.0" delayed-stream "~1.0.0"
command-exists@^1.2.8, command-exists@^1.2.9: command-exists@^1.2.8:
version "1.2.9" version "1.2.9"
resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
...@@ -7397,17 +7335,6 @@ ethereum-cryptography@^1.0.3: ...@@ -7397,17 +7335,6 @@ ethereum-cryptography@^1.0.3:
"@scure/bip32" "1.0.1" "@scure/bip32" "1.0.1"
"@scure/bip39" "1.0.0" "@scure/bip39" "1.0.0"
ethereum-waffle@^3.0.0, ethereum-waffle@^3.4.4:
version "3.4.4"
resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840"
integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q==
dependencies:
"@ethereum-waffle/chai" "^3.4.4"
"@ethereum-waffle/compiler" "^3.4.4"
"@ethereum-waffle/mock-contract" "^3.4.4"
"@ethereum-waffle/provider" "^3.4.4"
ethers "^5.0.1"
ethereum-waffle@^3.4.0: ethereum-waffle@^3.4.0:
version "3.4.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz#990b3c6c26db9c2dd943bf26750a496f60c04720" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz#990b3c6c26db9c2dd943bf26750a496f60c04720"
...@@ -7419,6 +7346,17 @@ ethereum-waffle@^3.4.0: ...@@ -7419,6 +7346,17 @@ ethereum-waffle@^3.4.0:
"@ethereum-waffle/provider" "^3.4.0" "@ethereum-waffle/provider" "^3.4.0"
ethers "^5.0.1" ethers "^5.0.1"
ethereum-waffle@^3.4.4:
version "3.4.4"
resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840"
integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q==
dependencies:
"@ethereum-waffle/chai" "^3.4.4"
"@ethereum-waffle/compiler" "^3.4.4"
"@ethereum-waffle/mock-contract" "^3.4.4"
"@ethereum-waffle/provider" "^3.4.4"
ethers "^5.0.1"
ethereumjs-abi@0.6.5: ethereumjs-abi@0.6.5:
version "0.6.5" version "0.6.5"
resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241"
...@@ -7584,17 +7522,6 @@ ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.4: ...@@ -7584,17 +7522,6 @@ ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.4:
ethereum-cryptography "^0.1.3" ethereum-cryptography "^0.1.3"
rlp "^2.2.4" rlp "^2.2.4"
ethereumjs-util@^7.1.2:
version "7.1.5"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181"
integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==
dependencies:
"@types/bn.js" "^5.1.0"
bn.js "^5.1.2"
create-hash "^1.1.2"
ethereum-cryptography "^0.1.3"
rlp "^2.2.4"
ethereumjs-vm@4.2.0: ethereumjs-vm@4.2.0:
version "4.2.0" version "4.2.0"
resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab"
...@@ -7648,20 +7575,6 @@ ethereumjs-wallet@0.6.5: ...@@ -7648,20 +7575,6 @@ ethereumjs-wallet@0.6.5:
utf8 "^3.0.0" utf8 "^3.0.0"
uuid "^3.3.2" uuid "^3.3.2"
ethereumjs-wallet@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz#2c000504b4c71e8f3782dabe1113d192522e99b6"
integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==
dependencies:
aes-js "^3.1.2"
bs58check "^2.1.2"
ethereum-cryptography "^0.1.3"
ethereumjs-util "^7.1.2"
randombytes "^2.1.0"
scrypt-js "^3.0.1"
utf8 "^3.0.0"
uuid "^8.3.2"
ethers@^4.0.32, ethers@^4.0.40: ethers@^4.0.32, ethers@^4.0.40:
version "4.0.49" version "4.0.49"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894"
...@@ -10956,11 +10869,6 @@ map-obj@^4.0.0: ...@@ -10956,11 +10869,6 @@ map-obj@^4.0.0:
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7"
integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==
map-obj@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a"
integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
map-visit@^1.0.0: map-visit@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
...@@ -13303,11 +13211,6 @@ quick-lru@^4.0.1: ...@@ -13303,11 +13211,6 @@ quick-lru@^4.0.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
quick-lru@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
...@@ -15504,11 +15407,6 @@ ts-generator@^0.1.1: ...@@ -15504,11 +15407,6 @@ ts-generator@^0.1.1:
resolve "^1.8.1" resolve "^1.8.1"
ts-essentials "^1.0.0" ts-essentials "^1.0.0"
ts-interface-checker@^0.1.9:
version "0.1.13"
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
ts-mocha@^10.0.0: ts-mocha@^10.0.0:
version "10.0.0" version "10.0.0"
resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9"
...@@ -15717,11 +15615,6 @@ type-fest@^0.8.0, type-fest@^0.8.1: ...@@ -15717,11 +15615,6 @@ type-fest@^0.8.0, type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
type-fest@^1.2.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
type-is@~1.6.17, type-is@~1.6.18: type-is@~1.6.17, type-is@~1.6.18:
version "1.6.18" version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
......
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