Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const unvote = async (transaction, oldOwner) => {
let block = {}
const {candidate, blockNumber} = transaction.data
if (!candidate, !blockNumber) {
return {answer: false, cause: rejectCauses.failData}
}
let value = typeof transaction.tokenId === 'string'
? 1 : transaction.tokenId.length
let blockKey = 'block' + blockNumber.toString(10)
try {
block = (new Block(await redis.getAsync(Buffer.from(blockKey))))
} catch (error) {
logger.error(error.toString())
return {answer: false, cause: rejectCauses.failData}
}
let tx = block.getTxByTokenId(transaction.tokenId)
if (!tx) {
return {answer: false, cause: rejectCauses.failData}
}
let stakeOwner = await web3.eth.personal.ecRecover(tx
.getHash(true).toString('hex'),
ethUtil.addHexPrefix(tx.signature.toString('hex')))
if (stakeOwner != oldOwner) {
return {answer: false, cause: rejectCauses.failData}
}
let stake = {voter: oldOwner, candidate, value}
stateValidators.toLowerStake(stake)
return {answer: true}
}