3 ms·
There is no block 2 created if block 1 is not final. Once consensus is reached on what is in B1 it doesn't matter anymore if someone comes around with a differe
by noxer 4y ago
There is no block 2 created if block 1 is not final. Once consensus is reached on what is in B1 it doesn't matter anymore if someone comes around with a different idea what should be in B1. So by the time the nodes "debate" over B2, Alice has the money and its final. There can not be a double spend with time delay in between because the second transaction ties to move already moved funds so its objectively invalid.
A double spend would need to happen in the same block but all transaction are ordered sequentially so the second one will fail anyway as it still tries to moved funds that are already moved.
The nodes just have to agree on one, it doesn't matter which one. If someone internationally tries to send the same funds to Bob an Alice he's just flipping a coin as to who will get it. Alice doesn't care and Bob doesn't care either. They only care about it being final if they see the funds in their account. And the rest of the network doesn't care that Eve is being a bit silly and wants a "decentral coin flip" to decide where the money goes.
- FabHK 4y ago> Once consensus is reached on what is in B1 it doesn't matter anymore if someone comes around with a different idea what should be in B1. So, when a new node comes online, and some of the existing nodes say that they've agreed on B1 and B2, and some other nodes say that they've agreed on B1' and B2', how does that new node decide which is the consensus? [0] With PoW, the decision criterion is easy: the longest chain rule (LCR) [1]. In your system, what's the rule? [0] This is trivial with a central authority. But remember, here we have an open public blockchain, where anyone can join as a node, and they might be malicious. [1] And as long as there are competing chains of equal length, just pick one randomly. That procedure, rather than picking the first one encountered, improves resistance to the selfish mining attack, IIRC
- noxer 4y agoWell there are no second or different options in reality. Since it can only fork intentionally you will only have the one chain that everyone uses unless there is an intentional fork but then the networks are separated and you pick the one you want. But to answer the question theoretically, it simply boils down to which one you choose. A new node MUST choose the chain he wants to join and he does so by selecting the nodes he want to connect to. From all the nodes he selects over 80% (hard coded quorum in the code) must be on the same chain if not his node will be in a state where it can not reach consensus and it will force the owner to remove/add nodes until the quorum can be reached. > the longest chain rule (LCR) [1]. In your system, what's the rule? There is no direct equivalent to the longest chain rule because blocks are final on every chain. There is no "chain switching" possible (that would directly contradict finality). Instead the system is made so that forks dont happen. The system will produce empty blocks rather than fork if the 80% quorum can not be reached (for example if huge parts of the world are temporary discontented from each-other). So any actual fork would need to be intentional and thus actually produce 2 immutable chains in 2 different networks with finality. Nodes wont be able to switch between these chains, the intentional fork separates the network. If a nodes wants to switch later on that is the equivalent of turning it off and starting a new one on the other chain. BTW this is not MY system its been implemented multiple times with the oldest running since 9+ years [1]. It has never forked so this is not an actual problem in the real world. Dude to the quorum of 80% every change (in the code) goes trough an amendment process and will only ever get activated if it has 80% support. If a node is overruled it still is on the same chain. Unless the owner refuses to update in time then his node becomes incompatible with the rest and is ignored. [1]The oldest running distributed ledger ("blockchain") that uses this system is the XRPL. You can read about its consensus mechanism on xrpl.org/intro-to-consensus.html and xrpl.org/consensus-network.html There are ofc many other projects that build upon the same principles.