def start_nodes(self, num_nodes, dirname, extra_args=None, rpchost=None, timewait=None, binary=None):
    'Start multiple bitcoinds, return RPC connections to them'
    if (extra_args is None):
        extra_args = ([[]] * num_nodes)
    if (binary is None):
        binary = ([None] * num_nodes)
    assert_equal(len(extra_args), num_nodes)
    assert_equal(len(binary), num_nodes)
    nodes = []
    try:
        for i in range(num_nodes):
            nodes.append(TestNode(i, dirname, extra_args[i], rpchost, timewait=timewait, binary=binary[i], stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir))
            nodes[i].start()
        for node in nodes:
            node.wait_for_rpc_connection()
    except:
        self.stop_nodes()
        raise
    if (self.options.coveragedir is not None):
        for node in nodes:
            coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc)
    return nodes
Start multiple bitcoinds, return RPC connections to them
def start_nodes(self, num_nodes, dirname, extra_args=None, rpchost=None, timewait=None, binary=None):
    
    if (extra_args is None):
        extra_args = ([[]] * num_nodes)
    if (binary is None):
        binary = ([None] * num_nodes)
    assert_equal(len(extra_args), num_nodes)
    assert_equal(len(binary), num_nodes)
    nodes = []
    try:
        for i in range(num_nodes):
            nodes.append(TestNode(i, dirname, extra_args[i], rpchost, timewait=timewait, binary=binary[i], stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir))
            nodes[i].start()
        for node in nodes:
            node.wait_for_rpc_connection()
    except:
        self.stop_nodes()
        raise
    if (self.options.coveragedir is not None):
        for node in nodes:
            coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc)
    return nodes