3 ms·
I've done a little bit of research into event-sourced databases and journaling filesystems, but not nearly enough to be on expert on them. I think this article
by ItsMonkk 5y ago
I've done a little bit of research into event-sourced databases and journaling filesystems, but not nearly enough to be on expert on them. I think this article touches on exactly the crucial point.
If I have a private key to my coins, why is someone else allowed to disallow a transfer of them? When I announce a transaction, because of the way mining works, that transaction gets sent to every miner, so that if they were to solve the block they could include my transaction.
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.
Instead there should be no cryptographic mining PoW or PoS, all online miners would track all transactions since the last block was created. If at any point they did not have all of the transaction(which means if anyone else has reported a transaction that they have disallowed, easily compared by simply checking every miners head hash), they are considered to be offline and do not receive a mining share. All miners who are online when a new memoization is created gets a share of the reward.
Help me out here, why do we need to solve the Byzantine General's problem for this?
- 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...
- ric2b 5y ago> If I have a private key to my coins, why is someone else allowed to disallow a transfer of them? They are allowed to try, but no single entity can completely block a valid transaction from being confirmed. The legitimate reason they may do so is because they believe you are trying to double (or N) spend the transaction, and they have chosen a conflicting transaction instead, likely the first one they saw. > Why is Bitcoin made up of back-links to previous blocks? Blocks are a way to get everyone on the same page, when a new block is found everyone is now working on top of the same history. The reason to use ~10 minute blocks of transactions instead of 2 second blocks or even updating on every new transaction is to avoid a constant stream of conflicting states arriving from different parts of the world, which would increase the necessary communication between nodes. > If at any point they did not have all of the transaction(which means if anyone else has reported a transaction that they have disallowed, easily compared by simply checking every miners head hash), they are considered to be offline and do not receive a mining share. In that case if I'm a miner I can just create a transaction that I share with no one, include it in my block, broadcast the block and now all other miners are considered offline because their blocks didn't include my transaction and I get 100% of the reward.
- ItsMonkk 5y agoYou would get 100% of the reward of one transaction, a price that you yourself paid. And that's fine, since memoization of the block is work that needs to be done. And the block would be valid if it was not missing any transactions. They would then update to your block, and would be back online. Except they would not have been considered offline.