code: func (db *Database) Node(hash common.Hash) ([]byte, error) {
  	// It doens't make sense to retrieve the metaroot
  	if hash == (common.Hash{}) {
  		return nil, errors.New("not found")
  	}
  	// Retrieve the node from the clean cache if available
  	if db.cleans != nil {
  		if enc, err := db.cleans.Get(string(hash[:])); err == nil && enc != nil {
  			memcacheCleanHitMeter.Mark(1)
  			memcacheCleanReadMeter.Mark(int64(len(enc)))
  			return enc, nil
  		}
  	}
  	// Retrieve the node from the dirty cache if available
  	db.lock.RLock()
  	dirty := db.dirties[hash]
  	db.lock.RUnlock()
  
  	if dirty != nil {
  		return dirty.rlp(), nil
  	}
  	// Content unavailable in memory, attempt to retrieve from disk
  	enc, err := db.diskdb.Get(hash[:])
  	if err == nil && enc != nil {
  		if db.cleans != nil {
  			db.cleans.Set(string(hash[:]), enc)
  			memcacheCleanMissMeter.Mark(1)
  			memcacheCleanWriteMeter.Mark(int64(len(enc)))
  		}
  	}
  	return enc, err
  }
docs: // Node retrieves an encoded cached trie node from memory. If it cannot be found
  // cached, the method queries the persistent database for the content.