Prueba de existencia (POE) datos de entrada primeros 8 números

Estoy tratando de implementar un modelo POE basado en la cadena de bloques Ethereum. Básicamente, obtengo el hash sha-256 de un documento, luego me envío una transacción de 0 ether y agrego el hash del documento al campo "Datos". La transacción se valida y puedo verla: https://ropsten.etherscan.io/tx/0x1f4d3136b16de5ca56e04edfbb5139e902d624a200846374f7cba8b598f6dd82 (actualmente lo estoy haciendo en testnet)

Sin embargo, mis datos de entrada fueron 15e2b0d3c3 ... y los datos de recibo son 0x53369b73 15e2b0 ... Todo está bien, excepto que no entiendo por qué se insertaron estos 8 dígitos, ¿qué significan? ¿Y cuál es el propósito de este 0x delante de todo?

Si alguien pudiera explicar esto en términos simples, estaría muy agradecido.

Respuestas (1)

El 0xjusto indica que los datos están en hexadecimal. Es solo una convención de presentación y no parte de los datos.

La 53369b73parte es más interesante. Esto parece la firma de una llamada de función en Ethereum ABI . Cuando creó la transacción, parece que llamó a un método en un contrato. La "firma" de este método siempre forma los primeros cuatro bytes de los datos de la llamada según la especificación ABI: así es como un contrato puede determinar a cuál de sus métodos está llamando. (Si proporciona más información sobre cómo creó la transacción en primer lugar, probablemente pueda ampliar esto).

Puede enviar datos como una transacción sin llamar a un método. Por ejemplo web3.js, puede usar sendTransactiony especificar exactamente qué datos desea enviar usando el dataparámetro. Pero si está trabajando con contratos escritos en Solidity, probablemente no quiera hacerlo directamente.

Gracias por tu respuesta detallada. Solo uso myetherwallet para enviar transacciones. No tengo un contrato desplegado. También probé el servicio POE de stamp.io y parece que lo hacen de la misma manera y obtienen el mismo resultado (el resultado también tiene este prefijo 53369b73), por lo que aún no me queda claro cómo/por qué se forman estos 8 números...
Mmm. Acabo de enviarle una generosa transacción de 0,0001 Ropsten Eth a través de la pestaña "Enviar Ether y tokens" de MyEtherWallet. Como los datos de la transacción, acabo de ingresar "0x15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225" (sin comillas), como puede ver, se produjo sin cambios en la transacción en sí, por lo que no sé por qué es diferente para usted. Asegúrese de enviar Ropsten Eth (cualquier cantidad, 0 está bien), no un token, ya que las transferencias de tokens son en realidad llamadas de funciones disfrazadas.
¿Podría intentar subir un archivo a stamp.io (solo cree un archivo .txt simple, por ejemplo) y use su servicio de prueba de existencia? Una vez que cargue el archivo, podrá ver su código SHA-256. Cuando se confirme la existencia de su documento, puede hacer clic en un enlace (código de transacción) para ver los detalles. ¿Los "datos de entrada" son los mismos que el código sha-256 de su archivo o tiene estos 8 números al frente?
OK - hecho eso. Veo el prefijo "53369B73". Su página de certificado para el documento (parte de detalles técnicos) dice que están agregando este prefijo, por lo que es razonable (aunque no sé por qué). Sin embargo, no puedo ver de dónde vendría esto si está utilizando MyEtherWallet para crear su transacción.
¡Muchas gracias! Este prefijo realmente proviene de su servicio, por lo que (supongo) no es necesario al implementar mi propio servicio POE. Eres un verdadero genio, tus explicaciones me ayudaron a entender muchas cosas nuevas (lo que sucede detrás de escena)
Eres muy bienvenido. Edité ligeramente mi respuesta anterior para decir que esto "parece" una firma de función; probablemente no lo sea en este caso. De todos modos, podría ayudar a alguien más en el futuro. La mejor de las suertes para que todo funcione.