fix(core,legacy): Fix tx_weight to tx_size conversion.

[no changelog]
pull/2425/head
Andrew Kozlik 2 years ago committed by matejcik
parent c353135b0d
commit 8ca785925d

@ -248,7 +248,7 @@ class BasicApprover(Approver):
total = self.total_in - self.change_out
spending = total - self.external_in
tx_size_vB = self.weight.get_total() / 4
tx_size_vB = self.weight.get_virtual_size()
# fee_threshold = (coin.maxfee per byte * tx size)
fee_threshold = (self.coin.maxfee_kb / 1000) * tx_size_vB
@ -402,11 +402,11 @@ class CoinJoinApprover(Approver):
# The mining fee of the transaction as a whole.
mining_fee = self.total_in - self.total_out
if mining_fee > max_fee_per_vbyte * self.weight.get_total() / 4:
if mining_fee > max_fee_per_vbyte * self.weight.get_virtual_size():
raise wire.ProcessError("Mining fee over threshold")
# The maximum mining fee that the user should be paying.
our_max_mining_fee = max_fee_per_vbyte * self.our_weight.get_total() / 4
our_max_mining_fee = max_fee_per_vbyte * self.our_weight.get_virtual_size()
# The maximum coordination fee for the user's inputs.
our_max_coordinator_fee = max_coordinator_fee_rate * (
@ -420,7 +420,7 @@ class CoinJoinApprover(Approver):
# coordinator. The coordinator does not include the base weight of the transaction when
# computing the mining fee, so we take this into account.
max_fee_per_weight_unit = mining_fee / (
self.weight.get_total() - self.weight.get_base_weight()
self.weight.get_weight() - self.weight.get_base_weight()
)
# Calculate the minimum registrable output amount in a CoinJoin plus the mining fee that it

@ -142,7 +142,7 @@ class TxWeightCalculator:
return base_weight
def get_total(self) -> int:
def get_weight(self) -> int:
total = self.counter
total += self.get_base_weight()
if self.segwit_inputs_count:
@ -151,6 +151,12 @@ class TxWeightCalculator:
return total
def get_virtual_size(self) -> int:
# Convert transaction weight to virtual transaction size, which is is defined
# as weight / 4 rounded up to the next integer.
# https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#transaction-size-calculations
return (self.get_weight() + 3) // 4
@staticmethod
def compact_size_len(length: int) -> int:
if length < 253:

@ -79,8 +79,8 @@ class TestSignSegwitTxNativeP2WPKH(unittest.TestCase):
)
tx = SignTx(coin_name='Testnet', version=1, lock_time=0, inputs_count=1, outputs_count=2)
# precomputed tx weight is 566
fee_rate = 11000 / (566 / 4)
# precomputed tx weight is 142 = ceil(566 / 4)
fee_rate = 11000 / 142
messages = [
None,
@ -213,8 +213,8 @@ class TestSignSegwitTxNativeP2WPKH(unittest.TestCase):
)
tx = SignTx(coin_name='Testnet', version=1, lock_time=0, inputs_count=1, outputs_count=2)
# precomputed tx weight is 566
fee_rate = 11000 / (566 / 4)
# precomputed tx weight is 142 = ceil(566 / 4)
fee_rate = 11000 / 142
messages = [
None,

@ -80,8 +80,8 @@ class TestSignSegwitTxNativeP2WPKH_GRS(unittest.TestCase):
)
tx = SignTx(coin_name='Groestlcoin Testnet', version=1, lock_time=650713, inputs_count=1, outputs_count=2)
# precomputed tx weight is 566
fee_rate = 11000 / (566 / 4)
# precomputed tx weight is 142 = ceil(566 / 4)
fee_rate = 11000 / 142
messages = [
None,
@ -214,8 +214,8 @@ class TestSignSegwitTxNativeP2WPKH_GRS(unittest.TestCase):
)
tx = SignTx(coin_name='Groestlcoin Testnet', version=1, lock_time=650713, inputs_count=1, outputs_count=2)
# precomputed tx weight is 566
fee_rate = 11000 / (566 / 4)
# precomputed tx weight is 142 = ceil(566 / 4)
fee_rate = 11000 / 142
messages = [
None,

@ -79,8 +79,8 @@ class TestSignSegwitTxP2WPKHInP2SH(unittest.TestCase):
)
tx = SignTx(coin_name='Testnet', version=1, lock_time=0, inputs_count=1, outputs_count=2)
# precomputed tx weight is 670
fee_rate = 11000 / (670 / 4)
# precomputed tx weight is 168 = ceil(670 / 4)
fee_rate = 11000 / 168
messages = [
None,
@ -209,8 +209,8 @@ class TestSignSegwitTxP2WPKHInP2SH(unittest.TestCase):
)
tx = SignTx(coin_name='Testnet', version=1, lock_time=0, inputs_count=1, outputs_count=2)
# precomputed tx weight is 670
fee_rate = 11000 / (670 / 4)
# precomputed tx weight is 168 = ceil(670 / 4)
fee_rate = 11000 / 168
messages = [
None,
@ -358,8 +358,8 @@ class TestSignSegwitTxP2WPKHInP2SH(unittest.TestCase):
)
tx = SignTx(coin_name='Testnet', version=1, lock_time=0, inputs_count=1, outputs_count=2)
# precomputed tx weight is 670
fee_rate = (9 - 8 - 1) / (670 / 4)
# precomputed tx weight is 168 = ceil(670 / 4)
fee_rate = (9 - 8 - 1) / 168
messages = [
None,

@ -80,8 +80,8 @@ class TestSignSegwitTxP2WPKHInP2SH_GRS(unittest.TestCase):
)
tx = SignTx(coin_name='Groestlcoin Testnet', version=1, lock_time=650756, inputs_count=1, outputs_count=2)
# precomputed tx weight is 670
fee_rate = 11000 / (670 / 4)
# precomputed tx weight is 168 = ceil(670 / 4)
fee_rate = 11000 / 168
messages = [
None,
@ -213,8 +213,8 @@ class TestSignSegwitTxP2WPKHInP2SH_GRS(unittest.TestCase):
)
tx = SignTx(coin_name='Groestlcoin Testnet', version=1, lock_time=650756, inputs_count=1, outputs_count=2)
# precomputed tx weight is 670
fee_rate = 11000 / (670 / 4)
# precomputed tx weight is 168 = ceil(670 / 4)
fee_rate = 11000 / 168
messages = [
None,

@ -42,7 +42,7 @@ class TestCalculateTxWeight(unittest.TestCase):
serialized_tx = '010000000182488650ef25a58fef6788bd71b8212038d7f2bbe4750bc7bcb44701e85ef6d5000000006b4830450221009a0b7be0d4ed3146ee262b42202841834698bb3ee39c24e7437df208b8b7077102202b79ab1e7736219387dffe8d615bbdba87e11477104b867ef47afed1a5ede7810121023230848585885f63803a0a8aecdd6538792d5c539215c91698e315bf0253b43dffffffff0160cc0500000000001976a914de9b2a8da088824e8fe51debea566617d851537888ac00000000'
tx_weight = len(serialized_tx) / 2 * 4 # non-segwit tx's weight is simple length*4
self.assertEqual(calculator.get_total(), tx_weight)
self.assertEqual(calculator.get_weight(), tx_weight)
def test_p2wpkh_in_p2sh_txweight(self):
@ -78,7 +78,7 @@ class TestCalculateTxWeight(unittest.TestCase):
calculator.add_output(output_derive_script(out1.address, coin))
calculator.add_output(output_derive_script(out2.address, coin))
self.assertEqual(calculator.get_total(), 670)
self.assertEqual(calculator.get_weight(), 670)
# non-segwit: header, inputs, outputs, locktime 4*(4+65+67+4) = 560
# segwit: segwit header, witness stack item count, witness 1*(2+1+107) = 110
# total 670
@ -117,7 +117,7 @@ class TestCalculateTxWeight(unittest.TestCase):
calculator.add_output(output_derive_script(out1.address, coin))
calculator.add_output(output_derive_script(out2.address, coin))
self.assertEqual(calculator.get_total(), 566)
self.assertEqual(calculator.get_weight(), 566)
# non-segwit: header, inputs, outputs, locktime 4*(4+42+64+4) = 456
# segwit: segwit header, witness stack item count, witness 1*(2+1+107) = 110
# total 566
@ -144,7 +144,7 @@ class TestCalculateTxWeight(unittest.TestCase):
calculator.add_output(output_derive_script(out1.address, coin))
# 010000000001017b350e3faca092f39883d7086cdd502c82b6f0314ab61541b062733edef156790100000000ffffffff016211000000000000225120e9af2fc69e20b0be2629cd0e9c34da9f3ef56af7beac4fb4298262bc5a45ec5d0140493145b992dacbd7ea579a415efc2cba20c3bf0f7827d1bcf999109c0d11783fe96f91ddb04a889faa17ad21ecc5c81a578009744e95c7e721aff2a5c442916600000000
self.assertEqual(calculator.get_total(), 4*94 + 68)
self.assertEqual(calculator.get_weight(), 4*94 + 68)
def test_legacy_multisig_txweight(self):
coin = coins.by_name('Bitcoin')
@ -186,7 +186,7 @@ class TestCalculateTxWeight(unittest.TestCase):
calculator.add_output(output_derive_script(out1.address, coin))
# 010000000152ba4dfcde9c4bed88f55479cdea03e711ae586e9a89352a98230c4cdf1a09c601000000fdfe00004830450221009276eea820aa54a24bd9f1a056cb09a15f50c0816570a7c7878bd1c5ee7248540220677d200aec5e2f25bcf4000bdfab3faa9e1746d7f80c4ae4bfa1f5892eb5dcbf01483045022100c2a9fbfbff1be87036d8a6a22745512b158154f7f3d8f4cad4ba7ed130b37b83022058f5299b4c26222588dcc669399bd88b6f2bc6e04b48276373683853187a4fd6014c69522103dc0ff15b9c85c0d2c87099758bf47d36229c2514aeefcf8dea123f0f93c679762102bfe426e8671601ad46d54d09ee15aa035610d36d411961c87474908d403fbc122102a5d57129c6c96df663ad29492aa18605dad97231e043be8a92f9406073815c5d53aeffffffff01a0860100000000001976a91412e8391ad256dcdc023365978418d658dfecba1c88ac00000000
self.assertEqual(calculator.get_total(), 4*341)
self.assertEqual(calculator.get_weight(), 4*341)
def test_segwit_multisig_txweight(self):
coin = coins.by_name('Testnet')
@ -228,7 +228,7 @@ class TestCalculateTxWeight(unittest.TestCase):
calculator.add_output(output_derive_script(out1.address, coin))
# 01000000000101be0210025c5be68a473f6a38bf53b53bc88d5c46567616026dc056e72b92319c01000000232200208d398cfb58a1d9cdb59ccbce81559c095e8c6f4a3e64966ca385078d9879f95effffffff01887d180000000000220020c5f4a0a4ea7c0392efe0a9670a73264cffa90b19107cd8a8e9750ff93c77fdfb0400483045022100dd6342c65197af27d7894d8b8b88b16b568ee3b5ebfdc55fdfb7caa9650e3b4c02200c7074a5bcb0068f63d9014c7cd2b0490aba75822d315d41aad444e9b86adf5201483045022100e7e6c2d21109512ba0609e93903e84bfb7731ac3962ee2c1cad54a7a30ff99a20220421497930226c39fc3834e8d6da3fc876516239518b0e82e2dc1e3c46271a17c01695221021630971f20fa349ba940a6ba3706884c41579cd760c89901374358db5dd545b92102f2ff4b353702d2bb03d4c494be19d77d0ab53d16161b53fbcaf1afeef4ad0cb52103e9b6b1c691a12ce448f1aedbbd588e064869c79fbd760eae3b8cd8a5f1a224db53ae00000000
self.assertEqual(calculator.get_total(), 4*129 + 256)
self.assertEqual(calculator.get_weight(), 4*129 + 256)
def test_mixed_txweight(self):
coin = coins.by_name('Testnet')
@ -302,7 +302,7 @@ class TestCalculateTxWeight(unittest.TestCase):
# 010000000001045d77b6e482d770031ad3ce3423727cc1707bc2c82e729b1189d2b60aa1a73e8c0000000017160014a33c6e24c99e108b97bc411e7e9ef31e9d5d6164ffffffff7b350e3faca092f39883d7086cdd502c82b6f0314ab61541b062733edef156790000000000ffffffff852e125137abca2dd7a42837dccfc34edc358c72eefd62978d6747d3be9315900000000000ffffffff9b117a776a9aaf70d4c3ffe89f009dcd23210a03d649ee5e38791d83902ec33a020000006b483045022100f6bd64136839b49822cf7e2050bc5c91346fc18b5cf97a945d4fd6c502f712d002207d1859e66d218f705b704f3cfca0c75410349bb1f50623f4fc2d09d5d8df0a3f012103bae960983f83e28fcb8f0e5f3dc1f1297b9f9636612fd0835b768e1b7275fb9dffffffff05a861000000000000160014d1a739f628f7eca55e8b99e7f32b22dcdbf672d4581b0000000000001976a91402e9b094fd98e2a26e805894eb78f7ff3fef199b88acf41a00000000000017a9141ff816cbeb74817050de585ceb2c772ebf71147a870000000000000000186a1674657374206f66206f705f72657475726e206461746110270000000000002251205a02573f7b39770ac53f73d161dc86f5104c6812bac297cb6ba418f6f1219c070247304402205fae7fa2b5141548593d5623ce5bd82ee18dfc751c243526039c91848efd603702200febfbe3467a68c599245ff89055514f26e146c79b58d932ced2325e6dad1b1a0121021630971f20fa349ba940a6ba3706884c41579cd760c89901374358db5dd545b90247304402201b21212100c84207697cebb852374669c382ed97cbd08afbbdfe1b302802161602206b32b2140d094cf5b7e758135961c95478c8e82fea0df30f56ccee284b79eaea012103f6b2377d52960a6094ec158cf19dcf9e33b3da4798c2302aa5806483ed4187ae01404a81e4b7f55d6d4a26923c5e2daf3cc86ed6030f83ea6e7bb16d7b81b988b34585be21a64ab45ddcc2fb9f17be2dfeff6b22cf943bc3fc8f125a7f463af428ed0000000000
# The witness data is 283 bytes, but two of the DER signatures are one byte below the
# average length, so the caculator should estimate 285 bytes of witness data.
self.assertEqual(calculator.get_total(), 4*477 + 285)
self.assertEqual(calculator.get_weight(), 4*477 + 285)
def test_external_txweight(self):
coin = coins.by_name('Testnet')
@ -352,7 +352,7 @@ class TestCalculateTxWeight(unittest.TestCase):
calculator.add_input(inp3)
calculator.add_output(output_derive_script(out1.address, coin))
self.assertEqual(calculator.get_total(), 4*164 + 325)
self.assertEqual(calculator.get_weight(), 4*164 + 325)
# non-segwit: header, inputs, outputs, locktime 4*(4+1+3*41+1+31+4) = 4*164
# segwit: segwit header, 2x estimated witness (including stack item count)
# and 1x exact witness (including stack item count) 1*(2+108+108+107) = 325

@ -510,10 +510,15 @@ static uint64_t div_round(uint64_t numer, uint64_t denom) {
static bool formatFeeRate(uint64_t fee, uint64_t tx_weight, char *output,
size_t output_length, bool segwit) {
// Convert transaction weight to virtual transaction size, which is is defined
// as tx_weight / 4 rounded up to the next integer.
// https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#transaction-size-calculations
uint64_t tx_size = (tx_weight + 3) / 4;
// Compute fee rate and modify it in place for the bn_format_uint64()
// function. We multiply by 4 to convert from sats/WU to sats/vB. We multiply
// by 10, because we want bn_format_uint64() to display 1 decimal digit.
uint64_t fee_rate_multiplied = div_round(4 * 10 * fee, tx_weight);
// function. We multiply by 10, because we want bn_format_uint64() to display
// 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,

@ -11,8 +11,8 @@
"T1_bitcoin-test_bgold.py::test_send_btg_multisig_change": "b7475b47c4cb4ea2b7b74d9b47af8555e146af1252141a41eef56275bc7910b9",
"T1_bitcoin-test_bgold.py::test_send_mixed_inputs": "fb75a9c9302653d1fb7cda5a5a0732e5eb3db505a37b01965a303a65a10d0057",
"T1_bitcoin-test_bgold.py::test_send_multisig_1": "6e55061ba714c36b9a97db0fe02ae47ba3fdaba0dc624c0a1b05169a416cefb1",
"T1_bitcoin-test_bgold.py::test_send_p2sh": "b04649e42326c80d22f8b1480bebd609d048da76464ee5f7f8b292bb8559d1f7",
"T1_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9fd0d868aa3d4b9ea4066b1124f51d469edcc57a9a234bc5dc48eef63f55ce6b",
"T1_bitcoin-test_bgold.py::test_send_p2sh": "bcb19e2274ad09bfe43119765d90da37412ce905c7be7545af360910a575d0e8",
"T1_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "080cc378e988b7e25fcf094fc099a780a1ace6049e29fd0c6bd804575a93a5bf",
"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",
@ -129,10 +129,10 @@
"T1_bitcoin-test_grs.py::test_legacy": "1c49d3e4ce2ac576ce7121eda45117ad58abda8e432fec10094e4982a45ef81f",
"T1_bitcoin-test_grs.py::test_legacy_change": "138bc552a4cebb01a4d1677a3be808c8bef97dfffc30815148bfdd7f97c41075",
"T1_bitcoin-test_grs.py::test_send_p2tr": "9df8a38cd6885a9c8dd5af58ec53164cd59eb0d9512be755403b10ed793d69b7",
"T1_bitcoin-test_grs.py::test_send_segwit_native": "4c2bd3360064a3247e3e9284695164a18a9b81825af4928208ebd660c3edc2c1",
"T1_bitcoin-test_grs.py::test_send_segwit_native_change": "04191fdeb6df4c64e052ae9c9c0051f6c5b2bd5ff15defb5ebc492b2dd739265",
"T1_bitcoin-test_grs.py::test_send_segwit_p2sh": "de5f155de2242c6289544ceca36f375722ead1232f15413062da878b9b8c0a47",
"T1_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "909bbb5c9182fe5677cfb763ed324893ba0c6eaa71d38eda0a1da89401643993",
"T1_bitcoin-test_grs.py::test_send_segwit_native": "48ee1cc2413f67b8f9bebe480d9c0547b1002cf5922753a23e06f0bf103a6896",
"T1_bitcoin-test_grs.py::test_send_segwit_native_change": "fca2eaf02e835db71701d6df45662ba963f9a16ffabc794190f7453057f94178",
"T1_bitcoin-test_grs.py::test_send_segwit_p2sh": "86b417d5732c0c1c97a310f762cb2b3cc47778fe92260eb390ca0a9670f1ec0f",
"T1_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "011e1ad7d9d54317ff3e0bdf3470980b9f486bfe916bb4a7afa365b57ae85b3d",
"T1_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e597c7767dc83434e556ab551f4ff79eb9ea47d5902969dcfe82a41f1c7cd6c4",
"T1_bitcoin-test_komodo.py::test_one_one_rewards_claim": "e623e85329341afa146fd5f4b93eef09eaecfcd66478b2a096c9930b5b6bede8",
"T1_bitcoin-test_multisig.py::test_15_of_15": "c3f5f1880447f879d1d1b966faf7b31510c82553eab815c2c7b150c4f2da9348",
@ -169,11 +169,11 @@
"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "bec27ce6240d3be57e2815b00f66db2f3d0da60b3de8429772aed5ce5dc0263a",
"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "8501aeef2b2494e3440d4da64f2d08d24284183c1813753e653039797ffe684f",
"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "3f99e0c68e5fb612cb48b7d170a5f36a32e1fc5d8fe7d98f391ef4900411731d",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "8970cf96d830b180aa5723009764252950652c3fbfe15502f8f2cec8e8bff96e",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "8970cf96d830b180aa5723009764252950652c3fbfe15502f8f2cec8e8bff96e",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "ddc5b507956c6be8bc428308904a2bd08f5741c74fee2a85befb8a0d95d6b49a",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ddc5b507956c6be8bc428308904a2bd08f5741c74fee2a85befb8a0d95d6b49a",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "f1d28d8787f3dc5b6d0341b445f72778b0c75aad9d1f9f0cd68e60fea4dd8b21",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6405d6fd57770fab1fec6025371bb028526dbca66989741070602f0b2a4070e3",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6405d6fd57770fab1fec6025371bb028526dbca66989741070602f0b2a4070e3",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f84b6208e0874c7b81c8749fe1a4966d6656c5f945630cdaa00ae451372f42e3",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "f84b6208e0874c7b81c8749fe1a4966d6656c5f945630cdaa00ae451372f42e3",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "b6853df41ac319320631ec4d47690c361ff1ac83f56ef6bbe2e0da0b3f6cc260",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "14661620220ec40ef5f1ebb942f8769407883cf782c80f5a26b2d2be93cd1ac0",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "14661620220ec40ef5f1ebb942f8769407883cf782c80f5a26b2d2be93cd1ac0",
"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "dceba24e3580c8e6184464de082cef38556c7ebca67284599cbfddb15aaa8982",
@ -244,11 +244,11 @@
"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]": "f3662dcbaf46f22d22b2d6ae1310f68e2d3775bf67c6f4dfc86adebd4ff4e905",
"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MICROBITCOIN]": "f5a7d9d57029568e2985c13846d22d385f975b092c0c9fa27f6831061d9cddd3",
"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MILLIBITCOIN]": "2946dea66eb45f30b21134f6e145b2905e8e63bf8d768e23d48a2f40bf070da2",
"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "d7a7bd6416269221b015bace16f0c81a882a7453d20aa9d309de808c2bc7f35e",
"T1_bitcoin-test_signtx_amount_unit.py::test_signtx[None]": "f3662dcbaf46f22d22b2d6ae1310f68e2d3775bf67c6f4dfc86adebd4ff4e905",
"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[None]": "469b90fc27d63c87ab5b28e5bb99b10e503273a393902f1914479f8cd1c2cfe6",
"T1_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "19e56e826e17f0b5cb5ab26d684dd4d1ef73da2711edc8bef2a086962c1382b0",
"T1_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "af9f164a44223a2b004ec49b7a18bf0add314b29331c4fa8fd98e845f705ebd6",
"T1_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8ea6ddd6d6b577ab5c7b262a0bc0393d5f9415ca3c018e18099661880ce79545",
@ -264,10 +264,10 @@
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "6ae2fa54cd808ee48c335c447ad2a168397de9fa419a751b085621d2445df64a",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "6ae2fa54cd808ee48c335c447ad2a168397de9fa419a751b085621d2445df64a",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "6ae2fa54cd808ee48c335c447ad2a168397de9fa419a751b085621d2445df64a",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6ae2fa54cd808ee48c335c447ad2a168397de9fa419a751b085621d2445df64a",
"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "e03b66babbcaec324e399c407016b0805dc2463d04e3095507c6df0a42583e48",
"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",
@ -282,22 +282,22 @@
"T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "14544554428651eb22515a88418c71f66de68e581ea2df5b2259843b1931e8fc",
"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": "0daaeb42f481ed7ac9710808165f1cc63d3c142704e468e91a36ff3cf27d9273",
"T1_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "0c0c3e0de51e92c521fa4f0285deccfbd24c6e2a5af59e83dc87af3a1ddbd39b",
"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_send_multisig_1": "2281da53c4bd7f12625f0f43913210629909c877c770621579c3410ae0691748",
"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh": "d2c31886687408a4509f4f6448279e32f610fa7b8536664c3d916ff29c3064ab",
"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "fde4e0cd8c874181cc88fa346885a4aa08361439f497049ea42c50bb6f00fbae",
"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh": "348559a0d862add945abf37404b3b2578bc0bae1d4e90a99f809e6b54966b2c8",
"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "276281d77d42dadf4f2238cabc2faea9efdd9bab29fac41ba78754c13f390570",
"T1_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "32f4561974abff85a6569299f3fadbd88eadf1669e6159f42143553f9eaa9192",
"T1_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "2323758586e798c03e773948d053ac0b88ff1389ddc53d639510c13ba97405ac",
"T1_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "d2090fa198da39a988f8f6c6469dcc449c4763a0cde0b795117ed35efbacff79",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_both": "a9d068ddc9ad90b7dcfd22d13ad4e5190456f8b17611948a444a5af9f85a7f41",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "7460676a7cb784e0c6b3475cdac2fd6e838c0202aff52bcc264369556057c284",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "9162134cbef737b452a8cb8a0fe958cd7549a5a1d27c3b5fc952342ca1b71eba",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "af0ecb0148c685a50437ffe9a28cd7ef31b52c28390cede46fb08af504a60675",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c2a3de98946cbe686e0155d14bb93fbaacfdad33b3ee7cdb0d357808c6d9edfb",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_native": "f3662dcbaf46f22d22b2d6ae1310f68e2d3775bf67c6f4dfc86adebd4ff4e905",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "35f45e75e26a8336ddae9b389d4710b4ab7e896ff1033f57449ae7c0f266d7d4",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "d078b96ec63a72f3375b330590d35a6df6faef6235d0d674a22fad7b30ba0a1c",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "566c42b79385c51a5f0b48a343c7bc48166b5bea3a0ab671047d12e56b9758c4",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_native": "469b90fc27d63c87ab5b28e5bb99b10e503273a393902f1914479f8cd1c2cfe6",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6bad42fb9c548803beea597999c0b776e4dca4d9288a564dda32ae9ac4d8d441",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "066036ae9327238b31ab2fd039a1797ad007a9c38aad4ce0d03e4eb55d59a408",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "9483a65bf6ba0f23b05c10db5a5249ee99466cf5af246c92c9492d514bd31bef",
"T1_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3446200725a88939d53a135f9071110e6b60e77bf3f83028269ead20e700b272",
"T1_bitcoin-test_signtx_taproot.py::test_attack_script_type": "63acc64409752811004b47ac23fef38804651c3b3e6b186d6c972fc6264b16ef",
"T1_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@ -627,8 +627,8 @@
"TT_bitcoin-test_bgold.py::test_send_btg_multisig_change": "e618241598a88de5f342cd1ab43d18406c11231f5d36638beeea5cc35b679174",
"TT_bitcoin-test_bgold.py::test_send_mixed_inputs": "881f2eddaa614e5455f75f04be20eb80cd92ee86fdc83bd41f6d146890fdc92d",
"TT_bitcoin-test_bgold.py::test_send_multisig_1": "cf206d1f6a92f4fd4d434dc4317873ab71bf56311ac7c25dbd307a9b17f066f6",
"TT_bitcoin-test_bgold.py::test_send_p2sh": "64853213ef5aa0105df3e0572174d1566f42ada0bdf3d87daf7187cebce840d6",
"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "56a5f215c03ea1dde5e4766ce61b056ca908ef2aad4870f886c7c47d002d1c04",
"TT_bitcoin-test_bgold.py::test_send_p2sh": "f20668c43b0e051eff90b4daf4f43488f1e8f2242379dcfc44bd923067366e46",
"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "e89c7fb26be689308311ef6009a8b73746ec6d5723d5b2eda626666d81ee5342",
"TT_bitcoin-test_dash.py::test_send_dash": "84e84912d470e4bba6aa5c2190b36fcbb766bc2720e6ca4c7c890923e774545c",
"TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "d27291f1e3e712fdc60df170dc1a78b42f70551885b613e822430b1b9a185835",
"TT_bitcoin-test_decred.py::test_decred_multisig_change": "4de82f12102539c4deebef75899ae6e1599ad5e96586180af317d68a98b6b56e",
@ -763,10 +763,10 @@
"TT_bitcoin-test_grs.py::test_legacy": "9d6920a2a462f2337fd5cd7ad39ed0c982aa846ea06fddc1f610c9e2263530b9",
"TT_bitcoin-test_grs.py::test_legacy_change": "90a3957efde621651ad22c74fa35a85010546ffac98ce0bd6b5ebb4937228104",
"TT_bitcoin-test_grs.py::test_send_p2tr": "4851eddc91dcd4ff8bdf8558e17949bb3152d5a5d2144659abe36c92c183a942",
"TT_bitcoin-test_grs.py::test_send_segwit_native": "8b69c38306a5a690c151e665d8edfa67d1cd88293c089c0b1aa832acd0dfa6bc",
"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "ad78a30252e92b74b4ecbcc3f7903f99015cf600eaa48252fab12da1ce779e81",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "8ebb36005772b04baea870ab9f6aa36642a402b3eee20cf81ff62b49d650f77a",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "58ba45fd292b9f44dd46c3b98f05b2885087cbdbfd0ad176e44a503e8e3a68ae",
"TT_bitcoin-test_grs.py::test_send_segwit_native": "dc549670e2abdc0a78cde4582a13e08903f97380f1acaa1515c2ff866aa79afc",
"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "2a4d434501a4855568999f16a2cf0b4f0b69f08212d929d50eef838c35ca417a",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "98483bfa0b7bf063a472c2bc560a72f650d9f668d2cc2b08a5a05afd249e3284",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8e92d676461e30db9fe68d0418757e88523db8f06afaec3aff68865d6fbefcea",
"TT_bitcoin-test_komodo.py::test_one_one_fee_sapling": "423cc84e5de3c8132529da5e7d78aa5a969f1c36f9fbc6ae46b379366d98fc31",
"TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b3c056df25d639927faaf16dc18c281c1a36b790ea4e77f954f681fb27d3fa1a",
"TT_bitcoin-test_multisig.py::test_15_of_15": "616d7fd025485963d63ec993db335f5e06ccb0bfcafa094d164a56918796e0bf",
@ -803,11 +803,11 @@
"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4f73135d2ec9add695e0a22d855816558b4ba9329a2828f9c9930be6245bdc2d",
"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "0988cc8bdc5879744bd33190fddc5b5aa137fdd7214abb003c8000a871d98f14",
"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "540df94c73a4eed8fe88cdb475e2b31df752dca9e47b102792c01064ee432752",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "8e12862d0a59e320d386876c5e7c54f10f92d8bf7b2bf4428c4bb3de9d88e78e",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "922304dab753de94c853518f0d8ddde9f7ee38f403247014dbaa12d766eec993",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "793cc526d3e814bdc8ab7912bc93a651edbfd5ecf4479c2ff3e16715ede2b558",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "793cc526d3e814bdc8ab7912bc93a651edbfd5ecf4479c2ff3e16715ede2b558",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0113b595d4a2831af7bea1df39d5eb597047f4632ae3ebb24fed04f2fc53abbe",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "3056fd174592e12236d1f02d6bcd3dfcfd4eabcf8c14cc7c536d64219183e042",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a1597ee74cfd76a3a4834ed7c1f6c1c660994ecb89b2dffbf6f7ef043b416e1e",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "eeffbc0d1526b8c45361be1dead21cd35d317a43ed033eec48e3ff2399a0c5bd",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "eeffbc0d1526b8c45361be1dead21cd35d317a43ed033eec48e3ff2399a0c5bd",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "b017917ac36f45594166efb832cade2957793976605e48d00e725e7390fcbce0",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "8327da4e1cfa1cb81b6219a8190c89d5617747399d053a560c4b2ad9da3e70c7",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8327da4e1cfa1cb81b6219a8190c89d5617747399d053a560c4b2ad9da3e70c7",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "1863c035e68db9a5f7c3b45122374002633684c913ab06d4c1042a0c5b8c6089",
@ -890,11 +890,11 @@
"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_two": "98a1b7b73f9cd065bdc0a1ddef0124f1d109964fda9c0b57173ba888d061fbe6",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.BITCOIN]": "11fae86e2e47ea2ec98d11c2bf1a1a98f1893411100075301e91236fda049aa7",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MICROBITCOIN]": "ebd57f4831bdc5efa993ccbc558a5fdb769088629359b7ebcd55dd7eb2674a8d",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.MILLIBITCOIN]": "1d5c5f424b64eb92bddd23c3a101c8078c9bfe48a82b21fa3bb6e3c50ab7e118",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "c04587c4f543d271bcf834a76d4b4935c9deef287722688cc88aa8a37695dc9b",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[None]": "11fae86e2e47ea2ec98d11c2bf1a1a98f1893411100075301e91236fda049aa7",
"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.MILLIBITCOIN]": "1afbc7be1095d12f9786a467564df062ed623305a369cefb931cb6052cb2f2e6",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx[AmountUnit.SATOSHI]": "fe50925aef800f1c076c8648bfb009c4f9562760442bbd2d8c6f961fb5eca646",
"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",
"TT_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "c714c4a4ea8b98dfbdd8185925adafbafc62570f415688972d6003a19d7b4d23",
@ -920,22 +920,22 @@
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "887f26b4ddbb365d903b27fb9c2fab54760b2ba6f5f5252a82d8e5b4fc611fbf",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "c8a939b289ee8fe816bf04417d620e6d97a3b97d98dbf723588eea08ec3dffd2",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "a0535f894a6d61d257f62f1ce137c02e0acc045d44a3af449f99403745894a17",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "2e11155a7f63dd177fe1475615379261c81c07f2088bd20d6f481dde0466b8ac",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "4b78bb5d8a351c4c1848e792f47db013e7e63c37e6c79f16368a42a68b196a04",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "49d4267f9a668a4678806f60b37d6d4372de736e0bd50835e1fd03e6564d417d",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "3f6392f762a2a77f0648c0b1704ffd8f1f695491c7003999060ed3d2337de06d",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "8fed64c4dada52328c7dd3bac646a11258d4bf77979e7351bb0f32c6fe0a2812",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "730286c2d89c90f66d9611da96e2993ce9f2f0afea4fefa919cf20c7f4be9103",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "8d20ba87feb15e93dae957792e56c7e6704842d612d08d351ecca62fdf67f6fe",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "89b912e4fcf162d4e446eb5cd76f1ced382dbaac625fbcb62d2dddde04e01bf3",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "34ed35b8c2a297960ec2a4ab08969fececf919b866d139207a656d84b2385de1",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "de2b47b89aa013acccf2fff29cc3a0333c180feb18ce8e0cd3ed9f306f9b594f",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "63acd5e25d6f5d9e63b2f5ae18ebf29a379497d9ae39702dfdee20a66b1ab344",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "5c621b0bd439fa1d31984bcd6e0d58797f28f2dec485e28d8a376c7aeae24a68",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "9f4c978e37e4f8d87da10041e0eba0475c8294d0ab9dac880ff4266971bb6aab",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "c3df1052024e4f3be9296639a054231da35525c5101bc855bf23cfa236f4f156",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4b1b2df96814a7dc7030f9ca8bed5c2c9a69ec24a933491f04150cadb50ca0f8",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4b1b2df96814a7dc7030f9ca8bed5c2c9a69ec24a933491f04150cadb50ca0f8",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4b1b2df96814a7dc7030f9ca8bed5c2c9a69ec24a933491f04150cadb50ca0f8",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4b1b2df96814a7dc7030f9ca8bed5c2c9a69ec24a933491f04150cadb50ca0f8",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "71b03f0f2cdf1a3d3f330a7051a32642bd8f57387e0d8e5a5f7c123c7f3e704b",
"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",
@ -958,22 +958,22 @@
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f5be02a50a1876ac0478e37e41bca38c5feb569613dc5b105b95c6bb4763514a",
"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": "8ecd0ac81d58aa547a4936e56d69e35c2ab12f7ba0b51b7d92404e5e30030cfe",
"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "66b9411c1b1816d26a93a04c22372a57a4208d8295d71bd82f38915b2452c564",
"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_send_multisig_1": "cfd3b3e882067b1e42a36623da3523829bf579399b14f8711e09f7e89aa82d65",
"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh": "8853c733b0b7538e48639c4c04ad2cc7e07ae417e73f561f6fd9e580232c9abe",
"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "50ea94b0faabce0cad5354f357650f8b0e01800ce6eeee7ce9a2433c4484056d",
"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_native.py::test_multisig_mismatch_inputs_single": "c3e42d7b9a4f675717091e64b5e9470e91282e9f0057054a20582b626f13f0f1",
"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_4_change": "f5266e21904d84ccc94a60bb6de289c301193e70bc21e246ad420b3d5c9ad18e",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "11fae86e2e47ea2ec98d11c2bf1a1a98f1893411100075301e91236fda049aa7",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "daf3049d76f0a7772b188adf0505c11b520d5984b5027710920202c0844b8268",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2dbfdc48046898971dcac1e0d49c99b76486eb28f14a919323edff1f72a7d8a7",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1dc3e34497f9f767d7418efb5e6f63a5c30cde08bb92105734b9ac15d0858d2d",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "9b3479412158ee07f6592a637244698fc7e1a4468eba944ce4d329e3a9bcd355",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "fb3ec2531cb07bcc5589034476a35473cec57f075ed36d17d89958f5991d50ae",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "78f6ed8edb5798c5f18c98f45dc21230e7f55eef89b6ad32c872c45d01db2a84",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "05d4a12fd931f86ecc40ebec476c94c5d1b9f6b5a835d928f341e0ee08739560",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "7837294d7d4a09e2b778a7a2623b61f8671bf6b1c1ae114f548657e8ab86b7e1",
"TT_bitcoin-test_signtx_taproot.py::test_attack_script_type": "776adb9eb6166befabc0889c188ce7f4f6c32f6f0db047f134a96a0fd09b1953",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",

Loading…
Cancel
Save