Beispiel #1
0
 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()
   })
 })
Beispiel #2
0
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')
}