Commit 8f986e2
committed
btc: fix requesting previous transactions when not needed
The previous transaction of every input in a Bitcoin transaction needs
to be streamed to the BitBox, unless all inputs are Taproot
inputs. They are needed for the BitBox to verify the input
amount. Since Taproot, that is not necessary because all input amounts
are part of the sighash.
The firmware currently inspects the "scriptConfigs" to determine if
all inputs are taproot.
Bug: the scriptConfigs is also used to indicate outputs belonging to
the same account (either change outputs or outputs verified as "This
BitBox (same account): …". As a result, if all inputs are Taproot, but
the change output is not Taproot (or coins are sent to a non-Taproot
address of the same account), then previous transactions are
requested/streamed even if they don't need to be.
Fix: we let the client libraries set the flag if prevtxs are required
or not, and reject the transaction if they set it to "not required"
even if there is a non-Taproot input present.
The previous way is preserved for backwards compatibility with client
libraries that do not set this new flag.1 parent 25c3a2b commit 8f986e2
File tree
7 files changed
+244
-54
lines changed- messages
- py/bitbox02/bitbox02
- bitbox02
- communication/generated
- src/rust/bitbox02-rust/src
- hww/api/bitcoin
7 files changed
+244
-54
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
132 | 145 | | |
133 | 146 | | |
134 | 147 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
471 | 471 | | |
472 | 472 | | |
473 | 473 | | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
474 | 477 | | |
475 | 478 | | |
476 | 479 | | |
| |||
483 | 486 | | |
484 | 487 | | |
485 | 488 | | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
486 | 494 | | |
487 | 495 | | |
488 | 496 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
342 | 342 | | |
343 | 343 | | |
344 | 344 | | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
345 | 360 | | |
346 | 361 | | |
347 | 362 | | |
| |||
351 | 366 | | |
352 | 367 | | |
353 | 368 | | |
| 369 | + | |
354 | 370 | | |
355 | 371 | | |
356 | 372 | | |
| |||
360 | 376 | | |
361 | 377 | | |
362 | 378 | | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
363 | 387 | | |
364 | 388 | | |
365 | 389 | | |
| |||
382 | 406 | | |
383 | 407 | | |
384 | 408 | | |
| 409 | + | |
385 | 410 | | |
386 | | - | |
| 411 | + | |
387 | 412 | | |
388 | 413 | | |
389 | 414 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
717 | 717 | | |
718 | 718 | | |
719 | 719 | | |
720 | | - | |
721 | | - | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
722 | 734 | | |
723 | 735 | | |
724 | 736 | | |
| |||
775 | 787 | | |
776 | 788 | | |
777 | 789 | | |
778 | | - | |
| 790 | + | |
779 | 791 | | |
780 | 792 | | |
781 | 793 | | |
| |||
784 | 796 | | |
785 | 797 | | |
786 | 798 | | |
| 799 | + | |
| 800 | + | |
787 | 801 | | |
788 | 802 | | |
789 | 803 | | |
| |||
1572 | 1586 | | |
1573 | 1587 | | |
1574 | 1588 | | |
| 1589 | + | |
1575 | 1590 | | |
1576 | 1591 | | |
1577 | 1592 | | |
| |||
1595 | 1610 | | |
1596 | 1611 | | |
1597 | 1612 | | |
| 1613 | + | |
1598 | 1614 | | |
1599 | 1615 | | |
1600 | 1616 | | |
| |||
1679 | 1695 | | |
1680 | 1696 | | |
1681 | 1697 | | |
| 1698 | + | |
1682 | 1699 | | |
1683 | 1700 | | |
1684 | 1701 | | |
| |||
1871 | 1888 | | |
1872 | 1889 | | |
1873 | 1890 | | |
| 1891 | + | |
1874 | 1892 | | |
1875 | 1893 | | |
1876 | 1894 | | |
| |||
2147 | 2165 | | |
2148 | 2166 | | |
2149 | 2167 | | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
| 2173 | + | |
| 2174 | + | |
| 2175 | + | |
| 2176 | + | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
2150 | 2219 | | |
2151 | 2220 | | |
2152 | 2221 | | |
| |||
2180 | 2249 | | |
2181 | 2250 | | |
2182 | 2251 | | |
| 2252 | + | |
| 2253 | + | |
| 2254 | + | |
| 2255 | + | |
2183 | 2256 | | |
2184 | 2257 | | |
2185 | 2258 | | |
2186 | 2259 | | |
2187 | 2260 | | |
| 2261 | + | |
| 2262 | + | |
| 2263 | + | |
| 2264 | + | |
| 2265 | + | |
| 2266 | + | |
| 2267 | + | |
| 2268 | + | |
| 2269 | + | |
| 2270 | + | |
| 2271 | + | |
| 2272 | + | |
| 2273 | + | |
| 2274 | + | |
| 2275 | + | |
| 2276 | + | |
2188 | 2277 | | |
2189 | 2278 | | |
2190 | 2279 | | |
| |||
2881 | 2970 | | |
2882 | 2971 | | |
2883 | 2972 | | |
| 2973 | + | |
2884 | 2974 | | |
2885 | 2975 | | |
2886 | 2976 | | |
| |||
2976 | 3066 | | |
2977 | 3067 | | |
2978 | 3068 | | |
| 3069 | + | |
2979 | 3070 | | |
2980 | 3071 | | |
2981 | 3072 | | |
| |||
3047 | 3138 | | |
3048 | 3139 | | |
3049 | 3140 | | |
| 3141 | + | |
3050 | 3142 | | |
3051 | 3143 | | |
3052 | 3144 | | |
| |||
3124 | 3216 | | |
3125 | 3217 | | |
3126 | 3218 | | |
| 3219 | + | |
3127 | 3220 | | |
3128 | 3221 | | |
3129 | 3222 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
599 | 599 | | |
600 | 600 | | |
601 | 601 | | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
602 | 610 | | |
603 | 611 | | |
604 | 612 | | |
| |||
640 | 648 | | |
641 | 649 | | |
642 | 650 | | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
643 | 690 | | |
644 | 691 | | |
645 | 692 | | |
| |||
0 commit comments