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.
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) .
Creo que es difícil porque el tiempo de hacer RAM (memoria de acceso aleatorio) representa la mayor parte de Ethash.
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
nick johnson