diff --git a/config.json b/config.json index c6de27c..ed08434 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,7 @@ { - "snapshotBlockNumber": 13685625, "novaProxy": "0xD692Fd2D0b2Fbd2e52CFa5B5b9424bC981C30696", "newNovaImpl": "TODO", - "ethAmbBridge": "0x75df5af045d91108662d8080fd1fefad6aa0bb59", + "ethAmbBridge": "0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e", "gasLimit": 200000, "singletonFactory": "0xce0042B868300000d44A59004Da54A005ffdcf9f", "singletonFactoryVerboseWrapper": "0xCEe71753C9820f063b38FDbE4cFDAf1d3D928A80", diff --git a/contracts/helpers/MockAMB.sol b/contracts/helpers/MockAMB.sol new file mode 100644 index 0000000..6d0f4ac --- /dev/null +++ b/contracts/helpers/MockAMB.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma abicoder v2; + +import { IAMB } from "omnibridge/contracts/interfaces/IAMB.sol"; + + abstract contract MockAMB is IAMB { + address public xDomainMessageSender; + bytes32 public xDomainMessageChainId; + + struct Call { + address who; + bytes callData; + } + + constructor(address _xDomainMessageSender, uint256 _xDomainMessageChainId) { + xDomainMessageSender = _xDomainMessageSender; + xDomainMessageChainId = bytes32(uint256(_xDomainMessageChainId)); + } + + function setMessageSender(address _sender) external { + xDomainMessageSender = _sender; + } + + function messageSender() external view override returns (address) { + return xDomainMessageSender; + } + + function messageSourceChainId() external view override returns (bytes32) { + return xDomainMessageChainId; + } + + function execute(Call[] calldata _calls) external returns (bool success, bytes memory result) { + for (uint256 i = 0; i < _calls.length; i++) { + (success, result) = _calls[i].who.call(_calls[i].callData); + require(success, string(result)); + } + } +} diff --git a/contracts/helpers/SingletonFactory.sol b/contracts/helpers/SingletonFactory.sol new file mode 100644 index 0000000..e114c0d --- /dev/null +++ b/contracts/helpers/SingletonFactory.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT + +/** + *Submitted for verification at Etherscan.io on 2020-03-30 + */ + +pragma solidity ^0.6.2; + +/** + * @title Singleton Factory (EIP-2470) + * @notice Exposes CREATE2 (EIP-1014) to deploy bytecode on deterministic addresses based on initialization code and salt. + * @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) + */ +contract SingletonFactory { + /** + * @notice Deploys `_initCode` using `_salt` for defining the deterministic address. + * @param _initCode Initialization code. + * @param _salt Arbitrary value to modify resulting address. + * @return createdContract Created contract address. + */ + function deploy(bytes memory _initCode, bytes32 _salt) public returns (address payable createdContract) { + assembly { + createdContract := create2(0, add(_initCode, 0x20), mload(_initCode), _salt) + } + } +} +// IV is a value changed to generate the vanity address. +// IV: 6583047 diff --git a/contracts/helpers/TestGovernanceUpgrade.sol b/contracts/helpers/TestGovernanceUpgrade.sol new file mode 100644 index 0000000..441179c --- /dev/null +++ b/contracts/helpers/TestGovernanceUpgrade.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.12; +pragma experimental ABIEncoderV2; + +import { GovernanceGasUpgrade } from "tornado-governance/contracts/v2-vault-and-gas/gas/GovernanceGasUpgrade.sol"; + +contract TestGovernanceUpgrade is GovernanceGasUpgrade { + constructor( + address gasCompLogic, + address userVaultAddress + ) public GovernanceGasUpgrade(gasCompLogic, userVaultAddress) {} + + function test() public pure returns (int256) { + return 231; + } +} diff --git a/hardhat.config.js b/hardhat.config.js index 262ede6..4909bd0 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -8,36 +8,67 @@ require('dotenv').config() */ module.exports = { solidity: { - version: '0.6.12', - settings: { - optimizer: { - enabled: true, - runs: 200, + compilers: [ + { + version: '0.6.12', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, }, - }, + { + version: '0.7.5', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + { + version: '0.7.6', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + ], }, networks: { - rinkeby: { - url: `https://rinkeby.infura.io/v3/${process.env.INFURA_API_KEY}`, - accounts: [`0x${process.env.PRIVATE_KEY}`], + hardhat: { + forking: { + url: `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_KEY}`, + blockNumber: 13685625, + }, + chainId: 1, + initialBaseFeePerGas: 5, + loggingEnabled: false, + allowUnlimitedContractSize: false, + blockGasLimit: 50000000, }, - ropsten: { - url: `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}`, - accounts: [`0x${process.env.PRIVATE_KEY}`], + localhost: { + forking: { + url: `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_KEY}`, + blockNumber: 13685625, + }, + accounts: process.env.PRIVATE_KEY + ? [process.env.PRIVATE_KEY] + : { + mnemonic: 'test test test test test test test test test test test junk', + }, }, mainnet: { - url: `https://mainnet.infura.io/v3/${process.env.INFURA_API_KEY}`, - accounts: [`0x${process.env.PRIVATE_KEY}`], - }, - bsc_testnet: { - url: `https://speedy-nodes-nyc.moralis.io/${process.env.MORALIS_API_KEY}/bsc/testnet`, - accounts: [`0x${process.env.PRIVATE_KEY}`], - gasPrice: 10 * 1000000000, - }, - bsc_mainnet: { - url: `https://speedy-nodes-nyc.moralis.io/${process.env.MORALIS_API_KEY}/bsc/mainnet`, - accounts: [`0x${process.env.PRIVATE_KEY}`], - gasPrice: 5 * 1000000000, + url: `https://eth-mainnet.alchemyapi.io/v2/${process.env.ALCHEMY_KEY}`, + accounts: process.env.PRIVATE_KEY + ? [process.env.PRIVATE_KEY] + : { + mnemonic: 'test test test test test test test test test test test junk', + }, + timeout: 2147483647, }, } } diff --git a/package.json b/package.json index 69b1444..76fa7be 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "dependencies": { "ethereum-waffle": "^3.4.0", "ethers": "^5.5.1", - "tornado-governance": "2.0.0" + "tornado-governance": "2.0.0", + "omnibridge": "https://github.com/omni/omnibridge" }, "devDependencies": { "@ethersproject/testcases": "^5.4.0", diff --git a/src/0_generateAddresses.js b/src/0_generateAddresses.js index e2aece9..d41d78d 100644 --- a/src/0_generateAddresses.js +++ b/src/0_generateAddresses.js @@ -10,7 +10,7 @@ async function generate(config) { .encodeDeploy([ config.novaProxy, config.newNovaImpl, - config.bridge, + config.ethAmbBridge, config.gasLimit, ]) .slice(2) diff --git a/test/functions.test.js b/test/functions.test.js new file mode 100644 index 0000000..e4ca8da --- /dev/null +++ b/test/functions.test.js @@ -0,0 +1,118 @@ +const { ethers } = require('hardhat') +const { expect } = require('chai') +const fs = require('fs') + +const config = require('./test.config.json') +const { getSignerFromAddress, takeSnapshot, revertSnapshot } = require('./utils') +const { generate } = require('../src/0_generateAddresses') + +const ambPath = 'omnibridge/contracts/interfaces/IAMB.sol:IAMB' + +const ProposalState = { + Pending: 0, + Active: 1, + Defeated: 2, + Timelocked: 3, + AwaitingExecution: 4, + Executed: 5, + Expired: 6, +} + +describe('General functionality tests', () => { + let snapshotId + + let torn = config.tokenAddresses.torn + let gov + let tornWhale + let proposal + + //// HELPER FN + let getToken = async (tokenAddress) => { + return await ethers.getContractAt('@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20', tokenAddress) + } + + let minewait = async (time) => { + await ethers.provider.send('evm_increaseTime', [time]) + await ethers.provider.send('evm_mine', []) + } + + before(async function () { + tornWhale = await getSignerFromAddress(config.whales.torn) + + // deploy proposal + const singletonFactory = await ethers.getContractAt( + 'SingletonFactory', + config.singletonFactoryVerboseWrapper, + ) + + const contracts = await generate(config) + + await singletonFactory.deploy(contracts.proposalContract.bytecode, config.salt, { gasLimit: 50000000 }) + proposal = await ethers.getContractAt('NovaUpgradeProposal', contracts.proposalContract.address) + + snapshotId = await takeSnapshot() + }) + + describe('Proposal execution', () => { + it('the proposal should be executed correctly', async () => { + let response, id, state + gov = ( + await ethers.getContractAt( + 'tornado-governance/contracts/v2-vault-and-gas/gas/GovernanceGasUpgrade.sol:GovernanceGasUpgrade', + config.governance, + ) + ).connect(tornWhale) + + await ( + await (await getToken(torn)).connect(tornWhale) + ).approve(gov.address, ethers.utils.parseEther('1000000')) + + await gov.lockWithApproval(ethers.utils.parseEther('26000')) + + response = await gov.propose(proposal.address, 'Nova Upgrade Proposal') + id = await gov.latestProposalIds(tornWhale.address) + state = await gov.state(id) + + let { events } = await response.wait() + let args = events.find(({ event }) => event == 'ProposalCreated').args + expect(args.id).to.be.equal(id) + expect(args.proposer).to.be.equal(tornWhale.address) + expect(args.target).to.be.equal(proposal.address) + expect(args.description).to.be.equal('Nova Upgrade Proposal') + expect(state).to.be.equal(ProposalState.Pending) + + await minewait((await gov.VOTING_DELAY()).add(1).toNumber()) + await expect(gov.castVote(id, true)).to.not.be.reverted + state = await gov.state(id) + expect(state).to.be.equal(ProposalState.Active) + await minewait( + ( + await gov.VOTING_PERIOD() + ) + .add(await gov.EXECUTION_DELAY()) + .add(96400) + .toNumber(), + ) + state = await gov.state(id) + expect(state).to.be.equal(ProposalState.AwaitingExecution) + + await gov.execute(id) + + const amb = await ethers.getContractAt(ambPath, config.ethAmbBridge) + const filter = amb.filters.UserRequestForAffirmation() + const fromBlock = await ethers.provider.getBlock() + events = await amb.queryFilter(filter, fromBlock.number) + bridgedData = events[0].args.encodedData.toString() + expect(bridgedData.slice(106,146)).to.be.equal(config.novaProxy.slice(2)) + expect(bridgedData.slice(196)).to.be.equal(config.newNovaImpl.slice(2)) + + state = await gov.state(id) + expect(state).to.be.equal(ProposalState.Executed) + }) + }) + + afterEach(async () => { + await revertSnapshot(snapshotId) + snapshotId = await takeSnapshot() + }) +}) diff --git a/test/test.config.json b/test/test.config.json new file mode 100644 index 0000000..ee45885 --- /dev/null +++ b/test/test.config.json @@ -0,0 +1,18 @@ +{ + "snapshotBlockNumber": 13685625, + "governance": "0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce", + "novaProxy": "0xd692fd2d0b2fbd2e52cfa5b5b9424bc981c30696", + "newNovaImpl": "0x000000000000000000000000000000000000dead", + "ethAmbBridge": "0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e", + "xdaiAmbBridge": "0x75df5af045d91108662d8080fd1fefad6aa0bb59", + "gasLimit": 200000, + "singletonFactory": "0xce0042B868300000d44A59004Da54A005ffdcf9f", + "singletonFactoryVerboseWrapper": "0xCEe71753C9820f063b38FDbE4cFDAf1d3D928A80", + "salt": "0x746f726e61646f00000000000000000000000000000000000000000000000000", + "tokenAddresses": { + "torn": "0x77777FeDdddFfC19Ff86DB637967013e6C6A116C" + }, + "whales": { + "torn": "0xF977814e90dA44bFA03b6295A0616a897441aceC" + } +} diff --git a/test/utils.js b/test/utils.js new file mode 100644 index 0000000..4dccc91 --- /dev/null +++ b/test/utils.js @@ -0,0 +1,37 @@ +/* global ethers, network */ + +async function setTime(timestamp) { + await ethers.provider.send('evm_setNextBlockTimestamp', [timestamp]) +} + +async function takeSnapshot() { + return await ethers.provider.send('evm_snapshot', []) +} + +async function revertSnapshot(id) { + await ethers.provider.send('evm_revert', [id]) +} + +async function advanceTime(sec) { + const now = (await ethers.provider.getBlock('latest')).timestamp + await setTime(now + sec) +} + +async function getSignerFromAddress(address) { + await network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [address], + }) + + let signer = await ethers.provider.getSigner(address) + signer.address = signer._address + return signer +} + +module.exports = { + setTime, + advanceTime, + takeSnapshot, + revertSnapshot, + getSignerFromAddress, +} diff --git a/yarn.lock b/yarn.lock index f8ce2a9..7b39774 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1609,7 +1609,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.21.1: +axios@^0.21.0, axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== @@ -2596,6 +2596,14 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -3364,6 +3372,21 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +envalid@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/envalid/-/envalid-6.0.2.tgz#7139770e089acc945c0e47b5075d72915d8683e8" + integrity sha512-ChJb9a5rjwZ/NkcXfBrzEl5cFZaGLg38N7MlWJkv5qsmSypX2WJe28LkoAWcklC60nKZXYKRlBbsjuJSjYw0Xg== + dependencies: + chalk "^3.0.0" + dotenv "^8.2.0" + meant "^1.0.1" + validator "^13.0.0" + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -6239,6 +6262,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +meant@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" + integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -6857,6 +6885,18 @@ oboe@2.1.5: dependencies: http-https "^1.0.0" +"omnibridge@https://github.com/omni/omnibridge": + version "1.1.0" + resolved "https://github.com/omni/omnibridge#c814f686487c50462b132b9691fd77cc2de237d3" + dependencies: + axios "^0.21.0" + bignumber.js "^9.0.1" + dotenv "^8.2.0" + envalid "^6.0.2" + promise-retry "^2.0.1" + querystring "^0.2.0" + web3 "1.3.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -7274,6 +7314,14 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" @@ -7428,6 +7476,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -9086,6 +9139,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^13.0.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== + varint@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" @@ -9115,6 +9173,16 @@ web3-bzz@1.2.11: swarm-js "^0.1.40" underscore "1.9.1" +web3-bzz@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.1.tgz#c7e13e5fbbbe4634b0d883e5440069fc58e58044" + integrity sha512-MN726zFpFpwhs3NMC35diJGkwTVUj+8LM/VWqooGX/MOjgYzNrJ7Wr8EzxoaTCy87edYNBprtxBkd0HzzLmung== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + web3-bzz@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.5.3.tgz#e36456905ce051138f9c3ce3623cbc73da088c2b" @@ -9142,6 +9210,15 @@ web3-core-helpers@1.2.11: web3-eth-iban "1.2.11" web3-utils "1.2.11" +web3-core-helpers@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.1.tgz#ffd6f47c1b54a8523f00760a8d713f44d0f97e97" + integrity sha512-tMVU0ScyQUJd/HFWfZrvGf+QmPCodPyKQw1gQ+n9We/H3vPPbUxDjNeYnd4BbYy5O9ox+0XG6i3+JlwiSkgDkA== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.3.1" + web3-utils "1.3.1" + web3-core-helpers@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz#099030235c477aadf39a94199ef40092151d563c" @@ -9170,6 +9247,18 @@ web3-core-method@1.2.11: web3-core-subscriptions "1.2.11" web3-utils "1.2.11" +web3-core-method@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.1.tgz#c1d8bf1e2104a8d625c99caf94218ad2dc948c92" + integrity sha512-dA38tNVZWTxBFMlLFunLD5Az1AWRi5HqM+AtQrTIhxWCzg7rJSHuaYOZ6A5MHKGPWpdykLhzlna0SsNv5AVs8w== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.3.1" + web3-core-promievent "1.3.1" + web3-core-subscriptions "1.3.1" + web3-utils "1.3.1" + web3-core-method@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.5.3.tgz#6cff97ed19fe4ea2e9183d6f703823a079f5132c" @@ -9200,6 +9289,13 @@ web3-core-promievent@1.2.11: dependencies: eventemitter3 "4.0.4" +web3-core-promievent@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.1.tgz#b4da4b34cd9681e22fcda25994d7629280a1e046" + integrity sha512-jGu7TkwUqIHlvWd72AlIRpsJqdHBQnHMeMktrows2148gg5PBPgpJ10cPFmCCzKT6lDOVh9B7pZMf9eckMDmiA== + dependencies: + eventemitter3 "4.0.4" + web3-core-promievent@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz#3f11833c3dc6495577c274350b61144e0a4dba01" @@ -9225,6 +9321,18 @@ web3-core-requestmanager@1.2.11: web3-providers-ipc "1.2.11" web3-providers-ws "1.2.11" +web3-core-requestmanager@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.1.tgz#6dd2b5161ba778dfffe68994a4accff2decc54fe" + integrity sha512-9WTaN2SoyJX1amRyTzX2FtbVXsyWBI2Wef2Q3gPiWaEo/VRVm3e4Bq8MwxNTUMIJMO8RLGHjtdgsoDKPwfL73Q== + dependencies: + underscore "1.9.1" + util "^0.12.0" + web3-core-helpers "1.3.1" + web3-providers-http "1.3.1" + web3-providers-ipc "1.3.1" + web3-providers-ws "1.3.1" + web3-core-requestmanager@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.5.3.tgz#b339525815fd40e3a2a81813c864ddc413f7b6f7" @@ -9256,6 +9364,15 @@ web3-core-subscriptions@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" +web3-core-subscriptions@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.1.tgz#be1103259f91b7fc7f4c6a867aa34dea70a636f7" + integrity sha512-eX3N5diKmrxshc6ZBZ8EJxxAhCxdYPbYXuF2EfgdIyHmxwmYqIVvKepzO8388Bx8JD3D0Id/pKE0dC/FnDIHTQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.1" + web3-core-subscriptions@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.5.3.tgz#d7d69c4caad65074212028656e9dc56ca5c2159d" @@ -9285,6 +9402,19 @@ web3-core@1.2.11: web3-core-requestmanager "1.2.11" web3-utils "1.2.11" +web3-core@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.1.tgz#fb0fc5d952a7f3d580a7e6155d2f28be064e64cb" + integrity sha512-QlBwSyjl2pqYUBE7lH9PfLxa8j6AzzAtvLUqkgoaaFJYLP/+XavW1n6dhVCTq+U3L3eNc+bMp9GLjGDJNXMnGg== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-core-requestmanager "1.3.1" + web3-utils "1.3.1" + web3-core@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.5.3.tgz#59f8728b27c8305b349051326aa262b9b7e907bf" @@ -9320,6 +9450,15 @@ web3-eth-abi@1.2.11: underscore "1.9.1" web3-utils "1.2.11" +web3-eth-abi@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.1.tgz#d60fe5f15c7a3a426c553fdaa4199d07f1ad899c" + integrity sha512-ds4aTeKDUEqTXgncAtxvcfMpPiei9ey7+s2ZZ+OazK2CK5jWhFiJuuj9Q68kOT+hID7E1oSDVsNmJWFD/7lbMw== + dependencies: + "@ethersproject/abi" "5.0.7" + underscore "1.9.1" + web3-utils "1.3.1" + web3-eth-abi@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz#5aea9394d797f99ca0d9bd40c3417eb07241c96c" @@ -9353,6 +9492,23 @@ web3-eth-accounts@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" +web3-eth-accounts@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.1.tgz#63b247461f1ae0ae46f9a5d5aa896ea80237143e" + integrity sha512-wsV3/0Pbn5+pI8PiCD1CYw7I1dkQujcP//aJ+ZH8PoaHQoG6HnJ7nTp7foqa0r/X5lizImz/g5S8D76t3Z9tHA== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-utils "1.3.1" + web3-eth-accounts@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.5.3.tgz#076c816ff4d68c9dffebdc7fd2bfaddcfc163d77" @@ -9402,6 +9558,21 @@ web3-eth-contract@1.2.11: web3-eth-abi "1.2.11" web3-utils "1.2.11" +web3-eth-contract@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.1.tgz#05cb77bd2a671c5480897d20de487f3bae82e113" + integrity sha512-cHu9X1iGrK+Zbrj4wYKwHI1BtVGn/9O0JRsZqd9qcFGLwwAmaCJYy0sDn7PKCKDSL3qB+MDILoyI7FaDTWWTHg== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-core-promievent "1.3.1" + web3-core-subscriptions "1.3.1" + web3-eth-abi "1.3.1" + web3-utils "1.3.1" + web3-eth-contract@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.5.3.tgz#12b03a4a16ce583a945f874bea2ff2fb4c5b81ad" @@ -9445,6 +9616,21 @@ web3-eth-ens@1.2.11: web3-eth-contract "1.2.11" web3-utils "1.2.11" +web3-eth-ens@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.1.tgz#ccfd621ddc1fecb44096bc8e60689499a9eb4421" + integrity sha512-MUQvYgUYQ5gAwbZyHwI7y+NTT6j98qG3MVhGCUf58inF5Gxmn9OlLJRw8Tofgf0K87Tk9Kqw1/2QxUE4PEZMMA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-promievent "1.3.1" + web3-eth-abi "1.3.1" + web3-eth-contract "1.3.1" + web3-utils "1.3.1" + web3-eth-ens@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.5.3.tgz#ef6eee1ddf32b1ff9536fc7c599a74f2656bafe1" @@ -9481,6 +9667,14 @@ web3-eth-iban@1.2.11: bn.js "^4.11.9" web3-utils "1.2.11" +web3-eth-iban@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.1.tgz#4351e1a658efa5f3218357f0a38d6d8cad82481e" + integrity sha512-RCQLfR9Z+DNfpw7oUauYHg1HcVoEljzhwxKn3vi15gK0ssWnTwRGqUiIyVTeSb836G6oakOd5zh7XYqy7pn+nw== + dependencies: + bn.js "^4.11.9" + web3-utils "1.3.1" + web3-eth-iban@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz#91b1475893a877b10eac1de5cce6eb379fb81b5d" @@ -9509,6 +9703,18 @@ web3-eth-personal@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" +web3-eth-personal@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.1.tgz#cfe8af01588870d195dabf0a8d9e34956fb8856d" + integrity sha512-/vZEQpXJfBfYoy9KT911ItfoscEfF0Q2j8tsXzC2xmmasSZ6YvAUuPhflVmAo0IHQSX9rmxq0q1p3sbnE3x2pQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-net "1.3.1" + web3-utils "1.3.1" + web3-eth-personal@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.5.3.tgz#4ebe09e9a77dd49d23d93b36b36cfbf4a6dae713" @@ -9552,6 +9758,25 @@ web3-eth@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" +web3-eth@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.1.tgz#60ac4b58e5fd17b8dbbb8378abd63b02e8326727" + integrity sha512-e4iL8ovj0zNxzbv4LTHEv9VS03FxKlAZD+95MolwAqtVoUnKC2H9X6dli0w6eyXP0aKw+mwY0g0CWQHzqZvtXw== + dependencies: + underscore "1.9.1" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-core-subscriptions "1.3.1" + web3-eth-abi "1.3.1" + web3-eth-accounts "1.3.1" + web3-eth-contract "1.3.1" + web3-eth-ens "1.3.1" + web3-eth-iban "1.3.1" + web3-eth-personal "1.3.1" + web3-net "1.3.1" + web3-utils "1.3.1" + web3-eth@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.5.3.tgz#d7d1ac7198f816ab8a2088c01e0bf1eda45862fe" @@ -9597,6 +9822,15 @@ web3-net@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" +web3-net@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.1.tgz#79374b1df37429b0839b83b0abc4440ac6181568" + integrity sha512-vuMMWMk+NWHlrNfszGp3qRjH/64eFLiNIwUi0kO8JXQ896SP3Ma0su5sBfSPxNCig047E9GQimrL9wvYAJSO5A== + dependencies: + web3-core "1.3.1" + web3-core-method "1.3.1" + web3-utils "1.3.1" + web3-net@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.5.3.tgz#545fee49b8e213b0c55cbe74ffd0295766057463" @@ -9649,6 +9883,14 @@ web3-providers-http@1.2.11: web3-core-helpers "1.2.11" xhr2-cookies "1.1.0" +web3-providers-http@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.1.tgz#becbea61706b2fa52e15aca6fe519ee108a8fab9" + integrity sha512-DOujG6Ts7/hAMj0PW5p9/1vwxAIr+1CJ6ZWHshtfOq1v1KnMphVTGOrjcTTUvPT33/DA/so2pgGoPMrgaEIIvQ== + dependencies: + web3-core-helpers "1.3.1" + xhr2-cookies "1.1.0" + web3-providers-http@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.5.3.tgz#74f170fc3d79eb7941d9fbc34e2a067d61ced0b2" @@ -9674,6 +9916,15 @@ web3-providers-ipc@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" +web3-providers-ipc@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.1.tgz#3cb2572fc5286ab2f3117e0a2dce917816c3dedb" + integrity sha512-BNPscLbvwo+u/tYJrLvPnl/g/SQVSnqP/TjEsB033n4IXqTC4iZ9Of8EDmI0U6ds/9nwNqOBx3KsxbinL46UZA== + dependencies: + oboe "2.1.5" + underscore "1.9.1" + web3-core-helpers "1.3.1" + web3-providers-ipc@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.5.3.tgz#4bd7f5e445c2f3c2595fce0929c72bb879320a3f" @@ -9700,6 +9951,16 @@ web3-providers-ws@1.2.11: web3-core-helpers "1.2.11" websocket "^1.0.31" +web3-providers-ws@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.1.tgz#a70140811d138a1a5cf3f0c39d11887c8e341c83" + integrity sha512-DAbVbiizv0Hr/bLKjyyKMHc/66ccVkudan3eRsf+R/PXWCqfXb7q6Lwodj4llvC047pEuLKR521ZKr5wbfk1KQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.1" + websocket "^1.0.32" + web3-providers-ws@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.5.3.tgz#eec6cfb32bb928a4106de506f13a49070a21eabf" @@ -9728,6 +9989,16 @@ web3-shh@1.2.11: web3-core-subscriptions "1.2.11" web3-net "1.2.11" +web3-shh@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.1.tgz#42294d684358c22aa48616cb9a3eb2e9c1e6362f" + integrity sha512-57FTQvOW1Zm3wqfZpIEqL4apEQIR5JAxjqA4RM4eL0jbdr+Zj5Y4J93xisaEVl6/jMtZNlsqYKTVswx8mHu1xw== + dependencies: + web3-core "1.3.1" + web3-core-method "1.3.1" + web3-core-subscriptions "1.3.1" + web3-net "1.3.1" + web3-shh@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.5.3.tgz#3c04aa4cda9ba0b746d7225262401160f8e38b13" @@ -9762,6 +10033,20 @@ web3-utils@1.2.11: underscore "1.9.1" utf8 "3.0.0" +web3-utils@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.1.tgz#9aa880dd8c9463fe5c099107889f86a085370c2e" + integrity sha512-9gPwFm8SXtIJuzdrZ37PRlalu40fufXxo+H2PiCwaO6RpKGAvlUlWU0qQbyToFNXg7W2H8djEgoAVac8NLMCKQ== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + 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-utils@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.5.3.tgz#e914c9320cd663b2a09a5cb920ede574043eb437" @@ -9801,6 +10086,19 @@ web3@1.2.11: web3-shh "1.2.11" web3-utils "1.2.11" +web3@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.1.tgz#f780138c92ae3c42ea45e1a3c6ae8844e0aa5054" + integrity sha512-lDJwOLSRWHYwhPy4h5TNgBRJ/lED7lWXyVOXHCHcEC8ai3coBNdgEXWBu/GGYbZMsS89EoUOJ14j3Ufi4dUkog== + dependencies: + web3-bzz "1.3.1" + web3-core "1.3.1" + web3-eth "1.3.1" + web3-eth-personal "1.3.1" + web3-net "1.3.1" + web3-shh "1.3.1" + web3-utils "1.3.1" + web3@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3/-/web3-1.5.3.tgz#11882679453c645bf33620fbc255a243343075aa"