def eth_newFilter(self, from_block=BLOCK_TAG_LATEST,
                      to_block=BLOCK_TAG_LATEST, address=None, topics=None):
        """https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newfilter

        :param from_block: Block tag or number (optional)
        :type from_block: int or BLOCK_TAGS

        :param to_block: Block tag or number (optional)
        :type to_block: int or BLOCK_TAGS

        :param address: Contract address (optional)
        :type address: str

        :param topics: Topics (optional)
        :type topics: list

        :return: filter_id
        :rtype: str
        """
        obj = {
            'fromBlock': validate_block(from_block),
            'toBlock': validate_block(to_block),
            'address': address,
            'topics': topics
        }
        return (yield from self.rpc_call('eth_newFilter', [obj]))