def get_and_cache_account(self, addr):
        """Gets and caches an account for an addres, creates blank if not
        found.

        :param addr:
        :return:
        """

        if addr in self.cache:
            return self.cache[addr]
        rlpdata = self.secure_trie.get(addr)
        if (
            rlpdata == trie.BLANK_NODE and len(addr) == 32
        ):  # support for hashed addresses
            rlpdata = self.trie.get(addr)

        if rlpdata != trie.BLANK_NODE:
            o = rlp.decode(rlpdata, Account, db=self.db, addr=addr)
        else:
            o = Account.blank_account(self.db, addr, 0)
        self.cache[addr] = o
        o._mutable = True
        o._cached_rlp = None
        return o
Gets and caches an account for an addres, creates blank if not
        found.

        :param addr:
        :return: