2019-05-08 16:12:02 +03:00
|
|
|
require('dotenv').config()
|
|
|
|
const logger = require('./logger')('eventsStats')
|
|
|
|
const eventsInfo = require('./utils/events')
|
|
|
|
|
|
|
|
function compareDepositsHome(foreign) {
|
|
|
|
return homeDeposit => {
|
|
|
|
return (
|
|
|
|
foreign.filter(foreignDeposit => {
|
|
|
|
return (
|
|
|
|
foreignDeposit.returnValues.transactionHash === homeDeposit.transactionHash &&
|
|
|
|
foreignDeposit.returnValues.recipient === homeDeposit.returnValues.recipient &&
|
|
|
|
foreignDeposit.returnValues.value === homeDeposit.returnValues.value
|
|
|
|
)
|
|
|
|
}).length === 0
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function compareDepositsForeign(home) {
|
|
|
|
return foreignDeposit => {
|
|
|
|
return (
|
|
|
|
home.filter(homeDeposit => {
|
|
|
|
return (
|
|
|
|
homeDeposit.transactionHash === foreignDeposit.returnValues.transactionHash &&
|
|
|
|
homeDeposit.returnValues.recipient === foreignDeposit.returnValues.recipient &&
|
|
|
|
homeDeposit.returnValues.value === foreignDeposit.returnValues.value
|
|
|
|
)
|
|
|
|
}).length === 0
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function compareTransferHome(foreign) {
|
|
|
|
return homeDeposit => {
|
|
|
|
return (
|
|
|
|
foreign.filter(foreignDeposit => {
|
|
|
|
return (
|
|
|
|
homeDeposit.returnValues.transactionHash === foreignDeposit.transactionHash &&
|
|
|
|
homeDeposit.returnValues.recipient === foreignDeposit.returnValues.from &&
|
|
|
|
homeDeposit.returnValues.value === foreignDeposit.returnValues.value
|
|
|
|
)
|
|
|
|
}).length === 0
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function compareTransferForeign(home) {
|
|
|
|
return foreignDeposit => {
|
|
|
|
return (
|
|
|
|
home.filter(homeDeposit => {
|
|
|
|
return (
|
|
|
|
foreignDeposit.transactionHash === homeDeposit.returnValues.transactionHash &&
|
|
|
|
foreignDeposit.returnValues.from === homeDeposit.returnValues.recipient &&
|
|
|
|
foreignDeposit.returnValues.value === homeDeposit.returnValues.value
|
|
|
|
)
|
|
|
|
}).length === 0
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async function main() {
|
2019-05-30 21:05:36 +03:00
|
|
|
const {
|
|
|
|
foreignDeposits,
|
|
|
|
homeDeposits,
|
|
|
|
homeWithdrawals,
|
|
|
|
foreignWithdrawals,
|
|
|
|
isExternalErc20
|
|
|
|
} = await eventsInfo()
|
2019-05-08 16:12:02 +03:00
|
|
|
|
2019-05-30 21:05:36 +03:00
|
|
|
const onlyInHomeDeposits = homeDeposits.filter(compareDepositsHome(foreignDeposits))
|
|
|
|
const onlyInForeignDeposits = foreignDeposits
|
|
|
|
.concat([])
|
|
|
|
.filter(compareDepositsForeign(homeDeposits))
|
2019-05-08 16:12:02 +03:00
|
|
|
|
2019-05-30 21:05:36 +03:00
|
|
|
const onlyInHomeWithdrawals = isExternalErc20
|
|
|
|
? homeWithdrawals.filter(compareTransferHome(foreignWithdrawals))
|
|
|
|
: homeWithdrawals.filter(compareDepositsForeign(foreignWithdrawals))
|
|
|
|
const onlyInForeignWithdrawals = isExternalErc20
|
|
|
|
? foreignWithdrawals.filter(compareTransferForeign(homeWithdrawals))
|
|
|
|
: foreignWithdrawals.filter(compareDepositsHome(homeWithdrawals))
|
2019-05-08 16:12:02 +03:00
|
|
|
|
2019-05-30 21:05:36 +03:00
|
|
|
logger.debug('Done')
|
|
|
|
return {
|
|
|
|
onlyInHomeDeposits,
|
|
|
|
onlyInForeignDeposits,
|
|
|
|
onlyInHomeWithdrawals,
|
|
|
|
onlyInForeignWithdrawals,
|
|
|
|
lastChecked: Math.floor(Date.now() / 1000)
|
2019-05-08 16:12:02 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = main
|