The goal of this post is to explain and discuss upcoming proof-of-work function change.

Autolykos v.2 is following Autolykos v.1 with pool-resistance switched off and possible ways to bypass memory hardness closed.

Autolykos v.2 is briefly described at https://www.docdroid.net/QvDyhoe/ergopow-pdf ,

main algorithms for verification and proving are below:

and auxiliary *genIndexes* algorithm is

(takeRight(n, *) is taking least significant n bytes, dropMsb is dropping the most significant byte, so for 32 bytes, dropMsb(…) == takeRight(31, …)).

So basic ideas behind the algo:

- Like Autlykos-1, based on k-sum problem, so a miner needs to finds
*k*(k=32) out of*N*(2^n = 2^26) elements, and hash of their sum must be less than target value (inverse of difficulty) -
*k*indexes are pseudorandom values derived from block candidate and nonce -
*N*elements are derived from block height and constants just, unlike Autolykos v.1, so miners can recalculate block candidates easily now (so only indexes are depending on them) - Indexes calculation also involving the same table (which elements are last 31 bytes of H(i | | h | | M ), where
*i*is in [0, N),*h*is block height,*M*is padding to slow down hash calculation (8kb of constant data).

So algorithm trying to make mining efficient for ones who store the table which size is 2^26 * 31 = 2,080,374,784 bytes (about 2GB). Thus algo now is friendly to all the GPUs basically.