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.
El 0x
justo indica que los datos están en hexadecimal. Es solo una convención de presentación y no parte de los datos.
La 53369b73
parte 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 sendTransaction
y especificar exactamente qué datos desea enviar usando el data
parámetro. Pero si está trabajando con contratos escritos en Solidity, probablemente no quiera hacerlo directamente.
EtherPaul
benjaminion
EtherPaul
benjaminion
EtherPaul
benjaminion