Can you define (in simple terms) the math model and the question about it that you need answered? I'm a mathematician (Probability/Stochastic processes), but understand little how cryptocurrencies actually work, I have to confess that I understand almost nothing of the tech talk over here...
I will try my best (math is not my strength - logic is).
Basically the way that TF works is that there is a crypto hash for each block which was calculated from the previous' block hash and the "forgers" account.
This hash then determines who's account is the "best" to forge the next block so in a perfect situation if we consider that the max. "weight" of a block is 100 then you would see a blockchain like this:
A(100) B(100) C(100) D(100)
but things aren't perfect as some people won't forge (or pass on their forging right) so the network allows other "less perfect" blocks to be announced and each node will accept the best one that they see to try and keep building on the chain.
A(80) B(90) C(50)
The problem of "forking" is because each node can't see everything in the network (due to latency) so you could also end up with:
A(80) B(95) C(10)
with these "forks" ending up becoming "ignored" because a longer "better" chain has been noticed by the node.
So the problem we are dealing with is that B(95) could "hide" their block and then announce it *after* B(90) which would at least for 1 block make it a "better chain".
But as others will build upon what they see then it won't necessarily *matter* that B(95) was better than B(90) because C(50) is better than C(10) and so B's attempt to "create a fork" will fail.
If though someone has the ability to produce a better B, C, D, E, etc. then they could replace a large number of blocks. This is known in Bitcoin as the >50% attack.
We need to work out the probabilities of all this including how "penalising" a node for "not forging" changes this.
OK, let's try to make the notations more clear. Who are A,B,C,D? Blocks, right (not nodes)? Shall we write "A(80) B'(95) C'(10)" in your example then?
Maybe, define it this way:
- assume for now that we have a static picture (no transactions between accounts), and there are accounts (nodes) 1,...,N with balances M_1,...,M_N on them;
- the time is discrete, and at each moment k each (active) node j calculates its current weight W_k as a (randomized?) function of M_j and B^j_{k-1} (the previous block in the blockchain that the node j thinks to be "official")
- the network then chooses j_0 such that W_{j_0}>W_i for all i not equal to j_0, and lets the node j_0 forge the block B_k; then L_k=W_{j_0} is the weight of this block.
Now, what I don't really understand, is how a node really determines, which branch is "official"? By looking who has the majority among its neighbors in the network?