diff --git a/core/.changelog.d/2394.added b/core/.changelog.d/2394.added new file mode 100644 index 00000000000..49b9573040a --- /dev/null +++ b/core/.changelog.d/2394.added @@ -0,0 +1 @@ +Show thousands separator when displaying large amounts. diff --git a/core/src/apps/bitcoin/sign_tx/layout.py b/core/src/apps/bitcoin/sign_tx/layout.py index ed82ff07a58..904413a331a 100644 --- a/core/src/apps/bitcoin/sign_tx/layout.py +++ b/core/src/apps/bitcoin/sign_tx/layout.py @@ -190,7 +190,12 @@ async def confirm_total( fee_rate_str: str | None = None if fee_rate >= 0: - fee_rate_str = f"({fee_rate:.1f} sat/{'v' if coin.segwit else ''}B)" + # Use format_amount to get correct thousands separator -- micropython's built-in + # formatting doesn't add thousands sep to floating point numbers. + # We multiply by 10 to get a fixed-point integer with one decimal place, + # and add 0.5 to round to the nearest integer. + fee_rate_formatted = format_amount(int(fee_rate * 10 + 0.5), 1) + fee_rate_str = f"({fee_rate_formatted} sat/{'v' if coin.segwit else ''}B)" await layouts.confirm_total( ctx, diff --git a/core/src/trezor/strings.py b/core/src/trezor/strings.py index fa1fc783976..c26414c5ba7 100644 --- a/core/src/trezor/strings.py +++ b/core/src/trezor/strings.py @@ -10,8 +10,14 @@ def format_amount(amount: int, decimals: int) -> str: sign = "-" else: sign = "" - d = pow(10, decimals) - s = f"{sign}{amount // d}.{amount % d:0{decimals}}".rstrip("0").rstrip(".") + d = 10**decimals + integer = amount // d + decimal = amount % d + + # TODO: bug in mpz: https://github.com/micropython/micropython/issues/8984 + grouped_integer = f"{integer:,}".lstrip(",") + + s = f"{sign}{grouped_integer}.{decimal:0{decimals}}".rstrip("0").rstrip(".") return s diff --git a/core/tests/test_apps.bitcoin.signtx.omni.py b/core/tests/test_apps.bitcoin.signtx.omni.py index 3f02d6de7a5..e566c408daf 100644 --- a/core/tests/test_apps.bitcoin.signtx.omni.py +++ b/core/tests/test_apps.bitcoin.signtx.omni.py @@ -22,8 +22,8 @@ def test_parse(self): VECTORS = { "6f6d6e69000000000000001f000000002b752ee0": "Simple send of 7.291 USDT", "6f6d6e69000000000000001f0000000020c85580": "Simple send of 5.5 USDT", - "6f6d6e690000000000000003000000002b752ee0": "Simple send of 729100000 MAID", - "6f6d6e690000000000000000000000002b752ee0": "Simple send of 729100000 UNKN", + "6f6d6e690000000000000003000000002b752ee0": "Simple send of 729,100,000 MAID", + "6f6d6e690000000000000000000000002b752ee0": "Simple send of 729,100,000 UNKN", "6f6d6e6901000000": "Unknown transaction", } for k, v in VECTORS.items(): diff --git a/core/tests/test_apps.ethereum.layout.py b/core/tests/test_apps.ethereum.layout.py index 8ba20f72399..e811056e177 100644 --- a/core/tests/test_apps.ethereum.layout.py +++ b/core/tests/test_apps.ethereum.layout.py @@ -12,13 +12,13 @@ def test_format(self): text = format_ethereum_amount(1, None, 1) self.assertEqual(text, '1 Wei ETH') text = format_ethereum_amount(1000, None, 1) - self.assertEqual(text, '1000 Wei ETH') + self.assertEqual(text, '1,000 Wei ETH') text = format_ethereum_amount(1000000, None, 1) - self.assertEqual(text, '1000000 Wei ETH') + self.assertEqual(text, '1,000,000 Wei ETH') text = format_ethereum_amount(10000000, None, 1) - self.assertEqual(text, '10000000 Wei ETH') + self.assertEqual(text, '10,000,000 Wei ETH') text = format_ethereum_amount(100000000, None, 1) - self.assertEqual(text, '100000000 Wei ETH') + self.assertEqual(text, '100,000,000 Wei ETH') text = format_ethereum_amount(1000000000, None, 1) self.assertEqual(text, '0.000000001 ETH') text = format_ethereum_amount(10000000000, None, 1) @@ -44,7 +44,7 @@ def test_format(self): text = format_ethereum_amount(100000000000000000000, None, 1) self.assertEqual(text, '100 ETH') text = format_ethereum_amount(1000000000000000000000, None, 1) - self.assertEqual(text, '1000 ETH') + self.assertEqual(text, '1,000 ETH') text = format_ethereum_amount(1000000000000000000, None, 61) self.assertEqual(text, '1 ETC') @@ -97,7 +97,7 @@ def test_unknown_token(self): self.assertEqual(text, '0 Wei UNKN') # unknown token has 0 decimals so is always wei text = format_ethereum_amount(1000000000000000000, unknown_token, 1) - self.assertEqual(text, '1000000000000000000 Wei UNKN') + self.assertEqual(text, '1,000,000,000,000,000,000 Wei UNKN') if __name__ == '__main__': diff --git a/core/tests/test_trezor.strings.py b/core/tests/test_trezor.strings.py index 266b4b37bd4..3346098f90b 100644 --- a/core/tests/test_trezor.strings.py +++ b/core/tests/test_trezor.strings.py @@ -4,13 +4,20 @@ class TestStrings(unittest.TestCase): - def test_format_amount(self): VECTORS = [ (123456, 3, "123.456"), (4242, 7, "0.0004242"), (-123456, 3, "-123.456"), (-4242, 7, "-0.0004242"), + (123, 5, "0.00123"), + (100, 5, "0.001"), + (123456789, 0, "123,456,789"), + (100000000, 5, "1,000"), + (100000001, 5, "1,000.00001"), + (100001000, 5, "1,000.01"), + (-100001000, 5, "-1,000.01"), + (123_456_789_123_456_789_123_456_789, 18, "123,456,789.123456789123456789"), ] for v in VECTORS: self.assertEqual(strings.format_amount(v[0], v[1]), v[2]) @@ -151,5 +158,5 @@ def test_format_timestamp(self): strings.format_timestamp(1616057224) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/crypto/address.c b/crypto/address.c index f639b1db9c3..598a49f7134 100644 --- a/crypto/address.c +++ b/crypto/address.c @@ -73,7 +73,7 @@ void ethereum_address_checksum(const uint8_t *addr, char *address, bool rskip60, keccak_256_Init(&ctx); if (rskip60) { char prefix[16] = {0}; - int prefix_size = bn_format_uint64(chain_id, NULL, "0x", 0, 0, false, + int prefix_size = bn_format_uint64(chain_id, NULL, "0x", 0, 0, false, 0, prefix, sizeof(prefix)); keccak_Update(&ctx, (const uint8_t *)prefix, prefix_size); } diff --git a/crypto/bignum.c b/crypto/bignum.c index e2bb9a129ae..b23adf7a831 100644 --- a/crypto/bignum.c +++ b/crypto/bignum.c @@ -1670,27 +1670,31 @@ void bn_divmod10(bignum256 *x, uint32_t *r) { bn_long_division(x, 10, x, r); } // Assumes output is an array of length output_length // The function doesn't have neither constant control flow nor constant memory // access flow with regard to any its argument -size_t bn_format(const bignum256 *amount, const char *prefix, const char *suffix, unsigned int decimals, int exponent, bool trailing, char *output, size_t output_length) { +size_t bn_format(const bignum256 *amount, const char *prefix, const char *suffix, unsigned int decimals, int exponent, bool trailing, char thousands, char *output, size_t output_length) { /* Python prototype of the function: - def format(amount, prefix, suffix, decimals, exponent, trailing): + def format(amount, prefix, suffix, decimals, exponent, trailing, thousands): if exponent >= 0: - amount *= 10 ** exponent + amount *= 10**exponent else: amount //= 10 ** (-exponent) d = pow(10, decimals) + integer_part = amount // d + integer_str = f"{integer_part:,}".replace(",", thousands or "") + if decimals: - output = "%d.%0*d" % (amount // d, decimals, amount % d) + decimal_part = amount % d + decimal_str = f".{decimal_part:0{decimals}d}" if not trailing: - output = output.rstrip("0").rstrip(".") + decimal_str = decimal_str.rstrip("0").rstrip(".") else: - output = "%d" % (amount // d) + decimal_str = "" - return prefix + output + suffix + return prefix + integer_str + decimal_str + suffix */ // Auxiliary macro for bn_format @@ -1773,18 +1777,29 @@ size_t bn_format(const bignum256 *amount, const char *prefix, const char *suffix { // Add integer-part digits of amount // Add trailing zeroes + int digits = 0; if (!bn_is_zero(&temp)) { for (; exponent > 0; --exponent) { + ++digits; BN_FORMAT_ADD_OUTPUT_CHAR('0') + if (thousands != 0 && digits % 3 == 0) { + BN_FORMAT_ADD_OUTPUT_CHAR(thousands) + } } } // decimals == 0 && exponent == 0 // Add significant digits + bool is_zero = false; do { + ++digits; bn_divmod10(&temp, &digit); + is_zero = bn_is_zero(&temp); BN_FORMAT_ADD_OUTPUT_CHAR('0' + digit) - } while (!bn_is_zero(&temp)); + if (thousands != 0 && !is_zero && digits % 3 == 0) { + BN_FORMAT_ADD_OUTPUT_CHAR(thousands) + } + } while (!is_zero); } // Add prefix diff --git a/crypto/bignum.h b/crypto/bignum.h index fcae2f773da..f9213fbe76e 100644 --- a/crypto/bignum.h +++ b/crypto/bignum.h @@ -114,7 +114,8 @@ void bn_divmod1000(bignum256 *x, uint32_t *r); void bn_inverse(bignum256 *x, const bignum256 *prime); size_t bn_format(const bignum256 *amount, const char *prefix, const char *suffix, unsigned int decimals, int exponent, - bool trailing, char *output, size_t output_length); + bool trailing, char thousands, char *output, + size_t output_length); // Returns (uint32_t) in_number // Assumes in_number < 2**32 @@ -149,13 +150,21 @@ static inline int bn_is_odd(const bignum256 *x) { return (x->val[0] & 1) == 1; } static inline size_t bn_format_uint64(uint64_t amount, const char *prefix, const char *suffix, unsigned int decimals, - int exponent, bool trailing, char *output, + int exponent, bool trailing, + char thousands, char *output, size_t output_length) { bignum256 bn_amount; bn_read_uint64(amount, &bn_amount); return bn_format(&bn_amount, prefix, suffix, decimals, exponent, trailing, - output, output_length); + thousands, output, output_length); +} + +static inline size_t bn_format_amount(uint64_t amount, const char *prefix, + const char *suffix, unsigned int decimals, + char *output, size_t output_length) { + return bn_format_uint64(amount, prefix, suffix, decimals, 0, false, ',', + output, output_length); } #if USE_BN_PRINT diff --git a/crypto/fuzzer/fuzzer.c b/crypto/fuzzer/fuzzer.c index 767eea4f9d1..41bff315dc1 100644 --- a/crypto/fuzzer/fuzzer.c +++ b/crypto/fuzzer/fuzzer.c @@ -165,7 +165,7 @@ int fuzz_bn_format(void) { } ret = bn_format(&target_bignum, prefix, suffix, decimals, exponent, trailing, - buf, FUZZ_BN_FORMAT_OUTPUT_BUFFER_SIZE); + 0, buf, FUZZ_BN_FORMAT_OUTPUT_BUFFER_SIZE); // basic sanity checks for r if (ret > FUZZ_BN_FORMAT_OUTPUT_BUFFER_SIZE) { diff --git a/crypto/nem.c b/crypto/nem.c index dd77241ceb0..57e18557d5d 100644 --- a/crypto/nem.c +++ b/crypto/nem.c @@ -118,7 +118,7 @@ static inline bool nem_write_mosaic_u64(nem_transaction_ctx *ctx, const char *name, uint64_t value) { char buffer[21] = {0}; - if (bn_format_uint64(value, NULL, NULL, 0, 0, false, buffer, + if (bn_format_uint64(value, NULL, NULL, 0, 0, false, 0, buffer, sizeof(buffer)) == 0) { return false; } diff --git a/crypto/tests/test_bignum.py b/crypto/tests/test_bignum.py index 1aab86a2d46..99ad8c86ef1 100755 --- a/crypto/tests/test_bignum.py +++ b/crypto/tests/test_bignum.py @@ -5,6 +5,7 @@ import random from ctypes import ( c_bool, + c_char, c_int, c_size_t, c_uint, @@ -607,8 +608,8 @@ def assert_bn_divmod10(x_old): assert r == x_old % 10 -def assert_bn_format(x, prefix, suffix, decimals, exponent, trailing): - def format(amount, prefix, suffix, decimals, exponent, trailing): +def assert_bn_format(x, prefix, suffix, decimals, exponent, trailing, thousands): + def format(amount, prefix, suffix, decimals, exponent, trailing, thousands): if exponent >= 0: amount *= 10**exponent else: @@ -616,14 +617,18 @@ def format(amount, prefix, suffix, decimals, exponent, trailing): d = pow(10, decimals) + integer_part = amount // d + integer_str = f"{integer_part:,}".replace(",", thousands or "") + if decimals: - output = "%d.%0*d" % (amount // d, decimals, amount % d) + decimal_part = amount % d + decimal_str = f".{decimal_part:0{decimals}d}" if not trailing: - output = output.rstrip("0").rstrip(".") + decimal_str = decimal_str.rstrip("0").rstrip(".") else: - output = "%d" % (amount // d) + decimal_str = "" - return prefix + output + suffix + return prefix + integer_str + decimal_str + suffix def string_to_char_p(string): return ctypes.create_string_buffer(string.encode("ascii")) @@ -641,11 +646,12 @@ def char_p_to_string(pointer): c_uint(decimals), c_int(exponent), c_bool(trailing), + c_char(0), output, c_size_t(output_length), ) - correct_output = format(x, prefix, suffix, decimals, exponent, trailing) + correct_output = format(x, prefix, suffix, decimals, exponent, trailing, "") correct_return_value = len(correct_output) if len(correct_output) >= output_length: correct_output = "" @@ -1018,15 +1024,16 @@ def test_bn_divmod10(r): @pytest.mark.parametrize( - "decimals,exponent,trailing,prefix,suffix,value", + "decimals,exponent,trailing,prefix,suffix,thousands,value", itertools.product( range(0, 5), range(-5, 5), [True, False], ["", "prefix"], ["", "suffix"], - [123, 120], + ["", ",", " "], + [123, 120, 123_456, 12_345, 100001, 10001000], ), ) -def test_bn_format(decimals, exponent, trailing, prefix, suffix, value): - assert_bn_format(value, prefix, suffix, decimals, exponent, trailing) +def test_bn_format(decimals, exponent, trailing, prefix, suffix, thousands, value): + assert_bn_format(value, prefix, suffix, decimals, exponent, trailing, thousands) diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index a95c35b667c..562f0665648 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -563,13 +563,13 @@ START_TEST(test_bignum_format_uint64) { uint64_t m = 1; for (int i = 0; i <= 19; i++, m *= 10) { sprintf(str, "%" PRIu64, m); - r = bn_format_uint64(m, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format_uint64(m, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, strlen(str)); ck_assert_str_eq(buf, str); uint64_t n = m - 1; sprintf(str, "%" PRIu64, n); - r = bn_format_uint64(n, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format_uint64(n, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, strlen(str)); ck_assert_str_eq(buf, str); } @@ -585,7 +585,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "0"); @@ -593,7 +593,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, NULL, NULL, 20, 0, true, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 20, 0, true, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 22); ck_assert_str_eq(buf, "0.00000000000000000000"); @@ -601,7 +601,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, NULL, NULL, 0, 5, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 5, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "0"); @@ -609,7 +609,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, NULL, NULL, 0, -5, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, -5, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "0"); @@ -617,7 +617,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, "", "", 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, "", "", 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "0"); @@ -625,7 +625,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, NULL, "SFFX", 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, "SFFX", 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1 + 4); ck_assert_str_eq(buf, "0SFFX"); @@ -633,7 +633,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, "PRFX", NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, "PRFX", NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 4 + 1); ck_assert_str_eq(buf, "PRFX0"); @@ -641,7 +641,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, "PRFX", "SFFX", 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, "PRFX", "SFFX", 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 4 + 1 + 4); ck_assert_str_eq(buf, "PRFX0SFFX"); @@ -649,7 +649,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000000"), &a); - r = bn_format(&a, NULL, NULL, 18, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 18, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "0"); @@ -657,7 +657,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000001"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "1"); @@ -665,15 +665,55 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000001"), &a); - r = bn_format(&a, NULL, NULL, 6, 6, true, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 6, 6, true, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 8); ck_assert_str_eq(buf, "1.000000"); + bn_read_be( + fromhex( + "0000000000000000000000000000000000000000000000000000000000000001"), + &a); + r = bn_format(&a, NULL, NULL, 1, 5, true, 0, buf, sizeof(buf)); + ck_assert_uint_eq(r, 7); + ck_assert_str_eq(buf, "10000.0"); + + bn_read_be( + fromhex( + "0000000000000000000000000000000000000000000000000000000000000001"), + &a); + r = bn_format(&a, NULL, NULL, 1, 5, true, ',', buf, sizeof(buf)); + ck_assert_uint_eq(r, 8); + ck_assert_str_eq(buf, "10,000.0"); + + bn_read_be( + fromhex( + "000000000000000000000000000000000000000000000000000000000001e240"), + &a); + r = bn_format(&a, NULL, NULL, 0, 0, true, ',', buf, sizeof(buf)); + ck_assert_uint_eq(r, 7); + ck_assert_str_eq(buf, "123,456"); + + bn_read_be( + fromhex( + "000000000000000000000000000000000000000000000000000000000001e240"), + &a); + r = bn_format(&a, NULL, NULL, 0, 1, true, ',', buf, sizeof(buf)); + ck_assert_uint_eq(r, 9); + ck_assert_str_eq(buf, "1,234,560"); + + bn_read_be( + fromhex( + "000000000000000000000000000000000000000000000000000000000001e240"), + &a); + r = bn_format(&a, NULL, NULL, 0, 5, true, ',', buf, sizeof(buf)); + ck_assert_uint_eq(r, 14); + ck_assert_str_eq(buf, "12,345,600,000"); + bn_read_be( fromhex( "0000000000000000000000000000000000000000000000000000000000000002"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "2"); @@ -681,7 +721,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000005"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "5"); @@ -689,7 +729,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000009"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "9"); @@ -697,7 +737,7 @@ START_TEST(test_bignum_format) { fromhex( "000000000000000000000000000000000000000000000000000000000000000a"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 2); ck_assert_str_eq(buf, "10"); @@ -705,7 +745,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000014"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 2); ck_assert_str_eq(buf, "20"); @@ -713,7 +753,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000032"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 2); ck_assert_str_eq(buf, "50"); @@ -721,7 +761,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000063"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 2); ck_assert_str_eq(buf, "99"); @@ -729,7 +769,7 @@ START_TEST(test_bignum_format) { fromhex( "0000000000000000000000000000000000000000000000000000000000000064"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 3); ck_assert_str_eq(buf, "100"); @@ -737,7 +777,7 @@ START_TEST(test_bignum_format) { fromhex( "00000000000000000000000000000000000000000000000000000000000000c8"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 3); ck_assert_str_eq(buf, "200"); @@ -745,7 +785,7 @@ START_TEST(test_bignum_format) { fromhex( "00000000000000000000000000000000000000000000000000000000000001f4"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 3); ck_assert_str_eq(buf, "500"); @@ -753,7 +793,7 @@ START_TEST(test_bignum_format) { fromhex( "00000000000000000000000000000000000000000000000000000000000003e7"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 3); ck_assert_str_eq(buf, "999"); @@ -761,15 +801,23 @@ START_TEST(test_bignum_format) { fromhex( "00000000000000000000000000000000000000000000000000000000000003e8"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 4); ck_assert_str_eq(buf, "1000"); + bn_read_be( + fromhex( + "00000000000000000000000000000000000000000000000000000000000003e8"), + &a); + r = bn_format(&a, NULL, NULL, 0, 0, false, ',', buf, sizeof(buf)); + ck_assert_uint_eq(r, 5); + ck_assert_str_eq(buf, "1,000"); + bn_read_be( fromhex( "0000000000000000000000000000000000000000000000000000000000989680"), &a); - r = bn_format(&a, NULL, NULL, 7, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 7, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 1); ck_assert_str_eq(buf, "1"); @@ -777,7 +825,7 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 0, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 78); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" @@ -787,7 +835,7 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 1, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 1, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 79); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" @@ -797,7 +845,7 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 2, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 2, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 79); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" @@ -807,17 +855,39 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 8, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 8, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 79); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" "75840079131.29639935"); + bn_read_be( + fromhex( + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + &a); + r = bn_format(&a, NULL, NULL, 9, 0, false, ',', buf, sizeof(buf)); + ck_assert_uint_eq(r, 101); + ck_assert_str_eq( + buf, + "115,792,089,237,316,195,423,570,985,008,687,907,853,269,984," + "665,640,564,039,457,584,007,913.129639935"); + + bn_read_be( + fromhex( + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + &a); + r = bn_format(&a, NULL, NULL, 9, 0, false, ' ', buf, sizeof(buf)); + ck_assert_uint_eq(r, 101); + ck_assert_str_eq( + buf, + "115 792 089 237 316 195 423 570 985 008 687 907 853 269 984 " + "665 640 564 039 457 584 007 913.129639935"); + bn_read_be( fromhex( "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3bbb00"), &a); - r = bn_format(&a, NULL, NULL, 8, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 8, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 70); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" @@ -827,7 +897,7 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 18, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 18, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 79); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" @@ -837,7 +907,7 @@ START_TEST(test_bignum_format) { fromhex( "fffffffffffffffffffffffffffffffffffffffffffffffff7e52fe5afe40000"), &a); - r = bn_format(&a, NULL, NULL, 18, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 18, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 60); ck_assert_str_eq( buf, "115792089237316195423570985008687907853269984665640564039457"); @@ -846,7 +916,7 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 78, 0, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 78, 0, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 80); ck_assert_str_eq(buf, "0." @@ -857,7 +927,7 @@ START_TEST(test_bignum_format) { fromhex( "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); - r = bn_format(&a, NULL, NULL, 0, 10, false, buf, sizeof(buf)); + r = bn_format(&a, NULL, NULL, 0, 10, false, 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 88); ck_assert_str_eq(buf, "11579208923731619542357098500868790785326998466564056403945" @@ -868,7 +938,7 @@ START_TEST(test_bignum_format) { "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a); r = bn_format(&a, "quite a long prefix", "even longer suffix", 60, 0, false, - buf, sizeof(buf)); + 0, buf, sizeof(buf)); ck_assert_uint_eq(r, 116); ck_assert_str_eq(buf, "quite a long " @@ -881,12 +951,12 @@ START_TEST(test_bignum_format) { "0000000000000000000000000000000000000000000000000123456789abcdef"), &a); memset(buf, 'a', sizeof(buf)); - r = bn_format(&a, "prefix", "suffix", 10, 0, false, buf, 31); + r = bn_format(&a, "prefix", "suffix", 10, 0, false, 0, buf, 31); ck_assert_str_eq(buf, "prefix8198552.9216486895suffix"); ck_assert_uint_eq(r, 30); memset(buf, 'a', sizeof(buf)); - r = bn_format(&a, "prefix", "suffix", 10, 0, false, buf, 30); + r = bn_format(&a, "prefix", "suffix", 10, 0, false, 0, buf, 30); ck_assert_uint_eq(r, 0); ck_assert_str_eq(buf, ""); } diff --git a/legacy/firmware/.changelog.d/2394.added b/legacy/firmware/.changelog.d/2394.added new file mode 100644 index 00000000000..49b9573040a --- /dev/null +++ b/legacy/firmware/.changelog.d/2394.added @@ -0,0 +1 @@ +Show thousands separator when displaying large amounts. diff --git a/legacy/firmware/ethereum.c b/legacy/firmware/ethereum.c index 0804410d822..8ebe11f2d84 100644 --- a/legacy/firmware/ethereum.c +++ b/legacy/firmware/ethereum.c @@ -331,7 +331,7 @@ static void ethereumFormatAmount(const bignum256 *amnt, const TokenType *token, } else { ASSIGN_ETHEREUM_SUFFIX(suffix, chain_id); } - bn_format(amnt, NULL, suffix, decimals, 0, false, buf, buflen); + bn_format(amnt, NULL, suffix, decimals, 0, false, ',', buf, buflen); } static void layoutEthereumConfirmTx(const uint8_t *to, uint32_t to_len, diff --git a/legacy/firmware/layout2.c b/legacy/firmware/layout2.c index f7f17e3d8d8..48452c05696 100644 --- a/legacy/firmware/layout2.c +++ b/legacy/firmware/layout2.c @@ -405,8 +405,7 @@ static size_t format_coin_amount(uint64_t amount, const char *prefix, strlcpy(suffix + 1, coin->coin_shortcut, sizeof(suffix) - 1); break; } - return bn_format_uint64(amount, prefix, suffix, decimals, 0, false, output, - output_len); + return bn_format_amount(amount, prefix, suffix, decimals, output, output_len); } void layoutConfirmOutput(const CoinInfo *coin, AmountUnit amount_unit, @@ -455,7 +454,7 @@ void layoutConfirmOmni(const uint8_t *data, uint32_t size) { uint64_t amount_be = 0, amount = 0; memcpy(&amount_be, data + 12, sizeof(uint64_t)); REVERSE64(amount_be, amount); - bn_format_uint64(amount, NULL, suffix, divisible ? 8 : 0, 0, false, str_out, + bn_format_amount(amount, NULL, suffix, divisible ? 8 : 0, str_out, sizeof(str_out)); } else { desc = _("Unknown transaction"); @@ -520,8 +519,8 @@ static bool formatFeeRate(uint64_t fee, uint64_t tx_weight, char *output, // one decimal digit. uint64_t fee_rate_multiplied = div_round(10 * fee, tx_size); - return bn_format_uint64(fee_rate_multiplied, "(", - segwit ? " sat/vB)" : " sat/B)", 1, 0, false, output, + return bn_format_amount(fee_rate_multiplied, "(", + segwit ? " sat/vB)" : " sat/B)", 1, output, output_length) != 0; } @@ -1186,7 +1185,7 @@ void layoutNEMLevy(const NEMMosaicDefinition *definition, uint8_t network) { switch (definition->levy) { case NEMMosaicLevy_MosaicLevy_Percentile: - bn_format_uint64(definition->fee, NULL, NULL, 0, 0, false, str_out, + bn_format_amount(definition->fee, NULL, NULL, 0, str_out, sizeof(str_out)); layoutDialogSwipe( @@ -1267,8 +1266,7 @@ void layoutConfirmAutoLockDelay(uint32_t delay_ms) { strlcpy(line, _("after "), sizeof(line)); size_t off = strlen(line); - bn_format_uint64(num, NULL, NULL, 0, 0, false, &line[off], - sizeof(line) - off); + bn_format_amount(num, NULL, NULL, 0, &line[off], sizeof(line) - off); strlcat(line, " ", sizeof(line)); strlcat(line, unit, sizeof(line)); if (num > 1) { diff --git a/legacy/firmware/nem2.c b/legacy/firmware/nem2.c index f95ff2aef5c..d9c4d6f2e17 100644 --- a/legacy/firmware/nem2.c +++ b/legacy/firmware/nem2.c @@ -353,7 +353,7 @@ bool nem_askMosaicCreation(const NEMTransactionCommon *common, bn_format_uint64(mosaic_creation->definition.supply, NULL, NULL, mosaic_creation->definition.divisibility, - mosaic_creation->definition.divisibility, true, str_out, + mosaic_creation->definition.divisibility, true, ',', str_out, sizeof(str_out)); layoutDialogSwipe( @@ -430,7 +430,7 @@ bool nem_askSupplyChange(const NEMTransactionCommon *common, } char str_out[32] = {0}; - bn_format_uint64(supply_change->delta, NULL, NULL, 0, 0, false, str_out, + bn_format_uint64(supply_change->delta, NULL, NULL, 0, 0, false, ',', str_out, sizeof(str_out)); layoutDialogSwipe( @@ -496,7 +496,7 @@ bool nem_askAggregateModification( if (relative_change) { char str_out[32] = {0}; bn_format_uint64(relative_change < 0 ? -relative_change : relative_change, - NULL, NULL, 0, 0, false, str_out, sizeof(str_out)); + NULL, NULL, 0, 0, false, ',', str_out, sizeof(str_out)); layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Next"), desc, creation ? _("Set minimum") @@ -648,7 +648,7 @@ static inline size_t format_amount(const NEMMosaicDefinition *definition, &val, NULL, definition && definition->has_ticker ? definition->ticker : NULL, definition && definition->has_divisibility ? definition->divisibility : 0, - -divisor, false, str_out, size); + -divisor, false, ',', str_out, size); } void nem_canonicalizeMosaics(NEMTransfer *transfer) { diff --git a/legacy/firmware/stellar.c b/legacy/firmware/stellar.c index e263bad3629..31145a94d80 100644 --- a/legacy/firmware/stellar.c +++ b/legacy/firmware/stellar.c @@ -1379,7 +1379,7 @@ void stellar_getSignatureForActiveTx(uint8_t *out_signature) { * "100.0" */ void stellar_format_stroops(uint64_t number, char *out, size_t outlen) { - bn_format_uint64(number, NULL, NULL, 7, 0, false, out, outlen); + bn_format_amount(number, NULL, NULL, 7, out, outlen); } /* @@ -1423,7 +1423,7 @@ void stellar_format_price(uint32_t numerator, uint32_t denominator, char *out, } // Format with bn_format_uint64 - bn_format_uint64(value, NULL, NULL, 6, 6 - scale, true, out, outlen); + bn_format_uint64(value, NULL, NULL, 6, 6 - scale, true, ',', out, outlen); } /* @@ -1432,14 +1432,14 @@ void stellar_format_price(uint32_t numerator, uint32_t denominator, char *out, void stellar_format_uint32(uint32_t number, char *out, size_t outlen) { bignum256 bn_number = {0}; bn_read_uint32(number, &bn_number); - bn_format(&bn_number, NULL, NULL, 0, 0, false, out, outlen); + bn_format(&bn_number, NULL, NULL, 0, 0, false, ',', out, outlen); } /* * Returns a uint64 formatted as a string */ void stellar_format_uint64(uint64_t number, char *out, size_t outlen) { - bn_format_uint64(number, NULL, NULL, 0, 0, false, out, outlen); + bn_format_uint64(number, NULL, NULL, 0, 0, false, ',', out, outlen); } /* diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index cf3e3c5eccf..ce33745711b 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16,7 +16,7 @@ "T1_bitcoin-test_dash.py::test_send_dash": "f82f04808cbd87e88e268e923c35c05217ecde6c1aea27d114b44262cb813cd7", "T1_bitcoin-test_dash.py::test_send_dash_dip2_input": "e219fbf1899be32e6097ad57ea5fe204c347cc710d0659c7d4972b5253e63b25", "T1_bitcoin-test_decred.py::test_decred_multisig_change": "e3e6bdcad7c8deee8c91c8cedff34668255bdd93bf1cfb4f4f46060a356cf494", -"T1_bitcoin-test_decred.py::test_send_decred": "ef4422f3cff7add5192c753a5c5640dad06b82936bf31fd94baaebfae2280aac", +"T1_bitcoin-test_decred.py::test_send_decred": "50fa7dc09dbf22fc4c1e62ee2870e9047e29dd050edbdcf34341a5483d52cdac", "T1_bitcoin-test_decred.py::test_send_decred_change": "42814de3a9199b4b683bcde8595d7987b48cfeb609bd63926dd66abc7e5611fc", "T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDADDRESS-pkh([5-7a80e3db": "9b30c98b35338d933fe992e4a47fb259a54f0f6f204610f63c6e6cbff427dbb9", "T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDP2SHWITNESS-sh-03d56ac2": "09d1f2688240677ac55f2677b62973ee7fe4ca788e9e139b9f6de5a1a66d6205", @@ -35,7 +35,7 @@ "T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDTAPROOT-tr([5c-ddc924d3": "f24b6c201efc2efbb174a48766df03f5964ea95908abca791714e22bcf9b635d", "T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDWITNESS-wpkh([-996ae319": "cd384fcf3379759dd5fc3f2737ddfb9185a55e506d9d0869f8a85ba31ed1d973", "T1_bitcoin-test_firo.py::test_spend_lelantus": "4597a8d1b5311af382c9d495bbbd08ef4fb8bc61b5645d78f1411397b4d1a0a5", -"T1_bitcoin-test_fujicoin.py::test_send_p2tr": "ac7a973fbca83d8af8276be75f18ff71659d82f0527256a19f75ebc8dfc57ee3", +"T1_bitcoin-test_fujicoin.py::test_send_p2tr": "bfa5dc1a494ea17fd43d52a315a7f1abe9ad80d7fdaa8b3ec5f92c4118638d1e", "T1_bitcoin-test_getaddress.py::test_bch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_getaddress.py::test_bch_multisig": "730fd13c57131201223dd2f5a14f287ca3b43f5d3a526ac71a9f436b123de388", "T1_bitcoin-test_getaddress.py::test_btc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", @@ -212,7 +212,7 @@ "T1_bitcoin-test_signtx.py::test_attack_change_outputs": "d9854895427d015a54aae20db518cb0caf2e09d6bc30015a992b351a37a4fb01", "T1_bitcoin-test_signtx.py::test_attack_modify_change_address": "d415fc90494448dd952871a3ef2d77100c4b9f7f852513137ae34a9e2126449b", "T1_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "d415fc90494448dd952871a3ef2d77100c4b9f7f852513137ae34a9e2126449b", -"T1_bitcoin-test_signtx.py::test_fee_high_warning": "ff25cf20a39554336e75953b72c40cfcab37343324af30b765e35703aed01ed0", +"T1_bitcoin-test_signtx.py::test_fee_high_warning": "a5a0ca277997d7003be6494dd5dbe28ce5278d2d04403f9d52cb7fa231d23093", "T1_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", @@ -240,14 +240,14 @@ "T1_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_signtx.py::test_spend_coinbase": "9f908b31e01ba580b127284c241c9730f517a1d0df1f9398375f80b86068729f", "T1_bitcoin-test_signtx.py::test_testnet_big_amount": "f719fdaecbbf3abda98e3429c912bfb59079ad3df92b0d0fc8cc603d189b87cf", -"T1_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "780476b5a22bb4901ed4e9a67f7a631c5ade4b50d2813d64cc227188305a7ced", +"T1_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "169851ff1163295e6a411685c9e3c50722a332288e8e12b84e6c71ac10c4c4d4", "T1_bitcoin-test_signtx.py::test_testnet_one_two_fee": "d415fc90494448dd952871a3ef2d77100c4b9f7f852513137ae34a9e2126449b", "T1_bitcoin-test_signtx.py::test_two_changes": "61e8de6771877b747d58272920e47671d4cc6f0de0643c0932dba2d7a64aee31", "T1_bitcoin-test_signtx.py::test_two_two": "dbe1e1fea61ba401b84a89253cc6d86c80ecb80d58ec50f6b984d9c043d66686", "T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.BITCOIN]": "469b90fc27d63c87ab5b28e5bb99b10e503273a393902f1914479f8cd1c2cfe6", "T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MICROBITCOIN]": "f551b1fef90fc48774bd2a8e30fa54162b2e2f5f8b1daa1ddfce96c553a27508", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MILLIBITCOIN]": "044a94d014dd38c2dbaa139e3ec657fcb1c6a53a979d497a017661f1a2b09e3d", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "9eed8d117990abbb411ef4209abae44e38ebc10a4ce47d8387a7595160b20ef5", +"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MILLIBITCOIN]": "7dcfb1eb0224aa3f43e353ffcf02f63e76cb2f85600cd65d356d9a4deb078827", +"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "820c57872989235da02e82ebabc1ac3475d9f7c746f62e61188ca94a3305d679", "T1_bitcoin-test_signtx_amount_unit.py::test_signtx[None]": "469b90fc27d63c87ab5b28e5bb99b10e503273a393902f1914479f8cd1c2cfe6", "T1_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "19e56e826e17f0b5cb5ab26d684dd4d1ef73da2711edc8bef2a086962c1382b0", "T1_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "af9f164a44223a2b004ec49b7a18bf0add314b29331c4fa8fd98e845f705ebd6", @@ -268,10 +268,10 @@ "T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "e03b66babbcaec324e399c407016b0805dc2463d04e3095507c6df0a42583e48", "T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "e03b66babbcaec324e399c407016b0805dc2463d04e3095507c6df0a42583e48", "T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e03b66babbcaec324e399c407016b0805dc2463d04e3095507c6df0a42583e48", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "77dc4379e7d42c6e96c5c304e3f8cf1291145d317b98c9db6e3f7ab475938f57", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "77dc4379e7d42c6e96c5c304e3f8cf1291145d317b98c9db6e3f7ab475938f57", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "77dc4379e7d42c6e96c5c304e3f8cf1291145d317b98c9db6e3f7ab475938f57", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "77dc4379e7d42c6e96c5c304e3f8cf1291145d317b98c9db6e3f7ab475938f57", +"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "58c629d823771a5bd2b844ee299a85f263e716c67ca347595ade4379be4113f2", +"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "58c629d823771a5bd2b844ee299a85f263e716c67ca347595ade4379be4113f2", +"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "58c629d823771a5bd2b844ee299a85f263e716c67ca347595ade4379be4113f2", +"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "58c629d823771a5bd2b844ee299a85f263e716c67ca347595ade4379be4113f2", "T1_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "3a79850fe95abbd2ca342fc62ba7f6404c4f437977764839a8146789ac811fce", "T1_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "a386c4c61f5fe3b073db6b8725193f5bf7881d7b6fae175ff7d879f7c94eb795", @@ -283,7 +283,7 @@ "T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7b3b6ebee78fed0e64c9689c64c5fbf73099812c5452b2fd2dbe2c23cd69b669", "T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "897291942225c61f9b641c7a1287960e7c21d80ada6c75414399d76edc41054c", "T1_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "bacea4ba4942945a3a9cf42bfc485dd3d7fb17fb41ffdf3bbe1f1bf8eb410f9d", -"T1_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "0f3465bcb2d77ff8ab12adb830c425f5b96b6b44745a902638da9bc6e239e5fc", +"T1_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "c02fd21552be67278e7f09d6c1ab83d4e67832d9f2db52fdaccf3b0c1c13820f", "T1_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2281da53c4bd7f12625f0f43913210629909c877c770621579c3410ae0691748", "T1_bitcoin-test_signtx_segwit.py::test_send_p2sh": "348559a0d862add945abf37404b3b2578bc0bae1d4e90a99f809e6b54966b2c8", "T1_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "276281d77d42dadf4f2238cabc2faea9efdd9bab29fac41ba78754c13f390570", @@ -362,7 +362,7 @@ "T1_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "0f79aea15b09e207f7e2bb226421549a0446a4722dde3000c31c3c66ec2059d1", "T1_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "22daa96dbdd3aeeec11f1134baa29c0ccecbadf032a47aaa355f30c994897907", "T1_ethereum-test_sign_verify_message.py::test_verify_invalid": "cdec0f79f2abbd90f4346494037f7bb4dd4dccc7c6739b497873d0c5603f2a26", -"T1_ethereum-test_signtx.py::test_data_streaming": "3856c34f789b98c94462607e431899490800681a09a5e54f366a77026f87a2b3", +"T1_ethereum-test_signtx.py::test_data_streaming": "058a66e82bb733d5c5c687b5537887022acfd7401bb0b5aa4a12f6f35b209239", "T1_ethereum-test_signtx.py::test_sanity_checks": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_ethereum-test_signtx.py::test_signtx[Auxilium]": "05d5ac917c9d3032fb4658b7f502748b412ffe435fc788c62733e00b948da5f7", @@ -375,18 +375,18 @@ "T1_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_eth_path]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", "T1_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_testnet_path]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", "T1_ethereum-test_signtx.py::test_signtx[data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", -"T1_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "8f19f49cb3ef2532ba73ebeee12e779cb06a81677248e45e0fd76b042ee107c9", +"T1_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "445286b7501ca67dd16dafd7ea09c57cc4a37a642ae50f0c812d74353c37c017", "T1_ethereum-test_signtx.py::test_signtx[known_erc20_token]": "7ef8d3bbf6e299b41522769a893f72b04571fc7176bc93e5c1701a2b5721fb20", "T1_ethereum-test_signtx.py::test_signtx[max_chain_id]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", "T1_ethereum-test_signtx.py::test_signtx[max_chain_plus_one]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", "T1_ethereum-test_signtx.py::test_signtx[max_uint64]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", -"T1_ethereum-test_signtx.py::test_signtx[newcontract]": "4ac80878058533d886276f66d2aeceff9d8a1b8083345458788ce85d9ce9e44d", +"T1_ethereum-test_signtx.py::test_signtx[newcontract]": "a7efa7f690d1448dc48f642f69688e8b266417901cc014e5930c94c9087b3e08", "T1_ethereum-test_signtx.py::test_signtx[nodata_1]": "6bd90f2c98122de19159e60fd4dcf9f4b16a600407ac84ea1e447d561ea9decb", -"T1_ethereum-test_signtx.py::test_signtx[nodata_2_bigvalue]": "2a7108865158f53183b8eed55fa364ab9db508b4f62b875ba760acb520b66a8b", +"T1_ethereum-test_signtx.py::test_signtx[nodata_2_bigvalue]": "538f7be885ce6ea3a6dc842ef10797fa45184d7737f6f179c42d36fe92fadd45", "T1_ethereum-test_signtx.py::test_signtx[unknown_erc20_token]": "df41efe4c5336fc188d3f754d2fe0b830588e57eaa32c98607b0bc4057851fcc", "T1_ethereum-test_signtx.py::test_signtx[wanchain]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", "T1_ethereum-test_signtx.py::test_signtx_eip1559[data_1]": "171ffadf61a2520274bedf6a8543127f23a8948c2689e034f996e170289b1822", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "6026efba08ebb6ff161eaa83a215e337f62242d6879f536578d0c2108e78817a", +"T1_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "28d2a0d397b4e9865ca8286cc1a3669c3a7d34bb31b430662354bf3ec69d1cc5", "T1_ethereum-test_signtx.py::test_signtx_eip1559[known_erc20]": "b8e205a40711e377f2185cec6e085fa2f6a4d5bbc6a03d9cf2758058b6c1e17b", "T1_ethereum-test_signtx.py::test_signtx_eip1559[large_chainid]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", "T1_ethereum-test_signtx.py::test_signtx_eip1559[nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", @@ -435,9 +435,9 @@ "T1_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "b1fd9c5250032b2decce6ef18cb1c6e06e9daea279039b58e01cc28a3f4dc765", "T1_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "4de1af57a9f25b81ab5d29a6c96e2cd117145aae6cba3fedd083cac7f8cff1d7", "T1_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "ebc2635064a4469a98c2a4db2608ec3d006a69386d47e78bbbb8800bb0e7dc2a", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "483194e161e010b5860086054fd1527ab79bbdfbf6fcbf556047a3e7f9d66d6d", +"T1_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "ac772c16bacef88ec59bc4e1561520ed57e8d0ac74045136f5849a665b92978f", "T1_nem-test_signtx_transfers.py::test_nem_signtx_simple": "3dac9a2abaab139be3b670d6f8e22d34db0171d09101b447c9de7011ad59b465", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "0fd4bec396dc0850d42a43fb6bd23a751565ef143870ae21e1c1ff5faaeb1bef", +"T1_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "df352a677aa8f591effe241d0a384cea282934d5735c4bf34734616237fb96ca", "T1_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "9cc4d7978b6296e0d107a20912e4dedcc9ed6eb3229749a7fb515827c85f18ee", "T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[language-test]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", @@ -475,14 +475,14 @@ "T1_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3f55b35c47b3f0cf896793263006d9bc4089227f21e46e4e68f67386c1c85040", "T1_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8fd4d210bda197e57ee660e71158b295dd3f51f8df9a235e245d5a72f54c68e8", "T1_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0834c3ffb6c8a792cfa8146de3641e3a4b95276b9583cd729350aca372528ed8", -"T1_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "55eecce2fadcf7010dd9447cc359d6b125edfb910d2cf5c734c9987e3f667bb9", +"T1_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "9504677a06c0da6f339a5313bdff39f7fd90c037a944cf9c3c0a4f4b40e787cf", "T1_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "c0dd9ef3c1635dcceca33d68af85aeb2b544c2141e021b2296b17511fb111dec", "T1_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "52c9140b474f32678d2e0e3e6bffa255c14a82b7949f382da4e540f07d47383d", "T1_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8b65a55dddbdab0724f551b95b8243467fa8aa1e24b70f11c11c948fdbc1ade8", "T1_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "f7663936ab2dbc3c11874a9f6e9e380c263041d38a147321da5570c3ecc3a214", -"T1_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e91efb6b4802af84c881c45a6b87f104e9f3059c8eece9249d848395b644d976", +"T1_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1ec10003113ac613a28c37ae8ec3ee67f793ad5edd61b2c17e1c8282e2839273", "T1_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "a19740a14fdb9e8f8fb2d48fbf695015d575212e5fb5feb58ce5866f56fb5e0f", -"T1_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "6c07a09a3fb110f02bc660ae91cfd1af2a9728c3ad9e4b2b7e68737f548d48f0", +"T1_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cb39bbb78f12de2bdf95bc053897b3bfa41adcf3aacab61522852d358f112656", "T1_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "713fcd90a54a10399390e649b799b33167bae37b62ab7fa1437b960c69b40cd5", "T1_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b4683e95a636be05965b43705f953a1c02d475c8b2ca516c51b840e7aa737680", "T1_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d16f43f49d8bd5c07b21a1ee7684d831b7a15800bf9770973399c8cd89f6dfc3", @@ -492,7 +492,7 @@ "T1_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "9dd8f325286fb29d558541586781818079b09d75d8d2cc734ccea4b80b95c876", "T1_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2467d2ac824a5b01e1d0be8a8ddec5cc554479a66916511eec67fdcbbd18b82d", "T1_stellar-test_stellar.py::test_sign_tx[memo_hash]": "04d407ec2ac218be58e850de413cf2dbd1e6006f1fbc84792108484c4e8e9e7f", -"T1_stellar-test_stellar.py::test_sign_tx[memo_id]": "7695c2c837437767763cb2c81ad800bc28cb2582a4a1d7f513a35c8e2b1b20a5", +"T1_stellar-test_stellar.py::test_sign_tx[memo_id]": "288fd25b505a374900b0de9caed38a01bacee862a83bb043f350348e4949f1ad", "T1_stellar-test_stellar.py::test_sign_tx[memo_return]": "542f7eb47c0007810de6c43b20c9a9e3f3c64bb695e375137154e5bdda3b2f50", "T1_stellar-test_stellar.py::test_sign_tx[memo_text]": "43ec6d06d403c3d0a7f6ce3c3df48b3611094db491a8b382165d1412e4704331", "T1_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "1bd531cd757b8ca295201f9dcfa9e19e56f0ba697b6200819ab06d041563247d", @@ -633,8 +633,8 @@ "TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "d27291f1e3e712fdc60df170dc1a78b42f70551885b613e822430b1b9a185835", "TT_bitcoin-test_decred.py::test_decred_multisig_change": "4de82f12102539c4deebef75899ae6e1599ad5e96586180af317d68a98b6b56e", "TT_bitcoin-test_decred.py::test_purchase_ticket_decred": "16b7fd6d4b88711b0932768432288df5357d16030de45c8520238322ab1d6a66", -"TT_bitcoin-test_decred.py::test_send_decred": "7aac07b8fb2dd0d18ae22de8f35623819df32c1d82b1d603e0109d61abbe0a51", -"TT_bitcoin-test_decred.py::test_send_decred_change": "1c450b76db5e0f4aa09bc078a9a6cc4a2f96851b7dfa81a5961df9e5a67833ec", +"TT_bitcoin-test_decred.py::test_send_decred": "3e0a562192cd7bd1222ba4d54e33233684c35b02f3fc8bd238b33bbee82d4318", +"TT_bitcoin-test_decred.py::test_send_decred_change": "c003198e37dfdaaf1c6f61cb1cea1db9757adf452df77cc4f6c24b0fa6850c6d", "TT_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "884f24d36e2ddf4637c8c6011d5a2f339614b8b3047c32a3fd6342d2b1e7577a", "TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDADDRESS-pkh([5-7a80e3db": "24290396b20f26b49204a5551676d6f3c831009e30582d92d5b44fcc3c12fdb7", "TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDP2SHWITNESS-sh-03d56ac2": "8977c539f5680a5196ad0a4c6e16c44ca1bbdb79235dbf97e33aad8d47fe5d0c", @@ -653,7 +653,7 @@ "TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDTAPROOT-tr([5c-ddc924d3": "fe4691af27c7221ac650927a4ee64aeb17ba323f746a03763d053a8311f6633b", "TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDWITNESS-wpkh([-996ae319": "3181b25e844eb1047d2904abb1099029c5f5ae4ba4d333be21336d1a745aafe0", "TT_bitcoin-test_firo.py::test_spend_lelantus": "d3e199cfa46acba5a956d2c04eb020d89d076297962a4fad3165d1500b6de7c8", -"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "858a93194a06ccbd0a287cbb107df13ecaa1a6afda922ac5342d35165ea78db3", +"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "ab2358502425ae446202ff00b52f31d692c3c7f3a9bf77e549406991aba19d36", "TT_bitcoin-test_getaddress.py::test_address_mac": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_bitcoin-test_getaddress.py::test_bch": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", @@ -760,8 +760,8 @@ "TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", -"TT_bitcoin-test_grs.py::test_legacy": "9d6920a2a462f2337fd5cd7ad39ed0c982aa846ea06fddc1f610c9e2263530b9", -"TT_bitcoin-test_grs.py::test_legacy_change": "90a3957efde621651ad22c74fa35a85010546ffac98ce0bd6b5ebb4937228104", +"TT_bitcoin-test_grs.py::test_legacy": "0684f69e7dcee2df0638164fd8572a4229ebdc04f50a749b7d7f8c76be030fc3", +"TT_bitcoin-test_grs.py::test_legacy_change": "03137135974aa423ab0c108fa8b4061c13709ee98f5df839ff7cdb21e4010e5b", "TT_bitcoin-test_grs.py::test_send_p2tr": "4851eddc91dcd4ff8bdf8558e17949bb3152d5a5d2144659abe36c92c183a942", "TT_bitcoin-test_grs.py::test_send_segwit_native": "dc549670e2abdc0a78cde4582a13e08903f97380f1acaa1515c2ff866aa79afc", "TT_bitcoin-test_grs.py::test_send_segwit_native_change": "2a4d434501a4855568999f16a2cf0b4f0b69f08212d929d50eef838c35ca417a", @@ -771,11 +771,11 @@ "TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b3c056df25d639927faaf16dc18c281c1a36b790ea4e77f954f681fb27d3fa1a", "TT_bitcoin-test_multisig.py::test_15_of_15": "616d7fd025485963d63ec993db335f5e06ccb0bfcafa094d164a56918796e0bf", "TT_bitcoin-test_multisig.py::test_2_of_3": "7b7ed7e08fba2bd40ad04addd3f8e95c705c9d9fbc0b03e0cabcdbdb9e6d270e", -"TT_bitcoin-test_multisig.py::test_attack_change_input": "4f3191c15d14eaec415eed2ad7127026f62a150a89381be5e6dba2e1e3596a2e", +"TT_bitcoin-test_multisig.py::test_attack_change_input": "b3a4625a34db37d389f17ff48f721604ab26775a9fca8bf94c81a90c18bc56a0", "TT_bitcoin-test_multisig.py::test_missing_pubkey": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", -"TT_bitcoin-test_multisig_change.py::test_external_external": "f14e44e6eaf76dc236b982abad1b8857087c2ff441c063223d5280414241e60a", -"TT_bitcoin-test_multisig_change.py::test_external_internal": "ed4ce5c8394f9b74d0d5dfc34eba32993805b7f910a55b4322937c837f60981a", -"TT_bitcoin-test_multisig_change.py::test_internal_external": "9252b732e3645f3640efef901b602d9a3512943048ce87f545b9cba0349d85f4", +"TT_bitcoin-test_multisig_change.py::test_external_external": "11875600f905bca2579e623a6bb53af89b5a4cc14fd1ac2f40ecd59b9b23ce9b", +"TT_bitcoin-test_multisig_change.py::test_external_internal": "9f5f44cfdf61caa01f818bf5883693ce3a3bf9798a0c977acc17c655a0cd4b03", +"TT_bitcoin-test_multisig_change.py::test_internal_external": "bb737da554fae8e4702138104c40019cbeb3af895568995204740b1c830af18c", "TT_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b26b6e6ce81c7a993a364d56e00cb82971773850f53e1689944ac7c2e4bc63d8", "TT_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "9414230d0402801e45696d75c5e94583d026fd151f8c5c44bfb95d778d0f8687", "TT_bitcoin-test_multisig_change.py::test_multisig_external_external": "c5e72c7a393a1bdf0d00d5224ac428a03618065e7ee08de1abe9e030c8c17bba", @@ -854,8 +854,8 @@ "TT_bitcoin-test_signtx.py::test_attack_change_outputs": "91933db014c3507d75bf76435c2489607ec13be79c8592fec66f80dce08ac3f6", "TT_bitcoin-test_signtx.py::test_attack_modify_change_address": "20aaa67271db158f34f5dce1c07649de0a26b40b3b260074f5aa002a09d3f04f", "TT_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "20aaa67271db158f34f5dce1c07649de0a26b40b3b260074f5aa002a09d3f04f", -"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "f29c99a8db8feebb5bf13504747fec139cce3f2d14cfb3d031bbf8f1342adee5", -"TT_bitcoin-test_signtx.py::test_fee_high_warning": "0924f32ac50d6c35c2cc30b089830184a2710d76d17d1c25496a1cecdf5dea31", +"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "0ea1fed8f24b3b89c85f60185b56a1f1800335a07c441e485de8a11278091410", +"TT_bitcoin-test_signtx.py::test_fee_high_warning": "25a6ec724f5546ee398aa80eed194468753a0d24f8f5abf10573d4bf1bfb63eb", "TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", @@ -867,7 +867,7 @@ "TT_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "0065b5cc304b1dd5d341a18f88e711b80fd6a37bbcb0d5838a7403a07a554578", "TT_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "a664f25807e1d04f84bf1d61356735765943aa19797bb3ad1a4e5f1767e6d272", "TT_bitcoin-test_signtx.py::test_lots_of_change": "ec231e92089a1639c4e4a0f8babd43b5507f13e42f3ff1c847388b3e6d2ad8ad", -"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "4743bde5056d045cfbb2752a36ec4a1c683092c8edcb752ff08a909eabd70658", +"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "289d00f71c895bf7aa3d5a8d83627e19ab05bb0c3f39d777380f4e77a4eebe19", "TT_bitcoin-test_signtx.py::test_lots_of_outputs": "9ad0f1a4f6202c95e1fc42e434c1f8542426c76f8b94a8ae016fb0f6bd18a734", "TT_bitcoin-test_signtx.py::test_not_enough_funds": "615ee88f8293754c8c58d2ce021d534045e8583628e8270baf41e7124c29c4cb", "TT_bitcoin-test_signtx.py::test_not_enough_vouts": "204ad9ea7dbba119f568e50fed75a773024645ec18efe030f2e651df36c597f8", @@ -886,14 +886,14 @@ "TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_bitcoin-test_signtx.py::test_spend_coinbase": "bb8bd077d0db0bc1a5650c21448d72a6de8a79ad95b6a5a80b85675e152d64ab", "TT_bitcoin-test_signtx.py::test_testnet_big_amount": "8fa6fecd81d8e0a1f5c8c5ed985eb381ab6c773d904b28ce7ef3053d1f8a6449", -"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "ce56e4d93a2fdd19e5e79ff65cbbaaca8adc6137538b3fc4625ae7bb5fa9b109", +"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "4a7e69a8b1d4aa14a199cc6e7be0c07e81ca71377573a83aebc19309d01fa70c", "TT_bitcoin-test_signtx.py::test_testnet_one_two_fee": "20aaa67271db158f34f5dce1c07649de0a26b40b3b260074f5aa002a09d3f04f", -"TT_bitcoin-test_signtx.py::test_two_changes": "736e1628cf9bc4e8f554fd049a07f82064e6094108f01490a5a9b24311dc3a10", +"TT_bitcoin-test_signtx.py::test_two_changes": "0b9072f425c58bb12f7eb96bf99da624fc1fb0bca4927385489fe93717c52b1b", "TT_bitcoin-test_signtx.py::test_two_two": "98a1b7b73f9cd065bdc0a1ddef0124f1d109964fda9c0b57173ba888d061fbe6", "TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.BITCOIN]": "9b3479412158ee07f6592a637244698fc7e1a4468eba944ce4d329e3a9bcd355", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MICROBITCOIN]": "18075fa09b5150581a23c17d09443cff70069f7ee6c2ec4fa09250091506523c", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MICROBITCOIN]": "4b07e39773495c105dfc512bcfc1bd392187e7de541bf83205691113ae7120f3", "TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MILLIBITCOIN]": "1afbc7be1095d12f9786a467564df062ed623305a369cefb931cb6052cb2f2e6", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "fe50925aef800f1c076c8648bfb009c4f9562760442bbd2d8c6f961fb5eca646", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "9353d4905d538319b71f456abf1f4d8baa6ccc646c8822654fe2439da6d19c51", "TT_bitcoin-test_signtx_amount_unit.py::test_signtx[None]": "9b3479412158ee07f6592a637244698fc7e1a4468eba944ce4d329e3a9bcd355", "TT_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "8dd8089941ceb0d82c9425c69d54240f99e3ae7932ef24acd49313d28389b683", "TT_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", @@ -936,10 +936,10 @@ "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "71b03f0f2cdf1a3d3f330a7051a32642bd8f57387e0d8e5a5f7c123c7f3e704b", "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "71b03f0f2cdf1a3d3f330a7051a32642bd8f57387e0d8e5a5f7c123c7f3e704b", "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "71b03f0f2cdf1a3d3f330a7051a32642bd8f57387e0d8e5a5f7c123c7f3e704b", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "9bde644b5c91702f3926da3d2e29ea27bb6537d07fd1b904d6f3c4c48633f3a5", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "9bde644b5c91702f3926da3d2e29ea27bb6537d07fd1b904d6f3c4c48633f3a5", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "9bde644b5c91702f3926da3d2e29ea27bb6537d07fd1b904d6f3c4c48633f3a5", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9bde644b5c91702f3926da3d2e29ea27bb6537d07fd1b904d6f3c4c48633f3a5", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "8744a5ad4b15ffa76652c9d2df287f10c1909b51833405ee18fc717479e357e3", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "8744a5ad4b15ffa76652c9d2df287f10c1909b51833405ee18fc717479e357e3", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "8744a5ad4b15ffa76652c9d2df287f10c1909b51833405ee18fc717479e357e3", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8744a5ad4b15ffa76652c9d2df287f10c1909b51833405ee18fc717479e357e3", "TT_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", @@ -959,16 +959,16 @@ "TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "da3ec44de0435cca3828752a0ba44483b2f087d1ae02c99530be4bcd01b80e57", "TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "1a5221c169069689cd038a1b493932e42f0c740efad52e3c77bb636786af594e", "TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "f3398d5814422383b9a6fa8cce53948af05e985616c20e7f3aed649a9d3fe1a6", -"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "d389f4ac1da44a6c0e66dd5977d806b171c47b511486fdb0c08823ba61bf0eed", +"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a06e89d99c1e218fba7ceff794cb9dab98bbae666b397996e067fe9f0bd8a009", "TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cfd3b3e882067b1e42a36623da3523829bf579399b14f8711e09f7e89aa82d65", "TT_bitcoin-test_signtx_segwit.py::test_send_p2sh": "0cc9cebfc8e5f644a54abf5c548eb93ac5a7e735a335c653ca782e75c756b355", "TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "37e4f87d45933d486aafbff196c68024c128f40177974891a0f01cb2cf695d25", -"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "67e717ac09fc74745ad2d0051f3f14806db93ac6a2b25f7961818fe861ef61c7", +"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "9db6c35162b766dd828aa996473bfb07376a5d9705ac9de65d992d7a4a8108d3", "TT_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e0de5489dc73eeb177cc69024386a39812af9ba8fb3730384bed80f7fa76bb1c", "TT_bitcoin-test_signtx_segwit_native.py::test_send_both": "92c34d2b525768ac5f8fc60566ea7bb7ede1ced30f2ec0c0b0948fcfbb1eb4c4", "TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6f8d1747d41c156a032c141d5108f5572ceddf32fd90ab986fc21ab3f8adb094", "TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c710852ee12bc81aaf395cc4db73d928e93ecaa3a24571a6542d71e94936984a", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c9700584e560f1cf2c1fb366035d2d85b25dc0552ceded2bc14d4f3ba00af24a", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "31d3a5138fbe39eef57d33fe28a31bf86c0ef3d824466b765175bb5f96a8e3c7", "TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f5266e21904d84ccc94a60bb6de289c301193e70bc21e246ad420b3d5c9ad18e", "TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "9b3479412158ee07f6592a637244698fc7e1a4468eba944ce4d329e3a9bcd355", "TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "fb3ec2531cb07bcc5589034476a35473cec57f075ed36d17d89958f5991d50ae", @@ -980,9 +980,9 @@ "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", -"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "1aa19217e904d2909796603b7811bd8a8e3c997dae4cc5e159c2c3bae2db566e", +"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "6e664f837b805f06a329810449af860fc247672bdc637ad67280041944af7b6b", "TT_bitcoin-test_signtx_taproot.py::test_send_p2tr": "91597e1226f917aa01e0faffa2ba573f3f77521ce6a53fd4f8c4b2a15d8f4b36", -"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "22f2ab9387ba5dfc06f23727fa3332974b70620d813eb61ae37bb482233860c0", +"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "6c09c8bed294c912e4f504ce9ec6d786ca933a6e652b288d9c2140ccbfbe83a3", "TT_bitcoin-test_verifymessage.py::test_message_grs": "efba87e334f62f3ee18ce6ac2f6e8ba3738fc53434ad8d4027643d2047945620", "TT_bitcoin-test_verifymessage.py::test_message_long": "ddd376c7ce7731d990f231a81532dfa13d6a03bc88e5a77278d6eef514b496a2", "TT_bitcoin-test_verifymessage.py::test_message_testnet": "af4598881e7afbfb81313622d7186cd90e8bdcfdada4a0c0f31ca5f0af5f8d5d", @@ -1000,7 +1000,7 @@ "TT_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "faf3fddc43290a424243562f3ed7598d5127b71b1680aee40e56f0b01d22664a", "TT_bitcoin-test_zcash.py::test_external_presigned": "08a22a49793201f8387a085a554f006387d1df1b37ed8a34bef7aa79b363b44b", "TT_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ad8453495a316a0f01126bf882a5502f51e1ee622e56c7c175ba74fdba5dbc51", -"TT_bitcoin-test_zcash.py::test_spend_old_versions": "1fcfeb604cc82ab9b25ff9402efaac7ac72c90f2f5a43ac6843e9ef247573bc5", +"TT_bitcoin-test_zcash.py::test_spend_old_versions": "a58d7407f20caf14f9075618d09e5329eff592e9e432964487fe90954b9c2b21", "TT_bitcoin-test_zcash.py::test_v3_not_supported": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738", "TT_bitcoin-test_zcash.py::test_version_group_id_missing": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-derivation]": "61bf57f65a018283d5e314f95f5580fe751eb3f09cd175a8f9e47f677419cbf2", @@ -1087,29 +1087,29 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "c77e3c0415689c335bc5f93e2aeb8bbb97dd33bcb67df3ffc76adbb164428949", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "c77e3c0415689c335bc5f93e2aeb8bbb97dd33bcb67df3ffc76adbb164428949", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "df3946295831aea335e5acc5b67ad489911f6925d6b85c84ef5ed0c93f4c9e63", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c4f0571143d79ae816efb91bdfd65391170eea65030747f90c308c786e42ab35", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "781d92c04e3d9a9cca60fb9ca5b324db8117657ac804db5137ff771f69770e6e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "49a1608700f462b463610a62003f2c6a62b345738a83f42f4c7f90652b289ac3", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "a480af45e325847cc9f61ab4ce26c99114236a36e510cca777c97c2182ba8562", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "62a99839b54f92afddbef547cd643ff9651eb5ca7bab83bf1a89ffea8d161b6c", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "54aec87c2101c890cff5221abd554f7ada0fda1b82947d9ff0e90b97888428aa", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "1a7840abb3af82547a7ac1b32339bc7fab62cfa2435b8b6d52f80fb0c0b6390c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "86cf0c59445300f2e555fcac780884f3c2cdc11594fc83dd802c789a204a45e1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0cef29dd17e32a99b8e1682a993a7f5e2ccc4458fae0b8701c023ecf53b03a11", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b7c43ad51a2a3323d6d2bc62649b218ad33085a76aa2b1076d200dd9eb976915", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "227ac1e583e78b8bea39e2a5b12a4d484bc45b45e47384cfc49e8207bf238309", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "227ac1e583e78b8bea39e2a5b12a4d484bc45b45e47384cfc49e8207bf238309", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e007992f4db7dc705fea9fdf114cccfa4d71e675c290b844d5f2d6e400304842", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c33ea9fb6d20f53293153be76a42e36c603b4a2cf57c4c5fc1140cb4604976cf", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "336d330f0a5d2c91d2becf53f338c2743299a7dc438c1a88519d0bed8fc0bf6f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f5ddbbdd8375b0c449b733bc61408f750280b9e1b363c18814c1f96b4a36e4bf", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "53b24d40fc3ed95b8f102e8c5f2b885836eb5c56dd8aa0fdf3116bfb7187813c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "07bfba1a88feaefb43b1bd49db6e7aaa8a0ef8b13339dbc2f27c508a3fae8849", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "5986c6b5f01afc41885541beb82ddae07a1a8a54f7435cf48c6c5cf380d20aeb", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "130274e06e2ead95d12929dd0a9574c1c21ab8335a2d49fc8d0d759fe6d46ad1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "43365cc88b8a81b7b6571159950914f86e449e93238aef62299ac2978294c13a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8a359cbf1ee8ffed867eba7b6c7b5ed3277500fc23709c8e2f1e4aae84499861", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "91d5fea02b413634e01c0553f7cff0e1804eed79f48a28531ba8467e59905215", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "c77e3c0415689c335bc5f93e2aeb8bbb97dd33bcb67df3ffc76adbb164428949", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "130274e06e2ead95d12929dd0a9574c1c21ab8335a2d49fc8d0d759fe6d46ad1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "43365cc88b8a81b7b6571159950914f86e449e93238aef62299ac2978294c13a", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "00273e6ff8d318e08a3f715b99f368cbf504d58101d08c98a841d53b25bd0466", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "53b24d40fc3ed95b8f102e8c5f2b885836eb5c56dd8aa0fdf3116bfb7187813c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "17b16f49d0f97c03532666fad5799c143980c14dfdb1339a6a528997a77e8988", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "b8c5cfdf5166bf5ff6e6fbd7cc4c47456e3ea75cbdd0a69b32bfd8f6fd1dd327", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5be08858cfda90d26d122878721a9fca615655b289f2d59bd23572c8acb1223f", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "cab014743844f5e0aeacdcc1cf118cd9ed0650b175ef9d060f0de1099fc2dead", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "e15f925910660632f5a0e78b86dc34a3c4d81a45e447abc9a294b96b6f04cddb", @@ -1124,7 +1124,7 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "0fe3f2f6c42d6e6d7d3701bf34a92305971e8827e0cfde3afedeace4f63b1da6", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3a22e4667206bbb5963b1ef8686ad6f299c16e98f0cf177419bf89476ce5371b", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "0a23e6f91cf48f85ec9570f8390c0381ac45bbb5bd14d4a5856bdbb5c2e7cb21", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "1f65bf2a68776383d6a651f2818a8366739113a3d040f177e07126ad69d27891", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "660216653ea51bce0e780f58c673e89784a4cb4ef4373287142f6d200a9299a4", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2b6a74004dad6e60d2486dff949921650818bcf264b6550b3766587f3f1f298a", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "4e832f62ca9d2c6495d33d40b94f23979571f32bef98c94099f3d1a5bb35616e", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "cf734dc9b83ee335b92dc886ea521e5fe61f838e27d19c4b3bac0c1b5943a462", @@ -1150,7 +1150,7 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "54266c3f100fae1303bb579bb3b731a24908eee78c634b1ba92af0dfbcf19d82", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "b616c4005ee1a2728953ceb3a154e578d8ce53a908b6f11e8598290a3842f08a", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_catalyst_registration]": "3abfe7b0f3de4adacf9d07653eb0d3c80eb4c8876dc456f8c88b2e68ba14850c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "2b65970f3b69f38715df07926fb6bdc4dbb72f0275e5163dd5049fe24047307a", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "9130bf5c2da6543833a3c841b18e649768f5c27108695a6227b0cb747a34be3d", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "fea08104b2228ba952c9f0ccb64a88fee1c1fc91aa1fca951e812d1a50f7c771", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "fea08104b2228ba952c9f0ccb64a88fee1c1fc91aa1fca951e812d1a50f7c771", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a05ee17a405d989076f31a3aea3f83ffc9fa0ad266dfcd6e9106b064a7d3279b", @@ -1163,8 +1163,8 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "c77e3c0415689c335bc5f93e2aeb8bbb97dd33bcb67df3ffc76adbb164428949", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "c77e3c0415689c335bc5f93e2aeb8bbb97dd33bcb67df3ffc76adbb164428949", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "86b34c2e24d9c2c6bec78c6762f0aef36f9d74fbeec51ffc246865c2cbbb5dc5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "eaaf57853b26425f900d4454adbb391d3d03763cd45fd3d6eacdaa58e5acf8e3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "405290ca7b6cbe0eff75afe34624ef714bdbf74e919bb564d0c22feaed7d842d", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ddcdaed09c1046c9e98fab4f9f0dcb18fa73e202e80fe89b150f8afbf7de2865", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d74a588277b730495f5d126d71c23f8ae34c448cd7a2c3d61faf6c33e971590d", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "dea77f61fa1f877bbd5ba70d5a4c911f27f7f2d41b35637baa4c5d8e9676a962", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "5a608b731c43231bcae0a856e74497612ccfeff809e5022dfb27798863e1bfb1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "f393a074254d08159950790caa5c99b2ba3e2beeb6b2b8209a2aaabeaedf3886", @@ -1203,7 +1203,7 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "ba9cc5dd31ce59791a6240eb62062aa23aeeca7597a5a3f95a8987f7edc3d012", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "87ce81d84aecfb57a4f7a6ce290a668dab029313c171a8d087f19ab2f83dccf2", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b19ac3dd196737cf2811fbb76addf7e8376449aaedf7c9453b48522edaec8c23", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bce97ba24f5b1f9ad0959f72b6c7db03aff5d92b146f2f0722926e4072e82063", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "0a859c5510befbbcf2d81bace32398b2e68dcda4da303559efb78abae674b056", @@ -1218,7 +1218,7 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "0a859c5510befbbcf2d81bace32398b2e68dcda4da303559efb78abae674b056", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "0a859c5510befbbcf2d81bace32398b2e68dcda4da303559efb78abae674b056", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "ba9cc5dd31ce59791a6240eb62062aa23aeeca7597a5a3f95a8987f7edc3d012", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "0233daff41c7b3100ff2af7d074ac48666015304902071ddc0a52ebc623b1c5b", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "4b3f6183d1e17da5f156b163f994799b7ff2f48cd0f380b900e1060c82e7e4f3", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "d58c052ea0001cf4225a0b401c2af8cec3f8b1f1bae45ac110c6b208380edd1c", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "ff8aa102716b3552ec2495222e82b3d1ec513ba904469a49f7ec2798e2e55c73", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "5a608b731c43231bcae0a856e74497612ccfeff809e5022dfb27798863e1bfb1", @@ -1228,18 +1228,18 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "5a608b731c43231bcae0a856e74497612ccfeff809e5022dfb27798863e1bfb1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "5a608b731c43231bcae0a856e74497612ccfeff809e5022dfb27798863e1bfb1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "5a608b731c43231bcae0a856e74497612ccfeff809e5022dfb27798863e1bfb1", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e68296b4a6d2c45aa4dbf08f679f4df9839ca51d5aaccb1eab63c0c8e7a80718", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "30455081f2d1a22c391156db145d97fbd880226e17a23dc1ed4da633c423bbe0", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "5a608b731c43231bcae0a856e74497612ccfeff809e5022dfb27798863e1bfb1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "75aa26b722556d74bf6d6e8b7b3200bca2fd75cf5653f0f516472f3dd08b7f99", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "ad69374bf0d0aca9f8477720df268f96a8c31ecb7660cbd9d63483a0b103534f", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "3b0a4cfa217c7e96b07d56f3cbc5fc50d1bf8b0a7eb01d48a04bfa99a1c57208", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "f92e8e57cd92a053a4038d9c2abdf1a2237b61a6583e61f1bc0e2910443b62c8", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "6137e061ffe580b5df1c8a8aa7963ef33e4934d47276cad286f0e4f392bb537a", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "f916b9d6d07981967e15e71b71b46c501f0e0280c2ffd5270cf02f456de2cb61", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "f916b9d6d07981967e15e71b71b46c501f0e0280c2ffd5270cf02f456de2cb61", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "517edcaa3e27366eb86bec17cf7fa07bff72d85bf44a78ffe196f4a813d51778", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "80e37cd07015bc3e3323c221ffe847beed5f6032a430d48bf5c200b16579a2f4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "da1286102ca6870d11b49d5ff8d08fb75a13a4594c9a1711105fe0dfeef972d2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "b0d9aea49080edc90ee2a094ea44c83fe92219a9a7bce78c71273be605b65300", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "eded94fcd4fd219e86c066a11caaba1b178a64f2e709a30f6295a99227b0f0f7", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "8a906312d11d8e2ae490411626179d22d8f30f343fa7e29363b4ccc5f2ba7adf", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8c1ee94cf24ffb27eb233b0b298c649db4face4524c7ba501d86b23acba30e63", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "db51dee226c5f85e3a01e4062eda51796e34c59795c0889abecbe6828ccdacab", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "afcb60ac41dc9b1df008339176cfb974ee47df1d6b3cefe0a2ee0fa51dea7b95", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "53cdf1d9500c6576de5f85dfecba4cd293b84dc0d2449f77fd95ff54126982cd", @@ -1338,7 +1338,7 @@ "TT_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "8a04d5a6b192e5fa20b76574457b6dd8f6a7796949bad7c1df9231eafd0c8dc7", "TT_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "03c6cc044648959592b297eda1239da7d379385b6483c61abdb6d3db1ecd40f9", "TT_ethereum-test_sign_verify_message.py::test_verify_invalid": "f56f261951ed30706d692510ea3a8860397bda9abe199f15eaa536d06e8977b1", -"TT_ethereum-test_signtx.py::test_data_streaming": "e0e6179a08c7a96958814d95ddfe09996a96aefeec3f538acfa58844c664d90f", +"TT_ethereum-test_signtx.py::test_data_streaming": "59c3b32d5d89e3e18dc965aced8e701670f788a4673214193df0b530e3744ca0", "TT_ethereum-test_signtx.py::test_sanity_checks": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TT_ethereum-test_signtx.py::test_signtx[Auxilium]": "d2ba6424ba04e6db899ec33253ce7fd26bbb1850a5e548f1e5628bbb311cc2fc", @@ -1351,21 +1351,21 @@ "TT_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_eth_path]": "e1c268db1580ebbf957eb2912baa747133bf640d886b1339aee7e709494b46a7", "TT_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_testnet_path]": "e1c268db1580ebbf957eb2912baa747133bf640d886b1339aee7e709494b46a7", "TT_ethereum-test_signtx.py::test_signtx[data_1]": "277686786f4dee54e641b15850b482480d1de4fd63401b76beb8da085ba27314", -"TT_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "a728a670736dc4b5a60e1e98ff294f20e0b3c0c97e32e3e032e19140aa040561", +"TT_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "c3a636db7a09312d215a7cee53ab726bbe67db70bcd8143f1287a8a55a64ccad", "TT_ethereum-test_signtx.py::test_signtx[known_erc20_token]": "313cacddc8234c92ad18f4c94bbd9da366eb38e8f3a9345521cf4b4af491eac8", "TT_ethereum-test_signtx.py::test_signtx[max_chain_id]": "e1c268db1580ebbf957eb2912baa747133bf640d886b1339aee7e709494b46a7", "TT_ethereum-test_signtx.py::test_signtx[max_chain_plus_one]": "e1c268db1580ebbf957eb2912baa747133bf640d886b1339aee7e709494b46a7", "TT_ethereum-test_signtx.py::test_signtx[max_uint64]": "e1c268db1580ebbf957eb2912baa747133bf640d886b1339aee7e709494b46a7", -"TT_ethereum-test_signtx.py::test_signtx[newcontract]": "251aa9bf7d0febf372a3a9ba9c9a5b988ce02214cead9a768f994ad2a59ecfb3", +"TT_ethereum-test_signtx.py::test_signtx[newcontract]": "0a793ff148a61fa0216528817c8adc08dec422463b5fd68af6fb4e557a25c77e", "TT_ethereum-test_signtx.py::test_signtx[nodata_1]": "0653c875f9e81fbef050769692c650a62f4d10973fbfc02f3dd7e32d80c89176", -"TT_ethereum-test_signtx.py::test_signtx[nodata_2_bigvalue]": "a5d66260785d02985106b12e21dd96db82b8579d8b09e4135d796d33e31356c1", +"TT_ethereum-test_signtx.py::test_signtx[nodata_2_bigvalue]": "3ace0b955361d9b958738e085699fe25241adc0a79896dacecd5bf6fef9d181b", "TT_ethereum-test_signtx.py::test_signtx[unknown_erc20_token]": "9663070b464ef7bdd9f41bad540135a46564ee215e5d5d6448e4fa721a137bc8", "TT_ethereum-test_signtx.py::test_signtx[wanchain]": "feb75d11291435a367479d0f55874a6a276aa760b57b804f2339d4fb4143f5c8", "TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_go_back]": "e0304501e6dd76d08052edd3ef518e4873f2029e8351bc1fb5ed5ba2a99e740a", "TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_scroll_down]": "f707da6726a2ebad6888af490eed2a1441147c795a8b72fb805fd0d3a8b071f9", "TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_skip]": "5d73d7f8366f4abd3eaf3e666f140ee0fcc0aca4f35483a6be27d96e2b64fd27", "TT_ethereum-test_signtx.py::test_signtx_eip1559[data_1]": "fcff42ade9344444b345d8f0a707dc57ed7a06a7a208d77aeb2186da4bbb9dca", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "983a67f3fc48f03872593ee7b743272efa5c9906c07bd4411285b95813654233", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "08de57fed498a07f704f5d90ccd16a476c8258e9c44ed1add287dc3ae55fb187", "TT_ethereum-test_signtx.py::test_signtx_eip1559[known_erc20]": "a1a6350a0aabe1035e40fed9d8e28f9b9dc737d52814427c64ef00640d3752c7", "TT_ethereum-test_signtx.py::test_signtx_eip1559[large_chainid]": "a8a8aa0cea41f7534dd6c7953574a28dc923e2414cddde6c2dae2c6af8539c6d", "TT_ethereum-test_signtx.py::test_signtx_eip1559[nodata]": "5b103f4bf0ed90c0dd6ef8a33cdfa59edfd50e2441dbb4aa3dfec9dc6ba2d4c6", @@ -1413,7 +1413,7 @@ "TT_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "a62817329e675c9648a3834bf5feb5fea40b5f65aaeeadb115b8f0b55804d245", "TT_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "61b7a05c0d52483b9e12fe7df81aef46535c89d119f9a11f9d54d224a5be5d2c", "TT_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "fa0fa195b557a27472a1879079faa72a13054f2e0efc8f6e9a3f0daba7384fc2", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "a1f3ad6744443336ef2c6b42d27a1f06d6d173a50f39d4eda3b8d5cf57becd83", +"TT_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "ce7a8514d1de43a2f428596bbf1de9af34163eb8f238f95f56e66feff55e1436", "TT_nem-test_signtx_transfers.py::test_nem_signtx_simple": "921869434cb375480391bd2e2dd7031975084f0f1e6c57e69f3ab87f24e86d5a", "TT_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "4e1b2be8902129d890f43cb2332cd87c5c017cf0f70f3497886d79a6879e4340", "TT_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "58c8390a6bae376e7cb0469c976cc55725111c208f3e7b8dddf4352a3ad88263", @@ -1646,7 +1646,7 @@ "TT_zcash-test_sign_tx.py::test_send_to_multisig": "17c0a3118c96052e23cde9b323de1c8249a0f70f59774c0e949aa151de491695", "TT_zcash-test_sign_tx.py::test_spend_multisig": "1f7cfe70831cffb4c076d0b4778704a982b37be4cc114e2cd9de85ee3173430e", "TT_zcash-test_sign_tx.py::test_spend_v4_input": "235910c3aa36150bb7012d21d52acdca347a2a216bb09a0588910329e464c8f0", -"TT_zcash-test_sign_tx.py::test_spend_v5_input": "dd9b4f0050836b7d881d9be798d2f4d972e39f460b8acc3e4e1c038ba754ae7c", +"TT_zcash-test_sign_tx.py::test_spend_v5_input": "2ec2223bdd77dc9e4cbfe1c85ed91dec77b7e6f1f37dd1cb160308808db9d9a6", "TT_zcash-test_sign_tx.py::test_version_group_id_missing": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1", "TTui2_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "577553344793d14026b1d3c7f6185a4858378476dafee67a958319bd8d8f58ac", "TTui2_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "9fedc9ad26c5573b264f28f70c83b8baf6503a71f2296de27be6c6c9166d5488",