Tengo mi código funcionando correctamente ahora para crear y enviar una transacción con la tarifa de red correcta. Aquí está mi pseudocódigo usando json rpc:
Calcule la tarifa de la red utilizando estimatesmartfee
"ECONÓMICO" en función del tamaño de una transacción típica
Ajustar el monto del pago según la estimación de la tarifa
createrawtransaction
usando el monto de pago estimado
signrawtransaction
lectura size
de la transacción sin procesar decodificada del paso 2
Vuelva a calcular la tarifa de la red usando estimatesmartfee
"ECONÓMICO" en función del tamaño real de la transacción del último paso
Ajuste el monto del pago en función de la tarifa de red real
createrawtransaction
usando el monto de pago real
signrawtransaction
sendrawtransaction
Los pasos 6 a 9 repiten los pasos 1 a 4.
¿Hay alguna manera de hacer esto sin tener que llamar a todo dos veces?
Si la billetera Bitcoin Core conoce las entradas de la transacción, entonces puede usar el fundrawtransaction
comando para omitir la estimación de tarifas y la selección de entrada. El proceso entonces se convierte en:
createrawtransaction
con sólo las salidas que desee (es decir, sin cambios, sólo los destinatarios).fundrawtransaction
signrawtransaction
sendrawtransaction
Si no está utilizando la billetera de Bitcoin Core, puede usar valores efectivos.
Presumiblemente, conoce las cantidades en las entradas antes de crear la transacción. Entonces puede calcular qué tan grandes serán las entradas, calcular cuánto costarán las tarifas en función de la salida de estimatesmartfee
y restar el monto de la tarifa del valor real de la entrada. Este es su valor efectivo.
Cuando crea las salidas, calcula el tamaño total de los datos que no son de entrada y calcula las tarifas para esos datos. Ahora sabe cuánto valor total deben cubrir sus entradas. A continuación, puede seleccionar las monedas de esa manera.
Entonces el proceso es:
estimatesmartfee
createrawtransaction
, signrawtransaction
, sendrawtransaction
.El tamaño de las entradas en vbytes es el siguiente:
P2PKH: 148 vbytes
P2WPKH: 37 vbytes
P2SH-P2WPKH: 60 vbytes
Para las entradas P2SH y P2WSH, depende del script que esté utilizando. Sin embargo, la mayoría de la gente usará P2PKH, P2WPKH o P2SH-P2WPKH.
andres chow
todmo