That's not how Nxt works. The account that forges the next block is selected from only online accounts with an effective stake, not from all existing accounts.
Whilst I do *get* the idea behind how the TF "choice" works I don't quite follow this part.
How can every node know which accounts are "online" (in order to consider for TF) when nodes would only be keeping connections to a fraction of all online nodes?
Some preliminaries:
I don't know how it'll be implemented eventually. Were I to try to design an algo to satisfy the properties of TF I've gathered so far, I might do
1. During the time between blocks, gather info on as many online forging nodes as you can, through the nodes you're connected to. Call these "seen nodes"
2. Strictly order these nodes, say by increasing account number. Insert new nodes/delete d/ced nodes as they are discovered.
3. Compute Hash(public_key_of_previous_forger + N)/(MAX_HASH + 1) for N = 1 to # of candidates. Hash could be say SHA256. Think of these as dice rolls in [0,1) that will determine the candidate accounts.
4. Just before block generation, calculate (your own view of) the candidate accounts for forging. The candidate accounts are precisely those accounts for which [ total_stake_of_previous_accounts / total_stake_of_all_seen_nodes, (total_stake_of_previous_accounts + own_stake) / total_stake_of_all_seen_nodes ) contains a die roll. These intervals are mutually disjoint, and their union is [0,1). Each interval represents each accounts stake in [0,1)
5. Some algo that determines which candidate is chosen, not relevant to our discussion here.
Finally getting to your question:
During the time between blocks, each node builds up their own picture of what the whole network will look like. Different nodes will have slightly different pictures due to different connections and connectivity (assume the overall network condition isn't so bad as to have radically different pictures). But even with slight differences,
the die rolls are still likely to land in the same accounts in 4). (picture a [0,1) line segment broken up into very many separate account stakes. Assume no very big stakes. If you remove a few of them and insert a few others, while maintaining stake ratios, the picture doesn't change by much (
math can provide bounds hmm, better to simulate it I think.)). So all nodes can achieve consensus.
Again, just my thinking, and coming from general math.
EDIT: No, this particular way doesn't work I think, need another way to determine candidates. But I think the general idea holds: you don't need all nodes to see the same picture of the network, you only need that their pictures mostly agree, and consequently mostly agree on the candidates.