Compare commits

..

No commits in common. "c4b5f69b72254c62e6ad6a5c66ddecfff574a687" and "8379696a921dc64da65b43ae358295c7877fadce" have entirely different histories.

205 changed files with 70 additions and 79 deletions

@ -1,7 +1,13 @@
PINATA_API_KEY=
PINATA_SECRET_API_KEY=
CHAINNODES_KEY=
INFURA_KEY=
ALCHEMY_MAINNET_KEY=
ALCHEMY_POLYGON_KEY=
ALCHEMY_OPTIMISM_KEY=
ALCHEMY_ARBITRUM_KEY=
ALCHEMY_GOERLI_KEY=
WC_BRIDGE=

@ -32,7 +32,12 @@ jobs:
- name: Build
run: yarn generate
env:
CHAINNODES_KEY: ${{ secrets.CHAINNODES_KEY }}
INFURA_KEY: ${{ secrets.INFURA_KEY }}
ALCHEMY_MAINNET_KEY: ${{ secrets.ALCHEMY_MAINNET_KEY }}
ALCHEMY_POLYGON_KEY: ${{ secrets.ALCHEMY_POLYGON_KEY }}
ALCHEMY_OPTIMISM_KEY: ${{ secrets.ALCHEMY_OPTIMISM_KEY }}
ALCHEMY_ARBITRUM_KEY: ${{ secrets.ALCHEMY_ARBITRUM_KEY }}
ALCHEMY_GOERLI_KEY: ${{ secrets.ALCHEMY_GOERLI_KEY }}
WC_BRIDGE: ${{ secrets.WC_BRIDGE }}
OLD_STORE_NAME: ${{ secrets.OLD_STORE_NAME }}
STORE_NAME: ${{ secrets.STORE_NAME }}

@ -72,8 +72,6 @@ export async function _encryptFormatTx({ dispatch, getters, rootGetters }, { eve
}
}
dispatch('loading/disable', {}, { root: true })
return formattingEvents(result)
}

