Leo Contratos: ¿Será esto posible? donde parte de la pregunta se relacionaba con el vencimiento de una transacción y una de las respuestas decía que nunca sería posible ya que causa problemas. Desafortunadamente, la respuesta no indicó qué problemas causaría.
No puedo entender por la pregunta/respuesta si se trataba de una transacción (¿no confirmada?) que expira (que bien podría ser problemática) o de que expira un txout de una transacción previamente confirmada.
¿Es esto último completamente imposible por cualquier método actual, por ejemplo, secuencias de comandos y/o una combinación de transacciones?
Una forma en que percibo que podría ser posible (y solo soy un novato de bitcoin, así que tenga piedad de mí y ayúdeme a entender si esta sugerencia es evidentemente ridícula para los expertos de bitcoin) sería tener una nueva operación de secuencia de comandos de bitcoin que podría ser usado en el scriptPubKey del txout para empujar el tiempo ' actual ' a la pila para que pueda ser comparado (usando OP_LESSTHAN, OP_GREATERTHAN, OP_LESSTHANOREQUAL o OP_GREATERTHANOREQUAL) a un tiempo de caducidad fijo (que está en scriptPubKey y empujado a la pila por scriptPubKey) y solo si la hora actual es menor que la hora de vencimiento, el resto de scriptPubKey permitirá que se confirme la transacción (es decir, el pago de bitcoin).
Una nota sobre lo que quiero decir con hora ' actual '... podría haber un largo debate sobre la fuente de la hora actual y la confiabilidad de esa fuente, pero propongo que la hora 'actual' realmente no necesita ser la tiempo actual real, siempre que sea una aproximación razonablemente cercana en el ámbito de bitcoin (alrededor de 10 minutos en promedio, pero tal vez más, tal vez más corto). Por lo tanto, podría ser la marca de tiempo del bloque anterior en la cadena de bloques; de esa manera, cada nodo (suponiendo que no haya bifurcación) juzgará la expiración de txout contra el mismo tiempo 'actual'.
Un efecto secundario indeseable pero posiblemente aceptable es que si una transacción que gasta el txout se envía y se confirma en una bifurcación corta de blockchain, se volverá a poner en cola en la bifurcación más larga y existe la posibilidad de que txout haya expirado antes de que se vuelva a procesar la transacción y, por lo tanto, el la transacción fallará la segunda vez.
Otra sutileza para ayudar a la usabilidad podría ser ofrecer dos variantes de la nueva operación de tiempo 'actual' para reflejar las dos 'variantes' de lock_time, una variante para insertar la marca de tiempo del bloque anterior en la pila y la otra variante para insertar la marca de tiempo del bloque anterior. altura sobre la pila. De esta forma, un usuario puede escribir transacciones que son autoconsistentes en referencia de tiempo o autoconsistentes en referencia de altura.
Expirar un txout realmente no tiene sentido, ya que destruiría las monedas, y no hay forma de destruir las monedas. (Las monedas no mencionadas por ningún txout se contribuyen como tarifas).
Podría crear una transacción con lock_time en el futuro que envíe las monedas a otra dirección de bitcoin. Si le da esta transacción a una contraparte, entonces tendrá la opción de transmitir la transacción a la red después de que venza y entrará en vigencia.
Antes de ese tiempo, podría crear otra transacción sin la restricción lock_time, mover las monedas y hacer que la transacción de la contraparte sea inútil.
muro