Si gasto todo el saldo de mi billetera en otra dirección de mi propia billetera, ¿tengo que esperar hasta que reciba una confirmación para gastarlo o el cliente sabe que son mis propios fondos y que se pueden gastar?
Esto se puede hacer a través de RPC , pero esta pregunta se refiere específicamente al uso del cliente bitcoin-qt para esto.
Sí. A diferencia de otras transacciones, no necesita esperar las confirmaciones.
Desde el código que selecciona qué monedas usar para financiar una transacción en src/wallet.cpp
:
bool CWallet::SelectCoins(int64 nTargetValue, [...])
{
vector<COutput> vCoins;
AvailableCoins(vCoins);
return (SelectCoinsMinConf(nTargetValue, 1, 6, vCoins, setCoinsRet, nValueRet) ||
SelectCoinsMinConf(nTargetValue, 1, 1, vCoins, setCoinsRet, nValueRet) ||
SelectCoinsMinConf(nTargetValue, 0, 1, vCoins, setCoinsRet, nValueRet));
}
donde SelectCoinsMinConf
los argumentos 2 y 3 son "número de confirmaciones que necesita una moneda si es de mí" y "número de confirmaciones que necesita una moneda si es de otra persona" respectivamente:
bool CWallet::SelectCoinsMinConf(int64 nTargetValue, int nConfMine, int nConfTheirs, [...])
{
[...]
}
Entonces, lo que sucede es que el código primero intenta financiar la transacción utilizando solo monedas que usted mismo se envió y que tienen al menos 1 confirmación y monedas de otros con al menos 6 confirmaciones. Si no puede encontrar suficiente de esa manera, vuelve a intentarlo, pero solo requiere 1 confirmación de las monedas, sin importar de dónde provengan. Y si eso también falla, relaja el requisito de confirmación de las monedas que se envió a sí mismo.
Yo creo que puedes. Definitivamente puede hacerlo desde bitcoind (y fue posible con wxbitcoin), y no veo ningún código adicional que lo impida. No hay razón para que se prevenga. Aunque no lo he probado.