2

I have not seen anyone explain Proof-Of-Work this way, so I thought I'd share it here, I'd be curious to know if I'm completely off.

It seems to me that PoW is simply a distributed decentralized source of ticks, a clock, to which data can be "tied"?

The challenge of Proof-Of-Work is a singleton problem (for lack of a better term), i.e. there is only one instance of it in the universe. This means that it is known to every participant, and anyone working on it is affecting the outcome.

Most importantly even if one is participating in complete secrecy until a solution is found, it still affects the outcome.

An analogy might be looking for the largest known prime. You don't need to tell anyone you decided to find one, you only announce when and if you actually find one. Your participation makes finding a solution a possibility, whereas if no one ever looks for the largest prime, it will never be found.

The difficulty algorithm adjusts in such a way that a solution is found on average every 10 minutes. It's a distributed decentralized clock which ticks on average once every 10 minutes. The miners make it possible through their participation, and curiously, miners do not need to tell anyone they are participating, they only need to communicate with others if and when a solution is found.

The clock has an interesting property - you can tie data to its ticks, simply by making the data the input to the SHA. A solved block is nothing more than simply an event that happened exactly at the tick of this clock.

And essentially this is all that Proof-Of-Work does for the blockchain: it provides ticks of a clock, to which events can be tied. Everything else is an "add-on" to this "feature", e.g. using the Merkle tree we can cryptographically record the ordering of the ticks. But without the "PoW clock" none of it would be possible.

Edit: these ticks do come at irregular intervals, so one wouldn't set their watch to it. But that doesn't matter for as long as it is approximately 10 minutes, which it is.

Edit: here is a much more detailed explanation: https://grisha.org/blog/2018/01/23/explaining-proof-of-work/

1

From Satoshi's whitepaper:

3.Timestamp Server

The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it.

4.Proof-of-Work

To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof-of-work system similar to Adam Back’s Hashcash ...

  • Thank you, marking this as the right answer. I'm a tad embarrassed that I thought I knew the paper better than I did, but gratified I worked it out on my own. Interestingly the first source code (Nov 2008) frequently mentions "timechain" in the comments (main.h in satoshi.nakamotoinstitute.org/code). – grisha Feb 14 '18 at 2:02
1

Yes, PoW is a decentralized clock not just for tying information to a specific time (a timestamp can do this perfectly fine) but to prevent spam attacks on the blockchain itself.

The question comes up, how can you add data to everyone's ledger all at once continuously and efficiently? If there is a single tx at a time queue system then things will be unbearably slow.

If the ledger is open for everyone to add verified transactions then what's to stop someone from just adding transactions on transactions and filling up everyone's node?

PoW exists to solve this problem by creating something like a flood gate that allows only a set amount of transactions per time. The difficulty aspect of PoW exists to adapt to the changing nature of computing power against the network.

The clock has an interesting property - you can tie data to its ticks, simply by making the data the input to the SHA. A solved block is nothing more than simply an event that happened exactly at the tick of this clock.

This is so an attacker can't just use the same verified data to add blocks and blocks of transactions. Think of a block mined by the miner as a one time use token that let's the block be added.

An analogy might be looking for the largest known prime. You don't need to tell anyone you decided to find one, you only announce when and if you actually find one. Your participation makes finding a solution a possibility, whereas if no one ever looks for the largest prime, it will never be found.

This portion isn't entirely correct. For you to test if a block you've mined is correct (because mining is entirely a guessing game) you need to ask the network if the block is valid. More than likely the node you just asked will say no and you begin the search again.

Although I should note that the amount of failed attempts is not factored by the difficulty algorithm

  • "a timestamp can do this perfectly fine" - I don't see how, what is the source of it, how can it be trusted? My point is the PoW is the timestamp-providing functionality. It's not about attackers, it is that the block happened exactly (not approximately) at the tick. – grisha Feb 13 '18 at 18:28
  • Also not sure what you mean by a block being correct. You need to start out with a correct candidate block or you'd be wasting your resources. You don't need to "ask" the network anything other than the hash of the previous block. Also failed attempts are factored, the hashrate is nearly all failed attempts except for the one winner once every 10min. – grisha Feb 13 '18 at 18:33
  • PoW falls short for pure time tracking. If the hash rate were to suddenly drop 50% (as it would during a fork) sometime between difficulty adjustment, the network would slow down by approximately 50% and blocks would be mined twice as slow. It should also be noted that blocks are mined roughly every 10 minutes and not every 10 minutes on the dot. It's why predicting forks at a block height is hard. It can be trusted just like it is in DASH/Hyperledger. By being linked to a previous transaction and validated by the network. PoW does not accomplish validation. That is done by the full nodes – arshbot Feb 13 '18 at 18:33
  • @GregoryTrubetskoy take a look at the link I posted above and this link here from the wiki. Failed attempts are not factored – arshbot Feb 13 '18 at 18:37
  • May be I've not done a good job of explaining it, but your comments seem besides the point I am making. I've written up about this explanation here in many more words, perhaps this explains it better: grisha.org/blog/2018/01/23/explaining-proof-of-work – grisha Feb 13 '18 at 18:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.