| 78 | } |
| 79 | |
| 80 | static void tx_must_be_eq(const struct bitcoin_tx *a, |
| 81 | const struct bitcoin_tx *b) |
| 82 | { |
| 83 | u8 *lina, *linb; |
| 84 | size_t i; |
| 85 | |
| 86 | lina = linearize_tx(tmpctx, a); |
| 87 | linb = linearize_tx(tmpctx, b); |
| 88 | |
| 89 | for (i = 0; i < tal_count(lina); i++) { |
| 90 | if (i >= tal_count(linb)) |
| 91 | errx(1, "Second tx is truncated:\n" |
| 92 | "%s\n" |
| 93 | "%s", |
| 94 | tal_hex(tmpctx, lina), |
| 95 | tal_hex(tmpctx, linb)); |
| 96 | if (lina[i] != linb[i]) |
| 97 | errx(1, "tx differ at offset %zu:\n" |
| 98 | "%s\n" |
| 99 | "%s", |
| 100 | i, |
| 101 | tal_hex(tmpctx, lina), |
| 102 | tal_hex(tmpctx, linb)); |
| 103 | } |
| 104 | if (i != tal_count(linb)) |
| 105 | errx(1, "First tx is truncated:\n" |
| 106 | "%s\n" |
| 107 | "%s", |
| 108 | tal_hex(tmpctx, lina), |
| 109 | tal_hex(tmpctx, linb)); |
| 110 | } |
| 111 | |
| 112 | /* BOLT #3: |
| 113 | * |
no test coverage detected