The key failure in your design is the lack of incentive to have a consensus. What is the incentive for voting nodes to agree with the correct fork and for minority nodes to agree with the majority fork? Seems to me they can all disagree and no one can prove otherwise, because they can pretend to have never heard the votes of others (no way to prove receipt of a vote on the internet). This shows that without the objectivity of a PoW, then there is no objectivity and you end up in chaos.
Primarily this is mitigated by the fact that if a node doesn't create a fork, there is nothing to vote on, no consensus is needed. If I have a signed block chain A0->B0->C0 and it's published, no one can vote between C0 and let's say C1 because there is no signed C1. If you don't sign forks, no one can vote on your transactions.
I don't comprehend your notation and its applicability, but I was just thinking conceptually that you have a these N block chains operating orthogonally, thus one one can receive the transfer of value from the other. Then you can have double-spends and what not. So then you can have different block chains disagreeing about a plurality of different orthogonal block chain states. There is no global unified state, that is the entire point since missing the global PoW block period to force timely consensus to this single objective reality. If we don't want a global state, then we must use a
probabilistic forking structure such as Iota's DAG to obtain
Byzantine fault tolerance. You've conflated the independence with the determinism required for global coherence. Global coherence with individual realities (relativism) can only be probabilistic. I believe this follows from
Brewer's theorem which says it is impossible to have all three of consistency, availability, and partion tolerance.
Sure, I don't mind explaining. Even though all accounts have their own chain, each chain consists of blocks that have a single successor and if multiple successors are published, they're arbitrated through voting. Starting off the ledger can answer two central questions 1) Is this block hash in the ledger and 2) Is a block the head block for an account. This functionality can be verified in
https://github.com/clemahieu/raiblocks/blob/master/rai/secure.cpp ~ line 2660. When blocks are published, they're flooded to the network, this ensures everyone observes the state change seen by other nodes. When we receive a new block we check question 1 on the hash of this block. If it's already in the ledger we discard the message because the block has already been processed. If it hasn't been seen, we retrieve the hash for the previous block and check question 2 on the previous block hash. If the previous block is the head block for that account, we can enter this in to the ledger, this is a valid state change for this account. If the previous block is not the head block, we can check question 1 on the previous block. If the previous block is already in the ledger we deterministically know we have observed a signed fork. When representative nodes observe a signed fork, they start periodically broadcast their votes on a fixed interval until consensus is reached. When any node observes a fork they listen for representative votes and change their ledger to match the vote winner. As you can see votes are only published and blocks are only rolled back if there is is a deterministic fork. If there is no fork, the ledger can be updated without engaging in voting because there is only one possible state change for that account.
Allowing forks to be arbitrated separately is a design feature of the system. This system is similar to side-chains taken to an extreme. In side-chains we break apart the block chain to allow smaller groups of accounts to be arbitrated, hopefully at a higher speed. In this system a side chain represents one account.
In PoW, miners have an incentive to reach consensus because otherwise their rewards won't be honored by the longest chain. In your system the majority of the vote is the winning fork, except there is no penalty for delaying for an indefinite period acknowledging receipt of such a vote. Thus complex game theories arise. Even more critically, the majority vote may be split among multiple forks, such that there is no consensus, because you have multiple chains thus a plurality of permutations of forks.
I do want readers to note which of the three posters in this thread was able to state directly the design error. That should be instructive to investors.
Well-behaved nodes are configured to flip their vote if they observe their fork variant as having fewer votes than another. The only way to vote is to have a balance tied up in the network. To vote to confuse the network is to destroy its value which destroys your investment. The incentive is to retain value in the system rather than accumulate rewards through inflating everyone else.
Not necessarily. They could collude to steal value from another fork by double-spending to the other fork and then disagreeing about the objective time of spending. Perhaps other complex game theory as well. Also it may not be intentional. Per my point above, the objective reality may be indeterminate and the system may have a plurality of minority realities (votes). That is what I expect to be the normal mode due to chaos theory.
I'd be interested in having you expand on this, specifically the 50% attack documented in
https://github.com/clemahieu/raiblocks/wiki/Attacks I think you'd have some really good insight.
On the plurality of minorities point, nodes are configured to change their ledger to match the block with the highest amount of votes, it doesn't need to have an absolute majority, just the largest minority. As voting rounds go on, smaller minorities will disappear until there is a single conclusion. This assumes the incentive to vote correctly holds. We need to remember that votes come from having a balance in Rai, accounts that don't have Rai can't vote. Voting to collude on a fork is destructive to integrity of the system and votes only come from having a stake in the system, so voting to collude is voting to destroy the value you hold in the system.
If we used an analogy using the bitcoin market cap which is right now ~4.2b we'd be saying, a group of people with 2.1b$ invested in bitcoin are working to mine double spends in to the system which would destroy their 2.1b$ investment because people would no longer use bitcoin. I think this is improbable.