Estoy interesado en el posible uso de la cadena de bloques de Bitcoin (u otra altcoin) como un libro mayor distribuido generalizado, lo que significa que es útil para rastrear información distinta de las transacciones de monedas propiamente dichas. Un requisito previo para eso parecería ser la capacidad de pagar transacciones cuyo propósito principal no sea mover Bitcoins de una dirección a otra. Entonces, ¿pueden las transacciones de Bitcoin no enumerar salidas, dejando así todas las entradas como una recompensa de tarifa de transacción para el minero?
No. Si crea uno, Bitcoin Core no lo transmitirá ni extraerá. Si entra en un bloque, será rechazado. Del código fuente de Bitcoin Core ( tx_verify.cpp:164
):
if (tx.vout.empty())
return state.DoS(10, false, REJECT_INVALID, "bad-txns-vout-empty");
Sin embargo, puedes crear un vout con 0 satoshis. Esa no es una transacción "estándar", por lo que el software no la extraerá de forma predeterminada. Sin embargo, si entra en un bloque, es válido.
Hay otra forma de hacerlo. Usando el OP_RETURN
código de operación. OP_RETURN
en una salida de transacción obliga a cualquiera que haga referencia a esa salida a no gastarla (el script regresa y la transacción no es válida). Aunque la salida existe, es demostrablemente indiscutible .
fabricante de cosas7
pieter wuille
jacob ford
tx_verify.cpp
de buscar una regla que rechace cualquiervout
valor de0
, pero no pude encontrar ninguna. ¿Alguien puede señalar dónde Bitcoin Core rechazaría tal transacción?