fix: goerli note account
This commit is contained in:
parent
704c853a3c
commit
9f8aad114c
6 changed files with 93 additions and 113 deletions
|
@ -1,4 +1,4 @@
|
|||
import { graph } from '@/services'
|
||||
import { getEventsFromBlockPart } from './utils'
|
||||
|
||||
export async function checkExistAccount({ getters, dispatch, rootState, rootGetters }) {
|
||||
const { ethAccount, netId } = rootState.metamask
|
||||
|
@ -12,10 +12,15 @@ export async function checkExistAccount({ getters, dispatch, rootState, rootGett
|
|||
const web3 = this.$provider.getWeb3(rpc.url)
|
||||
const currentBlockNumber = await web3.eth.getBlockNumber()
|
||||
|
||||
const isExist = await getEventsFromBlockPart(
|
||||
{ getters, dispatch, rootState, rootGetters },
|
||||
{ netId, currentBlockNumber, address: ethAccount }
|
||||
)
|
||||
const events = await getEventsFromBlockPart({
|
||||
netId,
|
||||
currentBlockNumber,
|
||||
address: ethAccount,
|
||||
echoContract: getters.echoContract
|
||||
})
|
||||
|
||||
const isExist = Boolean(Array.isArray(events) && Boolean(events.length))
|
||||
|
||||
console.log('isExist', isExist)
|
||||
|
||||
dispatch('createMutation', {
|
||||
|
@ -26,52 +31,3 @@ export async function checkExistAccount({ getters, dispatch, rootState, rootGett
|
|||
throw new Error(`Method checkExistAccount has error: ${err.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async function getEventsFromBlockPart(
|
||||
{ getters, rootGetters, dispatch },
|
||||
{ address, currentBlockNumber, netId }
|
||||
) {
|
||||
try {
|
||||
const { events: graphEvents, lastSyncBlock } = await graph.getNoteAccounts({ address, netId })
|
||||
|
||||
const blockDifference = Math.ceil(currentBlockNumber - lastSyncBlock)
|
||||
let blockRange = 1
|
||||
|
||||
if (Number(netId) === 56) {
|
||||
blockRange = 4950
|
||||
}
|
||||
|
||||
let numberParts = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockRange)
|
||||
const part = Math.ceil(blockDifference / numberParts)
|
||||
|
||||
let events = []
|
||||
|
||||
let fromBlock = lastSyncBlock
|
||||
let toBlock = lastSyncBlock + part
|
||||
|
||||
if (toBlock >= currentBlockNumber) {
|
||||
toBlock = 'latest'
|
||||
numberParts = 1
|
||||
}
|
||||
|
||||
for (let i = 0; i < numberParts; i++) {
|
||||
const partOfEvents = await getters.echoContract.getEvents({
|
||||
fromBlock,
|
||||
toBlock,
|
||||
address
|
||||
})
|
||||
if (partOfEvents) {
|
||||
events = events.concat(partOfEvents)
|
||||
}
|
||||
fromBlock = toBlock
|
||||
toBlock += part
|
||||
}
|
||||
|
||||
events = graphEvents.concat(events)
|
||||
|
||||
return Boolean(Array.isArray(events) && Boolean(events.length))
|
||||
} catch (err) {
|
||||
console.log(`getEventsFromBlock has error: ${err.message}`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { graph } from '@/services'
|
||||
import { getEventsFromBlockPart } from '../utils'
|
||||
import { unpackEncryptedMessage } from '@/utils'
|
||||
|
||||
export async function getAccountFromAddress({ getters, rootGetters }, address) {
|
||||
|
@ -9,7 +9,12 @@ export async function getAccountFromAddress({ getters, rootGetters }, address) {
|
|||
const web3 = this.$provider.getWeb3(rpc.url)
|
||||
const currentBlockNumber = await web3.eth.getBlockNumber()
|
||||
|
||||
const events = await getEventsFromBlockPart({ getters }, { netId, currentBlockNumber, address })
|
||||
const events = await getEventsFromBlockPart({
|
||||
netId,
|
||||
currentBlockNumber,
|
||||
address,
|
||||
echoContract: getters.echoContract
|
||||
})
|
||||
|
||||
const [lastEvent] = events.slice(-1)
|
||||
|
||||
|
@ -31,50 +36,3 @@ export async function getAccountFromAddress({ getters, rootGetters }, address) {
|
|||
throw new Error(`Method getAccountFromAddress has error: ${err.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async function getEventsFromBlockPart({ getters }, { address, currentBlockNumber, netId }) {
|
||||
try {
|
||||
const { events: graphEvents, lastSyncBlock } = await graph.getNoteAccounts({ address, netId })
|
||||
|
||||
const blockDifference = Math.ceil(currentBlockNumber - lastSyncBlock)
|
||||
|
||||
let blockRange = 1
|
||||
|
||||
if (Number(netId) === 56) {
|
||||
blockRange = 4950
|
||||
}
|
||||
|
||||
let numberParts = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockRange)
|
||||
const part = Math.ceil(blockDifference / numberParts)
|
||||
|
||||
let events = []
|
||||
|
||||
let fromBlock = lastSyncBlock
|
||||
let toBlock = lastSyncBlock + part
|
||||
|
||||
if (toBlock >= currentBlockNumber) {
|
||||
toBlock = 'latest'
|
||||
numberParts = 1
|
||||
}
|
||||
|
||||
for (let i = 0; i < numberParts; i++) {
|
||||
const partOfEvents = await getters.echoContract.getEvents({
|
||||
fromBlock,
|
||||
toBlock,
|
||||
address
|
||||
})
|
||||
if (partOfEvents) {
|
||||
events = events.concat(partOfEvents)
|
||||
}
|
||||
fromBlock = toBlock
|
||||
toBlock += part
|
||||
}
|
||||
|
||||
events = graphEvents.concat(events)
|
||||
|
||||
return events
|
||||
} catch (err) {
|
||||
console.log(`getEventsFromBlock has error: ${err.message}`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
import { graph } from '@/services'
|
||||
import networkConfig from '@/networkConfig'
|
||||
|
||||
function createMutation({ commit, rootState }, { type, payload }) {
|
||||
const { netId } = rootState.metamask
|
||||
|
||||
|
@ -11,4 +14,59 @@ function clearState({ dispatch }, { key }) {
|
|||
})
|
||||
}
|
||||
|
||||
export { clearState, createMutation }
|
||||
async function getEventsFromBlockPart({ echoContract, address, currentBlockNumber, netId }) {
|
||||
try {
|
||||
const { events: graphEvents, lastSyncBlock } = await graph.getNoteAccounts({ address, netId })
|
||||
|
||||
if (graphEvents.length) {
|
||||
return graphEvents
|
||||
}
|
||||
|
||||
let { NOTE_ACCOUNT_BLOCK: fromBlock } = networkConfig[`netId${netId}`].constants
|
||||
if (lastSyncBlock) {
|
||||
fromBlock = lastSyncBlock
|
||||
}
|
||||
|
||||
const blockDifference = Math.ceil(currentBlockNumber - lastSyncBlock)
|
||||
|
||||
let blockRange = blockDifference
|
||||
|
||||
if (Number(netId) === 56) {
|
||||
blockRange = 4950
|
||||
}
|
||||
|
||||
let numberParts = blockDifference === 0 ? 1 : Math.ceil(blockDifference / blockRange)
|
||||
const part = Math.ceil(blockDifference / numberParts)
|
||||
|
||||
let events = []
|
||||
|
||||
let toBlock = lastSyncBlock + part
|
||||
|
||||
if (toBlock >= currentBlockNumber) {
|
||||
toBlock = 'latest'
|
||||
numberParts = 1
|
||||
}
|
||||
|
||||
for (let i = 0; i < numberParts; i++) {
|
||||
const partOfEvents = await echoContract.getEvents({
|
||||
fromBlock,
|
||||
toBlock,
|
||||
address
|
||||
})
|
||||
if (partOfEvents) {
|
||||
events = events.concat(partOfEvents)
|
||||
}
|
||||
fromBlock = toBlock
|
||||
toBlock += part
|
||||
}
|
||||
|
||||
events = graphEvents.concat(events)
|
||||
|
||||
return events
|
||||
} catch (err) {
|
||||
console.log(`getEventsFromBlock has error: ${err.message}`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export { clearState, createMutation, getEventsFromBlockPart }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue