diff --git a/packages/core-db/package.json b/packages/core-db/package.json index a312289514b0..fea194fc595a 100644 --- a/packages/core-db/package.json +++ b/packages/core-db/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/core-db", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimism DB Utils", "main": "build/index.js", "files": [ @@ -29,7 +29,7 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/core-utils": "0.0.1-alpha.11", + "@eth-optimism/core-utils": "0.0.1-alpha.12", "abstract-leveldown": "^6.2.2", "async-lock": "^1.2.2", "chai": "^4.2.0", diff --git a/packages/core-utils/package.json b/packages/core-utils/package.json index 877d937ab529..45318259b85d 100644 --- a/packages/core-utils/package.json +++ b/packages/core-utils/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/core-utils", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimism Core Utils", "main": "build/index.js", "files": [ diff --git a/packages/docs/package.json b/packages/docs/package.json index c87e9062e371..e1e7a068eca4 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,7 +1,7 @@ { "name": "@eth-optimism/docs", "private": true, - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimism docs", "author": "Optimism", "license": "MIT", diff --git a/packages/optimistic-game-semantics/package.json b/packages/optimistic-game-semantics/package.json index 7210a297378f..57233e75991c 100644 --- a/packages/optimistic-game-semantics/package.json +++ b/packages/optimistic-game-semantics/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/optimistic-game-semantics", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimism Optimistic Game Semantics", "main": "build/index.js", "files": [ @@ -29,8 +29,8 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/core-db": "0.0.1-alpha.11", - "@eth-optimism/core-utils": "0.0.1-alpha.11", + "@eth-optimism/core-db": "0.0.1-alpha.12", + "@eth-optimism/core-utils": "0.0.1-alpha.12", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "debug": "^4.1.1", diff --git a/packages/ovm-truffle-provider-wrapper/index.ts b/packages/ovm-truffle-provider-wrapper/index.ts index 208be98174e2..d473b3c44398 100644 --- a/packages/ovm-truffle-provider-wrapper/index.ts +++ b/packages/ovm-truffle-provider-wrapper/index.ts @@ -4,7 +4,7 @@ import { execSync, spawn } from 'child_process' * Starts a local OVM node process for testing. It will be killed when the current process terminates. */ const startLocalNode = () => { - const runText = `(async function(){ const {runFullnode} = require('@eth-optimism/rollup-full-node');runFullnode();})();` + const runText = `(async function(){ const {runFullnode} = require('@eth-optimism/rollup-full-node');runFullnode(true);})();` // Assumes this process was kicked off with node, but that's true for `truffle test` and `yarn ...` const sub = spawn(process.argv[0], [`-e`, `${runText}`], { diff --git a/packages/ovm-truffle-provider-wrapper/package.json b/packages/ovm-truffle-provider-wrapper/package.json index 8d31447e910c..0119c947bf61 100644 --- a/packages/ovm-truffle-provider-wrapper/package.json +++ b/packages/ovm-truffle-provider-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/ovm-truffle-provider-wrapper", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimism Truffle Provider Wrapper", "main": "build/index.js", "files": [ @@ -28,7 +28,7 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/rollup-full-node": "0.0.1-alpha.11" + "@eth-optimism/rollup-full-node": "0.0.1-alpha.12" }, "devDependencies": { "@types/node": "^12.0.7", diff --git a/packages/ovm/package.json b/packages/ovm/package.json index 5f028cad1f87..cdf39a32f056 100644 --- a/packages/ovm/package.json +++ b/packages/ovm/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/ovm", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "An optimistic execution-compatible EVM", "main": "build/index.js", "files": [ @@ -49,9 +49,9 @@ "typescript": "^3.3.3333" }, "dependencies": { - "@eth-optimism/core-db": "0.0.1-alpha.11", - "@eth-optimism/core-utils": "0.0.1-alpha.11", - "@eth-optimism/rollup-core": "0.0.1-alpha.11", + "@eth-optimism/core-db": "0.0.1-alpha.12", + "@eth-optimism/core-utils": "0.0.1-alpha.12", + "@eth-optimism/rollup-core": "0.0.1-alpha.12", "@types/sinon-chai": "^3.2.2", "chai": "^4.2.0", "ethereum-waffle": "2.1.0", diff --git a/packages/rollup-contracts/package.json b/packages/rollup-contracts/package.json index a11e3837e0ee..ef3cf759f041 100644 --- a/packages/rollup-contracts/package.json +++ b/packages/rollup-contracts/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/rollup-contracts", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimistic Rollup smart contracts", "main": "build/index.js", "files": [ @@ -43,9 +43,9 @@ "typescript": "^3.3.3333" }, "dependencies": { - "@eth-optimism/core-db": "0.0.1-alpha.11", - "@eth-optimism/core-utils": "0.0.1-alpha.11", - "@eth-optimism/rollup-core": "0.0.1-alpha.11", + "@eth-optimism/core-db": "0.0.1-alpha.12", + "@eth-optimism/core-utils": "0.0.1-alpha.12", + "@eth-optimism/rollup-core": "0.0.1-alpha.12", "@types/sinon-chai": "^3.2.2", "chai": "^4.2.0", "ethereum-waffle": "2.1.0", diff --git a/packages/rollup-core/package.json b/packages/rollup-core/package.json index d4c200c1b7c9..96c118c055d4 100644 --- a/packages/rollup-core/package.json +++ b/packages/rollup-core/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/rollup-core", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "[Optimism] Optimistic Rollup Core Library", "main": "build/index.js", "files": [ @@ -29,8 +29,8 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/core-db": "0.0.1-alpha.11", - "@eth-optimism/core-utils": "0.0.1-alpha.11", + "@eth-optimism/core-db": "0.0.1-alpha.12", + "@eth-optimism/core-utils": "0.0.1-alpha.12", "async-lock": "^1.2.2", "ethers": "^4.0.39" }, diff --git a/packages/rollup-dev-tools/package.json b/packages/rollup-dev-tools/package.json index a47f048e32dc..d4444c8b4480 100644 --- a/packages/rollup-dev-tools/package.json +++ b/packages/rollup-dev-tools/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/rollup-dev-tools", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "[Optimism] Optimistic Rollup Dev Tools Library", "main": "build/index.js", "files": [ @@ -33,8 +33,8 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/core-utils": "0.0.1-alpha.11", - "@eth-optimism/rollup-core": "0.0.1-alpha.11", + "@eth-optimism/core-utils": "0.0.1-alpha.12", + "@eth-optimism/rollup-core": "0.0.1-alpha.12", "async-lock": "^1.2.2", "bn.js": "^5.1.1", "dotenv": "^8.2.0", diff --git a/packages/rollup-full-node/package.json b/packages/rollup-full-node/package.json index dc71a9e77bbd..43d13e42f1c6 100644 --- a/packages/rollup-full-node/package.json +++ b/packages/rollup-full-node/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/rollup-full-node", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "[Optimism] Optimistic Rollup Full Node Library", "main": "build/index.js", "files": [ @@ -32,10 +32,10 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/core-db": "0.0.1-alpha.11", - "@eth-optimism/core-utils": "0.0.1-alpha.11", - "@eth-optimism/ovm": "0.0.1-alpha.11", - "@eth-optimism/rollup-core": "0.0.1-alpha.11", + "@eth-optimism/core-db": "0.0.1-alpha.12", + "@eth-optimism/core-utils": "0.0.1-alpha.12", + "@eth-optimism/ovm": "0.0.1-alpha.12", + "@eth-optimism/rollup-core": "0.0.1-alpha.12", "async-lock": "^1.2.2", "axios": "^0.19.0", "cors": "^2.8.5", diff --git a/packages/rollup-full-node/src/app/index.ts b/packages/rollup-full-node/src/app/index.ts index 18ecd9b71f7d..bb7b2e8d5f22 100644 --- a/packages/rollup-full-node/src/app/index.ts +++ b/packages/rollup-full-node/src/app/index.ts @@ -1,7 +1,8 @@ export * from './block-builder' export * from './block-submitter' export * from './fullnode-rpc-server' -export * from './handler' +export * from './web3-rpc-handler' +export * from './test-web3-rpc-handler' export * from './utils' // Constant exports diff --git a/packages/rollup-full-node/src/app/test-web3-rpc-handler.ts b/packages/rollup-full-node/src/app/test-web3-rpc-handler.ts new file mode 100644 index 000000000000..af96d8091a89 --- /dev/null +++ b/packages/rollup-full-node/src/app/test-web3-rpc-handler.ts @@ -0,0 +1,97 @@ +/* External Imports */ +import { add0x, getLogger, remove0x } from '@eth-optimism/core-utils' +import { OPCODE_WHITELIST_MASK } from '@eth-optimism/ovm' + +import { createMockProvider, getWallets } from 'ethereum-waffle' +import { Contract, Wallet } from 'ethers' +import { Web3Provider } from 'ethers/providers' + +/* Internal Imports */ +import { DEFAULT_ETHNODE_GAS_LIMIT } from './index' +import { DefaultWeb3Handler } from './web3-rpc-handler' +import { UnsupportedMethodError, Web3RpcMethods } from '../types' + +const log = getLogger('test-web3-handler') + +/** + * Test Handler that provides extra functionality for testing. + */ +export class TestWeb3Handler extends DefaultWeb3Handler { + public static readonly successString = 'success' + + private timestampIncreaseSeconds: number = 0 + + /** + * Creates a local node, deploys the L2ExecutionManager to it, and returns a + * TestHandler that handles Web3 requests to it. + * + * @param provider (optional) The web3 provider to use. + * @returns The constructed Web3 handler. + */ + public static async create( + provider: Web3Provider = createMockProvider({ + gasLimit: DEFAULT_ETHNODE_GAS_LIMIT, + }) + ): Promise { + // Initialize a fullnode for us to interact with + const [wallet] = getWallets(provider) + const executionManager: Contract = await DefaultWeb3Handler.deployExecutionManager( + wallet, + OPCODE_WHITELIST_MASK + ) + + return new TestWeb3Handler(provider, wallet, executionManager) + } + + protected constructor( + provider: Web3Provider, + wallet: Wallet, + executionManager: Contract + ) { + super(provider, wallet, executionManager) + } + + /** + * Override to add some test RPC methods. + */ + public async handleRequest(method: string, params: any[]): Promise { + if (method === Web3RpcMethods.increaseTimestamp) { + this.assertParameters(params, 1) + this.increaseTimestamp(params[0]) + log.debug(`Set increased timestamp by ${params[0]} seconds.`) + return TestWeb3Handler.successString + } + if (method === Web3RpcMethods.getTimestamp) { + this.assertParameters(params, 0) + return add0x(this.getTimestamp().toString(16)) + } + + return super.handleRequest(method, params) + } + + /** + * Returns the configured timestamp if there is one, else standard timestamp calculation. + * @returns The timestamp. + */ + protected getTimestamp(): number { + return super.getTimestamp() + this.timestampIncreaseSeconds + } + + /** + * Sets timestamp to use for future transactions. + * @param increaseSeconds The increase in seconds as a hex string + */ + private increaseTimestamp(increaseSeconds: any): void { + try { + const increaseNumber = parseInt(remove0x(increaseSeconds), 16) + if (increaseNumber < 0) { + throw Error('invalid param') + } + this.timestampIncreaseSeconds += increaseNumber + } catch (e) { + const msg: string = `Expected parameter for ${Web3RpcMethods.increaseTimestamp} to be a positive number or string of a positive, base-10 number. Received: ${increaseSeconds}` + log.error(msg) + throw new UnsupportedMethodError(msg) + } + } +} diff --git a/packages/rollup-full-node/src/app/utils.ts b/packages/rollup-full-node/src/app/utils.ts index b94f9b1e3129..d8bf0f4304c2 100644 --- a/packages/rollup-full-node/src/app/utils.ts +++ b/packages/rollup-full-node/src/app/utils.ts @@ -7,7 +7,7 @@ import { FullnodeHandler } from '../types' import { Web3Provider } from 'ethers/providers' /* Internal Imports */ -import { DefaultWeb3Handler } from './handler' +import { DefaultWeb3Handler } from './web3-rpc-handler' import { FullnodeRpcServer } from './fullnode-rpc-server' const log = getLogger('utils') diff --git a/packages/rollup-full-node/src/app/handler.ts b/packages/rollup-full-node/src/app/web3-rpc-handler.ts similarity index 97% rename from packages/rollup-full-node/src/app/handler.ts rename to packages/rollup-full-node/src/app/web3-rpc-handler.ts index b09b373ae94f..7b60e13ae025 100644 --- a/packages/rollup-full-node/src/app/handler.ts +++ b/packages/rollup-full-node/src/app/web3-rpc-handler.ts @@ -10,7 +10,6 @@ import { import { CHAIN_ID, GAS_LIMIT, - convertInternalLogsToOvmLogs, L2ExecutionManagerContractDefinition, OPCODE_WHITELIST_MASK, internalTxReceiptToOvmTxReceipt, @@ -63,7 +62,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { return new DefaultWeb3Handler(provider, wallet, executionManager) } - private constructor( + protected constructor( private readonly provider: Web3Provider, private readonly wallet: Wallet, private readonly executionManager: Contract @@ -143,7 +142,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { const msg: string = `Method / params [${method} / ${JSON.stringify( params )}] is not supported by this Web3 handler!` - log.error(msg) + log.info(msg) throw new UnsupportedMethodError(msg) } @@ -172,13 +171,15 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { ) // First generate the internalTx calldata const internalCalldata = this.generateUnsignedCallCalldata( - 0, + this.getTimestamp(), 0, txObject['to'], txObject['data'], txObject['from'] ) + log.debug(`calldata: ${internalCalldata}`) + let response try { // Then actually make the call and get the response @@ -219,7 +220,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { ) // First generate the internalTx calldata const internalCalldata = this.generateUnsignedCallCalldata( - 0, + this.getTimestamp(), 0, txObject['to'], txObject['data'], @@ -331,6 +332,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { const ovmTxReceipt = await internalTxReceiptToOvmTxReceipt( internalTxReceipt ) + log.debug( `Returning tx receipt for ovm tx hash [${ovmTxHash}]: [${internalTxReceipt}]` ) @@ -400,6 +402,15 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { }) } + /** + * Gets the current number of seconds since the epoch. + * + * @returns The seconds since epoch. + */ + protected getTimestamp(): number { + return Math.round(Date.now() / 1000) + } + /** * Maps the provided OVM transaction hash to the provided internal transaction hash by storing it in our * L2 Execution Manager contract. @@ -447,7 +458,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { const ovmTo = ovmTx.to === null ? ZERO_ADDRESS : ovmTx.to // Construct the raw transaction calldata const internalCalldata = this.generateEOACallCalldata( - 0, + this.getTimestamp(), 0, ovmTx.nonce, ovmTo, @@ -472,7 +483,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { return this.wallet.sign(internalTx) } - private static async deployExecutionManager( + protected static async deployExecutionManager( wallet: Wallet, opcodeWhitelistMask: string ): Promise { @@ -536,7 +547,7 @@ export class DefaultWeb3Handler implements Web3Handler, FullnodeHandler { ]) } - private assertParameters( + protected assertParameters( params: any[], expected: number, defaultLast?: any diff --git a/packages/rollup-full-node/src/exec/fullnode.ts b/packages/rollup-full-node/src/exec/fullnode.ts index 3b351ff948e4..b17fd935d656 100644 --- a/packages/rollup-full-node/src/exec/fullnode.ts +++ b/packages/rollup-full-node/src/exec/fullnode.ts @@ -1,21 +1,31 @@ /* External Imports */ -import { getLogger, Logger } from '@eth-optimism/core-utils' +import { ExpressHttpServer, getLogger, Logger } from '@eth-optimism/core-utils' /* Internal Imports */ -import { FullnodeRpcServer, DefaultWeb3Handler } from '../app' +import { FullnodeRpcServer, DefaultWeb3Handler, TestWeb3Handler } from '../app' const log: Logger = getLogger('rollup-fullnode') -export const runFullnode = async (): Promise => { +/** + * Runs a fullnode. + * @param testFullnode Whether or not this is a test. + */ +export const runFullnode = async ( + testFullnode: boolean = false +): Promise => { // TODO Get these from config const host = '0.0.0.0' const port = 8545 - const fullnodeHandler = await DefaultWeb3Handler.create() + const fullnodeHandler = testFullnode + ? await TestWeb3Handler.create() + : await DefaultWeb3Handler.create() const fullnodeRpcServer = new FullnodeRpcServer(fullnodeHandler, host, port) fullnodeRpcServer.listen() const baseUrl = `http://${host}:${port}` log.info(`Listening at ${baseUrl}`) + + return fullnodeRpcServer } diff --git a/packages/rollup-full-node/src/types/index.ts b/packages/rollup-full-node/src/types/index.ts index f84df10aba4b..fd2abaa71557 100644 --- a/packages/rollup-full-node/src/types/index.ts +++ b/packages/rollup-full-node/src/types/index.ts @@ -2,4 +2,4 @@ export * from './aggregator' export * from './block-builder' export * from './block-submitter' export * from './errors' -export * from './handler' +export * from './web3-rpc-handler' diff --git a/packages/rollup-full-node/src/types/handler.ts b/packages/rollup-full-node/src/types/web3-rpc-handler.ts similarity index 93% rename from packages/rollup-full-node/src/types/handler.ts rename to packages/rollup-full-node/src/types/web3-rpc-handler.ts index 8bb159c05077..2c0afcea7715 100644 --- a/packages/rollup-full-node/src/types/handler.ts +++ b/packages/rollup-full-node/src/types/web3-rpc-handler.ts @@ -37,4 +37,8 @@ export enum Web3RpcMethods { getTransactionReceipt = 'eth_getTransactionReceipt', networkVersion = 'net_version', sendRawTransaction = 'eth_sendRawTransaction', + + // Test methods: + increaseTimestamp = 'evm_increaseTime', + getTimestamp = 'evm_getTime', } diff --git a/packages/rollup-full-node/test/app/handler.spec.ts b/packages/rollup-full-node/test/app/handler.spec.ts index 7b018fc7beda..c6ff0c15840a 100644 --- a/packages/rollup-full-node/test/app/handler.spec.ts +++ b/packages/rollup-full-node/test/app/handler.spec.ts @@ -1,19 +1,14 @@ import '../setup' /* External Imports */ import { getLogger } from '@eth-optimism/core-utils' -import { DB, newInMemoryDB } from '@eth-optimism/core-db/' /* Internal Imports */ -import { - FullnodeRpcServer, - deployOvmContract, - DefaultWeb3Handler, -} from '../../src/app' +import { FullnodeRpcServer, DefaultWeb3Handler } from '../../src/app' import * as SimpleStorage from '../contracts/build/SimpleStorage.json' import { ethers, ContractFactory } from 'ethers' import { FullnodeHandler } from '../../src/types' -const log = getLogger('ethnode-proxy', true) +const log = getLogger('web3-handler', true) const host = '0.0.0.0' const port = 9999 diff --git a/packages/rollup-full-node/test/app/test-handler.spec.ts b/packages/rollup-full-node/test/app/test-handler.spec.ts new file mode 100644 index 000000000000..b8881c59cfbf --- /dev/null +++ b/packages/rollup-full-node/test/app/test-handler.spec.ts @@ -0,0 +1,63 @@ +import '../setup' +/* External Imports */ +import { add0x, getLogger, remove0x } from '@eth-optimism/core-utils' + +/* Internal Imports */ +import { Web3RpcMethods, TestWeb3Handler } from '../../src' + +const log = getLogger('test-web3-handler', true) + +const secondsSinceEopch = (): number => { + return Math.round(Date.now() / 1000) +} + +describe('TestHandler', () => { + let testHandler: TestWeb3Handler + + beforeEach(async () => { + testHandler = await TestWeb3Handler.create() + }) + + describe('Timestamps', () => { + it('should get timestamp', async () => { + const currentTime = secondsSinceEopch() + const res: string = await testHandler.handleRequest( + Web3RpcMethods.getTimestamp, + [] + ) + const timeAfter = secondsSinceEopch() + + const timestamp: number = parseInt(remove0x(res), 16) + timestamp.should.be.gte(currentTime, 'Timestamp out of range') + timestamp.should.be.lte(timeAfter, 'Timestamp out of range') + }) + + it('should increase timestamp', async () => { + const previous: string = await testHandler.handleRequest( + Web3RpcMethods.getTimestamp, + [] + ) + const previousTimestamp: number = parseInt(remove0x(previous), 16) + + const increase: number = 9999 + const setRes: string = await testHandler.handleRequest( + Web3RpcMethods.increaseTimestamp, + [add0x(increase.toString(16))] + ) + setRes.should.equal( + TestWeb3Handler.successString, + 'Should increase timestamp!' + ) + + const fetched: string = await testHandler.handleRequest( + Web3RpcMethods.getTimestamp, + [] + ) + const fetchedTimestamp: number = parseInt(remove0x(fetched), 16) + fetchedTimestamp.should.be.gte( + previousTimestamp + increase, + 'Timestamp was not increased properly!' + ) + }) + }) +}) diff --git a/packages/solc-transpiler/package.json b/packages/solc-transpiler/package.json index 0e6a108fdf98..37eb637ef25e 100644 --- a/packages/solc-transpiler/package.json +++ b/packages/solc-transpiler/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/solc-transpiler", - "version": "0.0.1-alpha.11", + "version": "0.0.1-alpha.12", "description": "Optimism Transpiler Solc Compiler Wrapper", "main": "build/index.js", "files": [ @@ -29,8 +29,8 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "@eth-optimism/core-utils": "0.0.1-alpha.11", - "@eth-optimism/rollup-dev-tools": "0.0.1-alpha.11", + "@eth-optimism/core-utils": "0.0.1-alpha.12", + "@eth-optimism/rollup-dev-tools": "0.0.1-alpha.12", "require-from-string": "^2.0.2", "solc": "^0.5.12" }, diff --git a/yarn.lock b/yarn.lock index abd6145327a3..c875a150402e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3251,7 +3251,7 @@ debug@3.1.0, debug@=3.1.0: dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.1.0, debug@^3.2.6: +debug@3.2.6, debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3377,11 +3377,6 @@ deep-equal@~1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" @@ -3513,11 +3508,6 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" @@ -5669,7 +5659,7 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5766,7 +5756,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -7529,15 +7519,6 @@ napi-macros@~2.0.0: resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== -needle@^2.2.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528" - integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -7615,22 +7596,6 @@ node-gyp@^5.0.2: tar "^4.4.12" which "^1.3.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -7714,7 +7679,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.6, npm-packlist@^1.4.4: +npm-packlist@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== @@ -7739,7 +7704,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2, npmlog@^4.1.2: +npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -8604,16 +8569,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-cmd-shim@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" @@ -9012,7 +8967,7 @@ retry@^0.10.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9089,11 +9044,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - scrypt-js@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" @@ -9748,7 +9698,7 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -9887,7 +9837,7 @@ tar@^2.1.1: fstream "^1.0.12" inherits "2" -tar@^4.0.2, tar@^4.4.10, tar@^4.4.12, tar@^4.4.2, tar@^4.4.8: +tar@^4.0.2, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==