lib/evm/opFns.js
function (runState, cb) {
    const number = runState.stack.pop()
    var blockchain = runState.blockchain
    var diff = new BN(runState.block.header.number).sub(number)

    // block lookups must be within the past 256 blocks
    if (diff.gtn(256) || diff.lten(0)) {
      runState.stack.push(new BN(0))
      cb(null)
      return
    }

    blockchain.getBlock(number, function (err, block) {
      if (err) return cb(err)
      const blockHash = new BN(block.hash())
      runState.stack.push(blockHash)
      cb(null)
    })
  }
function (runState, cb) {
    const number = runState.stack.pop()
    var blockchain = runState.blockchain
    var diff = new BN(runState.block.header.number).sub(number)

    // block lookups must be within the past 256 blocks
    if (diff.gtn(256) || diff.lten(0)) {
      runState.stack.push(new BN(0))
      cb(null)
      return
    }

    blockchain.getBlock(number, function (err, block) {
      if (err) return cb(err)
      const blockHash = new BN(block.hash())
      runState.stack.push(blockHash)
      cb(null)
    })
  }
'0x40' range - block operations