4 ms·
> Why is Bitcoin made up of back-links to previous blocks? Isn't a block no more than a memoization of a event-sourced log at a point of time? That's just a rea
by eeegnu 5y ago
> Why is Bitcoin made up of back-links to previous blocks? Isn't a block no more than a memoization of a event-sourced log at a point of time? That's just a really badly constructed journaling filesystem.
My understanding is that the chain of blocks, whereby each successor block is dependent on the hash of the previous one, acts as a self contained proof that a huge amount of work went into generating this. The rule that everyone needs to follow then is to simply always trust the longest chain presented to them (or the one that was most difficult to build depending on the amount of solutions at every difficulty.) By only looking at the last block, you lose this consensus mechanism. Not sure exactly how that isn't an issue with PoS though since they aren't verifying with work, and it seems that they can just keep track of the head of the transactions.
- ItsMonkk 5y agoThe Byzantine General's problem states that messages can be corrupt, missing, misinformation, or otherwise unreliable. Thus to avoid exploitation by the few, we need some PoW mechanism. 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 - and the dude with the password takes the reward and decides which transactions make it in. But they have no messaging problems! Bitcoin is not the same difficulty as Byzantine Generals! The work is meaningless when everyone is always communicating. There is no possibility of any miscommunication. The rules of a miner are simple: Add all transactions to the list. Make sure no one spends more than they have. That's it. If there is ever a merge conflict(a double spend) based on those rules, first transaction wins. It will most likely be known that it fails instantly, but if not by the time the memoization happens it will be known. Consensus becomes whichever one has all the transactions. If there is a firewall issue such that you can not reach the main chain, you can simply not issue any transactions. Same as today. I can see a potential that I am in the wrong here, not knowing about a crucial detail, but I don't know what that detail is.
- 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...