¿Es posible verificar Ethash PoW en un contrato?

Leyendo en EtHash, estaba pensando si es posible verificar la Prueba de trabajo actual de Ethereum mediante un contrato inteligente. Hay una instrucción SHA3, que calcula un hash de 256 bits, pero EtHash usa un hash de 512 bits. ¿Fue esta discrepancia intencional o simplemente un descuido? ¿Es posible calcular uno de otro de alguna manera?

Sé que verificar PoW en el contrato puede ser costoso, pero podría usarse solo como respuesta a un desafío.

Respuestas (3)

Parece imposible hacerlo, porque Ethash requiere un caché pseudoaleatorio de 16 MB. Esto sería costoso de almacenar en la cadena de bloques, ya que cada transacción de Ethereum solo contiene un máximo de 89kB (3 millones de gas) .

El caché no necesitaría almacenarse en la cadena de bloques; podría construirse (costosamente) en memoria de instancia.

Creo que es difícil porque el tiempo de hacer RAM (memoria de acceso aleatorio) representa la mayor parte de Ethash.

¿Crees? ¿Tiene alguna estadística o evidencia para respaldar esto?

puede agregar un nuevo código de operación en EVM para implementar esta función, pero tengo un problema sobre cómo compilar correctamente en Solidity. Le agradeceré que muestre su método para demostrar que su ethash no está en el contrato. https://stackoverflow.com/questions/52422805/how-verifies-the-nonce-produced-by-ethash-through-contract-add-new-opcode-in