Add protection from abusing relayers (force spending fee for reverted tx): fail if address is invalid or smart-contract (not EOA)
This commit is contained in:
parent
03c71f28bb
commit
1e99a136cc
@ -2,7 +2,7 @@ require('dotenv').config()
|
|||||||
|
|
||||||
const tornConfig = require('@tornado/tornado-config')
|
const tornConfig = require('@tornado/tornado-config')
|
||||||
|
|
||||||
const { jobType, networkConfig } = require('./constants')
|
const { networkConfig } = require('./constants')
|
||||||
|
|
||||||
const netId = Number(process.env.NET_ID) || 56
|
const netId = Number(process.env.NET_ID) || 56
|
||||||
const instances = tornConfig.instances[netId]
|
const instances = tornConfig.instances[netId]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const Web3 = require('web3')
|
const Web3 = require('web3')
|
||||||
const { toBN, fromWei } = require('web3-utils')
|
const { toBN, fromWei, isAddress, toChecksumAddress } = require('web3-utils')
|
||||||
const { redis } = require('./modules/redis')
|
const { redis } = require('./modules/redis')
|
||||||
const proxyLightABI = require('../abis/proxyLightABI.json')
|
const proxyLightABI = require('../abis/proxyLightABI.json')
|
||||||
const { queue } = require('./queue')
|
const { queue } = require('./queue')
|
||||||
@ -87,6 +87,14 @@ async function getTxObject({ data }) {
|
|||||||
return { ...incompleteTx, gasLimit, gasPrice }
|
return { ...incompleteTx, gasLimit, gasPrice }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function checkRecipient({ data }) {
|
||||||
|
const recipient = data.args[2]
|
||||||
|
if (!isAddress(recipient)) throw new Error('Recipient address is invalid')
|
||||||
|
|
||||||
|
const addressCode = await web3.eth.getCode(toChecksumAddress(recipient))
|
||||||
|
if (addressCode !== '0x') throw new Error('Recipient cannot be a smart-contract, only EOA')
|
||||||
|
}
|
||||||
|
|
||||||
async function processJob(job) {
|
async function processJob(job) {
|
||||||
try {
|
try {
|
||||||
if (!jobType[job.data.type]) {
|
if (!jobType[job.data.type]) {
|
||||||
@ -104,6 +112,7 @@ async function processJob(job) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function submitTx(job) {
|
async function submitTx(job) {
|
||||||
|
await checkRecipient(job)
|
||||||
const tx = await getTxObject(job)
|
const tx = await getTxObject(job)
|
||||||
await checkTornadoFee(job, tx)
|
await checkTornadoFee(job, tx)
|
||||||
currentTx = await txManager.createTx(tx)
|
currentTx = await txManager.createTx(tx)
|
||||||
|
Loading…
Reference in New Issue
Block a user