diff --git a/CONFIGURATION.md b/CONFIGURATION.md index d953abba..01c09c39 100644 --- a/CONFIGURATION.md +++ b/CONFIGURATION.md @@ -8,11 +8,11 @@ COMMON_HOME_RPC_URL | The HTTPS URL(s) used to communicate to the RPC nodes in t COMMON_FOREIGN_RPC_URL | The HTTPS URL(s) used to communicate to the RPC nodes in the Foreign network. Several URLs can be specified, delimited by spaces. If the connection to one of these nodes is lost the next URL is used for connection. | URL(s) COMMON_HOME_BRIDGE_ADDRESS | The address of the bridge contract address in the Home network. It is used to listen to events from and send validators' transactions to the Home network. | hexidecimal beginning with "0x" COMMON_FOREIGN_BRIDGE_ADDRESS | The address of the bridge contract address in the Foreign network. It is used to listen to events from and send validators' transactions to the Foreign network. | hexidecimal beginning with "0x" -COMMON_HOME_GAS_PRICE_SUPPLIER_URL | The URL used to get a JSON response from the gas price prediction oracle for the Home network. The gas price provided by the oracle is used to send the validator's transactions to the RPC node. Since it is assumed that the Home network has a predefined gas price (e.g. the gas price in the Core of POA.Network is `1 GWei`), the gas price oracle parameter can be omitted for such networks. | URL +COMMON_HOME_GAS_PRICE_SUPPLIER_URL | The URL used to get a JSON response from the gas price prediction oracle for the Home network. The gas price provided by the oracle is used to send the validator's transactions to the RPC node. Since it is assumed that the Home network has a predefined gas price (e.g. the gas price in the Core of POA.Network is `1 GWei`), the gas price oracle parameter can be omitted for such networks. Set to `eip1559-gas-estimation` if you want to use EIP1559 RPC-based gas estimation. | URL COMMON_HOME_GAS_PRICE_SPEED_TYPE | Assuming the gas price oracle responds with the following JSON structure: `{"fast": 20.0, "block_time": 12.834, "health": true, "standard": 6.0, "block_number": 6470469, "instant": 71.0, "slow": 1.889}`, this parameter specifies the desirable transaction speed. The speed type can be omitted when `COMMON_HOME_GAS_PRICE_SUPPLIER_URL` is not used. | `instant` / `fast` / `standard` / `slow` COMMON_HOME_GAS_PRICE_FALLBACK | The gas price (in Wei) that is used if both the oracle and the fall back gas price specified in the Home Bridge contract are not available. | integer COMMON_HOME_GAS_PRICE_FACTOR | A value that will multiply the gas price of the oracle to convert it to gwei. If the oracle API returns gas prices in gwei then this can be set to `1`. Also, it could be used to intentionally pay more gas than suggested by the oracle to guarantee the transaction verification. E.g. `1.25` or `1.5`. | integer -COMMON_FOREIGN_GAS_PRICE_SUPPLIER_URL | The URL used to get a JSON response from the gas price prediction oracle for the Foreign network. The provided gas price is used to send the validator's transactions to the RPC node. If the Foreign network is Ethereum Foundation mainnet, the oracle URL can be: https://gasprice.poa.network. Otherwise this parameter can be omitted. Set to `gas-price-oracle` if you want to use npm `gas-price-oracle` package for retrieving gas price from multiple sources. | URL +COMMON_FOREIGN_GAS_PRICE_SUPPLIER_URL | The URL used to get a JSON response from the gas price prediction oracle for the Foreign network. The provided gas price is used to send the validator's transactions to the RPC node. If the Foreign network is Ethereum Foundation mainnet, the oracle URL can be: https://gasprice.poa.network. Otherwise this parameter can be omitted. Set to `gas-price-oracle` if you want to use npm `gas-price-oracle` package for retrieving gas price from multiple sources. Set to `eip1559-gas-estimation` if you want to use EIP1559 RPC-based gas estimation. | URL COMMON_FOREIGN_GAS_PRICE_SPEED_TYPE | Assuming the gas price oracle responds with the following JSON structure: `{"fast": 20.0, "block_time": 12.834, "health": true, "standard": 6.0, "block_number": 6470469, "instant": 71.0, "slow": 1.889}`, this parameter specifies the desirable transaction speed. The speed type can be omitted when `COMMON_FOREIGN_GAS_PRICE_SUPPLIER_URL`is not used. | `instant` / `fast` / `standard` / `slow` COMMON_FOREIGN_GAS_PRICE_FALLBACK | The gas price (in Wei) used if both the oracle and fall back gas price specified in the Foreign Bridge contract are not available. | integer COMMON_FOREIGN_GAS_PRICE_FACTOR | A value that will multiply the gas price of the oracle to convert it to gwei. If the oracle API returns gas prices in gwei then this can be set to `1`. Also, it could be used to intentionally pay more gas than suggested by the oracle to guarantee the transaction verification. E.g. `1.25` or `1.5`. | integer diff --git a/commons/package.json b/commons/package.json index cb865a07..02263541 100644 --- a/commons/package.json +++ b/commons/package.json @@ -8,6 +8,7 @@ "test": "NODE_ENV=test mocha" }, "dependencies": { + "@mycrypto/gas-estimation": "^1.1.0", "gas-price-oracle": "^0.1.5", "web3-utils": "^1.3.0", "node-fetch": "^2.1.2" diff --git a/commons/utils.js b/commons/utils.js index 3463d3d6..8579be52 100644 --- a/commons/utils.js +++ b/commons/utils.js @@ -1,5 +1,6 @@ const { toWei, toBN, BN } = require('web3-utils') const { GasPriceOracle } = require('gas-price-oracle') +const { estimateFees } = require('@mycrypto/gas-estimation') const fetch = require('node-fetch') const { BRIDGE_MODES } = require('./constants') const { REWARDABLE_VALIDATORS_ABI } = require('./abis') @@ -176,12 +177,20 @@ const gasPriceWithinLimits = (gasPrice, limits) => { const normalizeGasPrice = (oracleGasPrice, factor, limits = null) => { let gasPrice = oracleGasPrice * factor gasPrice = gasPriceWithinLimits(gasPrice, limits) - return toBN(toWei(gasPrice.toFixed(2).toString(), 'gwei')) + return toWei(gasPrice.toFixed(2).toString(), 'gwei') } -const gasPriceFromSupplier = async (url, options = {}) => { +const gasPriceFromSupplier = async (web3, url, options = {}) => { try { let json + if (url === 'eip1559-gas-estimation') { + const { maxFeePerGas, maxPriorityFeePerGas } = await estimateFees(web3) + const res = { maxFeePerGas: maxFeePerGas.toString(10), maxPriorityFeePerGas: maxPriorityFeePerGas.toString(10) } + options.logger && + options.logger.debug && + options.logger.debug(res, 'Gas price updated using eip1559-gas-estimation') + return res + } if (url === 'gas-price-oracle') { json = await gasPriceOracle.fetchGasPricesOffChain() } else if (url) { @@ -205,7 +214,7 @@ const gasPriceFromSupplier = async (url, options = {}) => { options.logger.debug && options.logger.debug({ oracleGasPrice, normalizedGasPrice }, 'Gas price updated using the API') - return normalizedGasPrice + return { gasPrice: normalizedGasPrice } } catch (e) { options.logger && options.logger.error && options.logger.error(`Gas Price API is not available. ${e.message}`) } @@ -214,11 +223,11 @@ const gasPriceFromSupplier = async (url, options = {}) => { const gasPriceFromContract = async (bridgeContract, options = {}) => { try { - const gasPrice = await bridgeContract.methods.gasPrice().call() + const gasPrice = (await bridgeContract.methods.gasPrice().call()).toString() options.logger && options.logger.debug && options.logger.debug({ gasPrice }, 'Gas price updated using the contracts') - return gasPrice + return { gasPrice } } catch (e) { options.logger && options.logger.error && diff --git a/oracle/package.json b/oracle/package.json index 50f17b74..d1f05b65 100644 --- a/oracle/package.json +++ b/oracle/package.json @@ -38,7 +38,7 @@ "pino-pretty": "^2.0.1", "promise-limit": "^2.7.0", "promise-retry": "^1.1.1", - "web3": "^1.3.0" + "web3": "^1.6.0" }, "devDependencies": { "bn-chai": "^1.0.1", diff --git a/oracle/src/confirmRelay.js b/oracle/src/confirmRelay.js index af081e6a..577b92ab 100644 --- a/oracle/src/confirmRelay.js +++ b/oracle/src/confirmRelay.js @@ -153,11 +153,11 @@ async function main({ sendJob, txHashes }) { } async function sendJobTx(jobs) { - await GasPrice.start(chain, true) - const gasPrice = GasPrice.getPrice().toString(10) - const { web3 } = config.sender === 'foreign' ? config.foreign : config.home + await GasPrice.start(chain, web3, true) + const gasPriceOptions = GasPrice.gasPriceOptions() + const chainId = await getChainId(web3) let nonce = await getNonce(web3, config.validatorAddress) @@ -174,13 +174,13 @@ async function sendJobTx(jobs) { const txHash = await sendTx({ data: job.data, nonce, - gasPrice, amount: '0', gasLimit, privateKey: config.validatorPrivateKey, to: job.to, chainId, - web3 + web3, + gasPriceOptions }) nonce++ @@ -197,7 +197,7 @@ async function sendJobTx(jobs) { if (e.message.toLowerCase().includes('insufficient funds')) { const currentBalance = await web3.eth.getBalance(config.validatorAddress) - const minimumBalance = gasLimit.multipliedBy(gasPrice) + const minimumBalance = gasLimit.multipliedBy(gasPriceOptions.gasPrice || gasPriceOptions.maxFeePerGas) logger.error( `Insufficient funds: ${currentBalance}. Stop processing messages until the balance is at least ${minimumBalance}.` ) diff --git a/oracle/src/sender.js b/oracle/src/sender.js index 8eacfb61..95786411 100644 --- a/oracle/src/sender.js +++ b/oracle/src/sender.js @@ -42,7 +42,7 @@ async function initialize() { web3.currentProvider.urls.forEach(checkHttps(config.id)) - GasPrice.start(config.id) + GasPrice.start(config.id, web3) chainId = await getChainId(web3) connectQueue() @@ -120,7 +120,7 @@ async function main({ msg, ackMsg, nackMsg, channel, scheduleForRetry, scheduleT const txArray = JSON.parse(msg.content) logger.debug(`Msg received with ${txArray.length} Tx to send`) - const gasPrice = GasPrice.getPrice().toString(10) + const gasPriceOptions = GasPrice.gasPriceOptions() let nonce let insufficientFunds = false @@ -158,24 +158,26 @@ async function main({ msg, ackMsg, nackMsg, channel, scheduleForRetry, scheduleT nonce = await readNonce(true) } - logger.info(`Transaction ${job.txHash} was not mined, updating gasPrice: ${job.gasPrice} -> ${gasPrice}`) + const oldGasPrice = JSON.stringify(job.gasPriceOptions) + const newGasPrice = JSON.stringify(gasPriceOptions) + logger.info(`Transaction ${job.txHash} was not mined, updating gasPrice: ${oldGasPrice} -> ${newGasPrice}`) } logger.info(`Sending transaction with nonce ${nonce}`) const txHash = await sendTx({ data: job.data, nonce, - gasPrice, amount: '0', gasLimit, privateKey: config.validatorPrivateKey, to: job.to, chainId, - web3: web3Redundant + web3: web3Redundant, + gasPriceOptions }) const resendJob = { - ...job, txHash, - gasPrice + gasPriceOptions, + ...job } resendJobs.push(resendJob) @@ -193,7 +195,7 @@ async function main({ msg, ackMsg, nackMsg, channel, scheduleForRetry, scheduleT if (isGasPriceError(e)) { logger.info('Replacement transaction underpriced, forcing gas price update') - GasPrice.start(config.id) + GasPrice.start(config.id, web3) failedTx.push(job) } else if (isResend || isSameTransactionError(e)) { resendJobs.push(job) @@ -207,7 +209,7 @@ async function main({ msg, ackMsg, nackMsg, channel, scheduleForRetry, scheduleT if (isInsufficientBalanceError(e)) { insufficientFunds = true const currentBalance = await web3.eth.getBalance(config.validatorAddress) - minimumBalance = gasLimit.multipliedBy(gasPrice) + minimumBalance = gasLimit.multipliedBy(gasPriceOptions.gasPrice || gasPriceOptions.maxFeePerGas) logger.error( `Insufficient funds: ${currentBalance}. Stop processing messages until the balance is at least ${minimumBalance}.` ) diff --git a/oracle/src/services/gasPrice.js b/oracle/src/services/gasPrice.js index 45c24f31..23f09c5a 100644 --- a/oracle/src/services/gasPrice.js +++ b/oracle/src/services/gasPrice.js @@ -20,21 +20,21 @@ const { COMMON_HOME_GAS_PRICE_FACTOR } = process.env -let cachedGasPrice = null +let cachedGasPriceOptions = null let fetchGasPriceInterval = null -const fetchGasPrice = async (speedType, factor, bridgeContract, gasPriceSupplierUrl) => { +const fetchGasPrice = async (speedType, factor, web3, bridgeContract, gasPriceSupplierUrl) => { const contractOptions = { logger } const supplierOptions = { speedType, factor, limits: GAS_PRICE_BOUNDARIES, logger } - cachedGasPrice = - (await gasPriceFromSupplier(gasPriceSupplierUrl, supplierOptions)) || + cachedGasPriceOptions = + (await gasPriceFromSupplier(web3, gasPriceSupplierUrl, supplierOptions)) || (await gasPriceFromContract(bridgeContract, contractOptions)) || - cachedGasPrice - return cachedGasPrice + cachedGasPriceOptions + return cachedGasPriceOptions } -async function start(chainId, fetchOnce) { +async function start(chainId, web3, fetchOnce) { clearInterval(fetchGasPriceInterval) let contract = null @@ -49,7 +49,7 @@ async function start(chainId, fetchOnce) { updateInterval = ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL || DEFAULT_UPDATE_INTERVAL factor = Number(COMMON_HOME_GAS_PRICE_FACTOR) || DEFAULT_GAS_PRICE_FACTOR - cachedGasPrice = COMMON_HOME_GAS_PRICE_FALLBACK + cachedGasPriceOptions = { gasPrice: COMMON_HOME_GAS_PRICE_FALLBACK } } else if (chainId === 'foreign') { contract = foreign.bridgeContract gasPriceSupplierUrl = COMMON_FOREIGN_GAS_PRICE_SUPPLIER_URL @@ -57,7 +57,7 @@ async function start(chainId, fetchOnce) { updateInterval = ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL || DEFAULT_UPDATE_INTERVAL factor = Number(COMMON_FOREIGN_GAS_PRICE_FACTOR) || DEFAULT_GAS_PRICE_FACTOR - cachedGasPrice = COMMON_FOREIGN_GAS_PRICE_FALLBACK + cachedGasPriceOptions = { gasPrice: COMMON_FOREIGN_GAS_PRICE_FALLBACK } } else { throw new Error(`Unrecognized chainId '${chainId}'`) } @@ -67,21 +67,21 @@ async function start(chainId, fetchOnce) { } if (fetchOnce) { - await fetchGasPrice(speedType, factor, contract, gasPriceSupplierUrl) + await fetchGasPrice(speedType, factor, web3, contract, gasPriceSupplierUrl) } else { fetchGasPriceInterval = await setIntervalAndRun( - () => fetchGasPrice(speedType, factor, contract, gasPriceSupplierUrl), + () => fetchGasPrice(speedType, factor, web3, contract, gasPriceSupplierUrl), updateInterval ) } } -function getPrice() { - return cachedGasPrice +function gasPriceOptions() { + return cachedGasPriceOptions } module.exports = { start, - getPrice, + gasPriceOptions, fetchGasPrice } diff --git a/oracle/src/tx/sendTx.js b/oracle/src/tx/sendTx.js index e9782212..ab660ad4 100644 --- a/oracle/src/tx/sendTx.js +++ b/oracle/src/tx/sendTx.js @@ -1,6 +1,7 @@ const { toWei } = require('web3').utils -async function sendTx({ privateKey, data, nonce, gasPrice, amount, gasLimit, to, chainId, web3 }) { +async function sendTx({ privateKey, data, nonce, gasPrice, gasPriceOptions, amount, gasLimit, to, chainId, web3 }) { + const gasOpts = gasPriceOptions || { gasPrice } const serializedTx = await web3.eth.accounts.signTransaction( { nonce: Number(nonce), @@ -8,8 +9,8 @@ async function sendTx({ privateKey, data, nonce, gasPrice, amount, gasLimit, to, to, data, value: toWei(amount), - gasPrice, - gas: gasLimit + gas: gasLimit, + ...gasOpts }, privateKey ) diff --git a/oracle/test/gasPrice.test.js b/oracle/test/gasPrice.test.js index 649d5731..e0e0c472 100644 --- a/oracle/test/gasPrice.test.js +++ b/oracle/test/gasPrice.test.js @@ -71,10 +71,10 @@ describe('gasPrice', () => { await gasPrice.start('home') // when - await gasPrice.fetchGasPrice('standard', 1, null, null) + await gasPrice.fetchGasPrice('standard', 1, null, null, null) // then - expect(gasPrice.getPrice()).to.equal('101000000000') + expect(gasPrice.gasPriceOptions()).to.eql({ gasPrice: '101000000000' }) }) it('should fetch gas from supplier', async () => { @@ -82,10 +82,10 @@ describe('gasPrice', () => { await gasPrice.start('home') // when - await gasPrice.fetchGasPrice('standard', 1, null, 'url') + await gasPrice.fetchGasPrice('standard', 1, null, null, 'url') // then - expect(gasPrice.getPrice().toString()).to.equal('103000000000') + expect(gasPrice.gasPriceOptions()).to.eql({ gasPrice: '103000000000' }) }) it('should fetch gas from contract', async () => { @@ -101,10 +101,10 @@ describe('gasPrice', () => { } // when - await gasPrice.fetchGasPrice('standard', 1, bridgeContractMock, null) + await gasPrice.fetchGasPrice('standard', 1, null, bridgeContractMock, null) // then - expect(gasPrice.getPrice().toString()).to.equal('102000000000') + expect(gasPrice.gasPriceOptions()).to.eql({ gasPrice: '102000000000' }) }) it('should fetch the gas price from the oracle first', async () => { @@ -120,10 +120,10 @@ describe('gasPrice', () => { } // when - await gasPrice.fetchGasPrice('standard', 1, bridgeContractMock, 'url') + await gasPrice.fetchGasPrice('standard', 1, null, bridgeContractMock, 'url') // then - expect(gasPrice.getPrice().toString()).to.equal('103000000000') + expect(gasPrice.gasPriceOptions()).to.eql({ gasPrice: '103000000000' }) }) it('log error using the logger', async () => { @@ -131,7 +131,7 @@ describe('gasPrice', () => { await gasPrice.start('home') // when - await gasPrice.fetchGasPrice('standard', 1, null, null) + await gasPrice.fetchGasPrice('standard', 1, null, null, null) // then expect(fakeLogger.warn.calledOnce).to.equal(true) // one warning diff --git a/package.json b/package.json index de5821ea..262972de 100644 --- a/package.json +++ b/package.json @@ -45,5 +45,8 @@ "compile:contracts": "yarn workspace tokenbridge-contracts run compile", "install:deploy": "cd contracts/deploy && npm install --unsafe-perm --silent", "postinstall": "test -n \"$NOYARNPOSTINSTALL\" || ln -sf $(pwd)/node_modules/openzeppelin-solidity/ contracts/node_modules/openzeppelin-solidity" + }, + "resolutions": { + "**/@mycrypto/eth-scan": "3.5.3" } } diff --git a/yarn.lock b/yarn.lock index 179e3a11..f55ac82c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1268,6 +1268,14 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.0" +"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.0.tgz#feb96fb154da41ee2cc2c5df667621a440f36348" + integrity sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.3" + "@ethereumjs/tx@^3.2.1": version "3.3.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.0.tgz#14ed1b7fa0f28e1cd61e3ecbdab824205f6a4378" @@ -1276,6 +1284,14 @@ "@ethereumjs/common" "^2.4.0" ethereumjs-util "^7.1.0" +"@ethereumjs/tx@^3.3.2": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.4.0.tgz#7eb1947eefa55eb9cf05b3ca116fb7a3dbd0bce7" + integrity sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw== + dependencies: + "@ethereumjs/common" "^2.6.0" + ethereumjs-util "^7.1.3" + "@ethersproject/abi@5.0.0-beta.142": version "5.0.0-beta.142" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.142.tgz#cde0ced7daa2fbc98e35a2c31203331907e84a39" @@ -1555,6 +1571,11 @@ unique-filename "^1.1.1" which "^1.3.1" +"@findeth/abi@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@findeth/abi/-/abi-0.7.1.tgz#60d0801cb252e587dc3228f00c00581bb748aebc" + integrity sha512-9uNu+/UxeuIibxIB7slf7BGG2PWjgBZr+rKzohhLb7VuoZjmlCcKZkenqwErROxkPdsap7OGO/o1DuYMvObMvw== + "@graphql-tools/batch-delegate@^6.2.4", "@graphql-tools/batch-delegate@^6.2.6": version "6.2.6" resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-6.2.6.tgz#fbea98dc825f87ef29ea5f3f371912c2a2aa2f2c" @@ -2812,6 +2833,22 @@ resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== +"@mycrypto/eth-scan@3.5.2", "@mycrypto/eth-scan@3.5.3": + version "3.5.3" + resolved "https://registry.yarnpkg.com/@mycrypto/eth-scan/-/eth-scan-3.5.3.tgz#c2c9cff253b4d2821f77ab0ba73b8f5d7dab1e4c" + integrity sha512-CbMHc+RUCANQMGKt2T65UDZY5kKOHx8lSvupq5fB4UzglcINeyeEekd6TsbW0/1G+7lUXe6fELQmtGSqEPQSvg== + dependencies: + "@findeth/abi" "^0.7.1" + isomorphic-unfetch "^3.1.0" + nanoid "^3.1.28" + +"@mycrypto/gas-estimation@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@mycrypto/gas-estimation/-/gas-estimation-1.1.0.tgz#3f7af47aa487a6eb5d324db5ee11a66845c20c1e" + integrity sha512-/riP5G6DYp3uQBhC9vpWqbK+g6Uebs7AYjaivRF6V581h+PoObh0LqIZuKSzWZ5M+zPCxrrZHO43yR/jtpdq1w== + dependencies: + "@mycrypto/eth-scan" "3.5.2" + "@nodefactory/filsnap-adapter@^0.2.1": version "0.2.2" resolved "https://registry.yarnpkg.com/@nodefactory/filsnap-adapter/-/filsnap-adapter-0.2.2.tgz#0e182150ce3825b6c26b8512ab9355ab7759b498" @@ -10720,6 +10757,17 @@ ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0: ethjs-util "0.1.6" rlp "^2.2.4" +ethereumjs-util@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz#b55d7b64dde3e3e45749e4c41288238edec32d23" + integrity sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw== + 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@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" @@ -14006,6 +14054,14 @@ isobject@^4.0.0: resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" @@ -16663,6 +16719,11 @@ nanoid@^3.1.12, nanoid@^3.1.3: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== +nanoid@^3.1.28: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -23073,6 +23134,11 @@ underscore@~1.4.4: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -23712,6 +23778,15 @@ web3-bzz@1.5.2: got "9.6.0" swarm-js "^0.1.40" +web3-bzz@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.6.1.tgz#8430eb3cbb69baaee4981d190b840748c37a9ec2" + integrity sha512-JbnFNbRlwwHJZPtVuCxo7rC4U4OTg+mPsyhjgPQJJhS0a6Y54OgVWYk9UA/95HqbmTJwTtX329gJoSsseEfrng== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + web3-core-helpers@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" @@ -23756,6 +23831,14 @@ web3-core-helpers@1.5.2: web3-eth-iban "1.5.2" web3-utils "1.5.2" +web3-core-helpers@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.6.1.tgz#cb21047306871f4cf0fedfece7d47ea2aa96141b" + integrity sha512-om2PZvK1uoWcgMq6JfcSx3241LEIVF6qi2JuHz2SLKiKEW5UsBUaVx0mNCmcZaiuYQCyOsLS3r33q5AdM+v8ng== + dependencies: + web3-eth-iban "1.6.1" + web3-utils "1.6.1" + web3-core-method@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" @@ -23814,6 +23897,17 @@ web3-core-method@1.5.2: web3-core-subscriptions "1.5.2" web3-utils "1.5.2" +web3-core-method@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.6.1.tgz#4ae91c639bf1da85ebfd8b99595da6a2235d7b98" + integrity sha512-szH5KyIWIaULQDBdDvevQUCHV9lsExJ/oV0ePqK+w015D2SdMPMuhii0WB+HCePaksWO+rr/GAypvV9g2T3N+w== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + web3-core-helpers "1.6.1" + web3-core-promievent "1.6.1" + web3-core-subscriptions "1.6.1" + web3-utils "1.6.1" + web3-core-promievent@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" @@ -23851,6 +23945,13 @@ web3-core-promievent@1.5.2: dependencies: eventemitter3 "4.0.4" +web3-core-promievent@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.6.1.tgz#f650dea9361e2edf02691015b213fcc8ea499992" + integrity sha512-byJ5s2MQxrWdXd27pWFmujfzsTZK4ik8rDgIV1RFDFc+rHZ2nZhq+VWk7t/Nkrj7EaVXncEgTdPEHc18nx+ocQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-requestmanager@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" @@ -23907,6 +24008,17 @@ web3-core-requestmanager@1.5.2: web3-providers-ipc "1.5.2" web3-providers-ws "1.5.2" +web3-core-requestmanager@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.6.1.tgz#d9c08b0716c9cda546a0c02767b7e08deb04448a" + integrity sha512-4y7etYEUtkfflyYVBfN1oJtCbVFNhNX1omlEYzezhTnPj3/dT7n+dhUXcqvIhx9iKA13unGfpFge80XNFfcB8A== + dependencies: + util "^0.12.0" + web3-core-helpers "1.6.1" + web3-providers-http "1.6.1" + web3-providers-ipc "1.6.1" + web3-providers-ws "1.6.1" + web3-core-subscriptions@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" @@ -23951,6 +24063,14 @@ web3-core-subscriptions@1.5.2: eventemitter3 "4.0.4" web3-core-helpers "1.5.2" +web3-core-subscriptions@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.6.1.tgz#4dfc1f74137354d4ac9eaa628aa916c5e2cc8741" + integrity sha512-WZwxsYttIojyGQ5RqxuQcKg0IJdDCFpUe4EncS3QKZwxPqWzGmgyLwE0rm7tP+Ux1waJn5CUaaoSCBxWGSun1g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.6.1" + web3-core@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" @@ -24012,6 +24132,19 @@ web3-core@1.5.2: web3-core-requestmanager "1.5.2" web3-utils "1.5.2" +web3-core@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.6.1.tgz#b41f08fdc9ea1082d15384a3d6fa93a47c3fc1b4" + integrity sha512-m+b7UfYvU5cQUAh6NRfxRzH/5B3to1AdEQi1HIQt570cDWlObOOmoO9tY6iJnI5w4acxIO19LqjDMqEJGBYyRQ== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-core-requestmanager "1.6.1" + web3-utils "1.6.1" + web3-eth-abi@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" @@ -24056,6 +24189,14 @@ web3-eth-abi@1.5.2: "@ethersproject/abi" "5.0.7" web3-utils "1.5.2" +web3-eth-abi@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.6.1.tgz#15b937e3188570754d50bbac51a4bb0578600d1d" + integrity sha512-svhYrAlXP9XQtV7poWKydwDJq2CaNLMtmKydNXoOBLcQec6yGMP+v20pgrxF2H6wyTK+Qy0E3/5ciPOqC/VuoQ== + dependencies: + "@ethersproject/abi" "5.0.7" + web3-utils "1.6.1" + web3-eth-accounts@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" @@ -24142,6 +24283,23 @@ web3-eth-accounts@1.5.2: web3-core-method "1.5.2" web3-utils "1.5.2" +web3-eth-accounts@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.6.1.tgz#aeb0dfb52c4391773550569732975b471212583f" + integrity sha512-rGn3jwnuOKwaQRu4SiShz0YAQ87aVDBKs4HO43+XTCI1q1Y1jn3NOsG3BW9ZHaOckev4+zEyxze/Bsh2oEk24w== + dependencies: + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-utils "1.6.1" + web3-eth-contract@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" @@ -24215,6 +24373,20 @@ web3-eth-contract@1.5.2: web3-eth-abi "1.5.2" web3-utils "1.5.2" +web3-eth-contract@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.6.1.tgz#4b0a2c0b37015d70146e54c7cb3f035a58fbeec0" + integrity sha512-GXqTe3mF6kpbOAakiNc7wtJ120/gpuKMTZjuGFKeeY8aobRLfbfgKzM9IpyqVZV2v5RLuGXDuurVN2KPgtu3hQ== + dependencies: + "@types/bn.js" "^4.11.5" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-core-promievent "1.6.1" + web3-core-subscriptions "1.6.1" + web3-eth-abi "1.6.1" + web3-utils "1.6.1" + 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" @@ -24287,6 +24459,20 @@ web3-eth-ens@1.5.2: web3-eth-contract "1.5.2" web3-utils "1.5.2" +web3-eth-ens@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.6.1.tgz#801bd5fb5237377ec2ed8517a9fe4634f2269c7a" + integrity sha512-ngprtbnoRgxg8s1wXt9nXpD3h1P+p7XnKXrp/8GdFI9uDmrbSQPRfzBw86jdZgOmy78hAnWmrHI6pBInmgi2qQ== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-promievent "1.6.1" + web3-eth-abi "1.6.1" + web3-eth-contract "1.6.1" + web3-utils "1.6.1" + web3-eth-iban@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" @@ -24327,6 +24513,14 @@ web3-eth-iban@1.5.2: bn.js "^4.11.9" web3-utils "1.5.2" +web3-eth-iban@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.6.1.tgz#20bbed75723e3e9ff98e624979629d26329462b6" + integrity sha512-91H0jXZnWlOoXmc13O9NuQzcjThnWyAHyDn5Yf7u6mmKOhpJSGF/OHlkbpXt1Y4v2eJdEPaVFa+6i8aRyagE7Q== + dependencies: + bn.js "^4.11.9" + web3-utils "1.6.1" + web3-eth-personal@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" @@ -24386,6 +24580,18 @@ web3-eth-personal@1.5.2: web3-net "1.5.2" web3-utils "1.5.2" +web3-eth-personal@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.6.1.tgz#9b524fb9f92b51163f46920ee2663d34a4897c8d" + integrity sha512-ItsC89Ln02+irzJjK6ALcLrMZfbVUCqVbmb/ieDKJ+eLW3pNkBNwoUzaydh92d5NzxNZgNxuQWVdlFyYX2hkEw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-net "1.6.1" + web3-utils "1.6.1" + web3-eth@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" @@ -24480,6 +24686,24 @@ web3-eth@1.5.2: web3-net "1.5.2" web3-utils "1.5.2" +web3-eth@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.6.1.tgz#a25aba1ac213d872ecf3f81c7b4ab8072ecae224" + integrity sha512-kOV1ZgCKypSo5BQyltRArS7ZC3bRpIKAxSgzl7pUFinUb/MxfbM9KGeNxUXoCfTSErcCQJaDjcS6bSre5EMKuQ== + dependencies: + web3-core "1.6.1" + web3-core-helpers "1.6.1" + web3-core-method "1.6.1" + web3-core-subscriptions "1.6.1" + web3-eth-abi "1.6.1" + web3-eth-accounts "1.6.1" + web3-eth-contract "1.6.1" + web3-eth-ens "1.6.1" + web3-eth-iban "1.6.1" + web3-eth-personal "1.6.1" + web3-net "1.6.1" + web3-utils "1.6.1" + web3-net@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" @@ -24525,6 +24749,15 @@ web3-net@1.5.2: web3-core-method "1.5.2" web3-utils "1.5.2" +web3-net@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.6.1.tgz#7a630a804ec9f81908ae52ccbb4ebbb9530b3906" + integrity sha512-gpnqKEIwfUHh5ik7wsQFlCje1DfcmGv+Sk7LCh1hCqn++HEDQxJ/mZCrMo11ZZpZHCH7c87imdxTg96GJnRxDw== + dependencies: + web3-core "1.6.1" + web3-core-method "1.6.1" + web3-utils "1.6.1" + web3-provider-engine@14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.1.0.tgz#91590020f8b8c1b65846321310cbfdb039090fc6" @@ -24644,6 +24877,14 @@ web3-providers-http@1.5.2: web3-core-helpers "1.5.2" xhr2-cookies "1.1.0" +web3-providers-http@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.6.1.tgz#b59b14eefef23b98c327806f5f566303a73bd435" + integrity sha512-xBoKOJxu10+kO3ikamXmBfrWZ/xpQOGy0ocdp7Y81B17En5TXELwlmMXt1UlIgWiyYDhjq4OwlH/VODYqHXy3A== + dependencies: + web3-core-helpers "1.6.1" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" @@ -24688,6 +24929,14 @@ web3-providers-ipc@1.5.2: oboe "2.1.5" web3-core-helpers "1.5.2" +web3-providers-ipc@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.6.1.tgz#7ba460589d46896bb3d124288deed1b6a72d517e" + integrity sha512-anyoIZlpMzwEQI4lwylTzDrHsVp20v0QUtSTp2B5jInBinmQtyCE7vnbX20jEQ4j5uPwfJabKNtoJsk6a3O4WQ== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.6.1" + web3-providers-ws@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" @@ -24735,6 +24984,15 @@ web3-providers-ws@1.5.2: web3-core-helpers "1.5.2" websocket "^1.0.32" +web3-providers-ws@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.6.1.tgz#f7ee71f158971102b865e99ea7911f483e0507e9" + integrity sha512-FWMEFYb4rYFYRgSFBf/O1Ex4p/YKSlN+JydCtdlJwRimd89qm95CTfs4xGjCskwvXMjV2sarH+f1NPwJXicYpg== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.6.1" + websocket "^1.0.32" + web3-shh@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" @@ -24775,6 +25033,16 @@ web3-shh@1.5.2: web3-core-subscriptions "1.5.2" web3-net "1.5.2" +web3-shh@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.6.1.tgz#eebaab2e5e6be80fe2585c6c094fa10a03349ca7" + integrity sha512-oP00HbAtybLCGlLOZUYXOdeB9xq88k2l0TtStvKBtmFqRt+zVk5TxEeuOnVPRxNhcA2Un8RUw6FtvgZlWStu9A== + dependencies: + web3-core "1.6.1" + web3-core-method "1.6.1" + web3-core-subscriptions "1.6.1" + web3-net "1.6.1" + web3-utils@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" @@ -24843,6 +25111,19 @@ web3-utils@1.5.2, web3-utils@^1.2.6: randombytes "^2.1.0" utf8 "3.0.0" +web3-utils@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.6.1.tgz#befcb23922b00603ab56d8c5b4158468dc494aca" + integrity sha512-RidGKv5kOkcerI6jQqDFDoTllQQqV+rPhTzZHhmbqtFObbYpU93uc+yG1LHivRTQhA6llIx67iudc/vzisgO+w== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + web3@*, web3@1.3.5, web3@^1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.5.tgz#ef4c3a2241fdd74f2f7794e839f30bc6f9814e46" @@ -24895,6 +25176,19 @@ web3@1.5.2: web3-shh "1.5.2" web3-utils "1.5.2" +web3@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.6.1.tgz#c9e68fe7b3073adddf35393441f950ec69b92735" + integrity sha512-c299lLiyb2/WOcxh7TinwvbATaMmrgNIeAzbLbmOKHI0LcwyfsB1eu2ReOIrfrCYDYRW2KAjYr7J7gHawqDNPQ== + dependencies: + web3-bzz "1.6.1" + web3-core "1.6.1" + web3-eth "1.6.1" + web3-eth-personal "1.6.1" + web3-net "1.6.1" + web3-shh "1.6.1" + web3-utils "1.6.1" + webidl-conversions@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506"