diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a3842bc --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,33 @@ +name: build + +on: + push: + branches: ['*'] + tags: ['v[0-9]+.[0-9]+.[0-9]+'] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - run: yarn install + - run: yarn download + - run: cp .env.example .env + - run: npx ganache-cli > /dev/null & + - run: npm run migrate:dev + - run: yarn test + - run: node cli.js test + - run: yarn lint + - name: Telegram Failure Notification + uses: appleboy/telegram-action@0.0.7 + if: failure() + with: + message: ❗ Build failed for [${{ github.repository }}](https://github.com/${{ github.repository }}/actions) because of ${{ github.actor }} + format: markdown + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} diff --git a/contracts/ERC20Tornado.sol b/contracts/ERC20Tornado.sol index 0166e81..763f038 100644 --- a/contracts/ERC20Tornado.sol +++ b/contracts/ERC20Tornado.sol @@ -19,7 +19,7 @@ contract ERC20Tornado is Tornado { constructor( IVerifier _verifier, - Hasher _hasher, + IHasher _hasher, uint256 _denomination, uint32 _merkleTreeHeight, address _token diff --git a/contracts/ETHTornado.sol b/contracts/ETHTornado.sol index 215b359..5e6bb26 100644 --- a/contracts/ETHTornado.sol +++ b/contracts/ETHTornado.sol @@ -17,7 +17,7 @@ import "./Tornado.sol"; contract ETHTornado is Tornado { constructor( IVerifier _verifier, - Hasher _hasher, + IHasher _hasher, uint256 _denomination, uint32 _merkleTreeHeight ) public Tornado(_verifier, _hasher, _denomination, _merkleTreeHeight) {} diff --git a/contracts/MerkleTreeWithHistory.sol b/contracts/MerkleTreeWithHistory.sol index d6aa670..52a8b90 100644 --- a/contracts/MerkleTreeWithHistory.sol +++ b/contracts/MerkleTreeWithHistory.sol @@ -12,7 +12,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; -interface Hasher { +interface IHasher { function MiMCSponge(uint256 in_xL, uint256 in_xR) external pure returns (uint256 xL, uint256 xR); } @@ -30,9 +30,9 @@ contract MerkleTreeWithHistory { uint32 public nextIndex = 0; uint32 public constant ROOT_HISTORY_SIZE = 100; bytes32[ROOT_HISTORY_SIZE] public roots; - Hasher public immutable hasher; + IHasher public immutable hasher; - constructor(uint32 _treeLevels, Hasher _hasher) public { + constructor(uint32 _treeLevels, IHasher _hasher) public { require(_treeLevels > 0, "_treeLevels should be greater than zero"); require(_treeLevels < 32, "_treeLevels should be less than 32"); levels = _treeLevels; @@ -56,7 +56,7 @@ contract MerkleTreeWithHistory { @dev Hash 2 tree leaves, returns MiMC(_left, _right) */ function hashLeftRight( - Hasher _hasher, + IHasher _hasher, bytes32 _left, bytes32 _right ) public pure returns (bytes32) { diff --git a/contracts/Mocks/ERC20Mock.sol b/contracts/Mocks/ERC20Mock.sol index 091bcc4..d291a6e 100644 --- a/contracts/Mocks/ERC20Mock.sol +++ b/contracts/Mocks/ERC20Mock.sol @@ -3,4 +3,8 @@ pragma solidity ^0.6.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -contract ERC20Mock is ERC20("DAIMock", "DAIM") {} +contract ERC20Mock is ERC20("DAIMock", "DAIM") { + function mint(address account, uint256 amount) public { + _mint(account, amount); + } +} diff --git a/contracts/Mocks/MerkleTreeWithHistoryMock.sol b/contracts/Mocks/MerkleTreeWithHistoryMock.sol index 10e7a6d..b50d499 100644 --- a/contracts/Mocks/MerkleTreeWithHistoryMock.sol +++ b/contracts/Mocks/MerkleTreeWithHistoryMock.sol @@ -4,7 +4,7 @@ pragma solidity ^0.6.0; import "../MerkleTreeWithHistory.sol"; contract MerkleTreeWithHistoryMock is MerkleTreeWithHistory { - constructor(uint32 _treeLevels, Hasher _hasher) public MerkleTreeWithHistory(_treeLevels, _hasher) {} + constructor(uint32 _treeLevels, IHasher _hasher) public MerkleTreeWithHistory(_treeLevels, _hasher) {} function insert(bytes32 _leaf) public { _insert(_leaf); diff --git a/contracts/Tornado.sol b/contracts/Tornado.sol index 6bc9cf6..baed866 100644 --- a/contracts/Tornado.sol +++ b/contracts/Tornado.sol @@ -46,7 +46,7 @@ abstract contract Tornado is MerkleTreeWithHistory, ReentrancyGuard { */ constructor( IVerifier _verifier, - Hasher _hasher, + IHasher _hasher, uint256 _denomination, uint32 _merkleTreeHeight ) public MerkleTreeWithHistory(_merkleTreeHeight, _hasher) { diff --git a/migrations/4_deploy_eth_tornado.js b/migrations/4_deploy_eth_tornado.js index 6465f4a..cf00328 100644 --- a/migrations/4_deploy_eth_tornado.js +++ b/migrations/4_deploy_eth_tornado.js @@ -2,21 +2,20 @@ require('dotenv').config({ path: '../.env' }) const ETHTornado = artifacts.require('ETHTornado') const Verifier = artifacts.require('Verifier') -const hasherContract = artifacts.require('Hasher') +const Hasher = artifacts.require('Hasher') module.exports = function (deployer, network, accounts) { return deployer.then(async () => { const { MERKLE_TREE_HEIGHT, ETH_AMOUNT } = process.env const verifier = await Verifier.deployed() - const hasherInstance = await hasherContract.deployed() - await ETHTornado.link(hasherContract, hasherInstance.address) + const hasher = await Hasher.deployed() const tornado = await deployer.deploy( ETHTornado, verifier.address, + hasher.address, ETH_AMOUNT, MERKLE_TREE_HEIGHT, - accounts[0], ) - console.log('ETHTornado address ', tornado.address) + console.log('ETHTornado address', tornado.address) }) } diff --git a/migrations/5_deploy_erc20_tornado.js b/migrations/5_deploy_erc20_tornado.js index 5ba389b..cee9b84 100644 --- a/migrations/5_deploy_erc20_tornado.js +++ b/migrations/5_deploy_erc20_tornado.js @@ -2,15 +2,14 @@ require('dotenv').config({ path: '../.env' }) const ERC20Tornado = artifacts.require('ERC20Tornado') const Verifier = artifacts.require('Verifier') -const hasherContract = artifacts.require('Hasher') +const Hasher = artifacts.require('Hasher') const ERC20Mock = artifacts.require('ERC20Mock') module.exports = function (deployer, network, accounts) { return deployer.then(async () => { const { MERKLE_TREE_HEIGHT, ERC20_TOKEN, TOKEN_AMOUNT } = process.env const verifier = await Verifier.deployed() - const hasherInstance = await hasherContract.deployed() - await ERC20Tornado.link(hasherContract, hasherInstance.address) + const hasher = await Hasher.deployed() let token = ERC20_TOKEN if (token === '') { const tokenInstance = await deployer.deploy(ERC20Mock) @@ -19,11 +18,11 @@ module.exports = function (deployer, network, accounts) { const tornado = await deployer.deploy( ERC20Tornado, verifier.address, + hasher.address, TOKEN_AMOUNT, MERKLE_TREE_HEIGHT, - accounts[0], token, ) - console.log('ERC20Tornado address ', tornado.address) + console.log('ERC20Tornado address', tornado.address) }) } diff --git a/package.json b/package.json index 0a4d07c..4fffd2a 100644 --- a/package.json +++ b/package.json @@ -52,10 +52,10 @@ "prettier-plugin-solidity": "^1.0.0-beta.3", "snarkjs": "git+https://github.com/tornadocash/snarkjs.git#869181cfaf7526fe8972073d31655493a04326d5", "solhint-plugin-prettier": "^0.0.5", - "truffle": "^5.0.44", + "truffle": "^5.1.65", "truffle-flattener": "^1.4.2", - "web3": "^1.2.2", - "web3-utils": "^1.2.2", - "websnark": "git+https://github.com/tornadocash/websnark.git#2041cfa5fa0b71cd5cca9022a4eeea4afe28c9f7" + "web3": "^1.3.4", + "web3-utils": "^1.3.4", + "websnark": "git+https://github.com/tornadocash/websnark.git#4c0af6a8b65aabea3c09f377f63c44e7a58afa6d" } } diff --git a/test/ETHTornado.test.js b/test/ETHTornado.test.js index c5a8bac..70774d9 100644 --- a/test/ETHTornado.test.js +++ b/test/ETHTornado.test.js @@ -299,7 +299,7 @@ contract('ETHTornado', (accounts) => { toFixedHex(input.refund), ] const error = await tornado.withdraw(proof, ...args, { from: relayer }).should.be.rejected - error.reason.should.be.equal('verifier-gte-snark-scalar-field') + error.reason.should.be.equal('verifier-input-gte-snark-scalar-field') }) it('fee should be less or equal transfer value', async () => { @@ -483,50 +483,6 @@ contract('ETHTornado', (accounts) => { }) }) - describe('#changeOperator', () => { - it('should work', async () => { - let operator = await tornado.operator() - operator.should.be.equal(sender) - - const newOperator = accounts[7] - await tornado.changeOperator(newOperator).should.be.fulfilled - - operator = await tornado.operator() - operator.should.be.equal(newOperator) - }) - - it('cannot change from different address', async () => { - let operator = await tornado.operator() - operator.should.be.equal(sender) - - const newOperator = accounts[7] - const error = await tornado.changeOperator(newOperator, { from: accounts[7] }).should.be.rejected - error.reason.should.be.equal('Only operator can call this function.') - }) - }) - - describe('#updateVerifier', () => { - it('should work', async () => { - let operator = await tornado.operator() - operator.should.be.equal(sender) - - const newVerifier = accounts[7] - await tornado.updateVerifier(newVerifier).should.be.fulfilled - - const verifier = await tornado.verifier() - verifier.should.be.equal(newVerifier) - }) - - it('cannot change from different address', async () => { - let operator = await tornado.operator() - operator.should.be.equal(sender) - - const newVerifier = accounts[7] - const error = await tornado.updateVerifier(newVerifier, { from: accounts[7] }).should.be.rejected - error.reason.should.be.equal('Only operator can call this function.') - }) - }) - describe('#isSpent', () => { it('should work', async () => { const deposit1 = generateDeposit() diff --git a/test/MerkleTreeWithHistory.test.js b/test/MerkleTreeWithHistory.test.js index 5ac6ef8..067b0ec 100644 --- a/test/MerkleTreeWithHistory.test.js +++ b/test/MerkleTreeWithHistory.test.js @@ -45,8 +45,7 @@ contract('MerkleTreeWithHistory', (accounts) => { before(async () => { tree = new MerkleTree(levels, null, prefix) hasherInstance = await hasherContract.deployed() - await MerkleTreeWithHistory.link(hasherContract, hasherInstance.address) - merkleTreeWithHistory = await MerkleTreeWithHistory.new(levels) + merkleTreeWithHistory = await MerkleTreeWithHistory.new(levels, hasherInstance.address) snapshotId = await takeSnapshot() }) @@ -153,7 +152,7 @@ contract('MerkleTreeWithHistory', (accounts) => { it('should reject if tree is full', async () => { const levels = 6 - const merkleTreeWithHistory = await MerkleTreeWithHistory.new(levels) + const merkleTreeWithHistory = await MerkleTreeWithHistory.new(levels, hasherInstance.address) for (let i = 0; i < 2 ** levels; i++) { await merkleTreeWithHistory.insert(toFixedHex(i + 42)).should.be.fulfilled diff --git a/yarn.lock b/yarn.lock index b69d825..2961d9e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5862,10 +5862,10 @@ truffle-flattener@^1.4.2: mkdirp "^1.0.4" tsort "0.0.1" -truffle@^5.0.44: - version "5.1.62" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.62.tgz#819b8280615345bf42bbba7967f2dc9d39347869" - integrity sha512-TWgZ3xSSb8us4ZkHEHRghJWivfewjEy7yd8nARd7EHvoOi5lcUmKnbsunP+G7u/AO47gRoEqwFdPuGPdXrBM1A== +truffle@^5.1.65: + version "5.1.65" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.65.tgz#2f31dc9481c74d04c4d72cfb3085f6ee9752d0d2" + integrity sha512-MT7kTrMP1tleqwEzGWj/4wKU3pIOR63cVGsrP0MgEDrXOrpM5XNHnCAp9YBrYsDXqiVPZiEK38385qoJdTk6yA== dependencies: app-module-path "^2.2.0" mocha "8.1.2" @@ -6144,6 +6144,16 @@ web3-bzz@1.3.1: swarm-js "^0.1.40" underscore "1.9.1" +web3-bzz@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.4.tgz#9be529353c4063bc68395370cb5d8e414c6b6c87" + integrity sha512-DBRVQB8FAgoAtZCpp2GAGPCJjgBgsuwOKEasjV044AAZiONpXcKHbkO6G1SgItIixnrJsRJpoGLGw52Byr6FKw== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + web3-core-helpers@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.9.tgz#6381077c3e01c127018cb9e9e3d1422697123315" @@ -6162,6 +6172,15 @@ web3-core-helpers@1.3.1: web3-eth-iban "1.3.1" web3-utils "1.3.1" +web3-core-helpers@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.4.tgz#b8549740bf24d5c71688d89c3cdd802d8d36b4e4" + integrity sha512-n7BqDalcTa1stncHMmrnFtyTgDhX5Fy+avNaHCf6qcOP2lwTQC8+mdHVBONWRJ6Yddvln+c8oY/TAaB6PzWK0A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.3.4" + web3-utils "1.3.4" + web3-core-method@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.9.tgz#3fb538751029bea570e4f86731e2fa5e4945e462" @@ -6186,6 +6205,18 @@ web3-core-method@1.3.1: web3-core-subscriptions "1.3.1" web3-utils "1.3.1" +web3-core-method@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.4.tgz#6c2812d96dd6c811b9e6c8a5d25050d2c22b9527" + integrity sha512-JxmQrujsAWYRRN77P/RY7XuZDCzxSiiQJrgX/60Lfyf7FF1Y0le4L/UMCi7vUJnuYkbU1Kfl9E0udnqwyPqlvQ== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.3.4" + web3-core-promievent "1.3.4" + web3-core-subscriptions "1.3.4" + web3-utils "1.3.4" + web3-core-promievent@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.9.tgz#bb1c56aa6fac2f4b3c598510f06554d25c11c553" @@ -6200,6 +6231,13 @@ web3-core-promievent@1.3.1: dependencies: eventemitter3 "4.0.4" +web3-core-promievent@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.4.tgz#d166239012d91496cdcbe91d5d54071ea818bc73" + integrity sha512-V61dZIeBwogg6hhZZUt0qL9hTp1WDhnsdjP++9fhTDr4vy/Gz8T5vibqT2LLg6lQC8i+Py33yOpMeMNjztaUaw== + dependencies: + eventemitter3 "4.0.4" + web3-core-requestmanager@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.9.tgz#dd6d855256c4dd681434fe0867f8cd742fe10503" @@ -6223,6 +6261,18 @@ web3-core-requestmanager@1.3.1: web3-providers-ipc "1.3.1" web3-providers-ws "1.3.1" +web3-core-requestmanager@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.4.tgz#e105ced735c2b5fcedd5771e0ecf9879ae9c373f" + integrity sha512-xriouCrhVnVDYQ04TZXdEREZm0OOJzkSEsoN5bu4JYsA6e/HzROeU+RjDpMUxFMzN4wxmFZ+HWbpPndS3QwMag== + dependencies: + underscore "1.9.1" + util "^0.12.0" + web3-core-helpers "1.3.4" + web3-providers-http "1.3.4" + web3-providers-ipc "1.3.4" + web3-providers-ws "1.3.4" + web3-core-subscriptions@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.9.tgz#335fd7d15dfce5d78b4b7bef05ce4b3d7237b0e4" @@ -6241,6 +6291,15 @@ web3-core-subscriptions@1.3.1: underscore "1.9.1" web3-core-helpers "1.3.1" +web3-core-subscriptions@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.4.tgz#7b00e92bde21f792620cd02e6e508fcf4f4c31d3" + integrity sha512-drVHVDxh54hv7xmjIm44g4IXjfGj022fGw4/meB5R2D8UATFI40F73CdiBlyqk3DysP9njDOLTJFSQvEkLFUOg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.4" + web3-core@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.9.tgz#2cba57aa259b6409db532d21bdf57db8d504fd3e" @@ -6267,6 +6326,19 @@ web3-core@1.3.1: web3-core-requestmanager "1.3.1" web3-utils "1.3.1" +web3-core@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.4.tgz#2cc7ba7f35cc167f7a0a46fd5855f86e51d34ce8" + integrity sha512-7OJu46RpCEfTerl+gPvHXANR2RkLqAfW7l2DAvQ7wN0pnCzl9nEfdgW6tMhr31k3TR2fWucwKzCyyxMGzMHeSA== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-core-requestmanager "1.3.4" + web3-utils "1.3.4" + web3-eth-abi@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.9.tgz#14bedd7e4be04fcca35b2ac84af1400574cd8280" @@ -6285,6 +6357,15 @@ web3-eth-abi@1.3.1: underscore "1.9.1" web3-utils "1.3.1" +web3-eth-abi@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.4.tgz#10f5d8b6080dbb6cbaa1bcef7e0c70573da6566f" + integrity sha512-PVSLXJ2dzdXsC+R24llIIEOS6S1KhG5qwNznJjJvXZFe3sqgdSe47eNvwUamZtCBjcrdR/HQr+L/FTxqJSf80Q== + dependencies: + "@ethersproject/abi" "5.0.7" + underscore "1.9.1" + web3-utils "1.3.4" + web3-eth-accounts@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.9.tgz#7ec422df90fecb5243603ea49dc28726db7bdab6" @@ -6319,6 +6400,23 @@ web3-eth-accounts@1.3.1: web3-core-method "1.3.1" web3-utils "1.3.1" +web3-eth-accounts@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.4.tgz#cf513d78531c13ce079a5e7862820570350e79a5" + integrity sha512-gz9ReSmQEjqbYAjpmAx+UZF4CVMbyS4pfjSYWGAnNNI+Xz0f0u0kCIYXQ1UEaE+YeLcYiE+ZlZdgg6YoatO5nA== + 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.4" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-utils "1.3.4" + web3-eth-contract@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.9.tgz#713d9c6d502d8c8f22b696b7ffd8e254444e6bfd" @@ -6349,6 +6447,21 @@ web3-eth-contract@1.3.1: web3-eth-abi "1.3.1" web3-utils "1.3.1" +web3-eth-contract@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.4.tgz#1ea2dd71be0c4a9cf4772d4f75dbb2fa99751472" + integrity sha512-Fvy8ZxUksQY2ePt+XynFfOiSqxgQtMn4m2NJs6VXRl2Inl17qyRi/nIJJVKTcENLocm+GmZ/mxq2eOE5u02nPg== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.3.4" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-core-promievent "1.3.4" + web3-core-subscriptions "1.3.4" + web3-eth-abi "1.3.4" + web3-utils "1.3.4" + web3-eth-ens@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.9.tgz#577b9358c036337833fb2bdc59c11be7f6f731b6" @@ -6379,6 +6492,21 @@ web3-eth-ens@1.3.1: web3-eth-contract "1.3.1" web3-utils "1.3.1" +web3-eth-ens@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.4.tgz#a7e4bb18481fb0e2ce5bfb3b3da2fbb0ad78cefe" + integrity sha512-b0580tQyQwpV2wyacwQiBEfQmjCUln5iPhge3IBIMXaI43BUNtH3lsCL9ERFQeOdweB4o+6rYyNYr6xbRcSytg== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.3.4" + web3-core-helpers "1.3.4" + web3-core-promievent "1.3.4" + web3-eth-abi "1.3.4" + web3-eth-contract "1.3.4" + web3-utils "1.3.4" + web3-eth-iban@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.9.tgz#4ebf3d8783f34d04c4740dc18938556466399f7a" @@ -6395,6 +6523,14 @@ web3-eth-iban@1.3.1: bn.js "^4.11.9" web3-utils "1.3.1" +web3-eth-iban@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.4.tgz#5eb7a564e0dcf68730d68f48f95dd207cd173d81" + integrity sha512-Y7/hLjVvIN/OhaAyZ8L/hxbTqVX6AFTl2RwUXR6EEU9oaLydPcMjAx/Fr8mghUvQS3QJSr+UGubP3W4SkyNiYw== + dependencies: + bn.js "^4.11.9" + web3-utils "1.3.4" + web3-eth-personal@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.9.tgz#9b95eb159b950b83cd8ae15873e1d57711b7a368" @@ -6419,6 +6555,18 @@ web3-eth-personal@1.3.1: web3-net "1.3.1" web3-utils "1.3.1" +web3-eth-personal@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.4.tgz#0d0e0abea3447283d7ee5658ed312990c9bf48dd" + integrity sha512-JiTbaktYVk1j+S2EDooXAhw5j/VsdvZfKRmHtXUe/HizPM9ETXmj1+ne4RT6m+950jQ7DJwUF3XU1FKYNtEDwQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.3.4" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-net "1.3.4" + web3-utils "1.3.4" + web3-eth@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.9.tgz#e40e7b88baffc9b487193211c8b424dc944977b3" @@ -6457,6 +6605,25 @@ web3-eth@1.3.1: web3-net "1.3.1" web3-utils "1.3.1" +web3-eth@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.4.tgz#7c4607685e66a1c43e3e315e526c959f24f96907" + integrity sha512-8OIVMLbvmx+LB5RZ4tDhXuFGWSdNMrCZ4HM0+PywQ08uEcmAcqTMFAn4vdPii+J8gCatZR501r1KdzX3SDLoPw== + dependencies: + underscore "1.9.1" + web3-core "1.3.4" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-core-subscriptions "1.3.4" + web3-eth-abi "1.3.4" + web3-eth-accounts "1.3.4" + web3-eth-contract "1.3.4" + web3-eth-ens "1.3.4" + web3-eth-iban "1.3.4" + web3-eth-personal "1.3.4" + web3-net "1.3.4" + web3-utils "1.3.4" + web3-net@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.9.tgz#51d248ed1bc5c37713c4ac40c0073d9beacd87d3" @@ -6475,6 +6642,15 @@ web3-net@1.3.1: web3-core-method "1.3.1" web3-utils "1.3.1" +web3-net@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.4.tgz#d76158bf0b4a7b3b14352b4f95472db9efc57a2a" + integrity sha512-wVyqgVC3Zt/0uGnBiR3GpnsS8lvOFTDgWZMxAk9C6Guh8aJD9MUc7pbsw5rHrPUVe6S6RUfFJvh/Xq8oMIQgSw== + dependencies: + web3-core "1.3.4" + web3-core-method "1.3.4" + web3-utils "1.3.4" + web3-providers-http@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.9.tgz#e698aa5377e2019c24c5a1e6efa0f51018728934" @@ -6491,6 +6667,14 @@ web3-providers-http@1.3.1: web3-core-helpers "1.3.1" xhr2-cookies "1.1.0" +web3-providers-http@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.4.tgz#89389e18e27148faa2fef58842740ffadbdda8cc" + integrity sha512-aIg/xHXvxpqpFU70sqfp+JC3sGkLfAimRKTUhG4oJZ7U+tTcYTHoxBJj+4A3Id4JAoKiiv0k1/qeyQ8f3rMC3g== + dependencies: + web3-core-helpers "1.3.4" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.9.tgz#6159eacfcd7ac31edc470d93ef10814fe874763b" @@ -6509,6 +6693,15 @@ web3-providers-ipc@1.3.1: underscore "1.9.1" web3-core-helpers "1.3.1" +web3-providers-ipc@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.4.tgz#b963518989b1b7847063cdd461ff73b83855834a" + integrity sha512-E0CvXEJElr/TIlG1YfJeO3Le5NI/4JZM+1SsEdiPIfBUAJN18oOoum138EBGKv5+YaLKZUtUuJSXWjIIOR/0Ig== + dependencies: + oboe "2.1.5" + underscore "1.9.1" + web3-core-helpers "1.3.4" + web3-providers-ws@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.9.tgz#22c2006655ec44b4ad2b41acae62741a6ae7a88c" @@ -6529,6 +6722,16 @@ web3-providers-ws@1.3.1: web3-core-helpers "1.3.1" websocket "^1.0.32" +web3-providers-ws@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.4.tgz#b94c2e0ec51a0c472abdec53a472b5bf8176bec1" + integrity sha512-WBd9hk2fUAdrbA3kUyUk94ZeILtE6txLeoVVvIKAw2bPegx+RjkLyxC1Du0oceKgQ/qQWod8CCzl1E/GgTP+MQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.4" + websocket "^1.0.32" + web3-shh@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.9.tgz#c4ba70d6142cfd61341a50752d8cace9a0370911" @@ -6549,6 +6752,16 @@ web3-shh@1.3.1: web3-core-subscriptions "1.3.1" web3-net "1.3.1" +web3-shh@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.4.tgz#b7d29e118f26416c1a74575e585be379cc01a77a" + integrity sha512-zoeww5mxLh3xKcqbX85irQbtFe5pc5XwrgjvmdMkhkOdZzPASlWOgqzUFtaPykpLwC3yavVx4jG5RqifweXLUA== + dependencies: + web3-core "1.3.4" + web3-core-method "1.3.4" + web3-core-subscriptions "1.3.4" + web3-net "1.3.4" + web3-utils@1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.9.tgz#abe11735221627da943971ef1a630868fb9c61f3" @@ -6563,7 +6776,7 @@ web3-utils@1.2.9: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.3.1, web3-utils@^1.2.2: +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== @@ -6577,7 +6790,21 @@ web3-utils@1.3.1, web3-utils@^1.2.2: underscore "1.9.1" utf8 "3.0.0" -web3@*, web3@^1.0.0-beta.34, web3@^1.0.0-beta.55, web3@^1.2.2: +web3-utils@1.3.4, web3-utils@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.4.tgz#9b1aa30d7549f860b573e7bb7e690999e7192198" + integrity sha512-/vC2v0MaZNpWooJfpRw63u0Y3ag2gNjAWiLtMSL6QQLmCqCy4SQIndMt/vRyx0uMoeGt1YTwSXEcHjUzOhLg0A== + 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@*, web3@^1.0.0-beta.34, web3@^1.0.0-beta.55: version "1.3.1" resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.1.tgz#f780138c92ae3c42ea45e1a3c6ae8844e0aa5054" integrity sha512-lDJwOLSRWHYwhPy4h5TNgBRJ/lED7lWXyVOXHCHcEC8ai3coBNdgEXWBu/GGYbZMsS89EoUOJ14j3Ufi4dUkog== @@ -6603,9 +6830,22 @@ web3@1.2.9: web3-shh "1.2.9" web3-utils "1.2.9" -"websnark@git+https://github.com/tornadocash/websnark.git#2041cfa5fa0b71cd5cca9022a4eeea4afe28c9f7": +web3@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.4.tgz#31e014873360aa5840eb17f9f171190c967cffb7" + integrity sha512-D6cMb2EtTMLHgdGbkTPGl/Qi7DAfczR+Lp7iFX3bcu/bsD9V8fZW69hA8v5cRPNGzXUwVQebk3bS17WKR4cD2w== + dependencies: + web3-bzz "1.3.4" + web3-core "1.3.4" + web3-eth "1.3.4" + web3-eth-personal "1.3.4" + web3-net "1.3.4" + web3-shh "1.3.4" + web3-utils "1.3.4" + +"websnark@git+https://github.com/tornadocash/websnark.git#4c0af6a8b65aabea3c09f377f63c44e7a58afa6d": version "0.0.4" - resolved "git+https://github.com/tornadocash/websnark.git#2041cfa5fa0b71cd5cca9022a4eeea4afe28c9f7" + resolved "git+https://github.com/tornadocash/websnark.git#4c0af6a8b65aabea3c09f377f63c44e7a58afa6d" dependencies: big-integer "^1.6.42"