diff --git a/README.md b/README.md index f1235b3..9106db2 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ For detailed explanation on how things work, checkout [Nuxt.js docs](https://nux ## Audit -[TornadoCash_Classic_dApp_audit_Decurity.pdf](https://ipfs.io/ipfs/QmXzmwfsb4GwzmPD7W9VDNHh7ttyYKgXCY74973QMZqBDA) +[TornadoCash_Classic_dApp_audit_Decurity.pdf](https://tornado.cash/audits/TornadoCash_Classic_dApp_audit_Decurity.pdf) ## Update cached files diff --git a/assets/styles/components/_icon.scss b/assets/styles/components/_icon.scss index 0b1fd29..fc81535 100644 --- a/assets/styles/components/_icon.scss +++ b/assets/styles/components/_icon.scss @@ -293,10 +293,6 @@ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z'%3E%3C/path%3E%3C/svg%3E"); } - &-git { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='92pt' height='92pt' viewBox='0 0 92 92'%3E%3Cpath style='stroke:none;fill-rule:nonzero;fill:%6b6b6b;fill-opacity:1' d='M90.156 41.965 50.036 1.848a5.918 5.918 0 0 0-8.372 0l-8.328 8.332 10.566 10.566a7.03 7.03 0 0 1 7.23 1.684 7.034 7.034 0 0 1 1.669 7.277l10.187 10.184a7.028 7.028 0 0 1 7.278 1.672 7.04 7.04 0 0 1 0 9.957 7.05 7.05 0 0 1-9.965 0 7.044 7.044 0 0 1-1.528-7.66l-9.5-9.497V59.36a7.04 7.04 0 0 1 1.86 11.29 7.04 7.04 0 0 1-9.957 0 7.04 7.04 0 0 1 0-9.958 7.06 7.06 0 0 1 2.304-1.539V33.926a7.049 7.049 0 0 1-3.82-9.234L29.242 14.272 1.73 41.777a5.925 5.925 0 0 0 0 8.371L41.852 90.27a5.925 5.925 0 0 0 8.37 0l39.934-39.934a5.925 5.925 0 0 0 0-8.371'/%3E%3C/svg%3E"); - } - &-discourse { mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z'%3E%3C/path%3E%3C/svg%3E"); } diff --git a/components/Footer.vue b/components/Footer.vue index 6e93820..595c657 100644 --- a/components/Footer.vue +++ b/components/Footer.vue @@ -37,15 +37,47 @@ + + + +
@@ -24,4 +25,4 @@ export default { } } } - + \ No newline at end of file diff --git a/components/Statistics.vue b/components/Statistics.vue index c12eb3f..15b5165 100644 --- a/components/Statistics.vue +++ b/components/Statistics.vue @@ -93,7 +93,9 @@ export default { } }, mounted() { - this.updateEvents() + if (!this.timer) { + this.updateEvents() + } }, beforeDestroy() { clearTimeout(this.timer) @@ -101,6 +103,10 @@ export default { methods: { updateEvents() { this.$store.dispatch('application/updateSelectEvents') + + this.timer = setTimeout(() => { + this.updateEvents() + }, 60 * 1000) } } } diff --git a/components/withdraw/Withdraw.vue b/components/withdraw/Withdraw.vue index 350022a..7f08182 100644 --- a/components/withdraw/Withdraw.vue +++ b/components/withdraw/Withdraw.vue @@ -51,7 +51,8 @@ data-test="enter_note_field" >
-

{{ hasErrorNote.msg }}

+ +

@@ -540,4 +541,4 @@ export default { } } } - + \ No newline at end of file diff --git a/constants/variables.js b/constants/variables.js index d3977bc..35ab9b1 100644 --- a/constants/variables.js +++ b/constants/variables.js @@ -60,12 +60,6 @@ export const cachedEventsLength = { } } -export const httpConfig = { - // buffer for tor connections - timeout: 30000, - keepAlive: true -} - export const PROVIDERS = { walletConnect: { name: 'WalletConnect', diff --git a/lib/Permit.js b/lib/Permit.js index 4859de6..ce5d3b1 100644 --- a/lib/Permit.js +++ b/lib/Permit.js @@ -1,6 +1,6 @@ -import { concatSig } from 'eth-sig-util' +const { EIP712Signer } = require('@ticket721/e712') -const PermitType = [ +const Permit = [ { name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }, { name: 'value', type: 'uint256' }, @@ -8,53 +8,36 @@ const PermitType = [ { name: 'deadline', type: 'uint256' } ] -const EIP712DomainType = [ - { name: 'name', type: 'string' }, - { name: 'version', type: 'string' }, - { name: 'chainId', type: 'uint256' }, - { name: 'verifyingContract', type: 'address' } -] - -export default class PermitSigner { +class PermitSigner extends EIP712Signer { constructor(_domain, _permitArgs) { + super(_domain, ['Permit', Permit]) this.permitArgs = _permitArgs - this.domain = _domain } + // Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline) setPermitInfo(_permitArgs) { this.permitArgs = _permitArgs } - getReqPayload() { + getPayload() { + return this.generatePayload(this.permitArgs, 'Permit') + } + + async getSignature(privateKey) { + const payload = this.getPayload() + const { hex, v, r, s } = await this.sign(privateKey, payload) return { - domain: this.domain, - primaryType: 'Permit', - types: { - Permit: PermitType, - EIP712Domain: EIP712DomainType - }, - message: this.permitArgs + hex, + v, + r: '0x' + r, + s: '0x' + s } } - getSignature(response) { - response = response.substring(2) - - const r = '0x' + response.substring(0, 64) - const s = '0x' + response.substring(64, 128) - - let v = parseInt(response.substring(128, 130), 16) - - // fix ledger sign - if (v === 0 || v === 1) { - v = v + 27 - } - - return { - hex: concatSig(v, r, s), - v, - r, - s - } + getSignerAddress(permitArgs, signature) { + const originalPayload = this.generatePayload(permitArgs, 'Permit') + return this.verify(originalPayload, signature) } } + +module.exports = { PermitSigner } diff --git a/networkConfig.js b/networkConfig.js index 31973d8..96601f7 100644 --- a/networkConfig.js +++ b/networkConfig.js @@ -278,8 +278,8 @@ export default { echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4', rpcUrls: { Arbitrum: { - name: '1RPC', - url: 'https://1rpc.io/arb' + name: 'Arbitrum Public RPC', + url: 'https://arb1.arbitrum.io/rpc' } }, tokens: { diff --git a/package.json b/package.json index 5aaf5e6..b9a6e0b 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,10 @@ }, "dependencies": { "@apollo/client": "^3.3.20", + "@ensdomains/ensjs": "^2.1.0", "@metamask/onboarding": "^1.0.0", "@nuxtjs/moment": "^1.6.0", + "@ticket721/e712": "^0.4.1", "@walletconnect/web3-provider": "1.7.8", "ajv": "^6.10.2", "arraybuffer-loader": "^1.0.8", @@ -41,6 +43,7 @@ "graphql": "^15.5.1", "idb": "^6.0.0", "jspdf": "^1.5.3", + "jszip": "^3.5.0", "lodash": "^4.17.21", "node-fetch": "^2.6.1", "numbro": "^2.3.2", diff --git a/pages/index.vue b/pages/index.vue index ab8583b..8bd74d7 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -83,6 +83,31 @@ + + + + + + +
@@ -115,7 +140,8 @@ export default { data() { return { activeTab: 0, - isActive: false + isActive: false, + isEthLink: window.location.host === 'tornadocash.eth.link' } }, computed: { @@ -158,19 +184,8 @@ export default { } } } else { - const userSelection = this.selectedInstance - const stateSelection = this.selectedStatistic - - if ( - !stateSelection || - userSelection.amount !== stateSelection.amount || - userSelection.currency !== stateSelection.currency - ) { - this.$store.dispatch('application/setAndUpdateStatistic', { - currency: userSelection.currency, - amount: userSelection.amount - }) - } + const { currency, amount } = this.selectedInstance + this.$store.dispatch('application/setAndUpdateStatistic', { currency, amount }) } } } diff --git a/plugins/detectIPFS.js b/plugins/detectIPFS.js index ae1c466..d8a9b0e 100644 --- a/plugins/detectIPFS.js +++ b/plugins/detectIPFS.js @@ -3,28 +3,13 @@ export default ({ store, isHMR, app }, inject) => { inject('isLoadedFromIPFS', main) } function main() { - const whiteListedDomains = [ - 'tornadocash.3th.li', - 'tornadocash.3th.ws', - 'tornadocash.eth.link', - 'tornadocash.eth.limo', - 'tornadocashcommunity.3th.li', - 'tornadocashcommunity.3th.ws', - 'tornadocashcommunity.eth.link', - 'tornadocashcommunity.eth.limo' - ] + const whiteListedDomains = ['localhost:3000', 'tornadocash.eth.link', 'tornadocash.eth.limo'] - const IPFS_GATEWAY_REGEXP = /.ipfs./ - const IPFS_LOCAL_REGEXP = /.ipfs.localhost:/ - const IPFS_SOP_GATEWAY_REGEXP = /\/ipfs\// + const NETLIFY_REGEXP = /deploy-preview-(\d+)--tornadocash\.netlify\.app/ - if (IPFS_LOCAL_REGEXP.test(window.location.host)) { + if (NETLIFY_REGEXP.test(window.location.host)) { return false - } else if ( - IPFS_GATEWAY_REGEXP.test(window.location.host) || - IPFS_SOP_GATEWAY_REGEXP.test(window.location.host) || - whiteListedDomains.includes(window.location.host) - ) { + } else if (!whiteListedDomains.includes(window.location.host)) { console.warn('The page has been loaded from ipfs.io. LocalStorage is disabled') return true } diff --git a/plugins/idb.js b/plugins/idb.js index 38e6292..15a857f 100644 --- a/plugins/idb.js +++ b/plugins/idb.js @@ -277,7 +277,7 @@ export default async (ctx, inject) => { }, { name: `withdrawals_${token}_${amount}`, - keyPath: 'blockNumber', + keyPath: 'transactionHash', indexes: WITHDRAWAL_INDEXES }, { diff --git a/scripts/helpers/download.js b/scripts/helpers/download.js index 9639de7..e19b6db 100644 --- a/scripts/helpers/download.js +++ b/scripts/helpers/download.js @@ -1,14 +1,24 @@ import fs from 'fs' -import zlib from 'zlib' +import Jszip from 'jszip' import Web3 from 'web3' - import networkConfig from '../../networkConfig' +const jszip = new Jszip() + export async function download({ name, directory, contentType }) { - const path = `${directory}${name}.gz`.toLowerCase() + const path = `${directory}${name}.zip`.toLowerCase() const data = fs.readFileSync(path) - const content = zlib.inflateSync(data) + const zip = await jszip.loadAsync(data) + + const file = zip.file( + path + .replace(directory, '') + .slice(0, -4) + .toLowerCase() + ) + + const content = await file.async(contentType) return content } diff --git a/scripts/helpers/save.js b/scripts/helpers/save.js index 3124a38..f294ed5 100644 --- a/scripts/helpers/save.js +++ b/scripts/helpers/save.js @@ -1,19 +1,33 @@ import fs from 'fs' -import zlib from 'zlib' +import Jszip from 'jszip' + +const compressionConfig = { + type: "nodebuffer", + compression: "DEFLATE", + compressionOptions: { + level: 9 + } +} + +const fileConfig = { + binary: true, + compression: "DEFLATE" +} export async function save(filePath) { + const jszip = new Jszip() const directories = filePath.split('/') const fileName = directories[directories.length - 1] try { const data = fs.readFileSync(`${filePath}`) - const payload = await zlib.deflateSync(data, { - level: zlib.constants.Z_BEST_COMPRESSION, - strategy: zlib.constants.Z_FILTERED + await jszip.file(`${fileName}`, data, fileConfig) + await jszip.generateNodeStream({ + ...compressionConfig, + streamFiles: true }) - - fs.writeFileSync(`${filePath}.gz`, payload) + .pipe(fs.createWriteStream(`${filePath}.zip`)) return true } catch (err) { diff --git a/scripts/updateEvents.js b/scripts/updateEvents.js index 13cb3be..9eca0cd 100644 --- a/scripts/updateEvents.js +++ b/scripts/updateEvents.js @@ -9,7 +9,7 @@ import { loadCachedEvents, getPastEvents } from './helpers' const EVENTS_PATH = './static/events/' const EVENTS = ['Deposit', 'Withdrawal'] -const enabledChains = ['1', '56', '100', '137' ] +const enabledChains = ['1', '56', '5', '100', '137' ] async function main(type, netId) { const { tokens, nativeCurrency, deployedBlock } = networkConfig[`netId${netId}`] diff --git a/scripts/updateTree.js b/scripts/updateTree.js index 1100422..c61bcc2 100644 --- a/scripts/updateTree.js +++ b/scripts/updateTree.js @@ -45,7 +45,7 @@ function createTreeZip(netId) { treesFolder.forEach((fileName) => { fileName = `${TREES_PATH}${fileName}` - const isInstanceFile = !fileName.includes('.gz') && fileName.includes(baseFilename) + const isInstanceFile = !fileName.includes('.zip') && fileName.includes(baseFilename) if (isInstanceFile) { save(fileName) diff --git a/services/events.js b/services/events.js index 7d951f2..4c8ee12 100644 --- a/services/events.js +++ b/services/events.js @@ -4,8 +4,8 @@ import graph from '@/services/graph' import { download } from '@/store/snark' import networkConfig from '@/networkConfig' import InstanceABI from '@/abis/Instance.abi.json' -import { CONTRACT_INSTANCES, eventsType, httpConfig } from '@/constants' -import { sleep, flattenNArray, formatEvents, capitalizeFirstLetter } from '@/utils' +import { CONTRACT_INSTANCES, eventsType } from '@/constants' +import { sleep, formatEvents, capitalizeFirstLetter } from '@/utils' const supportedCaches = ['1', '56', '100', '137'] @@ -38,15 +38,6 @@ class EventService { return `${type}s_${this.currency}_${this.amount}` } - updateEventProgress(percentage, type) { - if (store) { - store.dispatch('loading/updateProgress', { - message: `Fetching past ${type} events`, - progress: Math.ceil(percentage * 100) - }) - } - } - async getEvents(type) { let cachedEvents = await this.getEventsFromDB(type) @@ -56,7 +47,6 @@ class EventService { return cachedEvents } - async updateEvents(type, cachedEvents) { const { deployedBlock } = networkConfig[`netId${this.netId}`] @@ -133,7 +123,7 @@ class EventService { const module = await download({ contentType: 'string', - name: `events/${instanceName}.json.gz` + name: `events/${instanceName}.json.zip` }) if (module) { @@ -163,6 +153,14 @@ class EventService { return undefined } + // IndexedDB scrambles assortment + savedEvents.sort((a, b) => { + if (a.leafIndex && b.leafIndex) { + return a.leafIndex - b.leafIndex + } + return a.blockNumber - b.blockNumber + }) + return { events: savedEvents, lastBlock: savedEvents[savedEvents.length - 1].blockNumber @@ -247,22 +245,7 @@ class EventService { } } - getPastEvents({ fromBlock, toBlock, type }) { - return new Promise((resolve, reject) => { - const repsonse = this.contract.getPastEvents(capitalizeFirstLetter(type), { - fromBlock, - toBlock - }) - - if (repsonse) { - resolve(repsonse) - } else { - reject(new Error()) - } - }) - } - - async getEventsPartFromRpc({ fromBlock, toBlock, type }, shouldRetry = false, i = 0) { + async getEventsPartFromRpc({ fromBlock, toBlock, type }) { try { const { currentBlockNumber } = await this.getBlocksDiff({ fromBlock }) @@ -273,27 +256,10 @@ class EventService { } } - let events = [] - - try { - events = await this.getPastEvents({ fromBlock, toBlock, type }) - } catch (e) { - if (shouldRetry) { - i = i + 1 - // maximum 10 second buffer for rate-limiting - await sleep(2000 * i) - - events = await this.getEventsPartFromRpc( - { - fromBlock, - toBlock, - type - }, - i !== 5, - i - ) - } - } + const events = await this.contract.getPastEvents(capitalizeFirstLetter(type), { + fromBlock, + toBlock + }) if (!events?.length) { return { @@ -310,60 +276,55 @@ class EventService { } } - createBatchRequest({ batchIndex, batchSize, batchBlocks, blockDenom, type }) { - return new Array(batchSize).fill('').map( - (_, i) => - new Promise(async (resolve) => { - const toBlock = batchBlocks[batchIndex * batchSize + i] - const fromBlock = toBlock - blockDenom - - const batchEvents = await this.getEventsPartFromRpc( - { - fromBlock, - toBlock, - type - }, - true - ) - - resolve(batchEvents.events) - }) - ) - } - async getBatchEventsFromRpc({ fromBlock, type }) { try { - const batchSize = 10 const blockRange = 10000 const { blockDifference, currentBlockNumber } = await this.getBlocksDiff({ fromBlock }) - const batchDigest = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockRange) - const blockDenom = Math.ceil(blockDifference / batchDigest) - const batchCount = Math.ceil(batchDigest / batchSize) - - const blocks = new Array(batchCount * batchSize).fill('') - const batchBlocks = blocks.map((_, i) => (i + 1) * blockDenom + fromBlock) + let numberParts = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockRange) + const part = Math.ceil(blockDifference / numberParts) let events = [] + let loadedBlocks = 0 + let toBlock = fromBlock + part if (fromBlock < currentBlockNumber) { - this.updateEventProgress(0, type) - - for (let batchIndex = 0; batchIndex < batchCount; batchIndex++) { - const batch = await Promise.all( - this.createBatchRequest({ batchIndex, batchBlocks, blockDenom, batchSize, type }) - ) - - this.updateEventProgress(batchIndex / batchCount, type) - events = events.concat(batch) - await sleep(200) + if (toBlock >= currentBlockNumber) { + toBlock = 'latest' + numberParts = 1 + } + if (store.state.loading.progress !== 98) { + store.dispatch('loading/updateProgress', { message: 'Fetching the past events', progress: 0 }) } - events = flattenNArray(events) + for (let i = 0; i < numberParts; i++) { + try { + await sleep(200) + const partOfEvents = await this.getEventsPartFromRpc({ fromBlock, toBlock, type }) + if (partOfEvents) { + events = events.concat(partOfEvents.events) + } + loadedBlocks += toBlock - fromBlock + fromBlock = toBlock + toBlock += part - return { - lastBlock: events[events.length - 1].blockNumber, - events + const progressInt = parseInt((loadedBlocks / blockDifference) * 100) + console.log('Progress: ', progressInt) + if (store.state.loading.progress !== 98) { + store.dispatch('loading/updateProgress', { + message: 'Fetching the past events', + progress: progressInt === 100 ? 98 : progressInt + }) + } + } catch { + numberParts = numberParts + 1 + } + } + if (events.length) { + return { + events, + lastBlock: toBlock === 'latest' ? currentBlockNumber : toBlock + } } } return undefined @@ -375,11 +336,9 @@ class EventService { async getEventsFromRpc({ fromBlock, type }) { try { const { blockDifference } = await this.getBlocksDiff({ fromBlock }) - const blockRange = 10000 - let events - if (blockDifference < blockRange) { + if (blockDifference < 10000) { const rpcEvents = await this.getEventsPartFromRpc({ fromBlock, toBlock: 'latest', type }) events = rpcEvents?.events || [] } else { @@ -442,9 +401,7 @@ class EventsFactory { instances = new Map() constructor(rpcUrl) { - const httpProvider = new Web3.providers.HttpProvider(rpcUrl, httpConfig) - - this.provider = new Web3(httpProvider).eth + this.provider = new Web3(rpcUrl).eth } getBlockNumber = () => { @@ -474,4 +431,4 @@ class EventsFactory { } } -export { EventsFactory } +export { EventsFactory } \ No newline at end of file diff --git a/services/graph.js b/services/graph.js index 5366358..fb306df 100644 --- a/services/graph.js +++ b/services/graph.js @@ -39,7 +39,6 @@ const defaultOptions = { const client = new ApolloClient({ uri: link, - credentials: 'omit', cache: new InMemoryCache(), defaultOptions }) @@ -47,7 +46,6 @@ const client = new ApolloClient({ const registryClient = new ApolloClient({ uri: 'https://api.thegraph.com/subgraphs/name/tornadocash/tornado-relayer-registry', cache: new InMemoryCache(), - credentials: 'omit', defaultOptions }) diff --git a/services/merkleTree.js b/services/merkleTree.js index dfe33dc..46fad51 100644 --- a/services/merkleTree.js +++ b/services/merkleTree.js @@ -5,8 +5,6 @@ import { download } from '@/store/snark' import networkConfig from '@/networkConfig' import { mimc, bloomService } from '@/services' -const supportedCaches = ['1', '56', '100', '137'] - class MerkleTreeService { constructor({ netId, amount, currency, commitment, instanceName }) { this.netId = netId @@ -22,12 +20,12 @@ class MerkleTreeService { commitment, instanceName, fileFolder: 'trees', - fileName: `deposits_${currency}_${amount}_bloom.json.gz` + fileName: `deposits_${currency}_${amount}_bloom.json.zip` }) } getFileName(partNumber = trees.PARTS_COUNT) { - return `trees/deposits_${this.currency}_${this.amount}_slice${partNumber}.json.gz` + return `trees/deposits_${this.currency}_${this.amount}_slice${partNumber}.json.zip` } createTree({ events }) { @@ -155,7 +153,8 @@ class MerkleTreeService { } async getTree() { - const hasCache = supportedCaches.includes(this.netId.toString()) + const { nativeCurrency } = networkConfig[`netId${this.netId}`] + const hasCache = nativeCurrency === this.currency && Number(this.netId) === 1 let cachedTree = await this.getTreeFromDB() diff --git a/services/registry/index.js b/services/registry/index.js index c20a744..cacaba4 100644 --- a/services/registry/index.js +++ b/services/registry/index.js @@ -1,11 +1,10 @@ -import Web3 from 'web3' import namehash from 'eth-ens-namehash' import { BigNumber as BN } from 'bignumber.js' -import { toChecksumAddress, isAddress } from 'web3-utils' +import { toChecksumAddress } from 'web3-utils' +import { graph } from '@/services' import networkConfig from '@/networkConfig' import { REGISTRY_DEPLOYED_BLOCK } from '@/constants' -import { sleep, flattenNArray } from '@/utils' import AggregatorABI from '@/abis/Aggregator.abi.json' import RelayerRegistryABI from '@/abis/RelayerRegistry.abi.json' @@ -25,59 +24,28 @@ class RelayerRegister { this.relayerRegistry = new this.provider.Contract(RelayerRegistryABI, registryContract) } - fetchEvents = ({ fromBlock, toBlock }, shouldRetry = false) => { - return new Promise((resolve, reject) => { - if (fromBlock <= toBlock) { - try { - const registeredEventsPart = this.relayerRegistry.getPastEvents('RelayerRegistered', { - fromBlock, - toBlock - }) - - resolve(registeredEventsPart) - } catch (error) { - if (shouldRetry) { - sleep(1000) - - const events = this.fetchEvents({ fromBlock, toBlock }) - - resolve(events) - } else { - reject(new Error(error)) - } - } - } else { - resolve([]) - } - }) - } - - batchFetchEvents = async ({ fromBlock, toBlock }) => { - const blockRange = 10000 - const blockDifference = toBlock - fromBlock - const chunkCount = Math.ceil(blockDifference / blockRange) - const blockDenom = Math.ceil(blockDifference / chunkCount) - - const promises = new Array(chunkCount).fill('').map( - (_, i) => - new Promise((resolve) => { - sleep(300) - - const batch = this.fetchEvents( - { - fromBlock: i * blockDenom + fromBlock, - toBlock: (i + 1) * blockDenom + fromBlock - }, - true - ) - resolve(batch) + fetchEvents = async (fromBlock, toBlock) => { + if (fromBlock <= toBlock) { + try { + const registeredEventsPart = await this.relayerRegistry.getPastEvents('RelayerRegistered', { + fromBlock, + toBlock }) - ) - const batchEvents = flattenNArray(await Promise.all(promises)) - const events = batchEvents.map((e) => ({ ...e.returnValues })) + return registeredEventsPart + } catch (error) { + const midBlock = (fromBlock + toBlock) >> 1 - return events + if (midBlock - fromBlock < 2) { + throw new Error(`error fetching events: ${error.message}`) + } + + const arr1 = await this.fetchEvents(fromBlock, midBlock) + const arr2 = await this.fetchEvents(midBlock + 1, toBlock) + return [...arr1, ...arr2] + } + } + return [] } saveEvents = async ({ events, lastSyncBlock, storeName }) => { @@ -128,69 +96,51 @@ class RelayerRegister { } } - getENSAddress = async (ensName) => { - const { url } = Object.values(networkConfig.netId1.rpcUrls)[0] - const provider = new Web3(url) - - const ensAddress = await provider.eth.ens.getAddress(ensName) - - return ensAddress - } - fetchRelayers = async () => { - const blockRange = 10000 // eslint-disable-next-line prefer-const - let { blockTo, cachedEvents } = await this.getCachedData() + let { blockFrom, blockTo, cachedEvents } = await this.getCachedData() let allRelayers = cachedEvents - const currentBlockNumber = await this.provider.getBlockNumber() - const fromBlock = cachedEvents.length === 0 ? REGISTRY_DEPLOYED_BLOCK[1] : blockTo - const blockDifference = currentBlockNumber - fromBlock + if (blockFrom !== blockTo) { + const registeredRelayersEvents = await graph.getAllRegisters(blockFrom) - try { - let toBlock - let registerRelayerEvents - let lastSyncBlock = blockTo - - if (cachedEvents.length > 0 || blockDifference === 0) { - return cachedEvents - } else if (blockDifference >= blockRange) { - toBlock = currentBlockNumber - registerRelayerEvents = await this.batchFetchEvents({ fromBlock, toBlock }) - lastSyncBlock = toBlock - } else { - toBlock = fromBlock + blockRange - registerRelayerEvents = await this.fetchEvents({ fromBlock, toBlock }, true) - lastSyncBlock = toBlock + let relayers = { + lastSyncBlock: registeredRelayersEvents.lastSyncBlock, + events: registeredRelayersEvents.events.map((el) => ({ + ensName: el.ensName, + relayerAddress: toChecksumAddress(el.address) + })) } - const relayerEvents = cachedEvents.concat(registerRelayerEvents || []) - const events = [] + const isGraphLate = relayers.lastSyncBlock && blockTo > Number(relayers.lastSyncBlock) - for (let x = 0; x < relayerEvents.length; x++) { - const { ensName, relayerAddress } = relayerEvents[x] - let ensAddress - if (!isAddress(relayerAddress)) { - ensAddress = await this.getENSAddress(ensName) - ensAddress = toChecksumAddress(ensAddress) - } else { - ensAddress = relayerAddress + if (isGraphLate) { + blockFrom = relayers.lastSyncBlock + } + + if (!relayers.events.length || isGraphLate) { + const multicallEvents = await this.fetchEvents(blockFrom, blockTo) + const eventsRelayers = multicallEvents.map(({ returnValues }) => ({ + ensName: returnValues.ensName, + relayerAddress: returnValues.relayerAddress + })) + + relayers = { + lastSyncBlock: blockTo, + events: relayers.events.concat(eventsRelayers) } - - events.push({ ensName, relayerAddress: ensAddress }) } - await this.saveEvents({ storeName: 'register_events', lastSyncBlock, events }) - - allRelayers = allRelayers.concat(events) - } catch (err) { - console.log(err) + await this.saveEvents({ storeName: 'register_events', ...relayers }) + allRelayers = allRelayers.concat(relayers.events) } + return allRelayers } filterRelayer = (acc, curr, ensSubdomainKey, relayer) => { const subdomainIndex = subdomains.indexOf(ensSubdomainKey) + const mainnetSubdomain = curr.records[0] const hostname = curr.records[subdomainIndex] const isHostWithProtocol = hostname.includes('http') @@ -241,6 +191,7 @@ class RelayerRegister { getRelayers = async (ensSubdomainKey) => { const relayers = await this.fetchRelayers() + const validRelayers = await this.getValidRelayers(relayers, ensSubdomainKey) return validRelayers diff --git a/static/events/deposits_bnb_0.1.json.gz b/static/events/deposits_bnb_0.1.json.gz deleted file mode 100644 index 807e588..0000000 Binary files a/static/events/deposits_bnb_0.1.json.gz and /dev/null differ diff --git a/static/events/deposits_bnb_0.1.json.zip b/static/events/deposits_bnb_0.1.json.zip new file mode 100644 index 0000000..5d73975 Binary files /dev/null and b/static/events/deposits_bnb_0.1.json.zip differ diff --git a/static/events/deposits_bnb_1.json.gz b/static/events/deposits_bnb_1.json.gz deleted file mode 100644 index bcded6c..0000000 Binary files a/static/events/deposits_bnb_1.json.gz and /dev/null differ diff --git a/static/events/deposits_bnb_1.json.zip b/static/events/deposits_bnb_1.json.zip new file mode 100644 index 0000000..1d97102 Binary files /dev/null and b/static/events/deposits_bnb_1.json.zip differ diff --git a/static/events/deposits_bnb_10.json.gz b/static/events/deposits_bnb_10.json.gz deleted file mode 100644 index cff7d36..0000000 Binary files a/static/events/deposits_bnb_10.json.gz and /dev/null differ diff --git a/static/events/deposits_bnb_10.json.zip b/static/events/deposits_bnb_10.json.zip new file mode 100644 index 0000000..47b34e2 Binary files /dev/null and b/static/events/deposits_bnb_10.json.zip differ diff --git a/static/events/deposits_bnb_100.json.gz b/static/events/deposits_bnb_100.json.gz deleted file mode 100644 index 58374be..0000000 Binary files a/static/events/deposits_bnb_100.json.gz and /dev/null differ diff --git a/static/events/deposits_bnb_100.json.zip b/static/events/deposits_bnb_100.json.zip new file mode 100644 index 0000000..82b15ca Binary files /dev/null and b/static/events/deposits_bnb_100.json.zip differ diff --git a/static/events/deposits_eth_0.1.json.gz b/static/events/deposits_eth_0.1.json.gz deleted file mode 100644 index 35dcbc0..0000000 Binary files a/static/events/deposits_eth_0.1.json.gz and /dev/null differ diff --git a/static/events/deposits_eth_0.1.json.zip b/static/events/deposits_eth_0.1.json.zip new file mode 100644 index 0000000..1202255 Binary files /dev/null and b/static/events/deposits_eth_0.1.json.zip differ diff --git a/static/events/deposits_eth_1.json.gz b/static/events/deposits_eth_1.json.gz deleted file mode 100644 index 8e0c2b8..0000000 Binary files a/static/events/deposits_eth_1.json.gz and /dev/null differ diff --git a/static/events/deposits_eth_1.json.zip b/static/events/deposits_eth_1.json.zip new file mode 100644 index 0000000..d1b00f9 Binary files /dev/null and b/static/events/deposits_eth_1.json.zip differ diff --git a/static/events/deposits_eth_10.json.gz b/static/events/deposits_eth_10.json.gz deleted file mode 100644 index e7b6f74..0000000 Binary files a/static/events/deposits_eth_10.json.gz and /dev/null differ diff --git a/static/events/deposits_eth_10.json.zip b/static/events/deposits_eth_10.json.zip new file mode 100644 index 0000000..0020d82 Binary files /dev/null and b/static/events/deposits_eth_10.json.zip differ diff --git a/static/events/deposits_eth_100.json.gz b/static/events/deposits_eth_100.json.gz deleted file mode 100644 index 7bc05d9..0000000 Binary files a/static/events/deposits_eth_100.json.gz and /dev/null differ diff --git a/static/events/deposits_eth_100.json.zip b/static/events/deposits_eth_100.json.zip new file mode 100644 index 0000000..345c274 Binary files /dev/null and b/static/events/deposits_eth_100.json.zip differ diff --git a/static/events/deposits_matic_100.json.gz b/static/events/deposits_matic_100.json.gz deleted file mode 100644 index e79e916..0000000 Binary files a/static/events/deposits_matic_100.json.gz and /dev/null differ diff --git a/static/events/deposits_matic_100.json.zip b/static/events/deposits_matic_100.json.zip new file mode 100644 index 0000000..444639a Binary files /dev/null and b/static/events/deposits_matic_100.json.zip differ diff --git a/static/events/deposits_matic_1000.json.gz b/static/events/deposits_matic_1000.json.gz deleted file mode 100644 index 00bb189..0000000 Binary files a/static/events/deposits_matic_1000.json.gz and /dev/null differ diff --git a/static/events/deposits_matic_1000.json.zip b/static/events/deposits_matic_1000.json.zip new file mode 100644 index 0000000..04795c3 Binary files /dev/null and b/static/events/deposits_matic_1000.json.zip differ diff --git a/static/events/deposits_matic_10000.json.gz b/static/events/deposits_matic_10000.json.gz deleted file mode 100644 index d1ccf68..0000000 Binary files a/static/events/deposits_matic_10000.json.gz and /dev/null differ diff --git a/static/events/deposits_matic_10000.json.zip b/static/events/deposits_matic_10000.json.zip new file mode 100644 index 0000000..1eb81e6 Binary files /dev/null and b/static/events/deposits_matic_10000.json.zip differ diff --git a/static/events/deposits_matic_100000.json.gz b/static/events/deposits_matic_100000.json.gz deleted file mode 100644 index 724853d..0000000 Binary files a/static/events/deposits_matic_100000.json.gz and /dev/null differ diff --git a/static/events/deposits_matic_100000.json.zip b/static/events/deposits_matic_100000.json.zip new file mode 100644 index 0000000..42e5ee1 Binary files /dev/null and b/static/events/deposits_matic_100000.json.zip differ diff --git a/static/events/deposits_xdai_100.json.gz b/static/events/deposits_xdai_100.json.gz deleted file mode 100644 index a37ca13..0000000 Binary files a/static/events/deposits_xdai_100.json.gz and /dev/null differ diff --git a/static/events/deposits_xdai_100.json.zip b/static/events/deposits_xdai_100.json.zip new file mode 100644 index 0000000..d3abb3e Binary files /dev/null and b/static/events/deposits_xdai_100.json.zip differ diff --git a/static/events/deposits_xdai_1000.json.gz b/static/events/deposits_xdai_1000.json.gz deleted file mode 100644 index ba54b8a..0000000 Binary files a/static/events/deposits_xdai_1000.json.gz and /dev/null differ diff --git a/static/events/deposits_xdai_1000.json.zip b/static/events/deposits_xdai_1000.json.zip new file mode 100644 index 0000000..945d09a Binary files /dev/null and b/static/events/deposits_xdai_1000.json.zip differ diff --git a/static/events/deposits_xdai_10000.json.gz b/static/events/deposits_xdai_10000.json.gz deleted file mode 100644 index 27a8ed1..0000000 Binary files a/static/events/deposits_xdai_10000.json.gz and /dev/null differ diff --git a/static/events/deposits_xdai_10000.json.zip b/static/events/deposits_xdai_10000.json.zip new file mode 100644 index 0000000..b6b561f Binary files /dev/null and b/static/events/deposits_xdai_10000.json.zip differ diff --git a/static/events/deposits_xdai_100000.json.gz b/static/events/deposits_xdai_100000.json.gz deleted file mode 100644 index 9482443..0000000 Binary files a/static/events/deposits_xdai_100000.json.gz and /dev/null differ diff --git a/static/events/deposits_xdai_100000.json.zip b/static/events/deposits_xdai_100000.json.zip new file mode 100644 index 0000000..e1d3b20 Binary files /dev/null and b/static/events/deposits_xdai_100000.json.zip differ diff --git a/static/events/encrypted_notes_1.json.gz b/static/events/encrypted_notes_1.json.gz deleted file mode 100644 index 2c66562..0000000 Binary files a/static/events/encrypted_notes_1.json.gz and /dev/null differ diff --git a/static/events/encrypted_notes_1.json.zip b/static/events/encrypted_notes_1.json.zip new file mode 100644 index 0000000..c15f7b7 Binary files /dev/null and b/static/events/encrypted_notes_1.json.zip differ diff --git a/static/events/encrypted_notes_100.json.gz b/static/events/encrypted_notes_100.json.gz deleted file mode 100644 index 280850e..0000000 Binary files a/static/events/encrypted_notes_100.json.gz and /dev/null differ diff --git a/static/events/encrypted_notes_100.json.zip b/static/events/encrypted_notes_100.json.zip new file mode 100644 index 0000000..f2959ca Binary files /dev/null and b/static/events/encrypted_notes_100.json.zip differ diff --git a/static/events/encrypted_notes_137.json.gz b/static/events/encrypted_notes_137.json.gz deleted file mode 100644 index d6a7e32..0000000 Binary files a/static/events/encrypted_notes_137.json.gz and /dev/null differ diff --git a/static/events/encrypted_notes_137.json.zip b/static/events/encrypted_notes_137.json.zip new file mode 100644 index 0000000..6016a45 Binary files /dev/null and b/static/events/encrypted_notes_137.json.zip differ diff --git a/static/events/encrypted_notes_5.json.gz b/static/events/encrypted_notes_5.json.gz deleted file mode 100644 index d6a7e32..0000000 Binary files a/static/events/encrypted_notes_5.json.gz and /dev/null differ diff --git a/static/events/encrypted_notes_56.json.gz b/static/events/encrypted_notes_56.json.gz deleted file mode 100644 index 9e6a1a1..0000000 Binary files a/static/events/encrypted_notes_56.json.gz and /dev/null differ diff --git a/static/events/encrypted_notes_56.json.zip b/static/events/encrypted_notes_56.json.zip new file mode 100644 index 0000000..b094462 Binary files /dev/null and b/static/events/encrypted_notes_56.json.zip differ diff --git a/static/events/withdrawals_bnb_0.1.json.gz b/static/events/withdrawals_bnb_0.1.json.gz deleted file mode 100644 index bceb655..0000000 Binary files a/static/events/withdrawals_bnb_0.1.json.gz and /dev/null differ diff --git a/static/events/withdrawals_bnb_0.1.json.zip b/static/events/withdrawals_bnb_0.1.json.zip new file mode 100644 index 0000000..d988742 Binary files /dev/null and b/static/events/withdrawals_bnb_0.1.json.zip differ diff --git a/static/events/withdrawals_bnb_1.json.gz b/static/events/withdrawals_bnb_1.json.gz deleted file mode 100644 index 200006c..0000000 Binary files a/static/events/withdrawals_bnb_1.json.gz and /dev/null differ diff --git a/static/events/withdrawals_bnb_1.json.zip b/static/events/withdrawals_bnb_1.json.zip new file mode 100644 index 0000000..9ca1e30 Binary files /dev/null and b/static/events/withdrawals_bnb_1.json.zip differ diff --git a/static/events/withdrawals_bnb_10.json.gz b/static/events/withdrawals_bnb_10.json.gz deleted file mode 100644 index 32b1031..0000000 Binary files a/static/events/withdrawals_bnb_10.json.gz and /dev/null differ diff --git a/static/events/withdrawals_bnb_10.json.zip b/static/events/withdrawals_bnb_10.json.zip new file mode 100644 index 0000000..fa1518a Binary files /dev/null and b/static/events/withdrawals_bnb_10.json.zip differ diff --git a/static/events/withdrawals_bnb_100.json.gz b/static/events/withdrawals_bnb_100.json.gz deleted file mode 100644 index 9c20084..0000000 Binary files a/static/events/withdrawals_bnb_100.json.gz and /dev/null differ diff --git a/static/events/withdrawals_bnb_100.json.zip b/static/events/withdrawals_bnb_100.json.zip new file mode 100644 index 0000000..5ea069c Binary files /dev/null and b/static/events/withdrawals_bnb_100.json.zip differ diff --git a/static/events/withdrawals_eth_0.1.json.gz b/static/events/withdrawals_eth_0.1.json.gz deleted file mode 100644 index 37c3c30..0000000 Binary files a/static/events/withdrawals_eth_0.1.json.gz and /dev/null differ diff --git a/static/events/withdrawals_eth_0.1.json.zip b/static/events/withdrawals_eth_0.1.json.zip new file mode 100644 index 0000000..8a88774 Binary files /dev/null and b/static/events/withdrawals_eth_0.1.json.zip differ diff --git a/static/events/withdrawals_eth_1.json.gz b/static/events/withdrawals_eth_1.json.gz deleted file mode 100644 index 7a27315..0000000 Binary files a/static/events/withdrawals_eth_1.json.gz and /dev/null differ diff --git a/static/events/withdrawals_eth_1.json.zip b/static/events/withdrawals_eth_1.json.zip new file mode 100644 index 0000000..34d8498 Binary files /dev/null and b/static/events/withdrawals_eth_1.json.zip differ diff --git a/static/events/withdrawals_eth_10.json.gz b/static/events/withdrawals_eth_10.json.gz deleted file mode 100644 index 5abe03f..0000000 Binary files a/static/events/withdrawals_eth_10.json.gz and /dev/null differ diff --git a/static/events/withdrawals_eth_10.json.zip b/static/events/withdrawals_eth_10.json.zip new file mode 100644 index 0000000..cf21215 Binary files /dev/null and b/static/events/withdrawals_eth_10.json.zip differ diff --git a/static/events/withdrawals_eth_100.json.gz b/static/events/withdrawals_eth_100.json.gz deleted file mode 100644 index 77a0690..0000000 Binary files a/static/events/withdrawals_eth_100.json.gz and /dev/null differ diff --git a/static/events/withdrawals_eth_100.json.zip b/static/events/withdrawals_eth_100.json.zip new file mode 100644 index 0000000..f70819f Binary files /dev/null and b/static/events/withdrawals_eth_100.json.zip differ diff --git a/static/events/withdrawals_matic_100.json.gz b/static/events/withdrawals_matic_100.json.gz deleted file mode 100644 index 38a60cb..0000000 Binary files a/static/events/withdrawals_matic_100.json.gz and /dev/null differ diff --git a/static/events/withdrawals_matic_100.json.zip b/static/events/withdrawals_matic_100.json.zip new file mode 100644 index 0000000..4cbdc30 Binary files /dev/null and b/static/events/withdrawals_matic_100.json.zip differ diff --git a/static/events/withdrawals_matic_1000.json.gz b/static/events/withdrawals_matic_1000.json.gz deleted file mode 100644 index ffef702..0000000 Binary files a/static/events/withdrawals_matic_1000.json.gz and /dev/null differ diff --git a/static/events/withdrawals_matic_1000.json.zip b/static/events/withdrawals_matic_1000.json.zip new file mode 100644 index 0000000..361134d Binary files /dev/null and b/static/events/withdrawals_matic_1000.json.zip differ diff --git a/static/events/withdrawals_matic_10000.json.gz b/static/events/withdrawals_matic_10000.json.gz deleted file mode 100644 index 167b8a1..0000000 Binary files a/static/events/withdrawals_matic_10000.json.gz and /dev/null differ diff --git a/static/events/withdrawals_matic_10000.json.zip b/static/events/withdrawals_matic_10000.json.zip new file mode 100644 index 0000000..d3f3ba2 Binary files /dev/null and b/static/events/withdrawals_matic_10000.json.zip differ diff --git a/static/events/withdrawals_matic_100000.json.gz b/static/events/withdrawals_matic_100000.json.gz deleted file mode 100644 index 3d2b9c8..0000000 Binary files a/static/events/withdrawals_matic_100000.json.gz and /dev/null differ diff --git a/static/events/withdrawals_matic_100000.json.zip b/static/events/withdrawals_matic_100000.json.zip new file mode 100644 index 0000000..c86c59f Binary files /dev/null and b/static/events/withdrawals_matic_100000.json.zip differ diff --git a/static/events/withdrawals_xdai_100.json.gz b/static/events/withdrawals_xdai_100.json.gz deleted file mode 100644 index 37a714f..0000000 Binary files a/static/events/withdrawals_xdai_100.json.gz and /dev/null differ diff --git a/static/events/withdrawals_xdai_100.json.zip b/static/events/withdrawals_xdai_100.json.zip new file mode 100644 index 0000000..ada4b3f Binary files /dev/null and b/static/events/withdrawals_xdai_100.json.zip differ diff --git a/static/events/withdrawals_xdai_1000.json.gz b/static/events/withdrawals_xdai_1000.json.gz deleted file mode 100644 index 972f619..0000000 Binary files a/static/events/withdrawals_xdai_1000.json.gz and /dev/null differ diff --git a/static/events/withdrawals_xdai_1000.json.zip b/static/events/withdrawals_xdai_1000.json.zip new file mode 100644 index 0000000..e6220e8 Binary files /dev/null and b/static/events/withdrawals_xdai_1000.json.zip differ diff --git a/static/events/withdrawals_xdai_10000.json.gz b/static/events/withdrawals_xdai_10000.json.gz deleted file mode 100644 index 0c6894b..0000000 Binary files a/static/events/withdrawals_xdai_10000.json.gz and /dev/null differ diff --git a/static/events/withdrawals_xdai_10000.json.zip b/static/events/withdrawals_xdai_10000.json.zip new file mode 100644 index 0000000..d566416 Binary files /dev/null and b/static/events/withdrawals_xdai_10000.json.zip differ diff --git a/static/events/withdrawals_xdai_100000.json.gz b/static/events/withdrawals_xdai_100000.json.gz deleted file mode 100644 index a4fa3a6..0000000 Binary files a/static/events/withdrawals_xdai_100000.json.gz and /dev/null differ diff --git a/static/events/withdrawals_xdai_100000.json.zip b/static/events/withdrawals_xdai_100000.json.zip new file mode 100644 index 0000000..ac0b34d Binary files /dev/null and b/static/events/withdrawals_xdai_100000.json.zip differ diff --git a/static/tornado.json.gz b/static/tornado.json.gz deleted file mode 100644 index cf50b6e..0000000 Binary files a/static/tornado.json.gz and /dev/null differ diff --git a/static/tornado.json.zip b/static/tornado.json.zip new file mode 100644 index 0000000..a6265fb Binary files /dev/null and b/static/tornado.json.zip differ diff --git a/static/tornadoProvingKey.bin.gz b/static/tornadoProvingKey.bin.zip similarity index 73% rename from static/tornadoProvingKey.bin.gz rename to static/tornadoProvingKey.bin.zip index 6716b2a..2865811 100644 Binary files a/static/tornadoProvingKey.bin.gz and b/static/tornadoProvingKey.bin.zip differ diff --git a/static/trees/deposits_bnb_0.1_bloom.json.gz b/static/trees/deposits_bnb_0.1_bloom.json.gz deleted file mode 100644 index 92c69f5..0000000 Binary files a/static/trees/deposits_bnb_0.1_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_0.1_bloom.json.zip b/static/trees/deposits_bnb_0.1_bloom.json.zip new file mode 100644 index 0000000..34bded7 Binary files /dev/null and b/static/trees/deposits_bnb_0.1_bloom.json.zip differ diff --git a/static/trees/deposits_bnb_0.1_slice1.json.gz b/static/trees/deposits_bnb_0.1_slice1.json.gz deleted file mode 100644 index 421b3b7..0000000 Binary files a/static/trees/deposits_bnb_0.1_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_0.1_slice1.json.zip b/static/trees/deposits_bnb_0.1_slice1.json.zip new file mode 100644 index 0000000..32f4860 Binary files /dev/null and b/static/trees/deposits_bnb_0.1_slice1.json.zip differ diff --git a/static/trees/deposits_bnb_0.1_slice2.json.gz b/static/trees/deposits_bnb_0.1_slice2.json.gz deleted file mode 100644 index ec28e0e..0000000 Binary files a/static/trees/deposits_bnb_0.1_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_0.1_slice2.json.zip b/static/trees/deposits_bnb_0.1_slice2.json.zip new file mode 100644 index 0000000..c36859a Binary files /dev/null and b/static/trees/deposits_bnb_0.1_slice2.json.zip differ diff --git a/static/trees/deposits_bnb_0.1_slice3.json.gz b/static/trees/deposits_bnb_0.1_slice3.json.gz deleted file mode 100644 index d3a9f6d..0000000 Binary files a/static/trees/deposits_bnb_0.1_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_0.1_slice3.json.zip b/static/trees/deposits_bnb_0.1_slice3.json.zip new file mode 100644 index 0000000..9e7dd52 Binary files /dev/null and b/static/trees/deposits_bnb_0.1_slice3.json.zip differ diff --git a/static/trees/deposits_bnb_0.1_slice4.json.gz b/static/trees/deposits_bnb_0.1_slice4.json.gz deleted file mode 100644 index 28a8d08..0000000 Binary files a/static/trees/deposits_bnb_0.1_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_0.1_slice4.json.zip b/static/trees/deposits_bnb_0.1_slice4.json.zip new file mode 100644 index 0000000..6193e14 Binary files /dev/null and b/static/trees/deposits_bnb_0.1_slice4.json.zip differ diff --git a/static/trees/deposits_bnb_100_bloom.json.gz b/static/trees/deposits_bnb_100_bloom.json.gz deleted file mode 100644 index d3405b0..0000000 Binary files a/static/trees/deposits_bnb_100_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_100_bloom.json.zip b/static/trees/deposits_bnb_100_bloom.json.zip new file mode 100644 index 0000000..36f19e8 Binary files /dev/null and b/static/trees/deposits_bnb_100_bloom.json.zip differ diff --git a/static/trees/deposits_bnb_100_slice1.json.gz b/static/trees/deposits_bnb_100_slice1.json.gz deleted file mode 100644 index 24bf1b7..0000000 Binary files a/static/trees/deposits_bnb_100_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_100_slice1.json.zip b/static/trees/deposits_bnb_100_slice1.json.zip new file mode 100644 index 0000000..408882e Binary files /dev/null and b/static/trees/deposits_bnb_100_slice1.json.zip differ diff --git a/static/trees/deposits_bnb_100_slice2.json.gz b/static/trees/deposits_bnb_100_slice2.json.gz deleted file mode 100644 index 75b01cf..0000000 Binary files a/static/trees/deposits_bnb_100_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_100_slice2.json.zip b/static/trees/deposits_bnb_100_slice2.json.zip new file mode 100644 index 0000000..77b1efb Binary files /dev/null and b/static/trees/deposits_bnb_100_slice2.json.zip differ diff --git a/static/trees/deposits_bnb_100_slice3.json.gz b/static/trees/deposits_bnb_100_slice3.json.gz deleted file mode 100644 index 6e4d0f9..0000000 Binary files a/static/trees/deposits_bnb_100_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_100_slice3.json.zip b/static/trees/deposits_bnb_100_slice3.json.zip new file mode 100644 index 0000000..b446ae6 Binary files /dev/null and b/static/trees/deposits_bnb_100_slice3.json.zip differ diff --git a/static/trees/deposits_bnb_100_slice4.json.gz b/static/trees/deposits_bnb_100_slice4.json.gz deleted file mode 100644 index f7c9f33..0000000 Binary files a/static/trees/deposits_bnb_100_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_100_slice4.json.zip b/static/trees/deposits_bnb_100_slice4.json.zip new file mode 100644 index 0000000..c9b57c9 Binary files /dev/null and b/static/trees/deposits_bnb_100_slice4.json.zip differ diff --git a/static/trees/deposits_bnb_10_bloom.json.gz b/static/trees/deposits_bnb_10_bloom.json.gz deleted file mode 100644 index d3cb123..0000000 Binary files a/static/trees/deposits_bnb_10_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_10_bloom.json.zip b/static/trees/deposits_bnb_10_bloom.json.zip new file mode 100644 index 0000000..54ea5ca Binary files /dev/null and b/static/trees/deposits_bnb_10_bloom.json.zip differ diff --git a/static/trees/deposits_bnb_10_slice1.json.gz b/static/trees/deposits_bnb_10_slice1.json.gz deleted file mode 100644 index 589bb54..0000000 Binary files a/static/trees/deposits_bnb_10_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_10_slice1.json.zip b/static/trees/deposits_bnb_10_slice1.json.zip new file mode 100644 index 0000000..7ee1ca8 Binary files /dev/null and b/static/trees/deposits_bnb_10_slice1.json.zip differ diff --git a/static/trees/deposits_bnb_10_slice2.json.gz b/static/trees/deposits_bnb_10_slice2.json.gz deleted file mode 100644 index 4abfe30..0000000 Binary files a/static/trees/deposits_bnb_10_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_10_slice2.json.zip b/static/trees/deposits_bnb_10_slice2.json.zip new file mode 100644 index 0000000..966114a Binary files /dev/null and b/static/trees/deposits_bnb_10_slice2.json.zip differ diff --git a/static/trees/deposits_bnb_10_slice3.json.gz b/static/trees/deposits_bnb_10_slice3.json.gz deleted file mode 100644 index 94a20df..0000000 Binary files a/static/trees/deposits_bnb_10_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_10_slice3.json.zip b/static/trees/deposits_bnb_10_slice3.json.zip new file mode 100644 index 0000000..a109c61 Binary files /dev/null and b/static/trees/deposits_bnb_10_slice3.json.zip differ diff --git a/static/trees/deposits_bnb_10_slice4.json.gz b/static/trees/deposits_bnb_10_slice4.json.gz deleted file mode 100644 index 08cbdec..0000000 Binary files a/static/trees/deposits_bnb_10_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_10_slice4.json.zip b/static/trees/deposits_bnb_10_slice4.json.zip new file mode 100644 index 0000000..a05975b Binary files /dev/null and b/static/trees/deposits_bnb_10_slice4.json.zip differ diff --git a/static/trees/deposits_bnb_1_bloom.json.gz b/static/trees/deposits_bnb_1_bloom.json.gz deleted file mode 100644 index 0966b4d..0000000 Binary files a/static/trees/deposits_bnb_1_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_1_bloom.json.zip b/static/trees/deposits_bnb_1_bloom.json.zip new file mode 100644 index 0000000..427fbc9 Binary files /dev/null and b/static/trees/deposits_bnb_1_bloom.json.zip differ diff --git a/static/trees/deposits_bnb_1_slice1.json.gz b/static/trees/deposits_bnb_1_slice1.json.gz deleted file mode 100644 index c252fd2..0000000 Binary files a/static/trees/deposits_bnb_1_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_1_slice1.json.zip b/static/trees/deposits_bnb_1_slice1.json.zip new file mode 100644 index 0000000..9f06f18 Binary files /dev/null and b/static/trees/deposits_bnb_1_slice1.json.zip differ diff --git a/static/trees/deposits_bnb_1_slice2.json.gz b/static/trees/deposits_bnb_1_slice2.json.gz deleted file mode 100644 index 7c69991..0000000 Binary files a/static/trees/deposits_bnb_1_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_1_slice2.json.zip b/static/trees/deposits_bnb_1_slice2.json.zip new file mode 100644 index 0000000..d303a9f Binary files /dev/null and b/static/trees/deposits_bnb_1_slice2.json.zip differ diff --git a/static/trees/deposits_bnb_1_slice3.json.gz b/static/trees/deposits_bnb_1_slice3.json.gz deleted file mode 100644 index 86666b0..0000000 Binary files a/static/trees/deposits_bnb_1_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_1_slice3.json.zip b/static/trees/deposits_bnb_1_slice3.json.zip new file mode 100644 index 0000000..9d1da1d Binary files /dev/null and b/static/trees/deposits_bnb_1_slice3.json.zip differ diff --git a/static/trees/deposits_bnb_1_slice4.json.gz b/static/trees/deposits_bnb_1_slice4.json.gz deleted file mode 100644 index 6f89743..0000000 Binary files a/static/trees/deposits_bnb_1_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_bnb_1_slice4.json.zip b/static/trees/deposits_bnb_1_slice4.json.zip new file mode 100644 index 0000000..f9fd1ce Binary files /dev/null and b/static/trees/deposits_bnb_1_slice4.json.zip differ diff --git a/static/trees/deposits_eth_0.1_bloom.json.gz b/static/trees/deposits_eth_0.1_bloom.json.gz deleted file mode 100644 index 55021f2..0000000 Binary files a/static/trees/deposits_eth_0.1_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_0.1_bloom.json.zip b/static/trees/deposits_eth_0.1_bloom.json.zip new file mode 100644 index 0000000..6c95c71 Binary files /dev/null and b/static/trees/deposits_eth_0.1_bloom.json.zip differ diff --git a/static/trees/deposits_eth_0.1_slice1.json.gz b/static/trees/deposits_eth_0.1_slice1.json.gz deleted file mode 100644 index 3a3d1ff..0000000 Binary files a/static/trees/deposits_eth_0.1_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_0.1_slice1.json.zip b/static/trees/deposits_eth_0.1_slice1.json.zip new file mode 100644 index 0000000..0200517 Binary files /dev/null and b/static/trees/deposits_eth_0.1_slice1.json.zip differ diff --git a/static/trees/deposits_eth_0.1_slice2.json.gz b/static/trees/deposits_eth_0.1_slice2.json.gz deleted file mode 100644 index e1e9b82..0000000 Binary files a/static/trees/deposits_eth_0.1_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_0.1_slice2.json.zip b/static/trees/deposits_eth_0.1_slice2.json.zip new file mode 100644 index 0000000..746d9e9 Binary files /dev/null and b/static/trees/deposits_eth_0.1_slice2.json.zip differ diff --git a/static/trees/deposits_eth_0.1_slice3.json.gz b/static/trees/deposits_eth_0.1_slice3.json.gz deleted file mode 100644 index 5e87963..0000000 Binary files a/static/trees/deposits_eth_0.1_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_0.1_slice3.json.zip b/static/trees/deposits_eth_0.1_slice3.json.zip new file mode 100644 index 0000000..f6d1d45 Binary files /dev/null and b/static/trees/deposits_eth_0.1_slice3.json.zip differ diff --git a/static/trees/deposits_eth_0.1_slice4.json.gz b/static/trees/deposits_eth_0.1_slice4.json.gz deleted file mode 100644 index e8742c6..0000000 Binary files a/static/trees/deposits_eth_0.1_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_0.1_slice4.json.zip b/static/trees/deposits_eth_0.1_slice4.json.zip new file mode 100644 index 0000000..1cdd117 Binary files /dev/null and b/static/trees/deposits_eth_0.1_slice4.json.zip differ diff --git a/static/trees/deposits_eth_100_bloom.json.gz b/static/trees/deposits_eth_100_bloom.json.gz deleted file mode 100644 index 83f3521..0000000 Binary files a/static/trees/deposits_eth_100_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_100_bloom.json.zip b/static/trees/deposits_eth_100_bloom.json.zip new file mode 100644 index 0000000..3806a28 Binary files /dev/null and b/static/trees/deposits_eth_100_bloom.json.zip differ diff --git a/static/trees/deposits_eth_100_slice1.json.gz b/static/trees/deposits_eth_100_slice1.json.gz deleted file mode 100644 index 3a5db5d..0000000 Binary files a/static/trees/deposits_eth_100_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_100_slice1.json.zip b/static/trees/deposits_eth_100_slice1.json.zip new file mode 100644 index 0000000..42cfd5f Binary files /dev/null and b/static/trees/deposits_eth_100_slice1.json.zip differ diff --git a/static/trees/deposits_eth_100_slice2.json.gz b/static/trees/deposits_eth_100_slice2.json.gz deleted file mode 100644 index 0cfe774..0000000 Binary files a/static/trees/deposits_eth_100_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_100_slice2.json.zip b/static/trees/deposits_eth_100_slice2.json.zip new file mode 100644 index 0000000..8c5ffe2 Binary files /dev/null and b/static/trees/deposits_eth_100_slice2.json.zip differ diff --git a/static/trees/deposits_eth_100_slice3.json.gz b/static/trees/deposits_eth_100_slice3.json.gz deleted file mode 100644 index b6a3006..0000000 Binary files a/static/trees/deposits_eth_100_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_100_slice3.json.zip b/static/trees/deposits_eth_100_slice3.json.zip new file mode 100644 index 0000000..789d5ac Binary files /dev/null and b/static/trees/deposits_eth_100_slice3.json.zip differ diff --git a/static/trees/deposits_eth_100_slice4.json.gz b/static/trees/deposits_eth_100_slice4.json.gz deleted file mode 100644 index 1ecb1d2..0000000 Binary files a/static/trees/deposits_eth_100_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_100_slice4.json.zip b/static/trees/deposits_eth_100_slice4.json.zip new file mode 100644 index 0000000..9dffc05 Binary files /dev/null and b/static/trees/deposits_eth_100_slice4.json.zip differ diff --git a/static/trees/deposits_eth_10_bloom.json.gz b/static/trees/deposits_eth_10_bloom.json.gz deleted file mode 100644 index cf3da9f..0000000 Binary files a/static/trees/deposits_eth_10_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_10_bloom.json.zip b/static/trees/deposits_eth_10_bloom.json.zip new file mode 100644 index 0000000..715e66a Binary files /dev/null and b/static/trees/deposits_eth_10_bloom.json.zip differ diff --git a/static/trees/deposits_eth_10_slice1.json.gz b/static/trees/deposits_eth_10_slice1.json.gz deleted file mode 100644 index 8c063c3..0000000 Binary files a/static/trees/deposits_eth_10_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_10_slice1.json.zip b/static/trees/deposits_eth_10_slice1.json.zip new file mode 100644 index 0000000..b175630 Binary files /dev/null and b/static/trees/deposits_eth_10_slice1.json.zip differ diff --git a/static/trees/deposits_eth_10_slice2.json.gz b/static/trees/deposits_eth_10_slice2.json.gz deleted file mode 100644 index fca7621..0000000 Binary files a/static/trees/deposits_eth_10_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_10_slice2.json.zip b/static/trees/deposits_eth_10_slice2.json.zip new file mode 100644 index 0000000..3d117c5 Binary files /dev/null and b/static/trees/deposits_eth_10_slice2.json.zip differ diff --git a/static/trees/deposits_eth_10_slice3.json.gz b/static/trees/deposits_eth_10_slice3.json.gz deleted file mode 100644 index f10b50e..0000000 Binary files a/static/trees/deposits_eth_10_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_10_slice3.json.zip b/static/trees/deposits_eth_10_slice3.json.zip new file mode 100644 index 0000000..4eda5fd Binary files /dev/null and b/static/trees/deposits_eth_10_slice3.json.zip differ diff --git a/static/trees/deposits_eth_10_slice4.json.gz b/static/trees/deposits_eth_10_slice4.json.gz deleted file mode 100644 index aaf530e..0000000 Binary files a/static/trees/deposits_eth_10_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_10_slice4.json.zip b/static/trees/deposits_eth_10_slice4.json.zip new file mode 100644 index 0000000..1f6bf2d Binary files /dev/null and b/static/trees/deposits_eth_10_slice4.json.zip differ diff --git a/static/trees/deposits_eth_1_bloom.json.gz b/static/trees/deposits_eth_1_bloom.json.gz deleted file mode 100644 index a2bb6e4..0000000 Binary files a/static/trees/deposits_eth_1_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_1_bloom.json.zip b/static/trees/deposits_eth_1_bloom.json.zip new file mode 100644 index 0000000..25be566 Binary files /dev/null and b/static/trees/deposits_eth_1_bloom.json.zip differ diff --git a/static/trees/deposits_eth_1_slice1.json.gz b/static/trees/deposits_eth_1_slice1.json.gz deleted file mode 100644 index b32dc00..0000000 Binary files a/static/trees/deposits_eth_1_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_1_slice1.json.zip b/static/trees/deposits_eth_1_slice1.json.zip new file mode 100644 index 0000000..3dfa940 Binary files /dev/null and b/static/trees/deposits_eth_1_slice1.json.zip differ diff --git a/static/trees/deposits_eth_1_slice2.json.gz b/static/trees/deposits_eth_1_slice2.json.gz deleted file mode 100644 index 12e841e..0000000 Binary files a/static/trees/deposits_eth_1_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_1_slice2.json.zip b/static/trees/deposits_eth_1_slice2.json.zip new file mode 100644 index 0000000..3fe4c2a Binary files /dev/null and b/static/trees/deposits_eth_1_slice2.json.zip differ diff --git a/static/trees/deposits_eth_1_slice3.json.gz b/static/trees/deposits_eth_1_slice3.json.gz deleted file mode 100644 index 97d0283..0000000 Binary files a/static/trees/deposits_eth_1_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_1_slice3.json.zip b/static/trees/deposits_eth_1_slice3.json.zip new file mode 100644 index 0000000..237508f Binary files /dev/null and b/static/trees/deposits_eth_1_slice3.json.zip differ diff --git a/static/trees/deposits_eth_1_slice4.json.gz b/static/trees/deposits_eth_1_slice4.json.gz deleted file mode 100644 index eb2732e..0000000 Binary files a/static/trees/deposits_eth_1_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_eth_1_slice4.json.zip b/static/trees/deposits_eth_1_slice4.json.zip new file mode 100644 index 0000000..4c2b3ee Binary files /dev/null and b/static/trees/deposits_eth_1_slice4.json.zip differ diff --git a/static/trees/deposits_matic_100000_bloom.json.gz b/static/trees/deposits_matic_100000_bloom.json.gz deleted file mode 100644 index 032cc12..0000000 Binary files a/static/trees/deposits_matic_100000_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100000_bloom.json.zip b/static/trees/deposits_matic_100000_bloom.json.zip new file mode 100644 index 0000000..0d25fba Binary files /dev/null and b/static/trees/deposits_matic_100000_bloom.json.zip differ diff --git a/static/trees/deposits_matic_100000_slice1.json.gz b/static/trees/deposits_matic_100000_slice1.json.gz deleted file mode 100644 index b6a3374..0000000 Binary files a/static/trees/deposits_matic_100000_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100000_slice1.json.zip b/static/trees/deposits_matic_100000_slice1.json.zip new file mode 100644 index 0000000..1fea166 Binary files /dev/null and b/static/trees/deposits_matic_100000_slice1.json.zip differ diff --git a/static/trees/deposits_matic_100000_slice2.json.gz b/static/trees/deposits_matic_100000_slice2.json.gz deleted file mode 100644 index b9fa5c5..0000000 Binary files a/static/trees/deposits_matic_100000_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100000_slice2.json.zip b/static/trees/deposits_matic_100000_slice2.json.zip new file mode 100644 index 0000000..bdb7223 Binary files /dev/null and b/static/trees/deposits_matic_100000_slice2.json.zip differ diff --git a/static/trees/deposits_matic_100000_slice3.json.gz b/static/trees/deposits_matic_100000_slice3.json.gz deleted file mode 100644 index 4eca824..0000000 Binary files a/static/trees/deposits_matic_100000_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100000_slice3.json.zip b/static/trees/deposits_matic_100000_slice3.json.zip new file mode 100644 index 0000000..3f00453 Binary files /dev/null and b/static/trees/deposits_matic_100000_slice3.json.zip differ diff --git a/static/trees/deposits_matic_100000_slice4.json.gz b/static/trees/deposits_matic_100000_slice4.json.gz deleted file mode 100644 index fc68835..0000000 Binary files a/static/trees/deposits_matic_100000_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100000_slice4.json.zip b/static/trees/deposits_matic_100000_slice4.json.zip new file mode 100644 index 0000000..f4c006e Binary files /dev/null and b/static/trees/deposits_matic_100000_slice4.json.zip differ diff --git a/static/trees/deposits_matic_10000_bloom.json.gz b/static/trees/deposits_matic_10000_bloom.json.gz deleted file mode 100644 index 09285ba..0000000 Binary files a/static/trees/deposits_matic_10000_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_10000_bloom.json.zip b/static/trees/deposits_matic_10000_bloom.json.zip new file mode 100644 index 0000000..699e1ae Binary files /dev/null and b/static/trees/deposits_matic_10000_bloom.json.zip differ diff --git a/static/trees/deposits_matic_10000_slice1.json.gz b/static/trees/deposits_matic_10000_slice1.json.gz deleted file mode 100644 index 784f782..0000000 Binary files a/static/trees/deposits_matic_10000_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_10000_slice1.json.zip b/static/trees/deposits_matic_10000_slice1.json.zip new file mode 100644 index 0000000..543d729 Binary files /dev/null and b/static/trees/deposits_matic_10000_slice1.json.zip differ diff --git a/static/trees/deposits_matic_10000_slice2.json.gz b/static/trees/deposits_matic_10000_slice2.json.gz deleted file mode 100644 index cdc3ae6..0000000 Binary files a/static/trees/deposits_matic_10000_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_10000_slice2.json.zip b/static/trees/deposits_matic_10000_slice2.json.zip new file mode 100644 index 0000000..ed4c289 Binary files /dev/null and b/static/trees/deposits_matic_10000_slice2.json.zip differ diff --git a/static/trees/deposits_matic_10000_slice3.json.gz b/static/trees/deposits_matic_10000_slice3.json.gz deleted file mode 100644 index 26a1bda..0000000 Binary files a/static/trees/deposits_matic_10000_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_10000_slice3.json.zip b/static/trees/deposits_matic_10000_slice3.json.zip new file mode 100644 index 0000000..2327dd3 Binary files /dev/null and b/static/trees/deposits_matic_10000_slice3.json.zip differ diff --git a/static/trees/deposits_matic_10000_slice4.json.gz b/static/trees/deposits_matic_10000_slice4.json.gz deleted file mode 100644 index 3622da4..0000000 Binary files a/static/trees/deposits_matic_10000_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_10000_slice4.json.zip b/static/trees/deposits_matic_10000_slice4.json.zip new file mode 100644 index 0000000..0716732 Binary files /dev/null and b/static/trees/deposits_matic_10000_slice4.json.zip differ diff --git a/static/trees/deposits_matic_1000_bloom.json.gz b/static/trees/deposits_matic_1000_bloom.json.gz deleted file mode 100644 index 0965700..0000000 Binary files a/static/trees/deposits_matic_1000_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_1000_bloom.json.zip b/static/trees/deposits_matic_1000_bloom.json.zip new file mode 100644 index 0000000..adf8827 Binary files /dev/null and b/static/trees/deposits_matic_1000_bloom.json.zip differ diff --git a/static/trees/deposits_matic_1000_slice1.json.gz b/static/trees/deposits_matic_1000_slice1.json.gz deleted file mode 100644 index a789ea1..0000000 Binary files a/static/trees/deposits_matic_1000_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_1000_slice1.json.zip b/static/trees/deposits_matic_1000_slice1.json.zip new file mode 100644 index 0000000..9cfdf9c Binary files /dev/null and b/static/trees/deposits_matic_1000_slice1.json.zip differ diff --git a/static/trees/deposits_matic_1000_slice2.json.gz b/static/trees/deposits_matic_1000_slice2.json.gz deleted file mode 100644 index e623e5f..0000000 Binary files a/static/trees/deposits_matic_1000_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_1000_slice2.json.zip b/static/trees/deposits_matic_1000_slice2.json.zip new file mode 100644 index 0000000..90376ee Binary files /dev/null and b/static/trees/deposits_matic_1000_slice2.json.zip differ diff --git a/static/trees/deposits_matic_1000_slice3.json.gz b/static/trees/deposits_matic_1000_slice3.json.gz deleted file mode 100644 index dbebdb1..0000000 Binary files a/static/trees/deposits_matic_1000_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_1000_slice3.json.zip b/static/trees/deposits_matic_1000_slice3.json.zip new file mode 100644 index 0000000..dd8ae10 Binary files /dev/null and b/static/trees/deposits_matic_1000_slice3.json.zip differ diff --git a/static/trees/deposits_matic_1000_slice4.json.gz b/static/trees/deposits_matic_1000_slice4.json.gz deleted file mode 100644 index 2c12505..0000000 Binary files a/static/trees/deposits_matic_1000_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_1000_slice4.json.zip b/static/trees/deposits_matic_1000_slice4.json.zip new file mode 100644 index 0000000..4a22e52 Binary files /dev/null and b/static/trees/deposits_matic_1000_slice4.json.zip differ diff --git a/static/trees/deposits_matic_100_bloom.json.gz b/static/trees/deposits_matic_100_bloom.json.gz deleted file mode 100644 index d0d1f77..0000000 Binary files a/static/trees/deposits_matic_100_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100_bloom.json.zip b/static/trees/deposits_matic_100_bloom.json.zip new file mode 100644 index 0000000..34e112f Binary files /dev/null and b/static/trees/deposits_matic_100_bloom.json.zip differ diff --git a/static/trees/deposits_matic_100_slice1.json.gz b/static/trees/deposits_matic_100_slice1.json.gz deleted file mode 100644 index 180d5b3..0000000 Binary files a/static/trees/deposits_matic_100_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100_slice1.json.zip b/static/trees/deposits_matic_100_slice1.json.zip new file mode 100644 index 0000000..d57b942 Binary files /dev/null and b/static/trees/deposits_matic_100_slice1.json.zip differ diff --git a/static/trees/deposits_matic_100_slice2.json.gz b/static/trees/deposits_matic_100_slice2.json.gz deleted file mode 100644 index a4d98b2..0000000 Binary files a/static/trees/deposits_matic_100_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100_slice2.json.zip b/static/trees/deposits_matic_100_slice2.json.zip new file mode 100644 index 0000000..712e58a Binary files /dev/null and b/static/trees/deposits_matic_100_slice2.json.zip differ diff --git a/static/trees/deposits_matic_100_slice3.json.gz b/static/trees/deposits_matic_100_slice3.json.gz deleted file mode 100644 index 21d1b42..0000000 Binary files a/static/trees/deposits_matic_100_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100_slice3.json.zip b/static/trees/deposits_matic_100_slice3.json.zip new file mode 100644 index 0000000..15d331f Binary files /dev/null and b/static/trees/deposits_matic_100_slice3.json.zip differ diff --git a/static/trees/deposits_matic_100_slice4.json.gz b/static/trees/deposits_matic_100_slice4.json.gz deleted file mode 100644 index d8f99ed..0000000 Binary files a/static/trees/deposits_matic_100_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_matic_100_slice4.json.zip b/static/trees/deposits_matic_100_slice4.json.zip new file mode 100644 index 0000000..4b49041 Binary files /dev/null and b/static/trees/deposits_matic_100_slice4.json.zip differ diff --git a/static/trees/deposits_xdai_100000_bloom.json.gz b/static/trees/deposits_xdai_100000_bloom.json.gz deleted file mode 100644 index 9e99815..0000000 --- a/static/trees/deposits_xdai_100000_bloom.json.gz +++ /dev/null @@ -1,3 +0,0 @@ -xÚÁM -Â0…ѽ|ã;xIýyÞåR¢m Ù»ç 8qÇ5Ä»ÿ.E¬}ÿôöŃõضöÂcŠãÙ÷ăÀ) -QqŠ‡8ágâ‚C\qˆÄ¥¦¸á%pÌ9ÿ`Î \ No newline at end of file diff --git a/static/trees/deposits_xdai_100000_bloom.json.zip b/static/trees/deposits_xdai_100000_bloom.json.zip new file mode 100644 index 0000000..362f9c2 Binary files /dev/null and b/static/trees/deposits_xdai_100000_bloom.json.zip differ diff --git a/static/trees/deposits_xdai_100000_slice1.json.gz b/static/trees/deposits_xdai_100000_slice1.json.gz deleted file mode 100644 index 09ddd21..0000000 Binary files a/static/trees/deposits_xdai_100000_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100000_slice1.json.zip b/static/trees/deposits_xdai_100000_slice1.json.zip new file mode 100644 index 0000000..25f37ad Binary files /dev/null and b/static/trees/deposits_xdai_100000_slice1.json.zip differ diff --git a/static/trees/deposits_xdai_100000_slice2.json.gz b/static/trees/deposits_xdai_100000_slice2.json.gz deleted file mode 100644 index 32b5187..0000000 Binary files a/static/trees/deposits_xdai_100000_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100000_slice2.json.zip b/static/trees/deposits_xdai_100000_slice2.json.zip new file mode 100644 index 0000000..19e3afe Binary files /dev/null and b/static/trees/deposits_xdai_100000_slice2.json.zip differ diff --git a/static/trees/deposits_xdai_10000_bloom.json.gz b/static/trees/deposits_xdai_10000_bloom.json.gz deleted file mode 100644 index 837bc06..0000000 Binary files a/static/trees/deposits_xdai_10000_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_10000_bloom.json.zip b/static/trees/deposits_xdai_10000_bloom.json.zip new file mode 100644 index 0000000..23aa77c Binary files /dev/null and b/static/trees/deposits_xdai_10000_bloom.json.zip differ diff --git a/static/trees/deposits_xdai_10000_slice1.json.gz b/static/trees/deposits_xdai_10000_slice1.json.gz deleted file mode 100644 index 400bc34..0000000 Binary files a/static/trees/deposits_xdai_10000_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_10000_slice1.json.zip b/static/trees/deposits_xdai_10000_slice1.json.zip new file mode 100644 index 0000000..0b9a298 Binary files /dev/null and b/static/trees/deposits_xdai_10000_slice1.json.zip differ diff --git a/static/trees/deposits_xdai_10000_slice2.json.gz b/static/trees/deposits_xdai_10000_slice2.json.gz deleted file mode 100644 index 20c368b..0000000 Binary files a/static/trees/deposits_xdai_10000_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_10000_slice2.json.zip b/static/trees/deposits_xdai_10000_slice2.json.zip new file mode 100644 index 0000000..ca2cc26 Binary files /dev/null and b/static/trees/deposits_xdai_10000_slice2.json.zip differ diff --git a/static/trees/deposits_xdai_10000_slice3.json.gz b/static/trees/deposits_xdai_10000_slice3.json.gz deleted file mode 100644 index 26459b7..0000000 Binary files a/static/trees/deposits_xdai_10000_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_10000_slice3.json.zip b/static/trees/deposits_xdai_10000_slice3.json.zip new file mode 100644 index 0000000..e1d8a4a Binary files /dev/null and b/static/trees/deposits_xdai_10000_slice3.json.zip differ diff --git a/static/trees/deposits_xdai_10000_slice4.json.gz b/static/trees/deposits_xdai_10000_slice4.json.gz deleted file mode 100644 index 21e3dfd..0000000 Binary files a/static/trees/deposits_xdai_10000_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_10000_slice4.json.zip b/static/trees/deposits_xdai_10000_slice4.json.zip new file mode 100644 index 0000000..f21b88e Binary files /dev/null and b/static/trees/deposits_xdai_10000_slice4.json.zip differ diff --git a/static/trees/deposits_xdai_1000_bloom.json.gz b/static/trees/deposits_xdai_1000_bloom.json.gz deleted file mode 100644 index eb990f6..0000000 Binary files a/static/trees/deposits_xdai_1000_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_1000_bloom.json.zip b/static/trees/deposits_xdai_1000_bloom.json.zip new file mode 100644 index 0000000..ec76cc2 Binary files /dev/null and b/static/trees/deposits_xdai_1000_bloom.json.zip differ diff --git a/static/trees/deposits_xdai_1000_slice1.json.gz b/static/trees/deposits_xdai_1000_slice1.json.gz deleted file mode 100644 index 531c56c..0000000 Binary files a/static/trees/deposits_xdai_1000_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_1000_slice1.json.zip b/static/trees/deposits_xdai_1000_slice1.json.zip new file mode 100644 index 0000000..da3258e Binary files /dev/null and b/static/trees/deposits_xdai_1000_slice1.json.zip differ diff --git a/static/trees/deposits_xdai_1000_slice2.json.gz b/static/trees/deposits_xdai_1000_slice2.json.gz deleted file mode 100644 index 15a5d1f..0000000 Binary files a/static/trees/deposits_xdai_1000_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_1000_slice2.json.zip b/static/trees/deposits_xdai_1000_slice2.json.zip new file mode 100644 index 0000000..195044d Binary files /dev/null and b/static/trees/deposits_xdai_1000_slice2.json.zip differ diff --git a/static/trees/deposits_xdai_1000_slice3.json.gz b/static/trees/deposits_xdai_1000_slice3.json.gz deleted file mode 100644 index c59f6ab..0000000 Binary files a/static/trees/deposits_xdai_1000_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_1000_slice3.json.zip b/static/trees/deposits_xdai_1000_slice3.json.zip new file mode 100644 index 0000000..6b18e4b Binary files /dev/null and b/static/trees/deposits_xdai_1000_slice3.json.zip differ diff --git a/static/trees/deposits_xdai_1000_slice4.json.gz b/static/trees/deposits_xdai_1000_slice4.json.gz deleted file mode 100644 index b202ac8..0000000 Binary files a/static/trees/deposits_xdai_1000_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_1000_slice4.json.zip b/static/trees/deposits_xdai_1000_slice4.json.zip new file mode 100644 index 0000000..0fce4b7 Binary files /dev/null and b/static/trees/deposits_xdai_1000_slice4.json.zip differ diff --git a/static/trees/deposits_xdai_100_bloom.json.gz b/static/trees/deposits_xdai_100_bloom.json.gz deleted file mode 100644 index e97ecda..0000000 Binary files a/static/trees/deposits_xdai_100_bloom.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100_bloom.json.zip b/static/trees/deposits_xdai_100_bloom.json.zip new file mode 100644 index 0000000..ae01a50 Binary files /dev/null and b/static/trees/deposits_xdai_100_bloom.json.zip differ diff --git a/static/trees/deposits_xdai_100_slice1.json.gz b/static/trees/deposits_xdai_100_slice1.json.gz deleted file mode 100644 index a4f4b53..0000000 Binary files a/static/trees/deposits_xdai_100_slice1.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100_slice1.json.zip b/static/trees/deposits_xdai_100_slice1.json.zip new file mode 100644 index 0000000..f3fc61f Binary files /dev/null and b/static/trees/deposits_xdai_100_slice1.json.zip differ diff --git a/static/trees/deposits_xdai_100_slice2.json.gz b/static/trees/deposits_xdai_100_slice2.json.gz deleted file mode 100644 index ffc872f..0000000 Binary files a/static/trees/deposits_xdai_100_slice2.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100_slice2.json.zip b/static/trees/deposits_xdai_100_slice2.json.zip new file mode 100644 index 0000000..e66c408 Binary files /dev/null and b/static/trees/deposits_xdai_100_slice2.json.zip differ diff --git a/static/trees/deposits_xdai_100_slice3.json.gz b/static/trees/deposits_xdai_100_slice3.json.gz deleted file mode 100644 index 471e84b..0000000 Binary files a/static/trees/deposits_xdai_100_slice3.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100_slice3.json.zip b/static/trees/deposits_xdai_100_slice3.json.zip new file mode 100644 index 0000000..8542957 Binary files /dev/null and b/static/trees/deposits_xdai_100_slice3.json.zip differ diff --git a/static/trees/deposits_xdai_100_slice4.json.gz b/static/trees/deposits_xdai_100_slice4.json.gz deleted file mode 100644 index e1be01c..0000000 Binary files a/static/trees/deposits_xdai_100_slice4.json.gz and /dev/null differ diff --git a/static/trees/deposits_xdai_100_slice4.json.zip b/static/trees/deposits_xdai_100_slice4.json.zip new file mode 100644 index 0000000..2a43556 Binary files /dev/null and b/static/trees/deposits_xdai_100_slice4.json.zip differ diff --git a/store/application.js b/store/application.js index 1c9f4f3..7415345 100644 --- a/store/application.js +++ b/store/application.js @@ -3,7 +3,7 @@ import Web3 from 'web3' import networkConfig from '@/networkConfig' -import { cachedEventsLength, eventsType, httpConfig } from '@/constants' +import { cachedEventsLength, eventsType } from '@/constants' import MulticallABI from '@/abis/Multicall.json' import InstanceABI from '@/abis/Instance.abi.json' @@ -117,8 +117,7 @@ const getters = { const config = networkConfig[`netId${netId}`] const { url } = rootState.settings[`netId${netId}`].rpc const address = config.tokens[currency].instanceAddress[amount] - const httpProvider = new Web3.providers.HttpProvider(url, httpConfig) - const web3 = new Web3(httpProvider) + const web3 = new Web3(url) return new web3.eth.Contract(InstanceABI, address) }, multicallContract: (state, getters, rootState) => ({ netId }) => { @@ -259,7 +258,6 @@ const getters = { const actions = { setAndUpdateStatistic({ dispatch, commit }, { currency, amount }) { commit('SET_SELECTED_STATISTIC', { currency, amount }) - dispatch('updateSelectEvents') }, async updateSelectEvents({ dispatch, commit, state, rootGetters, getters }) { @@ -267,14 +265,15 @@ const actions = { const { currency, amount } = state.selectedStatistic const eventService = getters.eventsInterface.getService({ netId, amount, currency }) + const graphEvents = await eventService.getEventsFromGraph({ methodName: 'getStatistic' }) let statistic = graphEvents?.events - const latestDeposits = [] - if (!statistic || !statistic.length) { - statistic = [] + const fresh = await eventService.getStatisticsRpc({ eventsCount: 10 }) + + statistic = fresh || [] } const { nextDepositIndex, anonymitySet } = await dispatch('getLastDepositIndex', { @@ -285,6 +284,8 @@ const actions = { statistic = statistic.sort((a, b) => a.leafIndex - b.leafIndex) + const latestDeposits = [] + for (const event of statistic.slice(-10)) { latestDeposits.unshift({ index: event.leafIndex, @@ -357,7 +358,7 @@ const actions = { try { const module = await download({ contentType: 'string', - name: `events/encrypted_notes_${netId}.json.gz` + name: `events/encrypted_notes_${netId}.json.zip` }) if (module) { diff --git a/store/gasPrices.js b/store/gasPrices.js index 8145814..49a5ba3 100644 --- a/store/gasPrices.js +++ b/store/gasPrices.js @@ -32,7 +32,6 @@ export const getters = { const address = config.ovmGasPriceOracleContract if (address) { const web3 = new Web3(url) - return new web3.eth.Contract(OvmGasPriceOracleABI, address) } diff --git a/store/governance/gov.js b/store/governance/gov.js index 933d6df..5e7f69d 100644 --- a/store/governance/gov.js +++ b/store/governance/gov.js @@ -10,8 +10,6 @@ import networkConfig from '@/networkConfig' import GovernanceABI from '@/abis/Governance.abi.json' import AggregatorABI from '@/abis/Aggregator.abi.json' -import { httpConfig } from '@/constants' - const { numberToHex, toWei, fromWei, toBN, hexToNumber, hexToNumberString } = require('web3-utils') const state = () => { @@ -49,9 +47,7 @@ const getters = { }, getWeb3: (state, getters, rootState) => ({ netId }) => { const { url } = rootState.settings[`netId${netId}`].rpc - const httpProvider = new Web3.providers.HttpProvider(url, httpConfig) - - return new Web3(httpProvider) + return new Web3(url) }, govContract: (state, getters, rootState) => ({ netId }) => { const config = getters.getConfig({ netId }) diff --git a/store/loading.js b/store/loading.js index f087ed8..bba47e9 100644 --- a/store/loading.js +++ b/store/loading.js @@ -45,4 +45,4 @@ export const actions = { type: 'approve' }) } -} +} \ No newline at end of file diff --git a/store/relayer.js b/store/relayer.js index dfaaa52..0b7c725 100644 --- a/store/relayer.js +++ b/store/relayer.js @@ -3,7 +3,6 @@ import Web3 from 'web3' import BN from 'bignumber.js' import namehash from 'eth-ens-namehash' -import { httpConfig } from '@/constants' import { schema, relayerRegisterService } from '@/services' import { createChainIdState, parseNote, parseSemanticVersion } from '@/utils' @@ -86,9 +85,8 @@ export const state = () => { export const getters = { ethProvider: (state, getters, rootState) => { const { url } = rootState.settings.netId1.rpc - const httpProvider = new Web3.providers.HttpProvider(url, httpConfig) - return new Web3(httpProvider) + return new Web3(url) }, jobs: (state, getters, rootState, rootGetters) => (type) => { const netId = rootGetters['metamask/netId'] @@ -206,13 +204,7 @@ export const actions = { } const url = `${window.location.protocol}//${hostname}` - const reqConfig = { - headers: { - 'Content-Type': 'application/json, application/x-www-form-urlencoded' - }, - timeout: 10000 - } - const response = await axios.get(`${url}status`, reqConfig).catch(() => { + const response = await axios.get(`${url}status`, { timeout: 5000 }).catch(() => { throw new Error(this.app.i18n.t('canNotFetchStatusFromTheRelayer')) }) @@ -330,18 +322,8 @@ export const actions = { }) } catch { console.error('Method pickRandomRelayer has not picked relayer') - dispatch( - 'notice/addNotice', - { - notice: { - untranslatedTitle: 'Failed to fetch relayers', - type: 'warning' - }, - interval: 1500 - }, - { root: true } - ) } + commit('SET_IS_LOADING_RELAYERS', false) }, async getKnownRelayerData({ rootGetters, getters }, { relayerAddress, name }) { diff --git a/store/snark.js b/store/snark.js index 516ab1f..3aec732 100644 --- a/store/snark.js +++ b/store/snark.js @@ -1,7 +1,8 @@ /* eslint-disable no-console */ -import zlib from 'zlib' -import axios from 'axios' import Web3 from 'web3' +import Jszip from 'jszip' +import axios from 'axios' +import ENS, { getEnsAddress } from '@ensdomains/ensjs' import { detectMob } from '@/utils' import networkConfig from '@/networkConfig' @@ -9,6 +10,7 @@ import networkConfig from '@/networkConfig' const { APP_ENS_NAME } = process.env const groth16 = require('websnark/src/groth16') +const jszip = new Jszip() function buildGroth16() { const isMobile = detectMob() @@ -17,32 +19,31 @@ function buildGroth16() { } function getEns() { - const { url } = Object.values(networkConfig.netId1.rpcUrls)[0] - const provider = new Web3(url) - - return provider.eth.ens + const provider = new Web3.providers.HttpProvider(networkConfig.netId1.rpcUrls.Infura.url) + return new ENS({ provider, ensAddress: getEnsAddress('1') }) } async function getTornadoKeys(getProgress) { try { const keys = await Promise.all([ - download({ name: 'tornado.json.gz', contentType: 'string' }), - download({ name: 'tornadoProvingKey.bin.gz', contentType: 'arraybuffer', getProgress }) + download({ name: 'tornado.json.zip', contentType: 'string' }), + download({ name: 'tornadoProvingKey.bin.zip', contentType: 'arraybuffer', getProgress }) ]) - - return { circuit: JSON.parse(keys[0]), provingKey: keys[1].buffer } + return { circuit: JSON.parse(keys[0]), provingKey: keys[1] } } catch (err) { - console.log('ERR', err) throw err } } async function getIPFSIdFromENS(ensName) { try { - const ensInterface = getEns() - const { decoded } = await ensInterface.getContenthash(ensName) + const ens = getEns() - return decoded + const ensInterface = await ens.name(ensName) + const { value } = await ensInterface.getContent(ensName) + + const [, id] = value.split('://') + return id } catch (err) { throw new Error(err) } @@ -97,8 +98,11 @@ async function download({ name, contentType, getProgress, eventName = 'events' } // eslint-disable-next-line no-undef const prefix = __webpack_public_path__.slice(0, -7) const response = await fetchFile({ getProgress, url: prefix, name }) - const buffer = Buffer.from(await response.data.arrayBuffer()) - const content = zlib.inflateSync(buffer) + + const zip = await jszip.loadAsync(response.data) + const file = zip.file(name.replace(`${eventName}/`, '').slice(0, -4)) + + const content = await file.async(contentType) return content } catch (err) { diff --git a/store/torn.js b/store/torn.js index 7f6b020..c6dbee4 100644 --- a/store/torn.js +++ b/store/torn.js @@ -2,11 +2,11 @@ import Web3 from 'web3' import { toBN } from 'web3-utils' import tornABI from '../abis/ERC20.abi.json' -import PermitSigner from '../lib/Permit' import { isWalletRejection } from '@/utils' const { toWei, toHex, numberToHex } = require('web3-utils') +const { PermitSigner } = require('../lib/Permit') const state = () => { return { @@ -168,11 +168,11 @@ const actions = { } const permitSigner = new PermitSigner(domain, args) - const req = permitSigner.getReqPayload() + const message = permitSigner.getPayload() const callParams = { method: 'eth_signTypedData_v4', - params: [ethAccount, JSON.stringify(req)] + params: [ethAccount, JSON.stringify(message)] } dispatch( @@ -186,10 +186,18 @@ const actions = { { root: true } ) - const query = await this.$provider.sendRequest(callParams) - const { v, r, s, hex } = permitSigner.getSignature(query) + let signature = await this.$provider.sendRequest(callParams) + signature = signature.substring(2) + const r = '0x' + signature.substring(0, 64) + const s = '0x' + signature.substring(64, 128) + let v = parseInt(signature.substring(128, 130), 16) - console.log('signature', v, r, s, hex) + // fix ledger sign + if (v === 0 || v === 1) { + v = v + 27 + } + + console.log('signature', v, r, s, signature) // signature validation on contract await getters.tokenContract.methods diff --git a/utils/index.js b/utils/index.js index 566b88b..df30fec 100644 --- a/utils/index.js +++ b/utils/index.js @@ -8,12 +8,6 @@ export * from './stringUtils' export * from './numberUtils' export * from './instanceUtils' -export function flattenNArray(arr) { - return arr.reduce((flat, toFlatten) => { - return flat.concat(Array.isArray(toFlatten) ? flattenNArray(toFlatten) : toFlatten) - }, []) -} - export function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)) } diff --git a/yarn.lock b/yarn.lock index 779643d..be223c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1065,7 +1065,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.5.5": +"@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== @@ -1184,6 +1184,49 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@ensdomains/address-encoder@^0.1.7": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" + integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== + dependencies: + bech32 "^1.1.3" + blakejs "^1.1.0" + bn.js "^4.11.8" + bs58 "^4.0.1" + crypto-addr-codec "^0.1.7" + nano-base32 "^1.0.1" + ripemd160 "^2.0.2" + +"@ensdomains/ens@0.4.5": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== + dependencies: + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" + +"@ensdomains/ensjs@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.1.0.tgz#0a7296c1f3d735ef019320d863a7846a0760c460" + integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== + dependencies: + "@babel/runtime" "^7.4.4" + "@ensdomains/address-encoder" "^0.1.7" + "@ensdomains/ens" "0.4.5" + "@ensdomains/resolver" "0.2.4" + content-hash "^2.5.2" + eth-ens-namehash "^2.0.8" + ethers "^5.0.13" + js-sha3 "^0.8.0" + +"@ensdomains/resolver@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== + "@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.1": version "2.6.2" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.2.tgz#eb006c9329c75c80f634f340dc1719a5258244df" @@ -2109,6 +2152,14 @@ dependencies: defer-to-connect "^1.0.1" +"@ticket721/e712@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@ticket721/e712/-/e712-0.4.1.tgz#b9be3f5d9d01a8468e0a49eeed67fe4454c87582" + integrity sha512-JHqyb2HntsmLJ4PtlXQ2AoU+s42X1itRtxeCAlA1AxOMORXQudbhly9wvGhN/Hbcl8VYpfgLJKp4hK3AT6xDiw== + dependencies: + bn.js "5.1.1" + ethers "4.0.41" + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -3940,7 +3991,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bech32@1.1.4: +bech32@1.1.4, bech32@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== @@ -3955,6 +4006,11 @@ bfj@^6.1.1: hoopy "^0.1.4" tryer "^1.0.1" +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + big-integer@1.6.42: version "1.6.42" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.42.tgz#91623ae5ceeff9a47416c56c9440a66f12f534f1" @@ -4037,7 +4093,7 @@ bluebird@^3.1.1, bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== -bluebird@^3.5.0: +bluebird@^3.5.0, bluebird@^3.5.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -4052,6 +4108,11 @@ bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" + integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== + bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -4356,6 +4417,14 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +buffer@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + buffer@^4.3.0: version "4.9.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" @@ -4554,6 +4623,11 @@ camel-case@^4.1.1: pascal-case "^3.1.2" tslib "^2.0.3" +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -4912,6 +4986,15 @@ clipboard@^2.0.0: select "^1.1.2" tiny-emitter "^2.0.0" +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -5394,6 +5477,19 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +crypto-addr-codec@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz#e16cea892730178fe25a38f6d15b680cab3124ae" + integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== + dependencies: + base-x "^3.0.8" + big-integer "1.6.36" + blakejs "^1.1.0" + bs58 "^4.0.1" + ripemd160-min "0.0.6" + safe-buffer "^5.2.0" + sha3 "^2.1.1" + crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -5731,7 +5827,7 @@ debug@^4.2.0: dependencies: ms "2.1.2" -decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -6080,6 +6176,19 @@ electron-to-chromium@^1.4.84: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.86.tgz#90fe4a9787f48d6522957213408e08a8126b2ebc" integrity sha512-EVTZ+igi8x63pK4bPuA95PXIs2b2Cowi3WQwI9f9qManLiZJOD1Lash1J3W4TvvcUCcIR4o/rgi9o8UicXSO+w== +elliptic@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -6961,7 +7070,22 @@ ethereumjs-vm@^2.3.4: rustbn.js "~0.2.0" safe-buffer "^5.1.1" -ethers@^5.5.1: +ethers@4.0.41: + version "4.0.41" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.41.tgz#a0cff526f08c2e08c525cf82ef4483f6333b8000" + integrity sha512-QpW2CPZajquwiA7rVDozMksOuvdUBKIruamAakt0++EKBB/VWtLB9zSRZDInLDpp9fZYgOT/0trPD38r6CzLIg== + dependencies: + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.5.2" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^5.0.13, ethers@^5.5.1: version "5.6.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.1.tgz#a56cd67f1595b745dc3dde0ccf2b5de53a41a6d0" integrity sha512-qtl/2W+dwmUa5Z3JqwsbV3JEBZZHNARe5K/A2ePcNAuhJYnEKIgGOT/O9ouPwBijSqVoQnmQMzi5D48LFNOY2A== @@ -7658,6 +7782,17 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -8075,6 +8210,11 @@ graceful-fs@^4.1.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.1.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -8265,6 +8405,14 @@ hash-sum@^2.0.0: resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -8502,6 +8650,11 @@ ieee754@^1.1.13, ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -8539,6 +8692,11 @@ immediate@^3.2.3: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + immutable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" @@ -8718,6 +8876,11 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -9199,6 +9362,11 @@ is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + is-weakref@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -9684,16 +9852,16 @@ js-beautify@^1.6.14: mkdirp "~0.5.1" nopt "~4.0.1" +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -9879,6 +10047,13 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -9913,6 +10088,16 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jszip@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6" + integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + set-immediate-shim "~1.0.1" + keccak@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" @@ -9968,6 +10153,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -10003,6 +10195,13 @@ launch-editor@^2.2.1: chalk "^2.3.0" shell-quote "^1.6.1" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -10078,6 +10277,24 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -10166,6 +10383,11 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + lodash.camelcase@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -10450,6 +10672,11 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -10898,6 +11125,11 @@ nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +nano-base32@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" + integrity sha1-ulSMh578+5DaHE2eCX20pGySVe8= + nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" @@ -11516,6 +11748,13 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -11665,6 +11904,11 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -11859,6 +12103,15 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -13081,6 +13334,14 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -13097,6 +13358,15 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -13465,6 +13735,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -13583,14 +13858,19 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: +ripemd160-min@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== @@ -13777,6 +14057,11 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -13947,7 +14232,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@^1.0.1: +set-immediate-shim@^1.0.1, set-immediate-shim@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= @@ -13962,6 +14247,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= + setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -13985,6 +14275,13 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha3@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -14146,6 +14443,17 @@ snapdragon@^0.8.1: keccak "^2.0.0" yargs "^12.0.5" +solc@^0.4.20: + version "0.4.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -14513,6 +14821,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -14756,6 +15071,11 @@ test-exclude@^5.2.3: read-pkg-up "^4.0.0" require-main-filename "^2.0.0" +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -15349,6 +15669,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= + uuid@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -16066,7 +16391,7 @@ web3-utils@1.5.2: randombytes "^2.1.0" utf8 "3.0.0" -web3-utils@1.7.1, web3-utils@^1.3.0: +web3-utils@1.7.1, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: version "1.7.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.1.tgz#77d8bacaf426c66027d8aa4864d77f0ed211aacd" integrity sha512-fef0EsqMGJUgiHPdX+KN9okVWshbIumyJPmR+btnD1HgvoXijKEkuKBv0OmUqjbeqmLKP2/N9EiXKJel5+E1Dw== @@ -16291,6 +16616,11 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -16343,6 +16673,11 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -16525,6 +16860,11 @@ xmldom@^0.1.22: resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -16544,6 +16884,11 @@ xxhashjs@^0.2.1: dependencies: cuint "^0.2.2" +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + "y18n@^3.2.1 || ^4.0.0": version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -16603,6 +16948,14 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -16653,6 +17006,26 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + zen-observable@^0.8.14: version "0.8.15" resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"