The problem:
We display the button if the size of the list is a multiple of the page
size. Otherwise, we assume that the user has reached a partial page,
indicating they've reached the bottom. However, since we chose to
include all transactions with the same block time on a single page
(because it's not possible to order them by block index in the database,
as we don't store the block index), this can cause the page size to
exceed the set limit. As a result, the list size may not be a multiple
of the page size.
The solution:
keep in the state if the last fetched page has a length inferior
of the expected page size and do not display the button 'See more'
then as we reached the bottom.
7124e09b7555f46a9c16e265eed4bf247ea8326c Check coldcard version and request user to upgrade (edouardparis)
Pull request description:
Close#1343
ACKs for top commit:
jp1ac4:
utACK 7124e09b75.
edouardparis:
Self-ACK 7124e09b7555f46a9c16e265eed4bf247ea8326c
Tree-SHA512: 105ada9d34b36020b1be369d515486f3e245ce975a253f4b075273037345d2c7e97aa9b0921715d3e9d45c5bd5856c51f2737882188bc8d2f13dc1e8db3e82f9
00841631760241d58f89f433be7529cc705e2b02 gui: add help text for electrum address (Michael Mallan)
Pull request description:
This adds a short text explanation about SSL usage in Electrum addresses to both the installer and settings page.
This is a modified version of #1342.
ACKs for top commit:
edouardparis:
ACK 00841631760241d58f89f433be7529cc705e2b02
Tree-SHA512: 1b25547c07afaebc3ce86bdcb8c9de8d83b9f36b1bbfabbec2303e1c57e8c64c154412081c2bc26500e2c0d1d48f764b47730ebd4fb21d1c554e7da26ce8f0fb
6a6a72408fe105c278b9e66d885d30310b92dd8a grammar: USAGE.md download it there -> download it here (Ben Westgate)
80fddb20f3522e4baf917468ebacef6aa4dd9718 grammar fixes: loader.rs (Ben Westgate)
b821896f7792c6f5b7e101666751a50e71b93c5d installer/prompt: improve grammar and fix typos (Ben Westgate)
Pull request description:
Closes https://github.com/wizardsardine/liana/issues/1283
back up is a verb, backup is a noun.
Other words had improper plurality to match the verbs used or the verb had the wrong conjugation or adjectives were placed outside of normal locations. More descriptive pronouns used.
ACKs for top commit:
darosior:
ACK 6a6a72408fe105c278b9e66d885d30310b92dd8a
Tree-SHA512: dffa8158c0c59045cccac9b124f60dbfe0489cf0e6cf43be462aaf38e4ebdcb418a26cfc7d7c7e813d30e4e0c35bc6a563a985437e882b376f6b14c10bd07d4d
87593befd4a85accbab7e7417b322ea74393b69d electrum: don't roll the tip forward upon reorg (Michael Mallan)
Pull request description:
For Electrum, we detect reorgs while syncing based on our local chain.
When a user requests a rescan, we roll the DB back to genesis block, but leave the local chain as it is. If there's then a reorg, we would find the common ancestor with respect to our local chain, which would be later than the DB's tip. In order not to miss any updates, we shouldn't roll the DB tip forward in that case.
ACKs for top commit:
darosior:
utACK 87593befd4a85accbab7e7417b322ea74393b69d.
Tree-SHA512: d89f95d15a55b21479ace2757d2f343bbff8919dd31733d9bff3165d0cfdcb1256e0894dab414f57d363331ef81c15fb4efdae572394640fbc620bcea8c8c57c
74a53baa39c409d8a39a27affc5ebac34128cb24 spend: add 10 sats to fee for 1 sat/vb txs (Michael Mallan)
Pull request description:
This is a quick change to address #1322.
It adds 10 sats to the fee for a non-replacement transaction targeted at 1 sat/vb.
ACKs for top commit:
darosior:
utACK 74a53baa39c409d8a39a27affc5ebac34128cb24. Looking forward to a real fix.
Tree-SHA512: c8ef2a49be67b94c2198a246a82f92f16661308151540197a7831a06e1eca277fa3dafe733b53a97dc3c9fc6639f4b724237863f186e4ffeb0bf61c74a1e9c0b
6349df95d3a690ac35be6dc18e5c6e0843d6c940 gui(installer): implement Default for DefineElectrum (pythcoiner)
530a8c50f5d96123880443e3bdb8886f51235815 gui(settings): do not switch between backend types (pythcoiner)
Pull request description:
22ed096 fixes#1306
2bd22b4 fixes#1305
fd50913 in order to make clippy happy
ACKs for top commit:
jp1ac4:
ACK 6349df95d3a690ac35be6dc18e5c6e0843d6c940.
Tree-SHA512: 55fcac1a6e2129269e54106b354d22d6ddd4eae68034ecca030f7eb17adf1d7e6cb3cd3118dd877df3b934d26f61c6f7b5af0f354dc1000fa0c1fc6c6d833df5
b73193ae77dccde519d43e5042324742dbee5523 Deserialize error from create_spend http response (edouardparis)
Pull request description:
Instead of having an unclear and ugly message like:
data did not match any variant of untagged enum DraftPsbtResult
ACKs for top commit:
edouardparis:
Self-ACK b73193ae77dccde519d43e5042324742dbee5523
Tree-SHA512: 8182c01ce4067b30dc821dc8f13243b3df4a85fa8f146d779bd9922fedd26f0eabd7fca07c47fdc517b0d958cbe0185c7003e09d6d28f32312e6cb4d4fb9ba52
ff3d497fe12a70c606e9953cfb29fa4af0520859 gui(settings): fix daemon reload handling for electrum (Michael Mallan)
Pull request description:
In case of error reloading daemon for Electrum, set edited to false (same handling as for bitcoind).
ACKs for top commit:
darosior:
tested ACK ff3d497fe12a70c606e9953cfb29fa4af0520859. Not bulletproof as i need to get back to the settings and re-click save with the previous settings for the daemon to be restarted, but still helps a lot to have the previous-working-config ready to be saved.
Tree-SHA512: c9c6aad38a8a834d51a6642b42c560107e503afa820db971a2af23c979681ee8487ff4c1c635d99ac740351fab0fe9c3b0119d0d3326193b5aea81f7dfe6598b
f67ee76f57b199b7b826348143e40cba61f81c8d gui: update liana dependency commit hash (Michael Mallan)
bf25103fadfdef7912b0ef4e155000d65acd3ccc gui(settings): add sanity check on electrum wallet address (pythcoiner)
Pull request description:
This is the first commit from #1303.
ACKs for top commit:
edouardparis:
ACK f67ee76f57b199b7b826348143e40cba61f81c8d
Tree-SHA512: 02c52039c42af1fbae549862a3c8971b8561ce6285674461a40b04ede5d7704b001b93705874ea466b0176b6a43c849b6070be0dbb0d32205abc1389ccbd2b4e
3d7b3e44734ec859e37d1ac4005f25678f0cbc94 qa: correct reorg_shit function to use given `height` (Antoine Poinsot)
193f38a7c7258978e590f54aa55e048adb45e9ef ci: lower overall timeout (Antoine Poinsot)
59ba0ad8ef3f3a7203b1d0587ebf07e8642767f2 electrum: log local and updated chains after polling Electrum (Antoine Poinsot)
d3082a63050a9ee7fdc2f50153f161432e9b2989 electrum: make sure chain updates connect on rescan (Antoine Poinsot)
Pull request description:
The `from_chain_tip` command takes a `CheckPoint` of our current chain tip for purposes of providing a chain update which connects to it, including in case of a reorg.
This is not a point from which to rescan the chain.
The current code made it so in case a rescan was performed while there was too much progress on the backend (>8 blocks), or when there was a deep enough reorg, the chain update could not unambiguously connect to our local chain. Here is an instance (logs were adapted to debug this issue):
```
2024-09-10T15:19:48.258728Z DEBUG liana::bitcoin::electrum:196: Full local chain: LocalChain { tip: CheckPoint(CPInner { block: BlockId { height: 618, hash: 0x6c6f30d76e1ce1bee2157d271300b93e968c501685c20e8466635310a4622efe }, prev: Some(CPInner { block: BlockId { height: 617, hash: 0x3ed1127ea206b672f47c6dfc984c63c229264f618015865057de9a75e7a6f8b0 }, prev: Some(CPInner { block: BlockId { height: 616, hash: 0x6ffe4d528
b5689802c46c86a1bd0acc9ecb35abf0bf73d2ccce72935b333c29e }, prev: Some(CPInner { block: BlockId { height: 615, hash: 0x433f6d69da936c29fdf02d43aeca9e0cfce0ce877f628743ada38e566dff1d73 }, prev: Some(CPInner { block: BlockId { height: 614, hash: 0x12a64d6416e196618154c34ad58f5c7342b59a752dbc4686af668e987f38dc28 }, prev: Some(CPInner { block: BlockId { height: 613, hash: 0x539942c4bb38f94e9ae35f0d120c8e250edd7a56930e130fe079 59d179dd2c0a }, prev: Some(CPInner { block: BlockId { height: 612, hash: 0x12ab45ad9c2dc246e450f98831cf2e6c5b3c9c5a0ab4af46c8a8cd915680d728 }, prev: Some(CPInner { block: BlockId { height: 611, hash: 0x21c890e0885f4672e22dbb6d17b110863bdd6b0464e0f5e731072d63f45a12d7 }, prev: Some(CPInner { block: BlockId { height: 515, hash: 0x021e3c76fbe92630214b1b23b85d44a9b443c6b1d01b336b7d1994a18944ebb1 }, prev: Some(CPInner { block:
BlockId { height: 0, hash: 0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206 }, prev: None }) }) }) }) }) }) }) }) }) }) }
2024-09-10T15:19:48.259058Z DEBUG liana::bitcoin::electrum:197: Full chain update: CheckPoint(CPInner { block: BlockId { height: 633, hash: 0x41ce59abb80de83d165501a1f9ba7acc98ed0ce4af7fde512fd2491905e777bd }, prev: Some(CPInner { block: BlockId { height: 632, hash: 0x4e812e2a98150c5da85efa44d792feed64e76ffbd0bf31ac5925a1b798bad959 }, prev: Some(CPInner { block: BlockId { height: 631, hash: 0x1379b6c609ce9adb0e2123dd36
629e71a5011dc0e9f6aa3935f2f6c5c9ed28b2 }, prev: Some(CPInner { block: BlockId { height: 630, hash: 0x4bb4f27e5cefd3ef2d9707af6ed933c6bb049a48081250d365fdb1bd3a10da4d }, prev: Some(CPInner { block: BlockId { height: 629, hash: 0x64bf474cde129b6b9a45c7f697d57c9514ef33de02cda3df1f65543f0b111366 }, prev: Some(CPInner { block: BlockId { height: 628, hash: 0x60c205d56d5a244da352867c7db48a696fe9ecfe04d0fd4f105c7663afdf5717 }, p
rev: Some(CPInner { block: BlockId { height: 627, hash: 0x70b8d4091481295e39582d82f5c72ca5cb62505861a6d804afc1b1a0caa25c2b }, prev: Some(CPInner { block: BlockId { height: 626, hash: 0x15ad17258b32d87b8719e6ee911e4b54e8095a3429d05617d391f262a4e8b8c1 }, prev: Some(CPInner { block: BlockId { height: 0, hash: 0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206 }, prev: None }) }) }) }) }) }) }) }) })
```
I think this is the root cause of the issue we are seeing in the `rescan_edge_cases` functional test when ran in CI, and also of the crash Pyth reported.
Fixes#1280.
Fixes#1270.
ACKs for top commit:
jp1ac4:
ACK 3d7b3e44734ec859e37d1ac4005f25678f0cbc94.
Tree-SHA512: 0ed89722af4aa014877406f47543779ebcb23d28827fe87b48e6593fd8283bfa92fa22f9862dd0b6f34a367e01609aad07bd5df339988b1054091492d65ec312
It was using the passed height for all other calculation, except for the
invalidation itself where it was using the wider-scope-initial-tip! This
is probably a mistake due to moving it to its own, inner, function.
55de4d95a0769bdbf4a63986e56467699026e0db gui settings: display fingerprint if no alias (edouardparis)
Pull request description:
close#1310
ACKs for top commit:
edouardparis:
Self-ACK 55de4d95a0769bdbf4a63986e56467699026e0db
Tree-SHA512: 34bb0cf699f227663395d3822ddf442dc16e960e8cec8f96d44e9e00c20608805dca90b14d4727e0e10d1256a2a7ad66660e31cf8253f1893c0fdd4211f625d3
4567e3280c2a3238249ae7f7d2ce862aa8493a98 electrum: reduce load on server (Michael Mallan)
Pull request description:
Changing values as discussed in #1292.
ACKs for top commit:
darosior:
utACK 4567e3280c2a3238249ae7f7d2ce862aa8493a98
Tree-SHA512: 71fca18026d3e6bca95fda82f0018b1073ac2a122ffa08294ff01d335fb34a348039e5aaab95de15c359ebd8e38ddfda07ba895e0e0e2550c6a2ec0531847135
537ebb2fb3301e82a297a5c8c4c5043d8d0938e4 func test: check electrs has started (Michael Mallan)
7612eda78874b879aefaaa790aab56429c33473c electrum: ping server before returning client (Michael Mallan)
Pull request description:
Ping server as an extra connectivity check.
ACKs for top commit:
darosior:
utACK 537ebb2fb3301e82a297a5c8c4c5043d8d0938e4
Tree-SHA512: 77186595acdabe878a4158847e878e0e004c58dd9476b9e5b4d99f4a79bb6fa552edb0b8b42f25a353bd6028505e66f6e7c6ffebfc7b1c252ad0b89db475bc23
d551aeeeacf5356a0ba25f4929230dd099b01c32 electrum: consider invalidated blocks for reorgs (Michael Mallan)
86965c188e29191b60da51ce7d998157e1d50f77 electrum: common ancestor is before first changed block (Michael Mallan)
Pull request description:
The common ancestor is the highest block that is strictly lower than the first change.
When finding the point of change, we can take the first height with any change (including an invalidated block) rather than the first height with a new block, which avoids a loop. The height found in both cases (loop vs no loop) should be almost always the same as we apply the update to our local chain before finding the common ancestor, but perhaps in a test if there's a reorg down to 0 and the chain update only contains invalidated blocks and no new blocks, then checking for the first invalidated block would be better as there would be no new blocks to find and the reorg would be undetected.
ACKs for top commit:
darosior:
utACK d551aeeeacf5356a0ba25f4929230dd099b01c32
Tree-SHA512: 96f59d87e6a89f49a371219cac78505d1ae8edcf2b1789f134f526b7f627d4355e036a8af1584e3076cb58a41bc9c2a0c8b81a48f81157986aae2af33f236dbd
c2a8cf809267cb6f4dc11b9b16d8b03d7ef786e2 Reset hws watch list at each installer step (edouardparis)
Pull request description:
Because of flaky connection, we drop the connection list to reconstruct it at each step of the installer
close#1307
ACKs for top commit:
edouardparis:
ACK c2a8cf809267cb6f4dc11b9b16d8b03d7ef786e2
Tree-SHA512: 6b3bf655550c03a823d7b4e82cb8ee470f819d3b73453cfd132002761131fb01447c12ec93d6a28dad31ed464924514b98108b95a379e302aca969767373aa0e