@ -1,5 +1,6 @@
export const blockSyncInterval = 10000
export const enabledChains = ['1', '5', '10', '56', '100', '137', '42161', '43114']
export const enabledChains = ['1', '10', '56', '100', '137', '43114', '42161']
export const chainsWithEncryptedNotes = ['1', '5', '56', '100', '137']
export default {
netId1: {
rpcCallRetryAttempt: 15,
@ -77,7 +78,9 @@ export default {
usdc: {
instanceAddress: {
'100': '0xd96f2B1c14Db8458374d9Aca76E26c3D18364307',
'1000': '0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D'
'1000': '0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D',
'10000': '',
'100000': ''
},
tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
symbol: 'USDC',
@ -87,7 +90,9 @@ export default {
usdt: {
instanceAddress: {
'100': '0x169AD27A470D064DEDE56a2D3ff727986b15D52B',
'1000': '0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f'
'1000': '0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f',
'10000': '',
'100000': ''
},
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
symbol: 'USDT',
@ -98,7 +103,8 @@ export default {
instanceAddress: {
'0.1': '0x178169B423a011fff22B9e3F3abeA13414dDD0F1',
'1': '0x610B717796ad172B316836AC95a2ffad065CeaB4',
'10': '0xbB93e510BbCD0B7beb5A853875f9eC60275CF498'
'10': '0xbB93e510BbCD0B7beb5A853875f9eC60275CF498',
'100': ''
},
tokenAddress: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
symbol: 'WBTC',
@ -401,17 +407,17 @@ export default {
multicall: '0xe86e3989c74293Acc962156cd3F525c07b6a1B6e',
echoContractAccount: '0xa75BF2815618872f155b7C4B0C81bF990f5245E4',
rpcUrls: {
publicRpc1: {
name: 'Avalanche RPC',
url: 'https://endpoints.omniatech.io/v1/avax/mainnet/public'
},
meowRPC: {
name: 'Meow RPC',
url: 'https://avax.meowrpc.com'
},
communityRPC: {
name: 'Tornado RPC',
url: 'https://avalanche-rpc.tornado.ws/ext/bc/C/rpc'
},
publicRpc1: {
name: 'Avalanche RPC',
url: 'https://api.avax.network/ext/bc/C/rpc'
},
oneRpc: {
name: '1RPC',
ulr: 'https://1rpc.io/avax/'
}
},
tokens: {
@ -499,7 +505,9 @@ export default {
usdc: {
instanceAddress: {
'100': '0x05E0b5B40B7b66098C2161A5EE11C5740A3A7C45',
'1000': '0x23173fE8b96A4Ad8d2E17fB83EA5dcccdCa1Ae52'
'1000': '0x23173fE8b96A4Ad8d2E17fB83EA5dcccdCa1Ae52',
'10000': '',
'100000': ''
},
tokenAddress: '0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C',
symbol: 'USDC',
@ -509,7 +517,9 @@ export default {
usdt: {
instanceAddress: {
'100': '0x538Ab61E8A9fc1b2f93b3dd9011d662d89bE6FE6',
'1000': '0x94Be88213a387E992Dd87DE56950a9aef34b9448'
'1000': '0x94Be88213a387E992Dd87DE56950a9aef34b9448',
'10000': '',
'100000': ''
},
tokenAddress: '0xb7FC2023D96AEa94Ba0254AA5Aeb93141e4aad66',
symbol: 'USDT',
@ -520,7 +530,8 @@ export default {
instanceAddress: {
'0.1': '0x242654336ca2205714071898f67E254EB49ACdCe',
'1': '0x776198CCF446DFa168347089d7338879273172cF',
'10': '0xeDC5d01286f99A066559F60a585406f3878a033e'
'10': '0xeDC5d01286f99A066559F60a585406f3878a033e',
'100': ''
},
tokenAddress: '0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05',
symbol: 'WBTC',

@ -187,7 +187,12 @@ export default {
new webpack.IgnorePlugin(/worker_threads/),
new webpack.DefinePlugin({
'process.env': JSON.stringify({
CHAINNODES_KEY: process.env.CHAINNODES_KEY,
INFURA_KEY: process.env.INFURA_KEY,
ALCHEMY_MAINNET_KEY: process.env.ALCHEMY_MAINNET_KEY,
ALCHEMY_POLYGON_KEY: process.env.ALCHEMY_POLYGON_KEY,
ALCHEMY_OPTIMISM_KEY: process.env.ALCHEMY_OPTIMISM_KEY,
ALCHEMY_ARBITRUM_KEY: process.env.ALCHEMY_ARBITRUM_KEY,
ALCHEMY_GOERLI_KEY: process.env.ALCHEMY_GOERLI_KEY,
WC_BRIDGE: process.env.WC_BRIDGE,
OLD_STORE_NAME: process.env.OLD_STORE_NAME,
STORE_NAME: process.env.STORE_NAME,
@ -225,7 +230,7 @@ export default {
},
provider: {
rpcUrl: `https://mainnet.chainnodes.org/${process.env.CHAINNODES_KEY}`
rpcUrl: `https://mainnet.infura.io/v3/${process.env.INFURA_KEY}`
},
// todo make custom loading page

@ -39,6 +39,10 @@ export async function getPastEvents({ type, fromBlock, netId, events, contractAt
let [{ url: rpcUrl }] = Object.values(networkConfig[`netId${netId}`].rpcUrls)
if (netId === '5') {
rpcUrl = 'https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'
}
const provider = new Web3.providers.HttpProvider(rpcUrl)
const web3 = new Web3(provider)
const contract = new web3.eth.Contract(...contractAttrs)

@ -1,6 +1,6 @@
import { uniqBy } from 'lodash'
import networkConfig, { enabledChains } from '../networkConfig'
import networkConfig, { enabledChains, chainsWithEncryptedNotes } from '../networkConfig'
import { loadCachedEvents, save } from './helpers'
@ -68,7 +68,7 @@ async function main() {
for (let i = 0; i < enabledChains.length; i++) {
const netId = enabledChains[i]
updateEncrypted(netId)
if (netId === chainsWithEncryptedNotes[i]) updateEncrypted(netId)
await updateCommon(netId)
}

@ -2,7 +2,7 @@ import Web3 from 'web3'
import graph from '@/services/graph'
import { download } from '@/store/snark'
import networkConfig, { enabledChains, blockSyncInterval } from '@/networkConfig'
import networkConfig, { enabledChains } from '@/networkConfig'
import InstanceABI from '@/abis/Instance.abi.json'
import { CONTRACT_INSTANCES, eventsType, httpConfig } from '@/constants'
import { sleep, flattenNArray, formatEvents, capitalizeFirstLetter } from '@/utils'
@ -178,7 +178,7 @@ class EventService {
return events
}
const blockRange = Math.floor(blockSyncInterval / 2) - 1
const blockRange = 4950
const fromBlock = deployedBlock
const { blockDifference, currentBlockNumber } = await this.getBlocksDiff({ fromBlock })
@ -244,7 +244,7 @@ class EventService {
}
}
getPastEvents({ fromBlock, toBlock, type }, shouldRetry = false, retries = 0) {
getPastEvents({ fromBlock, toBlock, type }, shouldRetry = false, i = 0) {
return new Promise((resolve, reject) => {
this.contract
.getPastEvents(capitalizeFirstLetter(type), {
@ -253,23 +253,13 @@ class EventService {
})
.then((events) => resolve(events))
.catch((err) => {
retries++
// If provider.getBlockNumber returned last block that isn't accepted (happened on Avalanche/Gnosis),
// get events to last accepted block
if (err.message.includes('after last accepted block')) {
const acceptedBlock = parseInt(err.message.split('after last accepted block ')[1])
toBlock = acceptedBlock
// Retries to 0, because it is not RPC error
retries = 0
}
i = i + 1
// maximum 5 second buffer for rate-limiting
if (shouldRetry) {
const shouldRetryAgain = retries < 5
const isRetry = i !== 5
sleep(1000 * retries).then(() =>
this.getPastEvents({ fromBlock, toBlock, type }, shouldRetryAgain, retries)
sleep(1000 * i).then(() =>
this.getPastEvents({ fromBlock, toBlock, type }, isRetry, i)
.then((events) => resolve(events))
.catch((_) => resolve(undefined))
)
@ -334,18 +324,19 @@ class EventService {
async getBatchEventsFromRpc({ fromBlock, type }) {
try {
const batchSize = 10
const blockRange = 10000
let [events, failed] = [[], []]
let lastBlock = fromBlock
const { blockDifference, currentBlockNumber } = await this.getBlocksDiff({ fromBlock })
const batchDigest = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockSyncInterval)
const batchDigest = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockRange)
const blockDenom = Math.ceil(blockDifference / batchDigest)
const batchCount = Math.ceil(batchDigest / batchSize)
if (fromBlock < currentBlockNumber) {
this.updateEventProgress(0, type)
await this.updateEventProgress(0, type)
for (let batchIndex = 0; batchIndex < batchCount; batchIndex++) {
const isLastBatch = batchIndex === batchCount - 1
@ -374,7 +365,7 @@ class EventService {
throw new Error('Failed to batch events')
}
}
this.updateEventProgress(progressIndex / batchCount, type)
await this.updateEventProgress(progressIndex / batchCount, type)
}
return {
@ -392,10 +383,11 @@ class EventService {
async getEventsFromRpc({ fromBlock, type }) {
try {
const { blockDifference } = await this.getBlocksDiff({ fromBlock })
const blockRange = 10000
let events
if (blockDifference < blockSyncInterval) {
if (blockDifference < blockRange) {
const rpcEvents = await this.getEventsPartFromRpc({ fromBlock, toBlock: 'latest', type })
events = rpcEvents?.events || []
} else {

@ -1,2 +0,0 @@
xÚ}ĐËjSQŕůyŠÍwđ_öËĚÄůâ`_i0&<26>¦ HßÝA-µ|_”~.)Ą´ŢŻë.­đCÄ
î­H=°m]¶,ŃöčĐ'R4µăáăŔőáµ7ÇXwiEÔ@Žěoy=_Ű·ĎĎß븭»<14>ŞDżłËóů|š§qűTž_ďq W±^<5E>J'<27>)-¬UíE´»ˇ)ąőaS©<53>RT\ŮU‡ľÝŢoĺňTÚýt˝üŻ Ęv'"˛ÜÍĘłeŤě•y ˘™zD*MÝ:4µG”uIéĺá_3lđDŽ®yşđFĽ/[Ű:€°Ú1äPŃĘ_fLh¨ŮÉB˙c†„úZés+G#Ă<>HÓ}­¤AÓ†9<14>ŽŤjs*śGŘśď˘ĺˇDx<08>MŇ>Ů@ϢӢ!dć†ÔÚ@'Ţ˝K†N„ëŇËňuůAČťŁ

@ -1,2 +0,0 @@
x<EFBFBD>ֱ1
€0 @ׁ»<D781>9C<39>$ַ)₪¬´U0המ¾<17>h<74><EFBFBD>?C7¡ת|<7C>^4¨«5»׀Ha <0A>;´<>~

@ -1,2 +0,0 @@
ÁK
ƒ0…ѽ|ã;øÕ˜Ê]Ž!”:ðÑBCöî9<C3AE>ž³xã1ÄYÿ¿ÄZ¯o-?ÜXïm+n]Ü{½ÜbÀ9‰/bÂ!NbÆ!2ŽÞûsý

Some files were not shown because too many files have changed in this diff Show More