ethQuery.getBlockByNumber(blockRef, false, (err, blockParams) => { if (err) return end(err) // create block const block = blockFromRpc(blockParams) runVm(req, block, (err, results) => { if (err) return end(err) const returnValue = results.vm.return ? '0x' + results.vm.return.toString('hex') : '0x' res.result = returnValue end() }) })
function getSigner(block) { var sealers = block.extraData if (sealers.length <= 130) return undefined var sig = ethUtils.fromRpcSig('0x' + sealers.substring(sealers.length - 130, sealers.length)) // remove signature block.extraData = block.extraData.substring(0, block.extraData.length - 130) var blk = ethBlock(block) blk.header.difficulty[0] = block.difficulty var sigHash = ethUtils.sha3(blk.header.serialize()) var pubkey = ethUtils.ecrecover(sigHash, sig.v, sig.r, sig.s) return ethUtils.pubToAddress(pubkey).toString('hex') }