diff --git a/packages/core-utils/src/app/log.ts b/packages/core-utils/src/app/log.ts index 53066881f3ed..0aad713a0241 100644 --- a/packages/core-utils/src/app/log.ts +++ b/packages/core-utils/src/app/log.ts @@ -1,16 +1,20 @@ import debug from 'debug' import { Logger } from '../types' +export const LOG_NEWLINE_STRING = '<\n>' +export const joinNewlinesAndDebug = (logs: string) => + debug(logs.replace('\n', LOG_NEWLINE_STRING)) + export const getLogger = ( identifier: string, isTest: boolean = false ): Logger => { const testString = isTest ? 'test:' : '' return { - debug: debug(`${testString}debug:${identifier}`), - info: debug(`${testString}info:${identifier}`), - warn: debug(`${testString}warn:${identifier}`), - error: debug(`${testString}error:${identifier}`), + debug: joinNewlinesAndDebug(`${testString}debug:${identifier}`), + info: joinNewlinesAndDebug(`${testString}info:${identifier}`), + warn: joinNewlinesAndDebug(`${testString}warn:${identifier}`), + error: joinNewlinesAndDebug(`${testString}error:${identifier}`), } } diff --git a/packages/ovm/src/app/utils.ts b/packages/ovm/src/app/utils.ts index 19cbe2b25998..c8ee2903fb86 100644 --- a/packages/ovm/src/app/utils.ts +++ b/packages/ovm/src/app/utils.ts @@ -9,6 +9,7 @@ import { logError, remove0x, ZERO_ADDRESS, + LOG_NEWLINE_STRING, BloomFilter, } from '@eth-optimism/core-utils' import { ethers } from 'ethers' @@ -71,6 +72,7 @@ export interface OvmTransactionMetadata { */ export const convertInternalLogsToOvmLogs = (logs: Log[]): Log[] => { let activeContract = logs[0] ? logs[0].address : ZERO_ADDRESS + const loggerLogs = [`Parsing logs from contract ${activeContract}: `] const ovmLogs = [] logs.forEach((log) => { const executionManagerLog = executionManagerInterface.parseLog(log) @@ -78,17 +80,18 @@ export const convertInternalLogsToOvmLogs = (logs: Log[]): Log[] => { if (executionManagerLog.name === 'ActiveContract') { activeContract = executionManagerLog.values['_activeContract'] } else { - logger.debug( + loggerLogs.push( `${executionManagerLog.name}, values: ${JSON.stringify( executionManagerLog.values )}` ) } } else { - logger.debug(`Non-EM log: ${JSON.stringify(log)}`) + loggerLogs.push(`Non-EM log: ${JSON.stringify(log)}`) ovmLogs.push({ ...log, address: activeContract }) } }) + logger.debug(loggerLogs.join(LOG_NEWLINE_STRING)) return ovmLogs } diff --git a/packages/rollup-full-node/package.json b/packages/rollup-full-node/package.json index 264c8d30967a..eef66c7e2c51 100644 --- a/packages/rollup-full-node/package.json +++ b/packages/rollup-full-node/package.json @@ -49,7 +49,8 @@ "ethers": "^4.0.39", "fastpriorityqueue": "^0.6.3", "level": "^6.0.1", - "rimraf": "^2.6.3" + "rimraf": "^2.6.3", + "web3": "^1.2.7" }, "devDependencies": { "@eth-optimism/solc-transpiler": "^0.0.1-alpha.25", 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 index c55db52b22df..838ffde48676 100644 --- a/packages/rollup-full-node/src/app/test-web3-rpc-handler.ts +++ b/packages/rollup-full-node/src/app/test-web3-rpc-handler.ts @@ -15,6 +15,7 @@ import { L2ToL1MessageSubmitter, UnsupportedMethodError, Web3RpcMethods, + Web3RpcTypes, } from '../types' import { getCurrentTime, initializeL2Node } from './util' import { NoOpL2ToL1MessageSubmitter } from './message-submitter' @@ -66,24 +67,24 @@ export class TestWeb3Handler extends DefaultWeb3Handler { public async handleRequest(method: string, params: any[]): Promise { switch (method) { case Web3RpcMethods.increaseTimestamp: - this.assertParameters(params, 1) + this.assertParameters(params, [Web3RpcTypes.quantity]) this.increaseTimestamp(params[0]) log.debug(`Set increased timestamp by ${params[0]} seconds.`) return TestWeb3Handler.successString case Web3RpcMethods.mine: return this.context.provider.send(Web3RpcMethods.mine, params) case Web3RpcMethods.sendTransaction: - this.assertParameters(params, 1) + this.assertParameters(params, [Web3RpcTypes.object]) return this.sendTransaction(params[0]) break case Web3RpcMethods.snapshot: - this.assertParameters(params, 0) + this.assertParameters(params, []) return this.snapshot() case Web3RpcMethods.revert: - this.assertParameters(params, 1) + this.assertParameters(params, [Web3RpcTypes.quantity]) return this.revert(params[0]) case Web3RpcMethods.accounts: - this.assertParameters(params, 0) + this.assertParameters(params, []) return this.accounts() default: return super.handleRequest(method, params) diff --git a/packages/rollup-full-node/src/app/web3-rpc-handler.ts b/packages/rollup-full-node/src/app/web3-rpc-handler.ts index a8cd0b4ca1c7..feadd5c408ea 100644 --- a/packages/rollup-full-node/src/app/web3-rpc-handler.ts +++ b/packages/rollup-full-node/src/app/web3-rpc-handler.ts @@ -27,7 +27,8 @@ import { } from '@eth-optimism/ovm' import AsyncLock from 'async-lock' -import { utils, Wallet } from 'ethers' +import { Contract, utils, Wallet } from 'ethers' +import Web3 from 'web3' import { JsonRpcProvider, TransactionReceipt } from 'ethers/providers' /* Internal Imports */ @@ -38,6 +39,7 @@ import { L2ToL1MessageSubmitter, UnsupportedMethodError, Web3Handler, + Web3RpcTypes, Web3RpcMethods, RevertError, } from '../types' @@ -116,70 +118,91 @@ export class DefaultWeb3Handler // Make sure the method is available let response: any - let args: any[] switch (method) { case Web3RpcMethods.blockNumber: - this.assertParameters(params, 0) + this.assertParameters(params, []) response = await this.blockNumber() break case Web3RpcMethods.call: - args = this.assertParameters(params, 2, latestBlock) - response = await this.call(args[0], args[1]) + this.assertParameters(params, [ + Web3RpcTypes.object, + Web3RpcTypes.quantityOrTag, + ]) + response = await this.call(params[0], params[1] || latestBlock) break case Web3RpcMethods.estimateGas: - args = this.assertParameters(params, 2, latestBlock) - response = await this.estimateGas(args[0], args[1]) + this.assertParameters(params, [ + Web3RpcTypes.object, + Web3RpcTypes.quantityOrTag, + ]) + response = await this.estimateGas(params[0], params[1] || latestBlock) break case Web3RpcMethods.gasPrice: - this.assertParameters(params, 0) + this.assertParameters(params, []) response = await this.gasPrice() break case Web3RpcMethods.getBlockByNumber: - args = this.assertParameters(params, 2) - response = await this.getBlockByNumber(args[0], args[1]) + this.assertParameters(params, [ + Web3RpcTypes.quantityOrTag, + Web3RpcTypes.boolean, + ]) + response = await this.getBlockByNumber(params[0], params[1]) break case Web3RpcMethods.getBlockByHash: - args = this.assertParameters(params, 2) - response = await this.getBlockByHash(args[0], args[1]) + this.assertParameters(params, [Web3RpcTypes.data, Web3RpcTypes.boolean]) + response = await this.getBlockByHash(params[0], params[1]) break case Web3RpcMethods.getBalance: - this.assertParameters(params, 2, latestBlock) + this.assertParameters( + params, + [Web3RpcTypes.address, Web3RpcTypes.quantityOrTag], + latestBlock + ) response = await this.getBalance() break case Web3RpcMethods.getCode: - args = this.assertParameters(params, 2, latestBlock) - response = await this.getCode(args[0], args[1]) + this.assertParameters(params, [ + Web3RpcTypes.data, + Web3RpcTypes.quantityOrTag, + ]) + response = await this.getCode(params[0], params[1] || latestBlock) break case Web3RpcMethods.getExecutionManagerAddress: - this.assertParameters(params, 0) + this.assertParameters(params, []) response = await this.getExecutionManagerAddress() break case Web3RpcMethods.getLogs: - args = this.assertParameters(params, 1) - response = await this.getLogs(args[0]) + this.assertParameters(params, [Web3RpcTypes.object]) + response = await this.getLogs(params[0]) break case Web3RpcMethods.getTransactionByHash: - args = this.assertParameters(params, 1) - response = await this.getTransactionByHash(args[0]) + this.assertParameters(params, [Web3RpcTypes.data]) + response = await this.getTransactionByHash(params[0]) break case Web3RpcMethods.getTransactionCount: - args = this.assertParameters(params, 2, latestBlock) - response = await this.getTransactionCount(args[0], args[1]) + this.assertParameters(params, [ + Web3RpcTypes.data, + Web3RpcTypes.quantityOrTag, + ]) + response = await this.getTransactionCount( + params[0], + params[1] || latestBlock + ) break case Web3RpcMethods.getTransactionReceipt: - args = this.assertParameters(params, 1) - response = await this.getTransactionReceipt(args[0]) + this.assertParameters(params, [Web3RpcTypes.data]) + response = await this.getTransactionReceipt(params[0]) break case Web3RpcMethods.sendRawTransaction: - args = this.assertParameters(params, 1) - response = await this.sendRawTransaction(args[0]) + this.assertParameters(params, [Web3RpcTypes.data]) + response = await this.sendRawTransaction(params[0]) break case Web3RpcMethods.networkVersion: - this.assertParameters(params, 0) + this.assertParameters(params, []) response = await this.networkVersion() break case Web3RpcMethods.chainId: - this.assertParameters(params, 0) + this.assertParameters(params, []) response = await this.chainId() break default: @@ -443,7 +466,7 @@ export class DefaultWeb3Handler defaultBlock )}] curentBlockNumber:[${curentBlockNumber}]` ) - throw new Error( + throw new InvalidParametersError( `Historical code lookups aren't supported. Requested Block: ${hexStrToNumber( defaultBlock )} Current Block: ${curentBlockNumber}` @@ -498,6 +521,7 @@ export class DefaultWeb3Handler const receipt = await this.getTransactionReceipt(transaction.hash) transaction['to'] = receipt.contractAddress } + logItem['address'] = transaction['to'] return logItem }) @@ -940,7 +964,7 @@ export class DefaultWeb3Handler private async ovmTxToInternalTx(ovmTx: any): Promise { // Verify that the transaction is not accidentally sending to the ZERO_ADDRESS if (ovmTx.to === ZERO_ADDRESS) { - throw new Error('Sending to Zero Address disallowed') + throw new InvalidParametersError('Sending to Zero Address disallowed') } // Get the nonce of the account that we will use to send everything // Note: + 1 because all transactions will have a tx hash mapping tx sent before them. @@ -950,7 +974,7 @@ export class DefaultWeb3Handler log.error( 'Transaction does not have a valid signature! For now we only support calls from EOAs' ) - throw new Error('Non-EOA transaction detected') + throw new InvalidParametersError('Non-EOA transaction detected') } // Generate the calldata which we'll use to call our internal execution manager // First pull out the `to` field (we just need to check if it's null & if so set ovmTo to the zero address as that's how we deploy contracts) @@ -961,7 +985,7 @@ export class DefaultWeb3Handler await this.context.executionManager.getOvmContractNonce(ovmFrom) ).toNumber() if (expectedNonce !== ovmTx.nonce) { - throw new Error( + throw new InvalidParametersError( `Incorrect nonce! Expected nonce: ${expectedNonce} but received nonce: ${ovmTx.nonce}` ) } @@ -1037,23 +1061,44 @@ export class DefaultWeb3Handler protected assertParameters( params: any[], - expected: number, + expected: Web3RpcTypes[], defaultLast?: any - ): any[] { - if (!params) { - if (!expected) { - return [] - } - } else if (params.length === expected - 1 || params.length === expected) { - const nonEmptyParams = params.filter((x) => !!x) - return nonEmptyParams.length === expected - ? nonEmptyParams - : [...nonEmptyParams, defaultLast] + ) { + if ( + !( + !params || + params.length === expected.length - 1 || + params.length === expected.length + ) + ) { + throw new InvalidParametersError( + `Expected ${expected} parameters but received ${params.length}.` + ) } - throw new InvalidParametersError( - `Expected ${expected} parameters but received ${ - !params ? 0 : params.length - }.` - ) + expected.forEach((expectedType, index) => { + const param = params[index] + const typeChecks = { + [Web3RpcTypes.quantityOrTag]: (value) => { + return ( + value === undefined || + !isNaN(value) || + ['latest', 'earliest', 'pending'].includes(value) + ) + }, + [Web3RpcTypes.boolean]: (value) => [true, false].includes(value), + [Web3RpcTypes.quantity]: (value) => !isNaN(value), + [Web3RpcTypes.data]: Web3.utils.isHex, + [Web3RpcTypes.address]: Web3.utils.isAddress, + [Web3RpcTypes.object]: (value) => { + return value instanceof Object + }, + } + + if (!typeChecks[expectedType](param)) { + throw new InvalidParametersError( + `Expected ${expectedType} but got ${param}` + ) + } + }) } } diff --git a/packages/rollup-full-node/src/types/web3-rpc-handler.ts b/packages/rollup-full-node/src/types/web3-rpc-handler.ts index 1476b1f8a6cf..22ce9cfc9946 100644 --- a/packages/rollup-full-node/src/types/web3-rpc-handler.ts +++ b/packages/rollup-full-node/src/types/web3-rpc-handler.ts @@ -30,6 +30,15 @@ export interface Web3Handler { chainId(): Promise } +export enum Web3RpcTypes { + quantity = 'quantity', + boolean = 'boolean', + data = 'data', + address = 'address', + object = 'object', + quantityOrTag = 'quantityOrTag', +} + // Enum of supported web3 rpc methods export enum Web3RpcMethods { blockNumber = 'eth_blockNumber', diff --git a/packages/rollup-full-node/test/app/web-rpc-handler.spec.ts b/packages/rollup-full-node/test/app/web-rpc-handler.spec.ts index 683ac8428530..0489bd73f4e2 100644 --- a/packages/rollup-full-node/test/app/web-rpc-handler.spec.ts +++ b/packages/rollup-full-node/test/app/web-rpc-handler.spec.ts @@ -6,6 +6,7 @@ import { getLogger, keccak256, numberToHexString, + JSONRPC_ERRORS, ZERO_ADDRESS, hexStrToBuf, } from '@eth-optimism/core-utils' @@ -178,6 +179,14 @@ describe('Web3Handler', () => { balance.toNumber().should.eq(0) }) + + it('should return a parameter error if an invalid parameter is passed', async () => { + const wallet = getWallet(httpProvider) + + await assertAsyncThrowsWithMessage(async () => { + await httpProvider.send('eth_getBalance', [1]) + }, JSONRPC_ERRORS.INVALID_PARAMS.message) + }) }) describe('EVM reversion handling', async () => { diff --git a/yarn.lock b/yarn.lock index e6a9c7dcda38..bc30730c49b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3759,6 +3759,15 @@ eth-lib@^0.1.26: ws "^3.0.0" xhr-request-promise "^0.1.2" +eth-lib@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" @@ -4199,6 +4208,11 @@ eventemitter3@3.1.2, eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + events@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" @@ -9271,6 +9285,23 @@ swarm-js@0.1.39: tar "^4.0.2" xhr-request-promise "^0.1.2" +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + table@^5.0.2: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -9982,6 +10013,16 @@ web3-bzz@1.2.4: swarm-js "0.1.39" underscore "1.9.1" +web3-bzz@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.7.tgz#aa0f3d162f0777a5f35367dc5b70012dd1e129d0" + integrity sha512-iTIWBR+Z+Bn09WprtKm46LmyNOasg2lUn++AjXkBTB8UNxlUybxtza84yl2ETTZUs0zuFzdSSAEgbjhygG+9oA== + dependencies: + "@types/node" "^10.12.18" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + web3-core-helpers@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.35.tgz#d681d218a0c6e3283ee1f99a078ab9d3eef037f1" @@ -10009,6 +10050,15 @@ web3-core-helpers@1.2.4: web3-eth-iban "1.2.4" web3-utils "1.2.4" +web3-core-helpers@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.7.tgz#522f859775ea0d15e7e40359c46d4efc5da92aee" + integrity sha512-bdU++9QATGeCetVrMp8pV97aQtVkN5oLBf/TWu/qumC6jK/YqrvLlBJLdwbz0QveU8zOSap6GCvJbqKvmmbV2A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.7" + web3-utils "1.2.7" + web3-core-method@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.35.tgz#fc10e2d546cf4886038e6130bd5726b0952a4e5f" @@ -10042,6 +10092,17 @@ web3-core-method@1.2.4: web3-core-subscriptions "1.2.4" web3-utils "1.2.4" +web3-core-method@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.7.tgz#73fd80d2bf0765ff6efc454db49ac83d1769a45e" + integrity sha512-e1TI0QUnByDMbQ8QHwnjxfjKw0LIgVRY4TYrlPijET9ebqUJU1HCayn/BHIMpV6LKyR1fQj9EldWyT64wZQXkg== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.7" + web3-core-promievent "1.2.7" + web3-core-subscriptions "1.2.7" + web3-utils "1.2.7" + web3-core-promievent@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.35.tgz#4f1b24737520fa423fee3afee110fbe82bcb8691" @@ -10066,6 +10127,13 @@ web3-core-promievent@1.2.4: any-promise "1.3.0" eventemitter3 "3.1.2" +web3-core-promievent@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.7.tgz#fc7fa489f4cf76a040800f3dfd4b45c51bd3a39f" + integrity sha512-jNmsM/czCeMGQqKKwM9/HZVTJVIF96hdMVNN/V9TGvp+EEE7vDhB4pUocDnc/QF9Z/5QFBCVmvNWttlRgZmU0A== + dependencies: + eventemitter3 "3.1.2" + web3-core-requestmanager@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.35.tgz#2b77cbf6303720ad68899b39fa7f584dc03dbc8f" @@ -10099,6 +10167,17 @@ web3-core-requestmanager@1.2.4: web3-providers-ipc "1.2.4" web3-providers-ws "1.2.4" +web3-core-requestmanager@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.7.tgz#9da0efce898ead7004d4ac50f748f5131cfe4d79" + integrity sha512-HJb/txjHixu1dxIebiZQKBoJCaNu4gsh7mq/uj6Z/w6tIHbybL90s/7ADyMED353yyJ2tDWtYJqeMVAR+KtdaA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.7" + web3-providers-http "1.2.7" + web3-providers-ipc "1.2.7" + web3-providers-ws "1.2.7" + web3-core-subscriptions@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.35.tgz#c1b76a2ad3c6e80f5d40b8ba560f01e0f4628758" @@ -10126,6 +10205,15 @@ web3-core-subscriptions@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" +web3-core-subscriptions@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.7.tgz#30c64aede03182832883b17c77e21cbb0933c86e" + integrity sha512-W/CzQYOUawdMDvkgA/fmLsnG5aMpbjrs78LZMbc0MFXLpH3ofqAgO2by4QZrrTShUUTeWS0ZuEkFFL/iFrSObw== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.7" + web3-core@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.35.tgz#0c44d3c50d23219b0b1531d145607a9bc7cd4b4f" @@ -10159,6 +10247,19 @@ web3-core@1.2.4: web3-core-requestmanager "1.2.4" web3-utils "1.2.4" +web3-core@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.7.tgz#9248b04331e458c76263d758c51b0cc612953900" + integrity sha512-QA0MTae0gXcr3KHe3cQ4x56+Wh43ZKWfMwg1gfCc3NNxPRM1jJ8qudzyptCAUcxUGXWpDG8syLIn1APDz5J8BQ== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.7" + web3-core-method "1.2.7" + web3-core-requestmanager "1.2.7" + web3-utils "1.2.7" + web3-eth-abi@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.35.tgz#2eb9c1c7c7233db04010defcb192293e0db250e6" @@ -10187,6 +10288,15 @@ web3-eth-abi@1.2.4: underscore "1.9.1" web3-utils "1.2.4" +web3-eth-abi@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.7.tgz#6f3471b578649fddd844a14d397a3dd430fc44a5" + integrity sha512-4FnlT1q+D0XBkxSMXlIb/eG337uQeMaUdtVQ4PZ3XzxqpcoDuMgXm4o+3NRxnWmr4AMm6QKjM+hcC7c0mBKcyg== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.7" + web3-eth-accounts@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.35.tgz#7d0e5a69f510dc93874471599eb7abfa9ddf3e63" @@ -10238,6 +10348,23 @@ web3-eth-accounts@1.2.4: web3-core-method "1.2.4" web3-utils "1.2.4" +web3-eth-accounts@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.7.tgz#087f55d04a01b815b93151aac2fc1677436b9c59" + integrity sha512-AE7QWi/iIQIjXwlAPtlMabm/OPFF0a1PhxT1EiTckpYNP8fYs6jW7lYxEtJPPJIKqfMjoi1xkEqTVR1YZQ88lg== + dependencies: + "@web3-js/scrypt-shim" "^0.1.0" + crypto-browserify "3.12.0" + eth-lib "^0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.7" + web3-core-helpers "1.2.7" + web3-core-method "1.2.7" + web3-utils "1.2.7" + web3-eth-contract@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.35.tgz#5276242d8a3358d9f1ce92b71575c74f9015935c" @@ -10281,6 +10408,21 @@ web3-eth-contract@1.2.4: web3-eth-abi "1.2.4" web3-utils "1.2.4" +web3-eth-contract@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.7.tgz#13d7f6003d6221f9a5fd61c2d3b5d039477c9674" + integrity sha512-uW23Y0iL7XroRNbf9fWZ1N6OYhEYTJX8gTuYASuRnpYrISN5QGiQML6pq/NCzqypR1bl5E0fuINZQSK/xefIVw== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.7" + web3-core-helpers "1.2.7" + web3-core-method "1.2.7" + web3-core-promievent "1.2.7" + web3-core-subscriptions "1.2.7" + web3-eth-abi "1.2.7" + web3-utils "1.2.7" + web3-eth-ens@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" @@ -10309,6 +10451,20 @@ web3-eth-ens@1.2.4: web3-eth-contract "1.2.4" web3-utils "1.2.4" +web3-eth-ens@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.7.tgz#0bfa7d4b6c7753abbb31a2eb01a364b538f4c860" + integrity sha512-SPRnvUNWQ0CnnTDBteGIJkvFWEizJcAHlVsrFLICwcwFZu+appjX1UOaoGu2h3GXWtc/XZlu7B451Gi+Os2cTg== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.7" + web3-core-helpers "1.2.7" + web3-core-promievent "1.2.7" + web3-eth-abi "1.2.7" + web3-eth-contract "1.2.7" + web3-utils "1.2.7" + web3-eth-iban@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.35.tgz#5aa10327a9abb26bcfc4ba79d7bad18a002b332c" @@ -10333,6 +10489,14 @@ web3-eth-iban@1.2.4: bn.js "4.11.8" web3-utils "1.2.4" +web3-eth-iban@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.7.tgz#832809c28586be3c667a713b77a2bcba11b7970f" + integrity sha512-2NrClz1PoQ3nSJBd+91ylCOVga9qbTxjRofq/oSCoHVAEvz3WZyttx9k5DC+0rWqwJF1h69ufFvdHAAlmN/4lg== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.7" + web3-eth-personal@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.35.tgz#ecac95b7a53d04a567447062d5cae5f49879e89f" @@ -10367,6 +10531,18 @@ web3-eth-personal@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" +web3-eth-personal@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.7.tgz#322cc2b14c37737b21772a53e4185686a04bf9be" + integrity sha512-2OAa1Spz0uB29dwCM8+1y0So7E47A4gKznjBEwXIYEcUIsvwT5X7ofFhC2XxyRpqlIWZSQAxRSSJFyupRRXzyw== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.7" + web3-core-helpers "1.2.7" + web3-core-method "1.2.7" + web3-net "1.2.7" + web3-utils "1.2.7" + web3-eth@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.35.tgz#c52c804afb95e6624b6f5e72a9af90fbf5005b68" @@ -10423,6 +10599,25 @@ web3-eth@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" +web3-eth@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.7.tgz#9427daefd3641200679c2946f77fc184dbfb5b4c" + integrity sha512-ljLd0oB4IjWkzFGVan4HkYhJXhSXgn9iaSaxdJixKGntZPgWMJfxeA+uLwTrlxrWzhvy4f+39WnT7wCh5e9TGg== + dependencies: + underscore "1.9.1" + web3-core "1.2.7" + web3-core-helpers "1.2.7" + web3-core-method "1.2.7" + web3-core-subscriptions "1.2.7" + web3-eth-abi "1.2.7" + web3-eth-accounts "1.2.7" + web3-eth-contract "1.2.7" + web3-eth-ens "1.2.7" + web3-eth-iban "1.2.7" + web3-eth-personal "1.2.7" + web3-net "1.2.7" + web3-utils "1.2.7" + web3-net@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.35.tgz#5c6688e0dea71fcd910ee9dc5437b94b7f6b3354" @@ -10450,6 +10645,15 @@ web3-net@1.2.4: web3-core-method "1.2.4" web3-utils "1.2.4" +web3-net@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.7.tgz#c355621a8769c9c1a967c801e7db90c92a0e3808" + integrity sha512-j9qeZrS1FNyCeA0BfdLojkxOZQz3FKa1DJI+Dw9fEVhZS68vLOFANu2RB96gR9BoPHo5+k5D3NsKOoxt1gw3Gg== + dependencies: + web3-core "1.2.7" + web3-core-method "1.2.7" + web3-utils "1.2.7" + web3-provider-engine@14.2.0: version "14.2.0" resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.0.tgz#2efec157b2c429c5c674c079aea96b0a06de8b3d" @@ -10526,6 +10730,14 @@ web3-providers-http@1.2.4: web3-core-helpers "1.2.4" xhr2-cookies "1.1.0" +web3-providers-http@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.7.tgz#31eb15390c103169b3d7d31bdb1ccae9e3f1629d" + integrity sha512-vazGx5onuH/zogrwkUaLFJwFcJ6CckP65VFSHoiV+GTQdkOqgoDIha7StKkslvDz4XJ2FuY/zOZHbtuOYeltXQ== + dependencies: + web3-core-helpers "1.2.7" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.35.tgz#031afeb10fade2ebb0ef2fb82f5e58c04be842d9" @@ -10553,6 +10765,15 @@ web3-providers-ipc@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" +web3-providers-ipc@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.7.tgz#4e6716e8723d431df3d6bfa1acd2f7c04e7071ad" + integrity sha512-/zc0y724H2zbkV4UbGGMhsEiLfafjagIzfrsWZnyTZUlSB0OGRmmFm2EkLJAgtXrLiodaHHyXKM0vB8S24bxdA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.7" + web3-providers-ws@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.35.tgz#5d38603fd450243a26aae0ff7f680644e77fa240" @@ -10580,6 +10801,16 @@ web3-providers-ws@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" +web3-providers-ws@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.7.tgz#95b1cc5dc25e9b9d6630d6754f9354313b62f532" + integrity sha512-b5XzqDpRkNVe6MFs5K6iqOEyjQikHtg3KuU2/ClCDV37hm0WN4xCRVMC0LwegulbDXZej3zT9+1CYzGaGFREzA== + dependencies: + "@web3-js/websocket" "^1.0.29" + eventemitter3 "^4.0.0" + underscore "1.9.1" + web3-core-helpers "1.2.7" + web3-shh@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.35.tgz#7e4a585f8beee0c1927390937c6537748a5d1a58" @@ -10610,6 +10841,16 @@ web3-shh@1.2.4: web3-core-subscriptions "1.2.4" web3-net "1.2.4" +web3-shh@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.7.tgz#5382c7bc2f39539eb2841c4576d23ade25720461" + integrity sha512-f6PAgcpG0ZAo98KqCmeHoDEx5qzm3d5plet18DkT4U6WIeYowKdec8vZaLPRR7c2XreXFJ2gQf45CB7oqR7U/w== + dependencies: + web3-core "1.2.7" + web3-core-method "1.2.7" + web3-core-subscriptions "1.2.7" + web3-net "1.2.7" + web3-utils@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.35.tgz#ced9e1df47c65581c441c5f2af76b05a37a273d7" @@ -10650,6 +10891,20 @@ web3-utils@1.2.4: underscore "1.9.1" utf8 "3.0.0" +web3-utils@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.7.tgz#b68e232917e4376f81cf38ef79878e5903d18e93" + integrity sha512-FBh/CPJND+eiPeUF9KVbTyTZtXNWxPWtByBaWS6e2x4ACazPX711EeNaZaChIOGSLGe6se2n7kg6wnawe/MjuQ== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + web3@1.0.0-beta.35: version "1.0.0-beta.35" resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.35.tgz#6475095bd451a96e50a32b997ddee82279292f11" @@ -10690,6 +10945,19 @@ web3@1.2.4: web3-shh "1.2.4" web3-utils "1.2.4" +web3@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.7.tgz#fcb83571036c1c6f475bc984785982a444e8d78e" + integrity sha512-jAAJHMfUlTps+jH2li1ckDFEpPrEEriU/ubegSTGRl3KRdNhEqT93+3kd7FHJTn3NgjcyURo2+f7Da1YcZL8Mw== + dependencies: + web3-bzz "1.2.7" + web3-core "1.2.7" + web3-eth "1.2.7" + web3-eth-personal "1.2.7" + web3-net "1.2.7" + web3-shh "1.2.7" + web3-utils "1.2.7" + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"