You mentioned that the incentive to stay on the same branch are economic. I take this to mean that upon rejoining the network, a node cannot determine the correct chain with perfect reliability from several candidate chains using only information contained in the chains. The node needs to acquire new information (e.g., the last version of Nxt or other information from peers) in order to figure which chain is best. But I think what you're saying is that this should be "obvious" and sort of like "how do you know if you're connected to the REAL Internet when you rejoin and not a fake one? Haha...eventually you realize that none of your friends are getting your messages!!"
Scenario 1Alice has never used Nxt. Bob (her friend) tells how it's cool. Alice downloads client software. Bob sends her hash of one of the recent blocks that his software sees. She copy-pastes the hash into the client and let the software to pick the same chain.
Scenario 2Charlie is a guy who has no friends. He orders "50 shades of grey" DVD. He runs the client and downloads blocks for the last 6 months. Then he makes the payment to the DVD store. If the store is on the same branch then they will see his payment, otherwise they will inform Charlie that he should pick the branch that contains the block with
hash.
Scenario 3
Dave buys 1000 NXT on Coinbase with USD and withdraws them to his wallet. In the interface of the website he sees that the transaction is done. If his wallet doesn't show the transaction then he copy-pastes the hash of a recent block from Coinbase site (or the wallet can pull this automatically) and jumps to the same branch.
Scenario 4
Eve always buys food in Walmart. She adjusts settings of her wallet to connect to Walmart website to ask for recent block hash, just to make sure that they are on the same branch.
This is how Economic Clustering works. It's perfectly legit to have Nxt blockchain forked several times. At some point you have to decide what branch to stick to.
OK, I think I can see clearly how Nxt solves the problem of "after leaving the network for some length of time, how does a node determine the current state of the blockchain?", and how Nxt's solution is different than Bitcoin's.
A Bitcoin node does not need any
new information beyond what is encoded in the candidate blockchains themselves. It applies a
systematic and
predefined function/procedure to each candidate blockchain:
cumulative work 1 = fcn(candidate chain 1)
cumulative work 2 = fcn(candidate chain 2)
…
cumulative work n = fcn(candidate chain n)
and, for example, if Candidate Chain #2 has the highest value for cumulative work, it picks this chain as the
best chain.
Nxt is different, because the node relies on
new information in addition to what's encoded in the candidate blockchains:
best chain = fcn(candidate chain 1, candidate chain 2, … , candidate chain
n, NEW INFORMATION FROM PEERS)
in order to select the best chain.
I don't want to argue the
validity of either of these methods; what I'm trying to do is formalize how the methods are different, and I think I've done that.
BITCOIN: a node rejoining the network can determine the best chain without any new information beside what is encoded in the candidate blockchains.
NXT: a node rejoining the network needs
new information in addition to what's encoded in the candidate blockchains.