4 ms·
> The Bitcoin network is not this. The Bitcoin network is everyone meeting at a central square, fully able to communicate - all having a full list of all transa
by ric2b 5y ago
> The Bitcoin network is not this. The Bitcoin network is everyone meeting at a central square, fully able to communicate - all having a full list of all transactions
Not at all, you can start right now trying to sync (from scratch) a new node with the network and regardless of how many malicious/corrupt/etc information you receive from whichever nodes you find (there's no central square) your node will never show you an invalid state, it will at worst be out of date or missing information.
> But they have no messaging problems! Bitcoin is not the same difficulty as Byzantine Generals! The work is meaningless when everyone is always communicating.
Of course there are messaging problems, it's a completely open network full of malicious nodes or nodes going offline or being unavailable. And your node doesn't have to always be communicating, it can go offline for months at a time and then sync back up with no issues.
> If there is ever a merge conflict(a double spend) based on those rules, first transaction wins.
The first for whom? Different nodes might receive transactions in different orders.
> Consensus becomes whichever one has all the transactions.
What if A and B have all the transactions except for 1 double spend, where A picked transaction 1 and B picked transaction 2, because that's what they saw first. Which of them do you follow? You can't just leave it to chance, you have to be very confident that everyone else will pick the option.
- ItsMonkk 5y agoThis has all been worked out. See CRDTs[0]. But CRDT's actually are a harder problem than Bitcoin. When you have a local square, you don't even need CRDT's. > And your node doesn't have to always be communicating, it can go offline for months at a time and then sync back up with no issues. If you are writing blocks offline for months, then all your transactions getting wiped out upon connection with the main chain(as its many more computations ahead of you) seems like an issue to me. A sane system would disallow transactions when not connected to the main chain. [0]: https://medium.com/swlh/introduction-to-conflict-free-replicated-data-type-959a944098c4 https://medium.com/swlh/introduction-to-conflict-free-replic...