Maybe numbers of an elliptic curve E could be used. And the PoW algorithm uses the value h XOR e
i where h is the plain hash value and e
i is one of the elliptic curve values in the list.
"The group law (addition) is defined as follows: Take 2 K-rational points P and Q. Now 'draw' a straight line through them and compute the third point of intersection R (also a K-rational point). Then P+Q+R=0 gives the identity point at infinity." --
http://mathworld.wolfram.com/EllipticCurveGroupLaw.htmlThe miner sends both h and e
i as proof. And the validation is done by first checking that the value of h XOR e
i is below the target and then checks that e
i is a point on the elliptic curve. The validation can in this way be done quickly without needing to calculate all the elliptic curve values and without needing the memory to store all the elliptic curve values.
The ASIC will then need either to only use one or a few values of E, or store many or all the E values in memory, or recalculate all or some of the elliptic curve points every time. A CPU and a large memory can easily store all the elliptic curve points and do a fast check of h XOR e for all the elliptic curve values.
I seen the windows XP keygen source code and how the PID's were reversed
(that was using Elliptic Curve's as part of the protection)
the system was reversed 101%
You mean that the elliptic curve value can be calculated in reverse to reach the target difficulty? Isn't such reverse very hard to calculate?
The proof sent by miners is the hash h and an elliptic curve value e
i. The value e
i is a point p=(x,y) on the elliptic curve. And the value h XOR x XOR y must be less than the target difficulty.
For example, take the hash value h=a0000003f103dfe. That value is larger than the target (it has a leading 'a' which should be zero). By adding an elliptic curve point the value h XOR x XOR y becomes let's say 000000038a1e2b9 which is below the target difficulty. So the miners have the opportunity to try zillions of elliptic curve points for each hash value.
In reality the hash value h could for example be 256 bits and x and y also 256 bits long. This means an elliptic curve over a gigantic field of size around 2
256 values. No memory today could hold all those values of course but a CPU can access a very large memory containing pre-calculated values for x XOR y. An ASIC would have difficulty holding a large memory, especially if thousands of hash calculation cores in one chip need to share that memory.