Esta puede ser una pregunta muy simple de responder, pero no he podido encontrarla rápidamente. De todos modos, si tuviera que deconstruir una transacción en la cadena de bloques y extraer el valor de tiempo de la transacción, ¿en qué formato está la marca de tiempo?
En otras palabras, si sacara el valor del tiempo de extracción, ¿cómo puedo convertirlo en un valor significativo?
Hay varias cosas que podrías querer decir con el momento de la transacción:
No podemos saber 1, porque podría haberse generado sin conexión y no hay un campo de tiempo. Puede suponer que 1 está aproximadamente 30 segundos antes de 2, pero nuevamente, no puede saberlo.
Podemos averiguar 2, porque el momento en que recibimos la transacción será más o menos el mismo que cuando lo hace el 90% de la red. Para datos históricos, blockchain.info tiene una API.
Podemos averiguar 3, porque hay un campo de tiempo en el bloque. Sin embargo, eso puede fallar hasta una hora y a la red no le importará. Aún así, no hay muchas razones para mentir al respecto.
Calcular 4 es más o menos lo mismo que 2.
Si se refiere literalmente a la propiedad "tiempo" o "tiempo de bloque" de una transacción dentro de la cadena de bloques, entonces esta marca de tiempo está en formato Unix.
Y si por "convertirlo a un valor significativo", se refiere a un formato legible por humanos, puede usar una línea de comando de Unix (por ejemplo, Terminal en OSX) para hacer una conversión rápida:
Linux:
$ date -d @1395103695
Mac OS X:
$ date -j -f "%s" 1395103695
...que devolvería lo siguiente:
Mon Mar 17 14:48:15 HST 2014
Las transacciones no tienen un tiempo per se. Tienen un lock_time que actualmente no se usa de todos modos.
Los bloques tienen marcas de tiempo, bytes 69-72 después de recortar los encabezados del protocolo y las sumas de verificación. Algunos pueden decir que el tiempo de una transacción es el tiempo del bloque que lo incluyó.
Otra interpretación (la utilizada por blockchain.info) es simplemente la primera vez que el par recibió la transacción.
Esteban Gornick
RLH