Pregunta 3

wallet: fix mixed-input transaction accounting in history RPCs

Kepler 15/09/2026 11:44
Pregunta 3 → En el segundo commit se crea el struct WalletTxHistoryAccounting y la función CachedTxGetHistoryAccounting(). ¿Qué información agrupa esta función y por qué, de momento, la fee solo tiene valor cuando input_ownership == ALL? ¿Por qué la fee pasa a ser std::optional?
22/09/2026 18:20
Quien se anima con la tercera pregunta?
arejula27 22/09/2026 18:21
Agrupa el debit (tus inputs), el credit (tus outputs) y la fee
Kepler 22/09/2026 18:21
Correcto!
Pol Espinasa 22/09/2026 18:21
No he podido revisar, pero la parte de porque la fee es opcional se responde con la 2a pregunta 😛
arejula27 22/09/2026 18:22
sip, pero yo diria que es para diferenciar de fee 0
22/09/2026 18:22
null!=0
👍 1
22/09/2026 18:22
(no se si es posible btw)
Kepler 22/09/2026 18:22
Correcto, el std::optional es para poder saber cuando la fee es 0 o cuando no se a podido calcular (null)
Pol Espinasa 22/09/2026 18:22
si claro, pero porque 0 es un valor valido igual que cualquier otro valor
22/09/2026 18:23
por consenso sip y por politica bajo unas condiciones tambien
Kepler 22/09/2026 18:24
Al final esto se utiliza para calcular el Accounting the las tx de forma uniforme en todas las rpc que lo utilizan
👍 1
Leo (w0xlt) 22/09/2026 18:24
CachedTxGetHistoryAccounting() devuelve una estructura WalletTxHistoryAccounting que contiene: input_ownership, debit, credit y fee.
👍 1
22/09/2026 18:24

La función solo establece fee para ALL. En ese caso, la wallet aporta todos los inputs, por lo que puede calcular:

fee = wallet_debit − total_output_value

22/09/2026 18:24
std::optional<CAmount> permite distinguir entre una fee conocida de valor cero y la ausencia de un valor de fee que se pueda informar. Usar 0 para ambos casos daría a entender incorrectamente que una fee desconocida es igual a cero.
👍 3 🔥 1
Kepler 22/09/2026 18:26
Gracias por la explicación! Si no hay más preguntas vamos con la siguiente!
👍 3