code: func ReadTxLookupEntry(db ethdb.Reader, hash common.Hash) *uint64 {
  	data, _ := db.Get(txLookupKey(hash))
  	if len(data) == 0 {
  		return nil
  	}
  	// Database v6 tx lookup just stores the block number
  	if len(data) < common.HashLength {
  		number := new(big.Int).SetBytes(data).Uint64()
  		return &number
  	}
  	// Database v4-v5 tx lookup format just stores the hash
  	if len(data) == common.HashLength {
  		return ReadHeaderNumber(db, common.BytesToHash(data))
  	}
  	// Finally try database v3 tx lookup format
  	var entry LegacyTxLookupEntry
  	if err := rlp.DecodeBytes(data, &entry); err != nil {
  		log.Error("Invalid transaction lookup entry RLP", "hash", hash, "blob", data, "err", err)
  		return nil
  	}
  	return &entry.BlockIndex
  }
docs: // ReadTxLookupEntry retrieves the positional metadata associated with a transaction
  // hash to allow retrieving the transaction or receipt by hash.