18 ms·
> The problem proof-of-work solves is double spending, That doesn't seem to be my understanding. In my mind the problem proof of work solves is how quickly ne
by KallDrexx 5y ago
> The problem proof-of-work solves is double spending,
That doesn't seem to be my understanding. In my mind the problem proof of work solves is how quickly new blocks can be generated, thus limiting the supply of new blocks and giving an incentive to move the head pointer to an agreed upon next value (by granting coins to the miner who was able to compute the value).
Double spend is solved due to the single branch tree nature of the chain, since that block can validate that the coin hasn't been spent within that one block, nor in previous blocks (and side blocks can be ignored).
Proof of work has nothing to do with that, any system that can encourage everyone to agree on the next block does the same prevention of double spend.
- jasode 5y ago>Proof of work has nothing to do with that, any system that can encourage everyone to agree on the next block does the same prevention of double spend. What foundational frame of reference are you using to write that sentence above? Because for Bitcoin's specific implementation, the purpose of POW is to prevent double spend without centralized trust. Consider the following "if()" statement in bitcoin source code: Excerpt from validation.cpp [1]: bool CBlockIndexWorkComparator::operator()(const CBlockIndex *pa, const CBlockIndex *pb) const { // First sort by most total work, ... if (pa->nChainWork > pb->nChainWork) return false; if (pa->nChainWork < pb->nChainWork) return true; In older versions of source code, excerpt from main.cpp [2]: if (pindexNew->bnChainWork > bnBestChainWork) { ... The motivation for the C++ code above to compare the chain work is in the original 2009 Bitcoin whitepaper. Excerpt: >12. Conclusion : We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. [1] https://github.com/bitcoin/bitcoin/blob/271155984574a5bba9619d8f6da9bb0606d93f8c/src/validation.cpp#L87 https://github.com/bitcoin/bitcoin/blob/271155984574a5bba961... [2] https://github.com/bitcoin/bitcoin/blob/40cd0369419323f8d7385950e20342e998c994e1/main.cpp#L1236 https://github.com/bitcoin/bitcoin/blob/40cd0369419323f8d738...
- danbruc 5y agoIn my mind the problem proof of work solves is how quickly new blocks can be generated [...] There is actually no real point of rate limiting the creation of new blocks, why not generate them as fast as possible and therefore execute transactions as quickly as possible? This certainly needs some more thought, you do not want miners spamming empty blocks or blocks full of their own fake transactions, you can not provide a fixed block reward, and whatnot. But in general the mining rate limit is a limitation and not a feature. Proof of work has nothing to do with that, any system that can encourage everyone to agree on the next block does the same prevention of double spend. Sure, proof of work establishes consensus and any consensus algorithm could be used. But Bitcoin is anonymous, so you do not know how many parties are there that need to agree and therefore a simple vote based consensus protocol does not work. You have to prevent a malicious user from casting a million votes and changing the consensus branch as they please. How do you do that? You make casting a vote hard, you make them, for example, waste a lot of clock cycles to do so.
- nybble41 5y ago> There is actually no real point of rate limiting the creation of new blocks… To avoid fracturing the network and wasting significant amounts of work, the time between blocks needs to be much longer than the time it takes to propagate newly mined blocks to most of the nodes. There are also concerns about the minimum amount of storage and bandwidth required to participate as a full node, and how that may drive increasing centralization. Storage can be mitigated somewhat with better pruning of old, spent transactions, but bandwidth is a harder problem facing any attempt to increase the core transaction rate.