Skip to content

Commit 1fce5c9

Browse files
committed
feat: refactor unsignedSweep tx format in backupKeyRecovery
refactor format of unsignedSweep transactions in backupKeyRecovery to use PSBT format instead of legacy format. This removes the need for the formatForOfflineVault function and improves the format of transactions for offline vault cosigning. Ticket: BTC-2889 TICKET: BTC-2889
1 parent baa03cd commit 1fce5c9

File tree

25 files changed

+56
-900
lines changed

25 files changed

+56
-900
lines changed

modules/abstract-utxo/src/recovery/backupKeyRecovery.ts

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import assert from 'assert';
2-
31
import _ from 'lodash';
42
import * as utxolib from '@bitgo/utxo-lib';
53
import { Dimensions } from '@bitgo/unspents';
@@ -33,44 +31,15 @@ type WalletUnspentJSON = utxolib.bitgo.WalletUnspent & {
3331

3432
const { getInternalChainCode, scriptTypeForChain, outputScripts, getExternalChainCode } = utxolib.bitgo;
3533

36-
export interface OfflineVaultTxInfo {
37-
inputs: WalletUnspentJSON[];
38-
}
39-
4034
export interface FormattedOfflineVaultTxInfo {
4135
txInfo: {
42-
unspents: WalletUnspentJSON[];
36+
unspents?: WalletUnspentJSON[];
4337
};
4438
txHex: string;
4539
feeInfo: Record<string, never>;
4640
coin: string;
4741
}
4842

49-
/**
50-
* This transforms the txInfo from recover into the format that offline-signing-tool expects
51-
* @param coinName
52-
* @param txInfo
53-
* @param txHex
54-
* @returns {{txHex: *, txInfo: {unspents: *}, feeInfo: {}, coin: void}}
55-
*/
56-
function formatForOfflineVault(
57-
coinName: string,
58-
txInfo: OfflineVaultTxInfo,
59-
txHex: string
60-
): FormattedOfflineVaultTxInfo {
61-
return {
62-
txHex,
63-
txInfo: {
64-
unspents: txInfo.inputs.map((input) => {
65-
assert(input.valueString);
66-
return { ...input, valueString: input.valueString };
67-
}),
68-
},
69-
feeInfo: {},
70-
coin: coinName,
71-
};
72-
}
73-
7443
/**
7544
* Get the current market price from a third party to be used for recovery
7645
* This function is only intended for non-bitgo recovery transactions, when it is necessary
@@ -316,7 +285,7 @@ export async function backupKeyRecovery(
316285

317286
const isKrsRecovery = getIsKrsRecovery(params);
318287
const isUnsignedSweep = getIsUnsignedSweep(params);
319-
const responseTxFormat = isUnsignedSweep || !isKrsRecovery || params.krsProvider === 'keyternal' ? 'legacy' : 'psbt';
288+
const responseTxFormat = !isKrsRecovery || params.krsProvider === 'keyternal' ? 'legacy' : 'psbt';
320289

321290
const krsProvider = isKrsRecovery ? getKrsProvider(coin, params.krsProvider) : undefined;
322291

@@ -413,9 +382,12 @@ export async function backupKeyRecovery(
413382
}
414383

415384
if (isUnsignedSweep) {
416-
// TODO BTC-317 - When ready to PSBTify OVC, send psbt hex and skip unspents in response.
417-
const txHex = psbt.getUnsignedTx().toBuffer().toString('hex');
418-
return formatForOfflineVault(coin.getChain(), txInfo as OfflineVaultTxInfo, txHex);
385+
return {
386+
txHex: psbt.toHex(),
387+
txInfo: {},
388+
feeInfo: {},
389+
coin: coin.getChain(),
390+
};
419391
} else {
420392
signAndVerifyPsbt(psbt, walletKeys.user, { isLastSignature: false });
421393
if (isKrsRecovery) {

modules/abstract-utxo/test/unit/fixtures/bch/recovery/backupKeyRecovery-unsignedRecovery-p2sh.json

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,6 @@
11
{
2-
"txHex": "0200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff010c44c3230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff8700000000",
3-
"txInfo": {
4-
"unspents": [
5-
{
6-
"id": "9c331fa52cfb21b1cb9367deea6b65cc5598938562c9803657673dc065d5c3d7:0",
7-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
8-
"value": 100000000,
9-
"chain": 1,
10-
"index": 0,
11-
"valueString": "100000000"
12-
},
13-
{
14-
"id": "16f219a6887f963bfc8ee7c6e251d09326812687d0ff9ed88271112a098fdf6a:0",
15-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
16-
"value": 200000000,
17-
"chain": 1,
18-
"index": 0,
19-
"valueString": "200000000"
20-
},
21-
{
22-
"id": "8c1595f5f0c5e405c59bc8c8a48b036303e323fcffcee8e13f855663852a483f:0",
23-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
24-
"value": 300000000,
25-
"chain": 1,
26-
"index": 0,
27-
"valueString": "300000000"
28-
}
29-
]
30-
},
2+
"txHex": "70736274ff0100a50200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff010c44c3230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff87000000004f010488b21e0000000000000000004b256d3cf3524c8d7086e295a1923d6fa2f99b686699ed50084bb114495c982403a86864862a9e315221809501f2a4200cd9e057a70f9164d485d4cfbeb8e47c74048374ad864f010488b21e000000000000000000914cc440157319de14126a1a2e87ea86f3b983f923fb17693a157b721220d74c02e81e105716179975cc47afd117cae272519aafdd6bfff688e4280d384e13184f04e15f6f214f010488b21e000000000000000000da28679577f7faf0ed86164da220aa4a29c7edfb0de8bdabd97f19fd15e74bed03db2b42af97f60db6ec5a1500e246ef2107660c4fc02699ed69b82c2f3e9324ae0403a82391000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b4830450221008c9a3212461e71cadb8f4d9ac4eda10ed0445c5acca3041e9d92e06360b85350022032e211d19adbc911da021394384621b19fe2729b4085f2a20a54a14c81389e83012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100e1f5050000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b483045022100a749722d784fbb843b6e33b35c47f0fce8f24652d7cfaa353e1c9dbbd0e0340202207b7c85cdfee0d1cccd1c469cece83f7a510a8db40f62675c84b55bc437d84dce012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100c2eb0b0000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100bd02000000010101010101010101010101010101010101010101010101010101010101010101000000006a47304402202a36601376e4b4c64c2fc6357a37a71364b46b6dd7a8b84825baabaf2b5e37720220599e40054ee5570825cb36da797d7d3c6c77297d550c7db0d01ef9971155a4bf012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100a3e1110000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f21000000000000000001000000000000000000",
3+
"txInfo": {},
314
"feeInfo": {},
325
"coin": "bch",
336
"txid": "9bd9069313617cd82c59d374eb511f7f43484bd90585f79ca225f0185f7ff8d8"

modules/abstract-utxo/test/unit/fixtures/bcha/recovery/backupKeyRecovery-unsignedRecovery-p2sh.json

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,6 @@
11
{
2-
"txHex": "0200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff010c44c3230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff8700000000",
3-
"txInfo": {
4-
"unspents": [
5-
{
6-
"id": "9c331fa52cfb21b1cb9367deea6b65cc5598938562c9803657673dc065d5c3d7:0",
7-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
8-
"value": 100000000,
9-
"chain": 1,
10-
"index": 0,
11-
"valueString": "100000000"
12-
},
13-
{
14-
"id": "16f219a6887f963bfc8ee7c6e251d09326812687d0ff9ed88271112a098fdf6a:0",
15-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
16-
"value": 200000000,
17-
"chain": 1,
18-
"index": 0,
19-
"valueString": "200000000"
20-
},
21-
{
22-
"id": "8c1595f5f0c5e405c59bc8c8a48b036303e323fcffcee8e13f855663852a483f:0",
23-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
24-
"value": 300000000,
25-
"chain": 1,
26-
"index": 0,
27-
"valueString": "300000000"
28-
}
29-
]
30-
},
2+
"txHex": "70736274ff0100a50200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff010c44c3230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff87000000004f010488b21e0000000000000000004b256d3cf3524c8d7086e295a1923d6fa2f99b686699ed50084bb114495c982403a86864862a9e315221809501f2a4200cd9e057a70f9164d485d4cfbeb8e47c74048374ad864f010488b21e000000000000000000914cc440157319de14126a1a2e87ea86f3b983f923fb17693a157b721220d74c02e81e105716179975cc47afd117cae272519aafdd6bfff688e4280d384e13184f04e15f6f214f010488b21e000000000000000000da28679577f7faf0ed86164da220aa4a29c7edfb0de8bdabd97f19fd15e74bed03db2b42af97f60db6ec5a1500e246ef2107660c4fc02699ed69b82c2f3e9324ae0403a82391000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b4830450221008c9a3212461e71cadb8f4d9ac4eda10ed0445c5acca3041e9d92e06360b85350022032e211d19adbc911da021394384621b19fe2729b4085f2a20a54a14c81389e83012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100e1f5050000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b483045022100a749722d784fbb843b6e33b35c47f0fce8f24652d7cfaa353e1c9dbbd0e0340202207b7c85cdfee0d1cccd1c469cece83f7a510a8db40f62675c84b55bc437d84dce012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100c2eb0b0000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100bd02000000010101010101010101010101010101010101010101010101010101010101010101000000006a47304402202a36601376e4b4c64c2fc6357a37a71364b46b6dd7a8b84825baabaf2b5e37720220599e40054ee5570825cb36da797d7d3c6c77297d550c7db0d01ef9971155a4bf012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100a3e1110000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f21000000000000000001000000000000000000",
3+
"txInfo": {},
314
"feeInfo": {},
325
"coin": "bcha",
336
"txid": "9bd9069313617cd82c59d374eb511f7f43484bd90585f79ca225f0185f7ff8d8"

modules/abstract-utxo/test/unit/fixtures/bsv/recovery/backupKeyRecovery-unsignedRecovery-p2sh.json

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,6 @@
11
{
2-
"txHex": "0200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff010c44c3230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff8700000000",
3-
"txInfo": {
4-
"unspents": [
5-
{
6-
"id": "9c331fa52cfb21b1cb9367deea6b65cc5598938562c9803657673dc065d5c3d7:0",
7-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
8-
"value": 100000000,
9-
"chain": 1,
10-
"index": 0,
11-
"valueString": "100000000"
12-
},
13-
{
14-
"id": "16f219a6887f963bfc8ee7c6e251d09326812687d0ff9ed88271112a098fdf6a:0",
15-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
16-
"value": 200000000,
17-
"chain": 1,
18-
"index": 0,
19-
"valueString": "200000000"
20-
},
21-
{
22-
"id": "8c1595f5f0c5e405c59bc8c8a48b036303e323fcffcee8e13f855663852a483f:0",
23-
"address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH",
24-
"value": 300000000,
25-
"chain": 1,
26-
"index": 0,
27-
"valueString": "300000000"
28-
}
29-
]
30-
},
2+
"txHex": "70736274ff0100a50200000003d7c3d565c03d67573680c96285939855cc656beade6793cbb121fb2ca51f339c0000000000ffffffff6adf8f092a117182d89effd08726812693d051e2c6e78efc3b967f88a619f2160000000000ffffffff3f482a856356853fe1e8cefffc23e30363038ba4c8c89bc505e4c5f0f595158c0000000000ffffffff010c44c3230000000017a91439c65a0d0072a140694d6b13ec5f5f2437de99ff87000000004f010488b21e0000000000000000004b256d3cf3524c8d7086e295a1923d6fa2f99b686699ed50084bb114495c982403a86864862a9e315221809501f2a4200cd9e057a70f9164d485d4cfbeb8e47c74048374ad864f010488b21e000000000000000000914cc440157319de14126a1a2e87ea86f3b983f923fb17693a157b721220d74c02e81e105716179975cc47afd117cae272519aafdd6bfff688e4280d384e13184f04e15f6f214f010488b21e000000000000000000da28679577f7faf0ed86164da220aa4a29c7edfb0de8bdabd97f19fd15e74bed03db2b42af97f60db6ec5a1500e246ef2107660c4fc02699ed69b82c2f3e9324ae0403a82391000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b4830450221008c9a3212461e71cadb8f4d9ac4eda10ed0445c5acca3041e9d92e06360b85350022032e211d19adbc911da021394384621b19fe2729b4085f2a20a54a14c81389e83012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100e1f5050000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100be02000000010101010101010101010101010101010101010101010101010101010101010101000000006b483045022100a749722d784fbb843b6e33b35c47f0fce8f24652d7cfaa353e1c9dbbd0e0340202207b7c85cdfee0d1cccd1c469cece83f7a510a8db40f62675c84b55bc437d84dce012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100c2eb0b0000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f2100000000000000000100000000000000000100bd02000000010101010101010101010101010101010101010101010101010101010101010101000000006a47304402202a36601376e4b4c64c2fc6357a37a71364b46b6dd7a8b84825baabaf2b5e37720220599e40054ee5570825cb36da797d7d3c6c77297d550c7db0d01ef9971155a4bf012103bd0c34b2373e387575cddb103ec03916c31044f2508e261fe3597a2680ecbd1fffffffff0100a3e1110000000017a9144365f80ae9830dab1d9124be68c74c2fa23bbc12870000000001030441000000010469522102d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc6121030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3521029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d53ae2206029b30ebe8eb23f8cec82f25a80e3b423979ec3ba1fe07d9d4ed9f6361258bc31d148374ad8600000000000000000100000000000000220602d06c08ccf0fddefff881e869b951d4b92e936118b3360182c5b8c55f4c40bc611403a82391000000000000000001000000000000002206030795af84ecc10252d8a894f54845beeb5624a1c24c3747cc654bd430539dee3514e15f6f21000000000000000001000000000000000000",
3+
"txInfo": {},
314
"feeInfo": {},
325
"coin": "bsv",
336
"txid": "9bd9069313617cd82c59d374eb511f7f43484bd90585f79ca225f0185f7ff8d8"

0 commit comments

Comments
 (0)