Repository navigation
Commit 7e315af
fix(key-wallet): ask every account whether a transaction is new, not just the matched ones (#1000)
The transaction total a sync reports disagreed between runs whose wallet state
was identical — 6800 against 6801 over the same 6787 transactions. The counter
is fed `new_txids`, so a transaction counted twice inflates it, and which ones
get counted twice depends on delivery order.
`is_new` polled only `affected_accounts`. That set is not stable across
deliveries: an account that matched solely because the transaction spent its
coin drops out of it on every later delivery, the coin having left `utxos` when
the spend was recorded. Once the account holding the record stops matching, the
remaining candidates have no record, and a transaction the wallet has held all
along is announced as new a second time.
Asking every account instead is the semantics the code already documented —
`test_instantsend_backfills_missing_record_in_other_account` describes "the
wallet-level `is_new`", which the old loop only delivered while the holding
account kept matching. It sits behind the relevance early-return, so it runs
only for transactions that matched, and costs nothing measurable.
Measured over full mainnet restores: 13 to 14 transactions per sync counted
twice, always on the second delivery of a block whose first delivery had
already recorded them. With this the reported total is 6787 on every run, equal
to the number of distinct transactions the wallet actually holds.
Claude-Session: https://claude.ai/code/session_019jkiLt3KdPr5jG4ruYELjT
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 93260bf commit 7e315af
1 file changed
Lines changed: 112 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
184 | 184 | | |
185 | 185 | | |
186 | 186 | | |
187 | | - | |
188 | 187 | | |
189 | | - | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | | - | |
| 188 | + | |
200 | 189 | | |
201 | 190 | | |
202 | 191 | | |
| |||
1319 | 1308 | | |
1320 | 1309 | | |
1321 | 1310 | | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
1322 | 1422 | | |
1323 | 1423 | | |
1324 | 1424 | | |
| |||
0 commit comments