Transacciones con tiempo de espera (usando nLockTime)

Me gustaría saber si hay transacciones que solo se pueden realizar en algún momento predefinido. En principio, debería ser posible usar el parámetro nLockTime para esperar un número de bloque en particular:

https://en.bitcoin.it/wiki/Protocol_specification#tx

Esto podría ser útil en ciertos contratos, pero el reemplazo aún no es compatible:

¿Por qué no se admite el reemplazo de transacciones?

En cualquier caso, parece que aún puede, en principio, crear una transacción simple e irremplazable con un tiempo de espera.

¿Hay algún ejemplo de tal transacción en la cadena de bloques? De no ser así, ¿sería aceptado por el cliente estándar o sería necesario convencer a un minero para que lo incluyera en uno de sus bloques?

ACTUALIZACIÓN: abrió una discusión en https://bitcointalk.org/index.php?topic=131443.0 para profundizar más.

La función Lock_time tiene potencial para una función de tipo 'Pensión'. IE Compre 1 Bitcoin hoy y evite el acceso a él durante 10 años. Enviado a una dirección de billetera Brain, por lo que no importa qué cliente use y sin importar en qué parte del mundo se encuentre, puede recoger su Bitcoin, Pensión, Inversión. ¿Podría modificarse para que libere esta inversión en, digamos, cantidades del 1% cada X meses UTC, de modo que obtenga el 1% cada mes liberado en la dirección de Brainwallet? De esa manera, hay al menos 10 años de pagos de pensión BTC. Esperaría un rendimiento cada vez menor, pero como Bitcoin es deflacionario, tal vez no

Respuestas (2)

Resuelto. Puedes preparar transacciones con un tiempo de espera y el cliente estándar las aceptará.

Puede consultar algunos detalles en: https://bitcointalk.org/index.php?topic=131443.0

Esencialmente, pude crear una transacción sin procesar https://en.bitcoin.it/wiki/Raw_Transactions usando bitcoind. Luego, antes de firmar, podría reemplazar manualmente los bytes por el número de secuencia y el tiempo de bloqueo. Tuve un tiempo difícil con locktime. Primero establece la marca de tiempo de UNIX que desea, luego convierte a hexadecimal, invierte los bytes (little endian) y reemplaza los últimos bytes de la transacción hexadecimal. https://en.bitcoin.it/wiki/Protocol_specification#tx le dice cuáles son los bytes relevantes. Más tarde puede firmar la nueva transacción y enviarla.

He estado usando la guía en: https://people.xiph.org/~greg/signdemo.txt

Hice todo en la red de prueba. En mis primeros intentos no tuve cuidado con mi cambio y terminé gastando toda mi billetera en tarifas. Debes tener cuidado si intentas esto con bitcoins reales.

ESTÁ BIEN. Esto se puso interesante rápidamente. Construí un explorador de bloques pequeños y encontré 5 transacciones con valores altos de nLockTime en bloques:

http://blockexplorer.com/rawblock/000000000000036a546044e094db778e1c146f051cd5d0e52fb0e6c43e63ea8c

http://blockexplorer.com/rawblock/000000000000049bd7c8aebf91efc907c880a35c05b7861b4eab3fc09655bb05

http://blockexplorer.com/rawblock/00000000000005f229df518de50c53616f4f2f895deca078dce1d74d5b79e39c

http://blockexplorer.com/rawblock/000000000000026e8536f6ffe741feeb30d7123e6435b3ad7db141833969b5bf

http://blockexplorer.com/rawblock/00000000000001d985839442aac0179713fc7f6e5b109d524a272d3d55600d7a

Hay uno en cada bloque con valores de tiempo de bloqueo 198370, 199000, 199000, 207150 y 207167. Ninguno de ellos ha caducado todavía.

Responderé mi propia pregunta y comenzaré una publicación en bitcointalk para ver esto con más profundidad (cómo llegaron las transacciones allí, qué les sucede si los clientes cambian, etc.).