# How similar is the Goldwasser-Sipser Set Lower Bound Protocol to the Hashcash/Bitcoin Proof-of-Work?

Given a hash function $H:\{0,1\}^*\rightarrow\{0,1\}^n$, a difficulty $d\in\mathbb{N}$, and data $D\in\{0,1\}^*$, the framework of the Hashcash/Bitcoin Proof-of-Work entails finding a nonce $c$ such that $H(c\Vert D)$ starts with $d$ zero’s. That is to say, Hashcash/Bitcoin Proofs-of-Work appear to find a preimage $c\Vert D$ that partially inverts a hash $H$. Depending on $d$ and the size of the nonce, it may be impossible to find a nonce $c$ without having to change the data $D$. Currently (Aug. 2017) with Bitcoin, the target difficulty $d$ is, I think, 17 consecutive hexadecimal 0's.

Given a set $S\subseteq\{0,1\}^m$ and a number $K$, the Goldwasser-Sipser Set Lower Bound Protocol is an Arthur-Merlin protocol for Merlin the prover to show Arthur the verifier that $|S|\geq K$. Letting $k$ be a number such that $2^{k-2}\leq K\leq 2^{k-1}$, Arthur chooses a random hash $H$ from pairwise independent hash function collection, along with a random $y\in\{0,1\}^k$. Merlin’s goal is to find an $x\in S$ such that $H(x)=y$. That is to say, Merlin’s goal in the Goldwasser-Sipser Set Lower Bound Protocol is to find a preimage $x$ that inverts a hash function $H$. The larger the set $S$, the easier it may be to find a preimage. Indeed, if $S\leq \frac{K}{2}$, then Merlin has a much smaller chance of finding a preimage than if $S\geq K$. Thus, Merlin may provide evidence to Arthur that $S$ is large. This may be used, e.g., to show that two graphs are not isomorphic.

My question is: can we reinterpret the Hashcash/Bitcoin Proof-of-Work as a Set Lower Bound? In other words, can we consider finding a nonce $c$ in the Bitcoin Proof-of-Work as similar to finding a preimage $x$ in the Goldwasser-Sipser Set Lower Bound, which may show that some (arbitrary) set is large?

Or is the similarity between the two not very strong?

EDIT

Following up on D.W.'s answer, I wonder if $D$ could be considered as the input to a test of membership of $x\in S$. For example, $S$ could be the set of all permutations of two graphs $G_1$ and $G_2$, $D$ might "encode" the two graphs $G_1$ and $G_2$, and $x$ might "encode" a permutation $\pi$ of one of $G_1$ or $G_2$. The fact that a preimage $x$ was found might indicate that $G_1$ is not isomorphic to $G_2$, because it indicates $S$ is large.

However, I think there may be no easy way to tell what the "encoding" is. So I wonder if a Proof-of-Work can, by design, be based on some interesting problem in $\mathsf{coNP}$, by having the encodings of the problem specified a-priori.

For example, the adjacency matrix of the two graphs $G_1$ and $G_2$ may be encoded in $D$. The miner may engage in looking for another graph $G_3$ that is a permutation $\pi$ of one of $G_1$ or $G_2$, such that the hash $H_2$ is $0$. That is, the miner may treat $G_3=\pi(G_1)$ or $G_3=\pi(G_2)$ as $x$ (i.e. the "nonce" $c$.) The miner may "succeed" if $H(\pi(G_1) \Vert G_1 \Vert G_2)$ begins with $d$ zeroes, or $H(\pi(G_2) \Vert G_1 \Vert G_2)$ begins with $d$ zeroes, thus indicating that the number of permutations of $G_1$ and $G_2$ together is "large" and not "small."

Here's the similarity. Define $H_2(x)$ to be the first $d$ bits of $H(x||D)$. Then you can think of the Bitcoin proof-of-work as being: find $x$ such that $H_2(x)=0$. This is loosely similar to the Goldwasser-Sipser protocol; you could imagine that Merlin is the bitcoin miner and Arthur is the verifier, and the goal is for Merlin to prove to Arthur that Merlin has probably done at least about $2^{d-1}$ hash computations. Or, if we let $S$ denote the set of values $x$ such that Merlin has computed $H_2(x)$, you could think of the goal being to prove that $|S|$ is at least $2^{d-1}$ or so. Now if you imagine that Arthur always chooses $y=0$ in the Goldwasser-Sipser interactive proof, we get the same kind of computation. So in that sense there is a similarity.
However, the correspondence is imperfect. The threat models for the two schemes are quite different: Goldwasser-Sipser deals with a Merlin with unbounded computational power, whereas Bitcoin assumes the miner's computational power is limited. The requirements for the hash function are quite different: Goldwasser-Sipser only needs a pairwise independent hash, whereas Bitcoin needs a cryptographically secure hash. Also the nature of the set $S$ is different: in Goldwasser-Sipser the set $S$ is well-defined and there is a method specified in advance that Merlin can use to prove that a certain value is an element of the set, whereas in my analogy $S$ is only loosely defined and we don't have a clear way to prove that an element is a member of $S$.