Apply transaction to the vm state

        :param transaction: the transaction to apply
        :return: the computation

def apply_transaction(
            self,
            transaction: BaseOrSpoofTransaction) -> 'BaseComputation':
        """
        Apply transaction to the vm state

        :param transaction: the transaction to apply
        :return: the computation
        """
        if self.state_root != BLANK_ROOT_HASH and not self._account_db.has_root(self.state_root):
            raise StateRootNotFound(self.state_root)
        else:
            return self.execute_transaction(transaction)