From 83174438de29f1230e865db278f3ff2906218315 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Date: Sat, 25 Jul 2026 11:13:51 +0530 Subject: [PATCH] feat(statics): add Pearl (PEARL) to statics and utxo-lib networks Add Pearl mainnet/testnet coin definitions to @bitgo/statics and network params to @bitgo/utxo-lib. Pearl is a Taproot-only UTXO chain (btcd fork) using BIP-340 Schnorr signatures and BIP-341 script-path spending. Bump @bitgo/wasm-utxo to ^4.27.0, which adds pearl/tpearl coin support. TICKET: CECHO-1780 Co-Authored-By: Claude Opus 5 (1M context) --- modules/abstract-utxo/package.json | 2 +- modules/abstract-utxo/test/unit/coins.ts | 3 + .../unit/transaction/fixedScript/parsePsbt.ts | 3 +- .../abstract-utxo/test/unit/util/utxoCoins.ts | 11 + modules/statics/src/base.ts | 2 + modules/statics/src/networks.ts | 16 + modules/statics/src/utxo.ts | 28 ++ .../unit/fixtures/expectedColdFeatures.ts | 2 + modules/utxo-bin/package.json | 2 +- modules/utxo-bin/src/args/parseNetwork.ts | 1 + ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt | 4 +- ...ult_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt | 2 +- ...33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.all.txt | 4 +- ...ult_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt | 2 +- ...361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt | 4 +- ...ult_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt | 2 +- ...2exhk356p9hml6c69matmggrve9scdgsyg.all.txt | 2 + ...y5n3y6u36xs58wq3yezrmqygwfnsjhucex.all.txt | 2 + ...hlryz9lrjlw9edaf4l5l3v3deg034uw28c.all.txt | 2 + ...j6dupmp869cajrkt3kw6ud3kkecsdzf7hn.all.txt | 2 + ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...vsghuwtach9h4xh7n79j9h9p7y50md7lc3.all.txt | 2 + ...1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt | 4 +- ...ult_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt | 2 +- ...fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.all.txt | 2 + ...361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt | 4 +- ...ult_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt | 2 +- ...ult_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...vsghuwtach9h4xh7n79j9h9p7ydz0x997x.all.txt | 2 + ...1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt | 4 +- ...ult_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt | 2 +- ...fm35eng6gycfwkuluc6l7e0q9vwsflwuys.all.txt | 2 + ...361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt | 4 +- ...ult_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...ult_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt | 14 + ...fz352exhk356p9hml6c69matmggrve9sq7apju.txt | 12 + ...u8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j.txt | 12 + ...62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2.txt | 8 + ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 2 +- ...lt_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt | 2 +- ...lt_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt | 2 +- ...ult_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt | 14 + ...fz352exhk356p9hml6c69matmggrve9st3eldf.txt | 12 + ...u8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8.txt | 12 + ...62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q.txt | 8 + modules/utxo-core/package.json | 2 +- modules/utxo-core/src/dustThreshold.ts | 21 +- modules/utxo-core/test/dustThreshold.ts | 2 + modules/utxo-descriptors/package.json | 2 +- modules/utxo-lib/src/bitgo/outputScripts.ts | 9 +- modules/utxo-lib/src/bitgo/transaction.ts | 6 + modules/utxo-lib/src/networks.ts | 41 +- .../utxo-lib/test/address/fixtures/pearl.json | 82 ++++ .../test/address/fixtures/tpearl.json | 82 ++++ .../psbt/psbt-lite.pearl.fullsigned.json | 369 +++++++++++++++++ .../psbt/psbt-lite.pearl.halfsigned.json | 324 +++++++++++++++ .../psbt/psbt-lite.pearl.unsigned.json | 279 +++++++++++++ .../fixtures/psbt/psbt.pearl.fullsigned.json | 378 ++++++++++++++++++ .../fixtures/psbt/psbt.pearl.halfsigned.json | 333 +++++++++++++++ .../fixtures/psbt/psbt.pearl.unsigned.json | 288 +++++++++++++ modules/utxo-lib/test/bitgo/outputScripts.ts | 2 + modules/utxo-lib/test/bitgo/psbt/Psbt.ts | 7 + .../test/bitgo/psbt/SignVerifyLegacy.ts | 6 + .../test/fixtures_thirdparty/download.ts | 4 +- .../test/fixtures_thirdparty/parse.ts | 13 +- .../test/integration_local_rpc/parse.ts | 6 + modules/utxo-lib/test/networks.ts | 18 +- modules/utxo-ord/package.json | 2 +- modules/utxo-staking/package.json | 2 +- yarn.lock | 100 ++--- 93 files changed, 2529 insertions(+), 125 deletions(-) create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/pearl_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/pearl_p2trMusig2_default_prl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9sq7apju.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/pearl_p2tr_default_prl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/pearl_p2wkh_default_prl1q62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2trMusig2_default_tprl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9st3eldf.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2tr_default_tprl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8.txt create mode 100644 modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2wkh_default_tprl1q62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q.txt create mode 100644 modules/utxo-lib/test/address/fixtures/pearl.json create mode 100644 modules/utxo-lib/test/address/fixtures/tpearl.json create mode 100644 modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.fullsigned.json create mode 100644 modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.halfsigned.json create mode 100644 modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.unsigned.json create mode 100644 modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.fullsigned.json create mode 100644 modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.halfsigned.json create mode 100644 modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.unsigned.json diff --git a/modules/abstract-utxo/package.json b/modules/abstract-utxo/package.json index e873a69a4a..2c59cb2294 100644 --- a/modules/abstract-utxo/package.json +++ b/modules/abstract-utxo/package.json @@ -67,7 +67,7 @@ "@bitgo/utxo-descriptors": "^1.3.4", "@bitgo/utxo-lib": "^11.24.1", "@bitgo/utxo-ord": "^1.32.4", - "@bitgo/wasm-utxo": "^4.21.1", + "@bitgo/wasm-utxo": "^4.27.0", "@types/lodash": "^4.14.121", "@types/superagent": "4.1.15", "bignumber.js": "^9.0.2", diff --git a/modules/abstract-utxo/test/unit/coins.ts b/modules/abstract-utxo/test/unit/coins.ts index 0ea94afa2e..910215da2f 100644 --- a/modules/abstract-utxo/test/unit/coins.ts +++ b/modules/abstract-utxo/test/unit/coins.ts @@ -70,6 +70,9 @@ describe('utxoCoins', function () { ['ecashTest', 'tbcha'], ['litecoin', 'ltc'], ['litecoinTest', 'tltc'], + // Pearl has no AbstractUtxoCoin implementation yet - added in a follow-up PR. + ['pearl', undefined], + ['tpearl', undefined], ['zcash', 'zec'], ['zcashTest', 'tzec'], ] diff --git a/modules/abstract-utxo/test/unit/transaction/fixedScript/parsePsbt.ts b/modules/abstract-utxo/test/unit/transaction/fixedScript/parsePsbt.ts index e6c2676073..015f7eb970 100644 --- a/modules/abstract-utxo/test/unit/transaction/fixedScript/parsePsbt.ts +++ b/modules/abstract-utxo/test/unit/transaction/fixedScript/parsePsbt.ts @@ -8,7 +8,7 @@ import { fixedScriptWallet } from '@bitgo/wasm-utxo'; import { parseTransaction } from '../../../../src/transaction/fixedScript/parseTransaction'; import { ParsedTransaction } from '../../../../src/transaction/types'; import { UtxoWallet } from '../../../../src/wallet'; -import { getCoinNameForNetwork, getUtxoCoin } from '../../util'; +import { getCoinNameForNetwork, getUtxoCoin, hasUtxoCoinForNetwork } from '../../util'; import { explainPsbtWasm } from '../../../../src/transaction/fixedScript'; import type { TransactionExplanation } from '../../../../src/transaction/fixedScript/explainTransaction'; import { TransactionPrebuild } from '../../../../src/abstractUtxoCoin'; @@ -205,6 +205,7 @@ function describeParseTransactionWith( function describeTransaction(filter: (test: utxolib.testutil.AcidTest) => boolean = () => true) { describe(`parseTransaction`, function () { utxolib.testutil.AcidTest.suite() + .filter((test) => hasUtxoCoinForNetwork(test.network)) .filter(filter) .forEach((test) => { // Default case: psbt format, infer recipients from explanation diff --git a/modules/abstract-utxo/test/unit/util/utxoCoins.ts b/modules/abstract-utxo/test/unit/util/utxoCoins.ts index 67f771d929..795baee612 100644 --- a/modules/abstract-utxo/test/unit/util/utxoCoins.ts +++ b/modules/abstract-utxo/test/unit/util/utxoCoins.ts @@ -65,6 +65,17 @@ export function getNetworkForCoinName(coinName: string): utxolib.Network { return network; } +/** + * @return true iff an AbstractUtxoCoin implementation exists for the network. + * + * Networks can be defined in utxo-lib before their coin class lands here (pearl is + * added to utxo-lib first, its coin class follows in a later PR). Suites driven off + * utxolib.getNetworkList()/AcidTest.suite() use this to skip those networks. + */ +export function hasUtxoCoinForNetwork(network: utxolib.Network): boolean { + return Object.values(coinNameToNetwork).includes(network); +} + /** * Get coin name for a utxolib Network. For test infrastructure only. */ diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 7739756262..1f2b445560 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -110,6 +110,7 @@ export enum CoinFamily { OPETH = 'opeth', OSMO = 'osmo', PLUME = 'plume', + PEARL = 'pearl', RBTC = 'rbtc', SCROLLETH = 'scrolleth', // Scroll L2 SGB = 'sgb', @@ -1684,6 +1685,7 @@ export enum UnderlyingAsset { PRDX = 'prdx', PRINTS = 'prints', PRISM = 'prism', + PEARL = 'pearl', PRO = 'pro', PROM = 'prom', PROS = 'pros', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index daf6425e38..6468ea0a81 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1431,6 +1431,20 @@ class ZCashTestnet extends Testnet implements UtxoNetwork { explorerUrl = 'https://testnet.zcashexplorer.app/transactions/'; } +class Pearl extends Mainnet implements UtxoNetwork { + name = 'Pearl'; + family = CoinFamily.PEARL; + utxolibName = 'pearl'; + explorerUrl = undefined; +} + +class PearlTestnet extends Testnet implements UtxoNetwork { + name = 'PearlTestnet'; + family = CoinFamily.PEARL; + utxolibName = 'tpearl'; + explorerUrl = undefined; +} + class Near extends Mainnet implements AccountNetwork { name = 'Near'; family = CoinFamily.NEAR; @@ -2953,6 +2967,7 @@ export const Networks = { plume: Object.freeze(new Plume()), polygon: Object.freeze(new Polygon()), polyx: Object.freeze(new Polymesh()), + pearl: Object.freeze(new Pearl()), phrs: Object.freeze(new Pharos()), ctc: Object.freeze(new Creditcoin()), hypeevm: Object.freeze(new HypeEVM()), @@ -3087,6 +3102,7 @@ export const Networks = { mantra: Object.freeze(new MantraTestnet()), polygon: Object.freeze(new PolygonTestnet()), polyx: Object.freeze(new PolymeshTestnet()), + pearl: Object.freeze(new PearlTestnet()), phrs: Object.freeze(new PharosTestnet()), ctc: Object.freeze(new CreditcoinTestnet()), hypeevm: Object.freeze(new HypeEVMTestnet()), diff --git a/modules/statics/src/utxo.ts b/modules/statics/src/utxo.ts index 18839830cb..f12dff65dc 100644 --- a/modules/statics/src/utxo.ts +++ b/modules/statics/src/utxo.ts @@ -143,6 +143,12 @@ const DOGE_FEATURES = [ const DASH_FEATURES = [...UtxoCoin.DEFAULT_FEATURES, CoinFeature.CUSTODY_BITGO_FRANKFURT, CoinFeature.BULK_TRANSACTION]; const TDASH_FEATURES = [...UtxoCoin.DEFAULT_FEATURES, CoinFeature.BULK_TRANSACTION]; const ZEC_FEATURES = [...UtxoCoin.DEFAULT_FEATURES, CoinFeature.BULK_TRANSACTION, CoinFeature.CUSTODY_BITGO_FRANKFURT]; +const PEARL_FEATURES = [ + ...UtxoCoin.DEFAULT_FEATURES, + CoinFeature.MULTISIG, + CoinFeature.BULK_TRANSACTION, + CoinFeature.DISTRIBUTED_CUSTODY, +]; export const utxoCoins: Readonly[] = [ utxo( '8d6e08d5-399f-414f-8430-6ceca1798cbf', @@ -320,6 +326,28 @@ export const utxoCoins: Readonly[] = [ BaseUnit.ZEC, ZEC_FEATURES ), + utxo( + '4518a5b9-00d3-476e-bc40-d3f87eb82250', + 'pearl', + 'Pearl', + Networks.main.pearl, + UnderlyingAsset.PEARL, + BaseUnit.BTC, + PEARL_FEATURES, + '', + 'PEARL' + ), + utxo( + '5d88723a-7e86-43c7-9fb1-f4cee7abc48f', + 'tpearl', + 'Testnet Pearl', + Networks.test.pearl, + UnderlyingAsset.PEARL, + BaseUnit.BTC, + PEARL_FEATURES, + '', + 'TPEARL' + ), utxo( 'c93a9160-458f-4a31-bea0-4a93ae8b1d2d', 'doge', diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index b09d602aae..927ccba868 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -33,6 +33,7 @@ export const expectedColdFeatures = { 'etc', 'hbar', 'ltc', + 'pearl', 'rbtc', 'stx', 'talgo', @@ -53,6 +54,7 @@ export const expectedColdFeatures = { 'tetc', 'thbar', 'tltc', + 'tpearl', 'trbtc', 'tstx', 'txlm', diff --git a/modules/utxo-bin/package.json b/modules/utxo-bin/package.json index c922d9f377..4911d7f8d3 100644 --- a/modules/utxo-bin/package.json +++ b/modules/utxo-bin/package.json @@ -31,7 +31,7 @@ "@bitgo/unspents": "^0.51.7", "@bitgo/utxo-core": "^1.39.4", "@bitgo/utxo-lib": "^11.24.1", - "@bitgo/wasm-utxo": "^4.21.1", + "@bitgo/wasm-utxo": "^4.27.0", "@noble/curves": "1.8.1", "archy": "^1.0.0", "bech32": "^2.0.0", diff --git a/modules/utxo-bin/src/args/parseNetwork.ts b/modules/utxo-bin/src/args/parseNetwork.ts index a9cead1a6e..c425bf37ac 100644 --- a/modules/utxo-bin/src/args/parseNetwork.ts +++ b/modules/utxo-bin/src/args/parseNetwork.ts @@ -33,6 +33,7 @@ const networkOrder = [ utxolib.networks.dogecoin, utxolib.networks.ecash, utxolib.networks.litecoin, + utxolib.networks.pearl, utxolib.networks.zcash, ]; diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index bc014030b5..ba3a73696d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -11,4 +11,4 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinBitGoSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index bc014030b5..ba3a73696d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -11,4 +11,4 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinPublicSignet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index bc014030b5..ba3a73696d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -11,4 +11,4 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinRegtest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index bc014030b5..ba3a73696d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -11,4 +11,4 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinTestnet4_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt index 03a42430c2..96e5752f35 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt @@ -17,7 +17,7 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt ├── bitcoinBitGoSignet default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ @@ -43,5 +43,7 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt ├── ecashTest cashaddr: ectest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ytf3xzgah ├── litecoin default : LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv ├── litecoinTest default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ + ├── pearl default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt + ├── tpearl default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ ├── zcash default : t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg └── zcashTest default : tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt index 2e51a1f608..0a8cb5be9c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -11,4 +11,4 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.all.txt index 031f1436e3..54a3bf61cc 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.all.txt @@ -17,7 +17,7 @@ address: 33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb ├── bitcoinBitGoSignet default : 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di @@ -43,5 +43,7 @@ address: 33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb ├── ecashTest cashaddr: ectest:pqtemhuy3ft5cm7mxrnw2e8jezu0cyf4g5uuaexm5e ├── litecoin default : MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr ├── litecoinTest default : QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5 + ├── pearl default : 33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb + ├── tpearl default : 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di ├── zcash default : t3LiVbWMu38anUzTYjJgiy2KvYisXE5gqbm └── zcashTest default : t28hgeBU2ubCA2h3Hf3gmWeWZfD6h3wzrZN diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt index dcf72bbbda..4cc301605b 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2shP2wsh_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt @@ -11,4 +11,4 @@ address: 33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt index 04666175c6..e1b42bba19 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt @@ -17,7 +17,7 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW ├── bitcoinBitGoSignet default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW @@ -43,5 +43,7 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW ├── ecashTest cashaddr: ectest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vgmhlf38p ├── litecoin default : MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 ├── litecoinTest default : QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── pearl default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── tpearl default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW ├── zcash default : t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU └── zcashTest default : t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt index 0bbcbfb67c..55f8baa5c4 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -11,4 +11,4 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2trMusig2_default_bc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9scdgsyg.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2trMusig2_default_bc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9scdgsyg.all.txt index 682f25b6e9..5eb7b7ab7f 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2trMusig2_default_bc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9scdgsyg.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2trMusig2_default_bc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9scdgsyg.all.txt @@ -43,5 +43,7 @@ address: bc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9scdgsyg ├── ecashTest cashaddr: undefined ├── litecoin default : ltc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9smfxq7d ├── litecoinTest default : tltc1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9ssxz7pc + ├── pearl default : prl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9sq7apju + ├── tpearl default : tprl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9st3eldf ├── zcash default : undefined └── zcashTest default : undefined diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2tr_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2tr_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.all.txt index fad5b5dc7b..7acd2f8ce6 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2tr_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2tr_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.all.txt @@ -43,5 +43,7 @@ address: bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex ├── ecashTest cashaddr: undefined ├── litecoin default : ltc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns3njgrr ├── litecoinTest default : tltc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns6ukkuk + ├── pearl default : prl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j + ├── tpearl default : tprl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8 ├── zcash default : undefined └── zcashTest default : undefined diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wkh_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wkh_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.all.txt index 431e1ff0b6..2725e8e9c7 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wkh_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wkh_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.all.txt @@ -41,5 +41,7 @@ address: bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c ├── ecashTest cashaddr: undefined ├── litecoin default : ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg ├── litecoinTest default : tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz + ├── pearl default : prl1q62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2 + ├── tpearl default : tprl1q62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q ├── zcash default : undefined └── zcashTest default : undefined diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wsh_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wsh_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.all.txt index adfd052c7e..9d49ab831f 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wsh_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoin_p2wsh_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.all.txt @@ -43,5 +43,7 @@ address: bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn ├── ecashTest cashaddr: undefined ├── litecoin default : ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk ├── litecoinTest default : tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr + ├── pearl default : prl1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs43u0p8 + ├── tpearl default : tprl1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs77c37j ├── zcash default : undefined └── zcashTest default : undefined diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincashTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_cashaddr_bitcoincash_qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_cashaddr_bitcoincash_qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.all.txt index bf6e377bf5..b1e7dca00a 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_cashaddr_bitcoincash_qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_cashaddr_bitcoincash_qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.all.txt @@ -43,5 +43,7 @@ address: bitcoincash:qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3 ├── ecashTest cashaddr: ectest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ytf3xzgah ├── litecoin default : LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv ├── litecoinTest default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ + ├── pearl default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt + ├── tpearl default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ ├── zcash default : t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg └── zcashTest default : tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt index 03a42430c2..96e5752f35 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt @@ -17,7 +17,7 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt ├── bitcoinBitGoSignet default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ @@ -43,5 +43,7 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt ├── ecashTest cashaddr: ectest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ytf3xzgah ├── litecoin default : LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv ├── litecoinTest default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ + ├── pearl default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt + ├── tpearl default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ ├── zcash default : t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg └── zcashTest default : tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt index 2e51a1f608..0a8cb5be9c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -11,4 +11,4 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_cashaddr_bitcoincash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_cashaddr_bitcoincash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.all.txt index 6a58d85a27..f9c7ac039d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_cashaddr_bitcoincash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_cashaddr_bitcoincash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.all.txt @@ -43,5 +43,7 @@ address: bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8 ├── ecashTest cashaddr: ectest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vgmhlf38p ├── litecoin default : MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 ├── litecoinTest default : QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── pearl default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── tpearl default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW ├── zcash default : t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU └── zcashTest default : t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt index 04666175c6..e1b42bba19 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt @@ -17,7 +17,7 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW ├── bitcoinBitGoSignet default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW @@ -43,5 +43,7 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW ├── ecashTest cashaddr: ectest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vgmhlf38p ├── litecoin default : MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 ├── litecoinTest default : QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── pearl default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── tpearl default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW ├── zcash default : t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU └── zcashTest default : t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt index 0bbcbfb67c..55f8baa5c4 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoincash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -11,4 +11,4 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index bc014030b5..ba3a73696d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -11,4 +11,4 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoingoldTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsvTestnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt index 2e51a1f608..0a8cb5be9c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -11,4 +11,4 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt index 0bbcbfb67c..55f8baa5c4 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/bitcoinsv_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -11,4 +11,4 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/dogecoinTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/dogecoinTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/dogecoinTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/dogecoinTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecashTest_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_cashaddr_ecash_qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_cashaddr_ecash_qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.all.txt index 3ea38352f6..e99a56ba8b 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_cashaddr_ecash_qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_cashaddr_ecash_qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.all.txt @@ -43,5 +43,7 @@ address: ecash:qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x ├── ecashTest cashaddr: ectest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ytf3xzgah ├── litecoin default : LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv ├── litecoinTest default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ + ├── pearl default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt + ├── tpearl default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ ├── zcash default : t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg └── zcashTest default : tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt index 03a42430c2..96e5752f35 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.all.txt @@ -17,7 +17,7 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt ├── bitcoinBitGoSignet default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ @@ -43,5 +43,7 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt ├── ecashTest cashaddr: ectest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ytf3xzgah ├── litecoin default : LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv ├── litecoinTest default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ + ├── pearl default : 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt + ├── tpearl default : mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ ├── zcash default : t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg └── zcashTest default : tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt index 2e51a1f608..0a8cb5be9c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -11,4 +11,4 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_cashaddr_ecash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_cashaddr_ecash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.all.txt index 58c9f473fc..13f254925b 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_cashaddr_ecash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_cashaddr_ecash_pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.all.txt @@ -43,5 +43,7 @@ address: ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys ├── ecashTest cashaddr: ectest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vgmhlf38p ├── litecoin default : MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 ├── litecoinTest default : QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── pearl default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── tpearl default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW ├── zcash default : t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU └── zcashTest default : t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt index 04666175c6..e1b42bba19 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt @@ -17,7 +17,7 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -├── network: bitcoin, bitcoincash, bitcoinsv, ecash +├── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl └─┬ converted ├── bitcoin default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW ├── bitcoinBitGoSignet default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW @@ -43,5 +43,7 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW ├── ecashTest cashaddr: ectest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vgmhlf38p ├── litecoin default : MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 ├── litecoinTest default : QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── pearl default : 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── tpearl default : 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW ├── zcash default : t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU └── zcashTest default : t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt index 0bbcbfb67c..55f8baa5c4 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/ecash_p2sh_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -11,4 +11,4 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoin, bitcoincash, bitcoinsv, ecash +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/litecoinTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/litecoinTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/litecoinTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/litecoinTest_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt new file mode 100644 index 0000000000..0a8cb5be9c --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2pkh_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -0,0 +1,14 @@ +address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt +├─┬ base58 +│ └── payload: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1a6727ebd (25 bytes) +├─┬ base58Check +│ ├── payload: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 (21 bytes) +│ ├── version: 0 +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 (20 bytes) +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac (25 bytes) +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoin, bitcoincash, bitcoinsv, ecash, pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2trMusig2_default_prl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9sq7apju.txt b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2trMusig2_default_prl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9sq7apju.txt new file mode 100644 index 0000000000..a17e85f768 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2trMusig2_default_prl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9sq7apju.txt @@ -0,0 +1,12 @@ +address: prl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9sq7apju +├─┬ bech32m +│ ├── prefix: prl +│ ├── words: 011406000c000819030f020d0118001a1011120213090211140a1906171611141a0105171b1f1a181a051b1d0b1b0808030c190510 (53 bytes) +│ └── bytes: 0d0c0601191bc4d0e01a846429a451a2b26bda34d04b7dff58d177d5ed081b3258 (33 bytes) +├── format: default +├─┬ outputScript: 5120a180c02323789a1c03508c85348a34564d7b469a096fbfeb1a2efabda103664b (34 bytes) +│ └─┬ scriptPubKey: [34byte] +│ ├── type: taproot +│ ├── hex: 5120a180c02323789a1c03508c85348a34564d7b469a096fbfeb1a2efabda103664b +│ └── asm: OP_1 a180c02323789a1c03508c85348a34564d7b469a096fbfeb1a2efabda103664b +└── network: pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2tr_default_prl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j.txt b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2tr_default_prl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j.txt new file mode 100644 index 0000000000..78be06011a --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2tr_default_prl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j.txt @@ -0,0 +1,12 @@ +address: prl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns2yff0j +├─┬ bech32m +│ ├── prefix: prl +│ ├── words: 0107080c051b1a15101411051b041812151b0a050e1c070b1704141311041a1c111a061014070e0011041902031b0004080e091310 (53 bytes) +│ └── bytes: 09d0c2ef5585225d9312aed45770ebb92938935c8e8d0a1dc0893221ec04439338 (33 bytes) +├── format: default +├─┬ outputScript: 51203a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 (34 bytes) +│ └─┬ scriptPubKey: [34byte] +│ ├── type: taproot +│ ├── hex: 51203a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 +│ └── asm: OP_1 3a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 +└── network: pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2wkh_default_prl1q62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2.txt b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2wkh_default_prl1q62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2.txt new file mode 100644 index 0000000000..e0516c9a47 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/pearl_p2wkh_default_prl1q62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2.txt @@ -0,0 +1,8 @@ +address: prl1q62tshlryz9lrjlw9edaf4l5l3v3deg03gw29k2 +├── format: default +├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 (22 bytes) +│ └─┬ scriptPubKey: [22byte] +│ ├── type: witnesspubkeyhash +│ ├── hex: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ └── asm: OP_0 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +└── network: pearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index aa252c0eb2..9e4b6bc358 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -11,4 +11,4 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ │ ├── type: pubkeyhash │ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index bc014030b5..ba3a73696d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2shP2wsh_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -11,4 +11,4 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di │ ├── type: scripthash │ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index caf4d30790..03071ec8f1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress/testnet_p2sh_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -11,4 +11,4 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW │ ├── type: scripthash │ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt new file mode 100644 index 0000000000..9e4b6bc358 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2pkh_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -0,0 +1,14 @@ +address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ +├─┬ base58 +│ └── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f122697ba2 (25 bytes) +├─┬ base58Check +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 (21 bytes) +│ ├── version: 6f +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 (20 bytes) +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac (25 bytes) +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoinBitGoSignet, bitcoinPublicSignet, bitcoinRegtest, bitcoinTestnet4, testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest, tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2trMusig2_default_tprl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9st3eldf.txt b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2trMusig2_default_tprl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9st3eldf.txt new file mode 100644 index 0000000000..0c997b3ddf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2trMusig2_default_tprl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9st3eldf.txt @@ -0,0 +1,12 @@ +address: tprl1p5xqvqger0zdpcq6s3jznfz352exhk356p9hml6c69matmggrve9st3eldf +├─┬ bech32m +│ ├── prefix: tprl +│ ├── words: 011406000c000819030f020d0118001a1011120213090211140a1906171611141a0105171b1f1a181a051b1d0b1b0808030c190510 (53 bytes) +│ └── bytes: 0d0c0601191bc4d0e01a846429a451a2b26bda34d04b7dff58d177d5ed081b3258 (33 bytes) +├── format: default +├─┬ outputScript: 5120a180c02323789a1c03508c85348a34564d7b469a096fbfeb1a2efabda103664b (34 bytes) +│ └─┬ scriptPubKey: [34byte] +│ ├── type: taproot +│ ├── hex: 5120a180c02323789a1c03508c85348a34564d7b469a096fbfeb1a2efabda103664b +│ └── asm: OP_1 a180c02323789a1c03508c85348a34564d7b469a096fbfeb1a2efabda103664b +└── network: tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2tr_default_tprl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8.txt b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2tr_default_tprl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8.txt new file mode 100644 index 0000000000..2034e247fc --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2tr_default_tprl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8.txt @@ -0,0 +1,12 @@ +address: tprl1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsptdhs8 +├─┬ bech32m +│ ├── prefix: tprl +│ ├── words: 0107080c051b1a15101411051b041812151b0a050e1c070b1704141311041a1c111a061014070e0011041902031b0004080e091310 (53 bytes) +│ └── bytes: 09d0c2ef5585225d9312aed45770ebb92938935c8e8d0a1dc0893221ec04439338 (33 bytes) +├── format: default +├─┬ outputScript: 51203a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 (34 bytes) +│ └─┬ scriptPubKey: [34byte] +│ ├── type: taproot +│ ├── hex: 51203a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 +│ └── asm: OP_1 3a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 +└── network: tpearl diff --git a/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2wkh_default_tprl1q62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q.txt b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2wkh_default_tprl1q62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q.txt new file mode 100644 index 0000000000..4f9348c56f --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress/tpearl_p2wkh_default_tprl1q62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q.txt @@ -0,0 +1,8 @@ +address: tprl1q62tshlryz9lrjlw9edaf4l5l3v3deg03lufv9q +├── format: default +├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 (22 bytes) +│ └─┬ scriptPubKey: [22byte] +│ ├── type: witnesspubkeyhash +│ ├── hex: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ └── asm: OP_0 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +└── network: tpearl diff --git a/modules/utxo-core/package.json b/modules/utxo-core/package.json index 3e235baf71..fc1c1b39dc 100644 --- a/modules/utxo-core/package.json +++ b/modules/utxo-core/package.json @@ -81,7 +81,7 @@ "@bitgo/secp256k1": "^1.11.0", "@bitgo/unspents": "^0.51.7", "@bitgo/utxo-lib": "^11.24.1", - "@bitgo/wasm-utxo": "^4.21.1", + "@bitgo/wasm-utxo": "^4.27.0", "bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4", "fast-sha256": "^1.3.0" }, diff --git a/modules/utxo-core/src/dustThreshold.ts b/modules/utxo-core/src/dustThreshold.ts index f1d9a20221..52d492ab9f 100644 --- a/modules/utxo-core/src/dustThreshold.ts +++ b/modules/utxo-core/src/dustThreshold.ts @@ -82,9 +82,13 @@ function getDustRelayLimit(network: utxolib.Network): DustLimit { case utxolib.networks.bitcoin: case utxolib.networks.bitcoingold: case utxolib.networks.dash: - // btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.h#L50-L55 - // btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.h#L48 - // dash: https://github.com/dashpay/dash/blob/v22.0.0-beta.1/src/policy/policy.h#L41-L46 + case utxolib.networks.pearl: + // btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.h#L50-L55 + // btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.h#L48 + // dash: https://github.com/dashpay/dash/blob/v22.0.0-beta.1/src/policy/policy.h#L41-L46 + // pearl: btcd fork - GetDustThreshold() returns 3*totalSize, which is the same + // as applying a 3000 sat/kB rate to the spend size computed below. + // https://github.com/btcsuite/btcd/blob/v0.24.2/mempool/policy.go#L36-L61 return { feeRateSatKB: 3000 }; case utxolib.networks.bitcoincash: // https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.h#L76-L83 @@ -115,11 +119,14 @@ function getSpendSize(network: utxolib.Network, outputSize: number, isWitness: b case utxolib.networks.bitcoincash: case utxolib.networks.bitcoingold: case utxolib.networks.litecoin: + case utxolib.networks.pearl: /* - btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.cpp#L26-L68 - bch: https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.cpp#L18-L36 (btc-ish) - btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.cpp#L18-L50 (btc-ish) - ltc: https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/policy/policy.cpp#L15-L47 (btc-ish) + btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.cpp#L26-L68 + bch: https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.cpp#L18-L36 (btc-ish) + btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.cpp#L18-L50 (btc-ish) + ltc: https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/policy/policy.cpp#L15-L47 (btc-ish) + pearl: https://github.com/btcsuite/btcd/blob/v0.24.2/mempool/policy.go#L36-L61 (btc-ish: + outputSize + 41 + 107/witnessScaleFactor) The fixed component here is 69.75 for isWitness=true and 150 for isWitness=false. */ diff --git a/modules/utxo-core/test/dustThreshold.ts b/modules/utxo-core/test/dustThreshold.ts index cdc29fbf98..477e019081 100644 --- a/modules/utxo-core/test/dustThreshold.ts +++ b/modules/utxo-core/test/dustThreshold.ts @@ -68,6 +68,8 @@ describe('getDustThresholdSat', function () { ['ecashTest', 'unsupported network'], ['litecoin', 5460], ['litecoinTest', 5460], + ['pearl', 546], + ['tpearl', 546], ['zcash', 300], ['zcashTest', 300], ] diff --git a/modules/utxo-descriptors/package.json b/modules/utxo-descriptors/package.json index 540674c7d5..61d96b220d 100644 --- a/modules/utxo-descriptors/package.json +++ b/modules/utxo-descriptors/package.json @@ -60,6 +60,6 @@ }, "dependencies": { "@bitgo/utxo-core": "^1.39.4", - "@bitgo/wasm-utxo": "^4.21.1" + "@bitgo/wasm-utxo": "^4.27.0" } } diff --git a/modules/utxo-lib/src/bitgo/outputScripts.ts b/modules/utxo-lib/src/bitgo/outputScripts.ts index 4fccfaf122..2a6400ea55 100644 --- a/modules/utxo-lib/src/bitgo/outputScripts.ts +++ b/modules/utxo-lib/src/bitgo/outputScripts.ts @@ -1,7 +1,7 @@ import { ok as assert } from 'assert'; import * as bitcoinjs from 'bitcoinjs-lib'; -import { Network, supportsSegwit, supportsTaproot } from '../networks'; +import { Network, isPearl, supportsSegwit, supportsTaproot } from '../networks'; import * as p2trPayments from '../payments'; import * as taproot from '../taproot'; @@ -37,6 +37,13 @@ export function hasWitnessData(scriptType: ScriptType): scriptType is 'p2shP2wsh * @return true iff script type is supported for network */ export function isSupportedScriptType(network: Network, scriptType: ScriptType): boolean { + // Pearl is a taproot-only chain: it rejects legacy and segwit-v0 wallet script types. + // This matches @bitgo/wasm-utxo, where supportsScriptType('pearl', ...) is true only + // for 'p2trLegacy' (our 'p2tr') and 'p2trMusig2'. + if (isPearl(network)) { + return scriptType === 'p2tr' || scriptType === 'p2trMusig2'; + } + switch (scriptType) { case 'p2sh': case 'p2shP2pk': diff --git a/modules/utxo-lib/src/bitgo/transaction.ts b/modules/utxo-lib/src/bitgo/transaction.ts index 6ce2f8811b..9c5770ee95 100644 --- a/modules/utxo-lib/src/bitgo/transaction.ts +++ b/modules/utxo-lib/src/bitgo/transaction.ts @@ -49,6 +49,7 @@ export function createTransactionFromBuffer(buf, false, amountType, network); case networks.litecoin: return LitecoinTransaction.fromBuffer(buf, false, amountType, network); @@ -104,6 +105,7 @@ export function createPsbtFromBuffer(buf: Buffer, network: Network, bip32PathsAb case networks.bitcoingold: case networks.dogecoin: case networks.ecash: + case networks.pearl: return UtxoPsbt.fromBuffer(buf, { network, bip32PathsAbsolute }); case networks.litecoin: return LitecoinPsbt.fromBuffer(buf, { network, bip32PathsAbsolute }); @@ -140,6 +142,7 @@ export function createPsbtFromTransaction(tx: UtxoTransaction, prevOuts: case networks.bitcoingold: case networks.dogecoin: case networks.ecash: + case networks.pearl: return UtxoPsbt.fromTransaction(tx, prevOuts); case networks.litecoin: return LitecoinPsbt.fromTransaction(tx, prevOuts); @@ -249,6 +252,7 @@ export function createPsbtForNetwork(psbtOpts: PsbtOpts, { version }: { version? case networks.bitcoinsv: case networks.bitcoingold: case networks.dogecoin: + case networks.pearl: case networks.ecash: { psbt = UtxoPsbt.createPsbt(psbtOpts); break; @@ -285,6 +289,7 @@ export function createTransactionBuilderForNetwork(network); break; @@ -320,6 +325,7 @@ export function createTransactionBuilderFromTransaction(tx, undefined, prevOutputs); case networks.litecoin: return LitecoinTransactionBuilder.fromTransaction( diff --git a/modules/utxo-lib/src/networks.ts b/modules/utxo-lib/src/networks.ts index 88436c7f90..84e6f3c529 100644 --- a/modules/utxo-lib/src/networks.ts +++ b/modules/utxo-lib/src/networks.ts @@ -33,6 +33,7 @@ const coins = { ZEC: 'zec', DASH: 'dash', DOGE: 'doge', + PEARL: 'pearl', } as const; export type NetworkName = @@ -55,6 +56,8 @@ export type NetworkName = | 'dogecoinTest' | 'litecoin' | 'litecoinTest' + | 'pearl' + | 'tpearl' | 'zcash' | 'zcashTest'; @@ -327,6 +330,26 @@ export const networks: Record = { coin: coins.LTC, }, + // https://github.com/pearl-research-labs/pearl/blob/main/chaincfg/params.go + pearl: { + messagePrefix: '\x18Pearl Signed Message:\n', + bech32: 'prl', + bip32: getDefaultBip32Mainnet(), + pubKeyHash: 0x00, + scriptHash: 0x05, + wif: 0x80, + coin: coins.PEARL, + }, + tpearl: { + messagePrefix: '\x18Pearl Signed Message:\n', + bech32: 'tprl', + bip32: getDefaultBip32Testnet(), + pubKeyHash: 0x6f, + scriptHash: 0xc4, + wif: 0xef, + coin: coins.PEARL, + }, + // https://github.com/zcash/zcash/blob/master/src/validation.cpp // https://github.com/zcash/zcash/blob/master/src/chainparams.cpp zcash: { @@ -409,6 +432,10 @@ export function getMainnet(network: Network): Network { case networks.dogecoin: case networks.dogecoinTest: return networks.dogecoin; + + case networks.pearl: + case networks.tpearl: + return networks.pearl; } throw new TypeError(`invalid network`); } @@ -529,6 +556,14 @@ export function isDogecoin(network: Network): boolean { return getMainnet(network) === networks.dogecoin; } +/** + * @param {Network} network + * @returns {boolean} true iff network is pearl or tpearl + */ +export function isPearl(network: Network): boolean { + return getMainnet(network) === networks.pearl; +} + /** * @param {Network} network * @returns {boolean} true iff network is litecoin or litecoinTest @@ -554,9 +589,11 @@ export function isValidNetwork(network: unknown): network is Network { } export function supportsSegwit(network: Network): boolean { - return ([networks.bitcoin, networks.litecoin, networks.bitcoingold] as Network[]).includes(getMainnet(network)); + return ([networks.bitcoin, networks.litecoin, networks.bitcoingold, networks.pearl] as Network[]).includes( + getMainnet(network) + ); } export function supportsTaproot(network: Network): boolean { - return getMainnet(network) === networks.bitcoin; + return ([networks.bitcoin, networks.pearl] as Network[]).includes(getMainnet(network)); } diff --git a/modules/utxo-lib/test/address/fixtures/pearl.json b/modules/utxo-lib/test/address/fixtures/pearl.json new file mode 100644 index 0000000000..d1930b0d01 --- /dev/null +++ b/modules/utxo-lib/test/address/fixtures/pearl.json @@ -0,0 +1,82 @@ +[ + [ + "p2pkh", + "76a9141e231c7f9b3415daaa53ee5a7e12e120f00ec21288ac", + "13kMLLGzuKZ114tLzujpDShco7wyGLAfbN" + ], + [ + "p2wkh", + "00141e231c7f9b3415daaa53ee5a7e12e120f00ec212", + "prl1qrc33clumxs2a42jnaed8uyhpyrcqassjygjne3" + ], + [ + "p2tr", + "5120c4beea12923f95c32976d3d1ca7d5490aa3ea28f96d5feacc8ecc28819925eb5", + "prl1pcjlw5y5j872ux2tk60gu5l25jz4rag50jm2latxganpgsxvjt66smdzn6t" + ], + [ + "p2trMusig2", + "51205f98a79a3f750b250bee5bbdca0705db0ec8621f1bda91a083536a8a8bd6b6ed", + "prl1pt7v20x3lw59j2zlwtw7u5pc9mv8vscslr0dfrgyr2d4g4z7kkmkswv5rjy" + ], + [ + "p2pkh", + "76a91491b8f56f155030f74259be43dff4d94a6258d84a88ac", + "1EHWYySCDPN536VzrSvYxKDEx8K2v2yabh" + ], + [ + "p2wkh", + "001491b8f56f155030f74259be43dff4d94a6258d84a", + "prl1qjxu02mc42qc0wsjehepalaxeff393kz2xs2n0a" + ], + [ + "p2tr", + "5120bc26f82eb59de4f345c94d7a307b022e4da476339f749d4af7e241ab9ea9d804", + "prl1phsn0st44nhj0x3wff4arq7cz9ex6ga3nna6f6jhhufq6h84fmqzqtnm340" + ], + [ + "p2trMusig2", + "51205709885a355f7fa37976e8aa16607d831df05107a970ae9cd4b25e401741d2df", + "prl1p2uycsk34tal6x7tkaz4pvcrasvwlq5g849c2a8x5kf0yq96p6t0sfrqszt" + ], + [ + "p2pkh", + "76a9140a058aec7588fca80070436b020c352c2891b68088ac", + "1uzQ2jGowagtMQ6cppZCA5Zxik7whPp4H" + ], + [ + "p2wkh", + "00140a058aec7588fca80070436b020c352c2891b680", + "prl1qpgzc4mr43r72sqrsgd4syrp49s5frd5qavay5r" + ], + [ + "p2tr", + "512039c67518d173820cc2b97bf6eb873ede5426ec1e6fd2d5ff14c707d44c1c044e", + "prl1p88r82xx3wwpqes4e00mwhpe7me2zdmq7dlfdtlc5curagnquq38qp6p5xl" + ], + [ + "p2trMusig2", + "51208a823980a8c1b9cd182fa7f6771e726f3d2ff16c550ccdb95a26e25bc40f5e84", + "prl1p32prnq9gcxuu6xp05lm8w8njdu7jlutv25xvmw26ym39h3q0t6zqx76efs" + ], + [ + "p2pkh", + "76a9145a8451539186feb4578b4f5613df6991e307823088ac", + "19FcKrniJeAg17ws3P3f11F486XH8rwL6s" + ], + [ + "p2wkh", + "00145a8451539186feb4578b4f5613df6991e3078230", + "prl1qt2z9z5u3smltg4utfatp8hmfj83s0q3s8cq8f8" + ], + [ + "p2tr", + "5120a851285f56e16e91512f54b76e72c1cb2da34ae4de457702d095d3135c77fbfb", + "prl1p4pgjsh6ku9hfz5f02jmkuukpevk6xjhymezhwqksjhf3xhrhl0as6xllwm" + ], + [ + "p2trMusig2", + "512085078b6ce45af8c4dea63248a5fae283d8edcca75f186395b237706c4bb42a36", + "prl1ps5rckm8yttuvfh4xxfy2t7hzs0vwmn98tuvx89djxacxcja59gmqlvn75g" + ] +] \ No newline at end of file diff --git a/modules/utxo-lib/test/address/fixtures/tpearl.json b/modules/utxo-lib/test/address/fixtures/tpearl.json new file mode 100644 index 0000000000..86ca36606b --- /dev/null +++ b/modules/utxo-lib/test/address/fixtures/tpearl.json @@ -0,0 +1,82 @@ +[ + [ + "p2pkh", + "76a9141e231c7f9b3415daaa53ee5a7e12e120f00ec21288ac", + "miGJdPMyiLzFnBMxiUiC3Muwf7YgBFfJfp" + ], + [ + "p2wkh", + "00141e231c7f9b3415daaa53ee5a7e12e120f00ec212", + "tprl1qrc33clumxs2a42jnaed8uyhpyrcqassjn6362m" + ], + [ + "p2tr", + "5120c4beea12923f95c32976d3d1ca7d5490aa3ea28f96d5feacc8ecc28819925eb5", + "tprl1pcjlw5y5j872ux2tk60gu5l25jz4rag50jm2latxganpgsxvjt66sszxd97" + ], + [ + "p2trMusig2", + "51205f98a79a3f750b250bee5bbdca0705db0ec8621f1bda91a083536a8a8bd6b6ed", + "tprl1pt7v20x3lw59j2zlwtw7u5pc9mv8vscslr0dfrgyr2d4g4z7kkmks9rsad3" + ], + [ + "p2pkh", + "76a91491b8f56f155030f74259be43dff4d94a6258d84a88ac", + "mtoTr2XB2QoKpCyca1tvnERZp7ujv9jJrC" + ], + [ + "p2wkh", + "001491b8f56f155030f74259be43dff4d94a6258d84a", + "tprl1qjxu02mc42qc0wsjehepalaxeff393kz23zf6uh" + ], + [ + "p2tr", + "5120bc26f82eb59de4f345c94d7a307b022e4da476339f749d4af7e241ab9ea9d804", + "tprl1phsn0st44nhj0x3wff4arq7cz9ex6ga3nna6f6jhhufq6h84fmqzqqul026" + ], + [ + "p2trMusig2", + "51205709885a355f7fa37976e8aa16607d831df05107a970ae9cd4b25e401741d2df", + "tprl1p2uycsk34tal6x7tkaz4pvcrasvwlq5g849c2a8x5kf0yq96p6t0szvywa7" + ], + [ + "p2pkh", + "76a9140a058aec7588fca80070436b020c352c2891b68088ac", + "mgRwh5pFcy1wfTsiLPnw25HtpiLpvCtj6M" + ], + [ + "p2wkh", + "00140a058aec7588fca80070436b020c352c2891b680", + "tprl1qpgzc4mr43r72sqrsgd4syrp49s5frd5q277d8f" + ], + [ + "p2tr", + "512039c67518d173820cc2b97bf6eb873ede5426ec1e6fd2d5ff14c707d44c1c044e", + "tprl1p88r82xx3wwpqes4e00mwhpe7me2zdmq7dlfdtlc5curagnquq38q2492e2" + ], + [ + "p2trMusig2", + "51208a823980a8c1b9cd182fa7f6771e726f3d2ff16c550ccdb95a26e25bc40f5e84", + "tprl1p32prnq9gcxuu6xp05lm8w8njdu7jlutv25xvmw26ym39h3q0t6zqd378k9" + ], + [ + "p2pkh", + "76a9145a8451539186feb4578b4f5613df6991e307823088ac", + "momZcush7fbvnERUkx22pvTNz67z3iDSj8" + ], + [ + "p2wkh", + "00145a8451539186feb4578b4f5613df6991e3078230", + "tprl1qt2z9z5u3smltg4utfatp8hmfj83s0q3ss2rw6d" + ], + [ + "p2tr", + "5120a851285f56e16e91512f54b76e72c1cb2da34ae4de457702d095d3135c77fbfb", + "tprl1p4pgjsh6ku9hfz5f02jmkuukpevk6xjhymezhwqksjhf3xhrhl0as3fmp3w" + ], + [ + "p2trMusig2", + "512085078b6ce45af8c4dea63248a5fae283d8edcca75f186395b237706c4bb42a36", + "tprl1ps5rckm8yttuvfh4xxfy2t7hzs0vwmn98tuvx89djxacxcja59gmq5rhqta" + ] +] \ No newline at end of file diff --git a/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.fullsigned.json b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.fullsigned.json new file mode 100644 index 0000000000..c0f0efb2d6 --- /dev/null +++ b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.fullsigned.json @@ -0,0 +1,369 @@ +{ + "walletKeys": [ + "xprv9s21ZrQH143K45bDYc9c3aEaGiTK9aPtjgtHg6wBdkryBjix1KKXRCszxPcFPejLT9tdLgNe8E8AuQXK2fy8KhNPeLAZsGoX8w9KS2PkacL", + "xprv9s21ZrQH143K2eBLSVNk4zhjDzqzqM29aS9cjr4CcoNrKLYwLHtwgTURSk7RPV3cH9zNZQeR1zGw3MEwSjvARSfWEGpxfaBmduhW3TKsH5g", + "xprv9s21ZrQH143K39N9shF9hAsTwh1FvQuBk8UVsZVwr4XtpqF7stCu2LH358NLuqkkK6pu1Af7TJHr5FZERQoLLtnC7wkoM9sdFo1HuP7dWuv" + ], + "psbtBase64": "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", + "psbtBase64Finalized": "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", + "inputs": [ + { + "hash": "f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb", + "index": 0, + "sequence": 4294967295 + }, + { + "hash": "56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea574668", + "index": 1, + "sequence": 4294967295 + }, + { + "hash": "7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f", + "index": 2, + "sequence": 4294967295 + } + ], + "psbtInputs": [ + { + "type": "p2tr", + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "sighashType": 0, + "tapScriptSig": [ + { + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "leafHash": "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5", + "signature": "ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f40" + }, + { + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "leafHash": "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5", + "signature": "2a2e580bab124a56fc37fadfa5ce8353cbde2527704044640b0b2883ec0b91853fa57fc5a7712978f131ba5534a4f2bd1bf39c14b4031f8fdb938502a960e4b4" + } + ], + "tapLeafScript": [ + { + "controlBlock": "c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67", + "script": "200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "masterFingerprint": "f2ef0389", + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "path": "0/0/31/0", + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "path": "0/0/31/0", + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ] + } + ] + }, + { + "type": "p2trMusig2", + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "sighashType": 0, + "tapScriptSig": [ + { + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "leafHash": "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801", + "signature": "6b0871c9020dfcdf19df352d66a0f6d8e93f40bc65204ca81eaa6352c85e66b63763f453a99712a42e18713711293d7c1cf6e51ebc1ffa043a8528f2052b694c" + }, + { + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "leafHash": "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801", + "signature": "1146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf" + } + ], + "tapLeafScript": [ + { + "controlBlock": "c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9", + "script": "20ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "path": "0/0/41/1", + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "path": "0/0/41/1", + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ] + } + ] + }, + { + "type": "taprootKeyPathSpend", + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "sighashType": 0, + "tapBip32Derivation": [ + { + "masterFingerprint": "f65cd869", + "pubkey": "15bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "path": "0/0/41/2", + "leafHashes": [] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "66450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "path": "0/0/41/2", + "leafHashes": [] + } + ], + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "tapMerkleRoot": "374fb6b7b07c3c445983e4322f9766f341bbbe217d5c5042eb2ec3dba7fa426c", + "unknownKeyVals": [ + { + "key": "fc05424954474f0176e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f309b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "value": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + }, + { + "key": "fc05424954474f020315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d9376e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + }, + { + "key": "fc05424954474f020366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + }, + { + "key": "fc05424954474f030315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d9376e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "b6e588729e7c7f0cc1c6cbb0160dcff2150cba1e2ed1c686d78e6858c417ea72" + }, + { + "key": "fc05424954474f030366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + } + ], + "musig2Participants": { + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "participantPubKeys": [ + "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + ] + }, + "musig2Nonces": [ + { + "participantPubKey": "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + }, + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + } + ], + "musig2PartialSigs": [ + { + "participantPubKey": "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "partialSig": "b6e588729e7c7f0cc1c6cbb0160dcff2150cba1e2ed1c686d78e6858c417ea72" + }, + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "partialSig": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + } + ] + } + ], + "psbtInputsFinalized": [ + { + "type": "p2tr", + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "finalScriptWitness": "04402a2e580bab124a56fc37fadfa5ce8353cbde2527704044640b0b2883ec0b91853fa57fc5a7712978f131ba5534a4f2bd1bf39c14b4031f8fdb938502a960e4b440ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f4044200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac41c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67" + }, + { + "type": "p2trMusig2", + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "finalScriptWitness": "04406b0871c9020dfcdf19df352d66a0f6d8e93f40bc65204ca81eaa6352c85e66b63763f453a99712a42e18713711293d7c1cf6e51ebc1ffa043a8528f2052b694c401146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf4420ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac41c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9" + }, + { + "type": "taprootKeyPathSpend", + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "unknownKeyVals": [], + "finalScriptWitness": "0140abb979ce9373c2b0958ea7b3714cb8a793dff060f0a115a63d908500c6046c6110ce0edde914b000b189cadf0ca7bb495317ff73f24c11f7cdd4763bb7c21c45" + } + ], + "outputs": [ + { + "script": "512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d", + "value": "900", + "address": "prl1pjqvj7jeh50rjg687pqsheajzwaytuh3tjy7tyg4s2ls2j0cz52wsyeehjh" + }, + { + "script": "51208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c", + "value": "900", + "address": "prl1p3leg2fq6dk4dretvmp728emtzpwjeyckxx2ppxxqwv36s0arn6wqvr3n9e" + }, + { + "script": "a914fa7bae6aea517bcb23b5983c469621ccee7a19f387", + "value": "900", + "address": "3QXT22hLrjdp2z5YPJugcA361ZCJPc6CJo" + }, + { + "script": "a914e4560686930902a8c1891dc6878e95f590ec353687", + "value": "900", + "address": "3NWM3SJH1KUnYyS98cHM7NW9Lw8MYh4XE4" + }, + { + "script": "6a0f736574656320617374726f6e6f6d79", + "value": "0" + } + ], + "psbtOutputs": [ + { + "tapInternalKey": "3fdf506d0802c4536c3b61922fd4e4e1e8d4a47bc39a8cd71d81d540d499c5f5", + "tapTree": { + "leaves": [ + { + "depth": 1, + "leafVersion": 192, + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac" + }, + { + "depth": 2, + "leafVersion": 192, + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ac" + }, + { + "depth": 2, + "leafVersion": 192, + "script": "202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac" + } + ] + }, + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "2d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12", + "path": "0/0/30/0", + "leafHashes": [ + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11", + "path": "0/0/30/0", + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73", + "path": "0/0/30/0", + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b" + ] + } + ] + }, + { + "tapInternalKey": "0d0520c99ea4412197d299d9fba92528c5c21559ef81a71ea4d96056c940509f", + "tapTree": { + "leaves": [ + { + "depth": 1, + "leafVersion": 192, + "script": "20494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0ad20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ac" + }, + { + "depth": 1, + "leafVersion": 192, + "script": "20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ad20b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2ac" + } + ] + }, + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89", + "path": "0/0/40/1", + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f", + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0", + "path": "0/0/40/1", + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2", + "path": "0/0/40/1", + "leafHashes": [ + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ] + } + ] + }, + { + "redeemScript": "522102c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c5921039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c13521031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb453ae", + "bip32Derivation": [ + { + "masterFingerprint": "547f4576", + "pubkey": "02c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c59", + "path": "0/0/0/2" + }, + { + "masterFingerprint": "405c65bd", + "pubkey": "031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb4", + "path": "0/0/0/2" + }, + { + "masterFingerprint": "d4ad8372", + "pubkey": "039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c135", + "path": "0/0/0/2" + } + ] + }, + {}, + {} + ], + "extractedTransaction": "01000000000103f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb0000000000ffffffff56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea5746680100000000ffffffff7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f0200000000ffffffff05840300000000000022512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d84030000000000002251208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c840300000000000017a914fa7bae6aea517bcb23b5983c469621ccee7a19f387840300000000000017a914e4560686930902a8c1891dc6878e95f590ec3536870000000000000000116a0f736574656320617374726f6e6f6d7904402a2e580bab124a56fc37fadfa5ce8353cbde2527704044640b0b2883ec0b91853fa57fc5a7712978f131ba5534a4f2bd1bf39c14b4031f8fdb938502a960e4b440ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f4044200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac41c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a6704406b0871c9020dfcdf19df352d66a0f6d8e93f40bc65204ca81eaa6352c85e66b63763f453a99712a42e18713711293d7c1cf6e51ebc1ffa043a8528f2052b694c401146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf4420ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac41c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c90140abb979ce9373c2b0958ea7b3714cb8a793dff060f0a115a63d908500c6046c6110ce0edde914b000b189cadf0ca7bb495317ff73f24c11f7cdd4763bb7c21c4500000000" +} diff --git a/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.halfsigned.json b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.halfsigned.json new file mode 100644 index 0000000000..1c3e7b30df --- /dev/null +++ b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.halfsigned.json @@ -0,0 +1,324 @@ +{ + "walletKeys": [ + "xprv9s21ZrQH143K45bDYc9c3aEaGiTK9aPtjgtHg6wBdkryBjix1KKXRCszxPcFPejLT9tdLgNe8E8AuQXK2fy8KhNPeLAZsGoX8w9KS2PkacL", + "xprv9s21ZrQH143K2eBLSVNk4zhjDzqzqM29aS9cjr4CcoNrKLYwLHtwgTURSk7RPV3cH9zNZQeR1zGw3MEwSjvARSfWEGpxfaBmduhW3TKsH5g", + "xprv9s21ZrQH143K39N9shF9hAsTwh1FvQuBk8UVsZVwr4XtpqF7stCu2LH358NLuqkkK6pu1Af7TJHr5FZERQoLLtnC7wkoM9sdFo1HuP7dWuv" + ], + "psbtBase64": "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", + "psbtBase64Finalized": null, + "inputs": [ + { + "hash": "f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb", + "index": 0, + "sequence": 4294967295 + }, + { + "hash": "56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea574668", + "index": 1, + "sequence": 4294967295 + }, + { + "hash": "7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f", + "index": 2, + "sequence": 4294967295 + } + ], + "psbtInputs": [ + { + "type": "p2tr", + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "sighashType": 0, + "tapScriptSig": [ + { + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "leafHash": "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5", + "signature": "ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f40" + } + ], + "tapLeafScript": [ + { + "controlBlock": "c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67", + "script": "200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "masterFingerprint": "f2ef0389", + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "path": "0/0/31/0", + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "path": "0/0/31/0", + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ] + } + ] + }, + { + "type": "p2trMusig2", + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "sighashType": 0, + "tapScriptSig": [ + { + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "leafHash": "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801", + "signature": "1146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf" + } + ], + "tapLeafScript": [ + { + "controlBlock": "c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9", + "script": "20ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "path": "0/0/41/1", + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "path": "0/0/41/1", + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ] + } + ] + }, + { + "type": "taprootKeyPathSpend", + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "sighashType": 0, + "tapBip32Derivation": [ + { + "masterFingerprint": "f65cd869", + "pubkey": "15bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "path": "0/0/41/2", + "leafHashes": [] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "66450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "path": "0/0/41/2", + "leafHashes": [] + } + ], + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "tapMerkleRoot": "374fb6b7b07c3c445983e4322f9766f341bbbe217d5c5042eb2ec3dba7fa426c", + "unknownKeyVals": [ + { + "key": "fc05424954474f0176e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f309b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "value": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + }, + { + "key": "fc05424954474f020315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d9376e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + }, + { + "key": "fc05424954474f020366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + }, + { + "key": "fc05424954474f030366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + } + ], + "musig2Participants": { + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "participantPubKeys": [ + "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + ] + }, + "musig2Nonces": [ + { + "participantPubKey": "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + }, + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + } + ], + "musig2PartialSigs": [ + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "partialSig": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + } + ] + } + ], + "psbtInputsFinalized": null, + "outputs": [ + { + "script": "512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d", + "value": "900", + "address": "prl1pjqvj7jeh50rjg687pqsheajzwaytuh3tjy7tyg4s2ls2j0cz52wsyeehjh" + }, + { + "script": "51208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c", + "value": "900", + "address": "prl1p3leg2fq6dk4dretvmp728emtzpwjeyckxx2ppxxqwv36s0arn6wqvr3n9e" + }, + { + "script": "a914fa7bae6aea517bcb23b5983c469621ccee7a19f387", + "value": "900", + "address": "3QXT22hLrjdp2z5YPJugcA361ZCJPc6CJo" + }, + { + "script": "a914e4560686930902a8c1891dc6878e95f590ec353687", + "value": "900", + "address": "3NWM3SJH1KUnYyS98cHM7NW9Lw8MYh4XE4" + }, + { + "script": "6a0f736574656320617374726f6e6f6d79", + "value": "0" + } + ], + "psbtOutputs": [ + { + "tapInternalKey": "3fdf506d0802c4536c3b61922fd4e4e1e8d4a47bc39a8cd71d81d540d499c5f5", + "tapTree": { + "leaves": [ + { + "depth": 1, + "leafVersion": 192, + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac" + }, + { + "depth": 2, + "leafVersion": 192, + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ac" + }, + { + "depth": 2, + "leafVersion": 192, + "script": "202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac" + } + ] + }, + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "2d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12", + "path": "0/0/30/0", + "leafHashes": [ + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11", + "path": "0/0/30/0", + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73", + "path": "0/0/30/0", + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b" + ] + } + ] + }, + { + "tapInternalKey": "0d0520c99ea4412197d299d9fba92528c5c21559ef81a71ea4d96056c940509f", + "tapTree": { + "leaves": [ + { + "depth": 1, + "leafVersion": 192, + "script": "20494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0ad20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ac" + }, + { + "depth": 1, + "leafVersion": 192, + "script": "20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ad20b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2ac" + } + ] + }, + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89", + "path": "0/0/40/1", + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f", + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0", + "path": "0/0/40/1", + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2", + "path": "0/0/40/1", + "leafHashes": [ + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ] + } + ] + }, + { + "redeemScript": "522102c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c5921039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c13521031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb453ae", + "bip32Derivation": [ + { + "masterFingerprint": "547f4576", + "pubkey": "02c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c59", + "path": "0/0/0/2" + }, + { + "masterFingerprint": "405c65bd", + "pubkey": "031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb4", + "path": "0/0/0/2" + }, + { + "masterFingerprint": "d4ad8372", + "pubkey": "039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c135", + "path": "0/0/0/2" + } + ] + }, + {}, + {} + ], + "extractedTransaction": null +} diff --git a/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.unsigned.json b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.unsigned.json new file mode 100644 index 0000000000..0b5b3aee25 --- /dev/null +++ b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt-lite.pearl.unsigned.json @@ -0,0 +1,279 @@ +{ + "walletKeys": [ + "xprv9s21ZrQH143K45bDYc9c3aEaGiTK9aPtjgtHg6wBdkryBjix1KKXRCszxPcFPejLT9tdLgNe8E8AuQXK2fy8KhNPeLAZsGoX8w9KS2PkacL", + "xprv9s21ZrQH143K2eBLSVNk4zhjDzqzqM29aS9cjr4CcoNrKLYwLHtwgTURSk7RPV3cH9zNZQeR1zGw3MEwSjvARSfWEGpxfaBmduhW3TKsH5g", + "xprv9s21ZrQH143K39N9shF9hAsTwh1FvQuBk8UVsZVwr4XtpqF7stCu2LH358NLuqkkK6pu1Af7TJHr5FZERQoLLtnC7wkoM9sdFo1HuP7dWuv" + ], + "psbtBase64": "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", + "psbtBase64Finalized": null, + "inputs": [ + { + "hash": "f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb", + "index": 0, + "sequence": 4294967295 + }, + { + "hash": "56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea574668", + "index": 1, + "sequence": 4294967295 + }, + { + "hash": "7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f", + "index": 2, + "sequence": 4294967295 + } + ], + "psbtInputs": [ + { + "type": "p2tr", + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67", + "script": "200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "masterFingerprint": "f2ef0389", + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "path": "0/0/31/0", + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "path": "0/0/31/0", + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ] + } + ] + }, + { + "type": "p2trMusig2", + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9", + "script": "20ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "path": "0/0/41/1", + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "path": "0/0/41/1", + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ] + } + ] + }, + { + "type": "taprootKeyPathSpend", + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "sighashType": 0, + "tapBip32Derivation": [ + { + "masterFingerprint": "f65cd869", + "pubkey": "15bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "path": "0/0/41/2", + "leafHashes": [] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "66450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "path": "0/0/41/2", + "leafHashes": [] + } + ], + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "tapMerkleRoot": "374fb6b7b07c3c445983e4322f9766f341bbbe217d5c5042eb2ec3dba7fa426c", + "unknownKeyVals": [ + { + "key": "fc05424954474f0176e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f309b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "value": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + } + ], + "musig2Participants": { + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "participantPubKeys": [ + "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + ] + } + } + ], + "psbtInputsFinalized": null, + "outputs": [ + { + "script": "512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d", + "value": "900", + "address": "prl1pjqvj7jeh50rjg687pqsheajzwaytuh3tjy7tyg4s2ls2j0cz52wsyeehjh" + }, + { + "script": "51208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c", + "value": "900", + "address": "prl1p3leg2fq6dk4dretvmp728emtzpwjeyckxx2ppxxqwv36s0arn6wqvr3n9e" + }, + { + "script": "a914fa7bae6aea517bcb23b5983c469621ccee7a19f387", + "value": "900", + "address": "3QXT22hLrjdp2z5YPJugcA361ZCJPc6CJo" + }, + { + "script": "a914e4560686930902a8c1891dc6878e95f590ec353687", + "value": "900", + "address": "3NWM3SJH1KUnYyS98cHM7NW9Lw8MYh4XE4" + }, + { + "script": "6a0f736574656320617374726f6e6f6d79", + "value": "0" + } + ], + "psbtOutputs": [ + { + "tapInternalKey": "3fdf506d0802c4536c3b61922fd4e4e1e8d4a47bc39a8cd71d81d540d499c5f5", + "tapTree": { + "leaves": [ + { + "depth": 1, + "leafVersion": 192, + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac" + }, + { + "depth": 2, + "leafVersion": 192, + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ac" + }, + { + "depth": 2, + "leafVersion": 192, + "script": "202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac" + } + ] + }, + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "2d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12", + "path": "0/0/30/0", + "leafHashes": [ + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11", + "path": "0/0/30/0", + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73", + "path": "0/0/30/0", + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b" + ] + } + ] + }, + { + "tapInternalKey": "0d0520c99ea4412197d299d9fba92528c5c21559ef81a71ea4d96056c940509f", + "tapTree": { + "leaves": [ + { + "depth": 1, + "leafVersion": 192, + "script": "20494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0ad20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ac" + }, + { + "depth": 1, + "leafVersion": 192, + "script": "20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ad20b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2ac" + } + ] + }, + "tapBip32Derivation": [ + { + "masterFingerprint": "cc18ae08", + "pubkey": "175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89", + "path": "0/0/40/1", + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f", + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ] + }, + { + "masterFingerprint": "f2ef0389", + "pubkey": "494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0", + "path": "0/0/40/1", + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f" + ] + }, + { + "masterFingerprint": "f65cd869", + "pubkey": "b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2", + "path": "0/0/40/1", + "leafHashes": [ + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ] + } + ] + }, + { + "redeemScript": "522102c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c5921039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c13521031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb453ae", + "bip32Derivation": [ + { + "masterFingerprint": "547f4576", + "pubkey": "02c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c59", + "path": "0/0/0/2" + }, + { + "masterFingerprint": "405c65bd", + "pubkey": "031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb4", + "path": "0/0/0/2" + }, + { + "masterFingerprint": "d4ad8372", + "pubkey": "039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c135", + "path": "0/0/0/2" + } + ] + }, + {}, + {} + ], + "extractedTransaction": null +} diff --git a/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.fullsigned.json b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.fullsigned.json new file mode 100644 index 0000000000..22662e0173 --- /dev/null +++ b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.fullsigned.json @@ -0,0 +1,378 @@ +{ + "walletKeys": [ + "xprv9s21ZrQH143K45bDYc9c3aEaGiTK9aPtjgtHg6wBdkryBjix1KKXRCszxPcFPejLT9tdLgNe8E8AuQXK2fy8KhNPeLAZsGoX8w9KS2PkacL", + "xprv9s21ZrQH143K2eBLSVNk4zhjDzqzqM29aS9cjr4CcoNrKLYwLHtwgTURSk7RPV3cH9zNZQeR1zGw3MEwSjvARSfWEGpxfaBmduhW3TKsH5g", + "xprv9s21ZrQH143K39N9shF9hAsTwh1FvQuBk8UVsZVwr4XtpqF7stCu2LH358NLuqkkK6pu1Af7TJHr5FZERQoLLtnC7wkoM9sdFo1HuP7dWuv" + ], + "psbtBase64": "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", + "psbtBase64Finalized": "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", + "inputs": [ + { + "hash": "f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb", + "index": 0, + "sequence": 4294967295 + }, + { + "hash": "56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea574668", + "index": 1, + "sequence": 4294967295 + }, + { + "hash": "7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f", + "index": 2, + "sequence": 4294967295 + } + ], + "psbtInputs": [ + { + "type": "p2tr", + "unknownKeyVals": [], + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67", + "script": "200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ], + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "path": "0/0/31/0", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ], + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "path": "0/0/31/0", + "masterFingerprint": "f65cd869" + } + ], + "tapScriptSig": [ + { + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "signature": "ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f40", + "leafHash": "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + }, + { + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "signature": "2a2e580bab124a56fc37fadfa5ce8353cbde2527704044640b0b2883ec0b91853fa57fc5a7712978f131ba5534a4f2bd1bf39c14b4031f8fdb938502a960e4b4", + "leafHash": "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + } + ] + }, + { + "type": "p2trMusig2", + "unknownKeyVals": [], + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9", + "script": "20ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ], + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "path": "0/0/41/1", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ], + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "path": "0/0/41/1", + "masterFingerprint": "cc18ae08" + } + ], + "tapScriptSig": [ + { + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "signature": "1146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf", + "leafHash": "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + }, + { + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "signature": "6b0871c9020dfcdf19df352d66a0f6d8e93f40bc65204ca81eaa6352c85e66b63763f453a99712a42e18713711293d7c1cf6e51ebc1ffa043a8528f2052b694c", + "leafHash": "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + } + ] + }, + { + "type": "taprootKeyPathSpend", + "unknownKeyVals": [ + { + "key": "fc05424954474f0176e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f309b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "value": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + }, + { + "key": "fc05424954474f020366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + }, + { + "key": "fc05424954474f020315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d9376e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + }, + { + "key": "fc05424954474f030366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + }, + { + "key": "fc05424954474f030315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d9376e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "b6e588729e7c7f0cc1c6cbb0160dcff2150cba1e2ed1c686d78e6858c417ea72" + } + ], + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "sighashType": 0, + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "tapMerkleRoot": "374fb6b7b07c3c445983e4322f9766f341bbbe217d5c5042eb2ec3dba7fa426c", + "tapBip32Derivation": [ + { + "leafHashes": [], + "pubkey": "66450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "path": "0/0/41/2", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [], + "pubkey": "15bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "path": "0/0/41/2", + "masterFingerprint": "f65cd869" + } + ], + "musig2Participants": { + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "participantPubKeys": [ + "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + ] + }, + "musig2Nonces": [ + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + }, + { + "participantPubKey": "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + } + ], + "musig2PartialSigs": [ + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "partialSig": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + }, + { + "participantPubKey": "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "partialSig": "b6e588729e7c7f0cc1c6cbb0160dcff2150cba1e2ed1c686d78e6858c417ea72" + } + ] + } + ], + "psbtInputsFinalized": [ + { + "type": "p2tr", + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "finalScriptWitness": "04402a2e580bab124a56fc37fadfa5ce8353cbde2527704044640b0b2883ec0b91853fa57fc5a7712978f131ba5534a4f2bd1bf39c14b4031f8fdb938502a960e4b440ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f4044200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac41c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67" + }, + { + "type": "p2trMusig2", + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "finalScriptWitness": "04406b0871c9020dfcdf19df352d66a0f6d8e93f40bc65204ca81eaa6352c85e66b63763f453a99712a42e18713711293d7c1cf6e51ebc1ffa043a8528f2052b694c401146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf4420ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac41c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9" + }, + { + "type": "taprootKeyPathSpend", + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "unknownKeyVals": [], + "finalScriptWitness": "0140abb979ce9373c2b0958ea7b3714cb8a793dff060f0a115a63d908500c6046c6110ce0edde914b000b189cadf0ca7bb495317ff73f24c11f7cdd4763bb7c21c45" + } + ], + "outputs": [ + { + "script": "512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d", + "value": "900", + "address": "prl1pjqvj7jeh50rjg687pqsheajzwaytuh3tjy7tyg4s2ls2j0cz52wsyeehjh" + }, + { + "script": "51208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c", + "value": "900", + "address": "prl1p3leg2fq6dk4dretvmp728emtzpwjeyckxx2ppxxqwv36s0arn6wqvr3n9e" + }, + { + "script": "a914fa7bae6aea517bcb23b5983c469621ccee7a19f387", + "value": "900", + "address": "3QXT22hLrjdp2z5YPJugcA361ZCJPc6CJo" + }, + { + "script": "a914e4560686930902a8c1891dc6878e95f590ec353687", + "value": "900", + "address": "3NWM3SJH1KUnYyS98cHM7NW9Lw8MYh4XE4" + }, + { + "script": "6a0f736574656320617374726f6e6f6d79", + "value": "0" + } + ], + "psbtOutputs": [ + { + "unknownKeyVals": [], + "tapTree": { + "leaves": [ + { + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac", + "leafVersion": 192, + "depth": 1 + }, + { + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ac", + "leafVersion": 192, + "depth": 2 + }, + { + "script": "202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac", + "leafVersion": 192, + "depth": 2 + } + ] + }, + "tapInternalKey": "3fdf506d0802c4536c3b61922fd4e4e1e8d4a47bc39a8cd71d81d540d499c5f5", + "tapBip32Derivation": [ + { + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b" + ], + "pubkey": "feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73", + "path": "0/0/30/0", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ], + "pubkey": "2d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12", + "path": "0/0/30/0", + "masterFingerprint": "cc18ae08" + }, + { + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ], + "pubkey": "c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11", + "path": "0/0/30/0", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "unknownKeyVals": [], + "tapTree": { + "leaves": [ + { + "script": "20494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0ad20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ac", + "leafVersion": 192, + "depth": 1 + }, + { + "script": "20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ad20b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2ac", + "leafVersion": 192, + "depth": 1 + } + ] + }, + "tapInternalKey": "0d0520c99ea4412197d299d9fba92528c5c21559ef81a71ea4d96056c940509f", + "tapBip32Derivation": [ + { + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f" + ], + "pubkey": "494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0", + "path": "0/0/40/1", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f", + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ], + "pubkey": "175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89", + "path": "0/0/40/1", + "masterFingerprint": "cc18ae08" + }, + { + "leafHashes": [ + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ], + "pubkey": "b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2", + "path": "0/0/40/1", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "unknownKeyVals": [], + "bip32Derivation": [ + { + "pubkey": "02c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c59", + "path": "0/0/0/2", + "masterFingerprint": "547f4576" + }, + { + "pubkey": "039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c135", + "path": "0/0/0/2", + "masterFingerprint": "d4ad8372" + }, + { + "pubkey": "031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb4", + "path": "0/0/0/2", + "masterFingerprint": "405c65bd" + } + ], + "redeemScript": "522102c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c5921039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c13521031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb453ae" + }, + { + "unknownKeyVals": [] + }, + { + "unknownKeyVals": [] + } + ], + "extractedTransaction": "01000000000103f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb0000000000ffffffff56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea5746680100000000ffffffff7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f0200000000ffffffff05840300000000000022512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d84030000000000002251208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c840300000000000017a914fa7bae6aea517bcb23b5983c469621ccee7a19f387840300000000000017a914e4560686930902a8c1891dc6878e95f590ec3536870000000000000000116a0f736574656320617374726f6e6f6d7904402a2e580bab124a56fc37fadfa5ce8353cbde2527704044640b0b2883ec0b91853fa57fc5a7712978f131ba5534a4f2bd1bf39c14b4031f8fdb938502a960e4b440ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f4044200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac41c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a6704406b0871c9020dfcdf19df352d66a0f6d8e93f40bc65204ca81eaa6352c85e66b63763f453a99712a42e18713711293d7c1cf6e51ebc1ffa043a8528f2052b694c401146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf4420ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac41c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c90140abb979ce9373c2b0958ea7b3714cb8a793dff060f0a115a63d908500c6046c6110ce0edde914b000b189cadf0ca7bb495317ff73f24c11f7cdd4763bb7c21c4500000000" +} diff --git a/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.halfsigned.json b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.halfsigned.json new file mode 100644 index 0000000000..84674fe6e6 --- /dev/null +++ b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.halfsigned.json @@ -0,0 +1,333 @@ +{ + "walletKeys": [ + "xprv9s21ZrQH143K45bDYc9c3aEaGiTK9aPtjgtHg6wBdkryBjix1KKXRCszxPcFPejLT9tdLgNe8E8AuQXK2fy8KhNPeLAZsGoX8w9KS2PkacL", + "xprv9s21ZrQH143K2eBLSVNk4zhjDzqzqM29aS9cjr4CcoNrKLYwLHtwgTURSk7RPV3cH9zNZQeR1zGw3MEwSjvARSfWEGpxfaBmduhW3TKsH5g", + "xprv9s21ZrQH143K39N9shF9hAsTwh1FvQuBk8UVsZVwr4XtpqF7stCu2LH358NLuqkkK6pu1Af7TJHr5FZERQoLLtnC7wkoM9sdFo1HuP7dWuv" + ], + "psbtBase64": "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", + "psbtBase64Finalized": null, + "inputs": [ + { + "hash": "f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb", + "index": 0, + "sequence": 4294967295 + }, + { + "hash": "56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea574668", + "index": 1, + "sequence": 4294967295 + }, + { + "hash": "7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f", + "index": 2, + "sequence": 4294967295 + } + ], + "psbtInputs": [ + { + "type": "p2tr", + "unknownKeyVals": [], + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67", + "script": "200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ], + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "path": "0/0/31/0", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ], + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "path": "0/0/31/0", + "masterFingerprint": "f65cd869" + } + ], + "tapScriptSig": [ + { + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "signature": "ca9acc2d8e24fd08a079261e0a4cdffc6fddcf467c25206837bceed6250d0fa825c5e0e48609f9137932428ddeee6601457bd73b38687c24413da736078b0f40", + "leafHash": "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + } + ] + }, + { + "type": "p2trMusig2", + "unknownKeyVals": [], + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9", + "script": "20ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ], + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "path": "0/0/41/1", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ], + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "path": "0/0/41/1", + "masterFingerprint": "cc18ae08" + } + ], + "tapScriptSig": [ + { + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "signature": "1146c7366aca0ccb3b9e5100c3d6e2686f5d7c49af1228a3962fd1b2d86918dbf54a353abc6ba91b1860fbfaffcb86706eeb925552762903ac89821e72f618bf", + "leafHash": "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + } + ] + }, + { + "type": "taprootKeyPathSpend", + "unknownKeyVals": [ + { + "key": "fc05424954474f0176e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f309b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "value": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + }, + { + "key": "fc05424954474f020366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + }, + { + "key": "fc05424954474f020315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d9376e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + }, + { + "key": "fc05424954474f030366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + } + ], + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "sighashType": 0, + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "tapMerkleRoot": "374fb6b7b07c3c445983e4322f9766f341bbbe217d5c5042eb2ec3dba7fa426c", + "tapBip32Derivation": [ + { + "leafHashes": [], + "pubkey": "66450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "path": "0/0/41/2", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [], + "pubkey": "15bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "path": "0/0/41/2", + "masterFingerprint": "f65cd869" + } + ], + "musig2Participants": { + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "participantPubKeys": [ + "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + ] + }, + "musig2Nonces": [ + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "026098d8e26e0a3f6bb64f1333b7a745f85f827614913b1646f499945fe701cb560203c598c346d06e9d4566e64818c3627b0800d57244755f5f0447c32007378791" + }, + { + "participantPubKey": "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "pubNonce": "02904c968440a707a6b3f15c5c7bed7f5fae1ae152d712418b7119a9df95a62e460272a9a2b6e8f7cd69bcbb6f0f0d982d2776a09606b4845e9b14c507245c618baf" + } + ], + "musig2PartialSigs": [ + { + "participantPubKey": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "partialSig": "349e7b86deed5b508c2ac3981d85e0e6854bca41f23262d0109728517d9b2b20" + } + ] + } + ], + "psbtInputsFinalized": null, + "outputs": [ + { + "script": "512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d", + "value": "900", + "address": "prl1pjqvj7jeh50rjg687pqsheajzwaytuh3tjy7tyg4s2ls2j0cz52wsyeehjh" + }, + { + "script": "51208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c", + "value": "900", + "address": "prl1p3leg2fq6dk4dretvmp728emtzpwjeyckxx2ppxxqwv36s0arn6wqvr3n9e" + }, + { + "script": "a914fa7bae6aea517bcb23b5983c469621ccee7a19f387", + "value": "900", + "address": "3QXT22hLrjdp2z5YPJugcA361ZCJPc6CJo" + }, + { + "script": "a914e4560686930902a8c1891dc6878e95f590ec353687", + "value": "900", + "address": "3NWM3SJH1KUnYyS98cHM7NW9Lw8MYh4XE4" + }, + { + "script": "6a0f736574656320617374726f6e6f6d79", + "value": "0" + } + ], + "psbtOutputs": [ + { + "unknownKeyVals": [], + "tapTree": { + "leaves": [ + { + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac", + "leafVersion": 192, + "depth": 1 + }, + { + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ac", + "leafVersion": 192, + "depth": 2 + }, + { + "script": "202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac", + "leafVersion": 192, + "depth": 2 + } + ] + }, + "tapInternalKey": "3fdf506d0802c4536c3b61922fd4e4e1e8d4a47bc39a8cd71d81d540d499c5f5", + "tapBip32Derivation": [ + { + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b" + ], + "pubkey": "feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73", + "path": "0/0/30/0", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ], + "pubkey": "2d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12", + "path": "0/0/30/0", + "masterFingerprint": "cc18ae08" + }, + { + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ], + "pubkey": "c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11", + "path": "0/0/30/0", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "unknownKeyVals": [], + "tapTree": { + "leaves": [ + { + "script": "20494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0ad20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ac", + "leafVersion": 192, + "depth": 1 + }, + { + "script": "20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ad20b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2ac", + "leafVersion": 192, + "depth": 1 + } + ] + }, + "tapInternalKey": "0d0520c99ea4412197d299d9fba92528c5c21559ef81a71ea4d96056c940509f", + "tapBip32Derivation": [ + { + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f" + ], + "pubkey": "494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0", + "path": "0/0/40/1", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f", + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ], + "pubkey": "175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89", + "path": "0/0/40/1", + "masterFingerprint": "cc18ae08" + }, + { + "leafHashes": [ + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ], + "pubkey": "b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2", + "path": "0/0/40/1", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "unknownKeyVals": [], + "bip32Derivation": [ + { + "pubkey": "02c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c59", + "path": "0/0/0/2", + "masterFingerprint": "547f4576" + }, + { + "pubkey": "039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c135", + "path": "0/0/0/2", + "masterFingerprint": "d4ad8372" + }, + { + "pubkey": "031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb4", + "path": "0/0/0/2", + "masterFingerprint": "405c65bd" + } + ], + "redeemScript": "522102c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c5921039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c13521031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb453ae" + }, + { + "unknownKeyVals": [] + }, + { + "unknownKeyVals": [] + } + ], + "extractedTransaction": null +} diff --git a/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.unsigned.json b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.unsigned.json new file mode 100644 index 0000000000..a8385603b1 --- /dev/null +++ b/modules/utxo-lib/test/bitgo/fixtures/psbt/psbt.pearl.unsigned.json @@ -0,0 +1,288 @@ +{ + "walletKeys": [ + "xprv9s21ZrQH143K45bDYc9c3aEaGiTK9aPtjgtHg6wBdkryBjix1KKXRCszxPcFPejLT9tdLgNe8E8AuQXK2fy8KhNPeLAZsGoX8w9KS2PkacL", + "xprv9s21ZrQH143K2eBLSVNk4zhjDzqzqM29aS9cjr4CcoNrKLYwLHtwgTURSk7RPV3cH9zNZQeR1zGw3MEwSjvARSfWEGpxfaBmduhW3TKsH5g", + "xprv9s21ZrQH143K39N9shF9hAsTwh1FvQuBk8UVsZVwr4XtpqF7stCu2LH358NLuqkkK6pu1Af7TJHr5FZERQoLLtnC7wkoM9sdFo1HuP7dWuv" + ], + "psbtBase64": "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", + "psbtBase64Finalized": null, + "inputs": [ + { + "hash": "f9e21fe0e3cecf27810bad3422d06e638f9945b594a1ac7bde6c73d5eb2167bb", + "index": 0, + "sequence": 4294967295 + }, + { + "hash": "56783e47c0e4b1af789cd26c36025dace4d8fb9f4ee6dbd274cbd210ea574668", + "index": 1, + "sequence": 4294967295 + }, + { + "hash": "7710d06e5bf2cd1010280bacb2f84cecc678023e149e50c9c7d326cd1c35f79f", + "index": 2, + "sequence": 4294967295 + } + ], + "psbtInputs": [ + { + "type": "p2tr", + "unknownKeyVals": [], + "witnessUtxo": { + "script": "512090c8aadd97d4c12f769ff98e116a456446231073710a707bf101738dafb26e15", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c04430ff3be16baccd9e7753335d1d285ec8f0ec6f067a1f448108a91fca7c3030adacc21a926c1c95887c1a89b5b55e304093482168a25950542f7c7ac3571a67", + "script": "200d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaaad20fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ], + "pubkey": "0d0813a61dac1f2a21633db4e4b8c53b81734aa4a4aa8013259db8eb7ae6fbaa", + "path": "0/0/31/0", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "72f4cb34a5fb3a34ecdd96a8cb11a47481d5b7300b52f538016ce747967173f5" + ], + "pubkey": "fa76b7b1f6a7613b559ccc03219c39d00e02dfc2edee0f685ac7821fee8cc750", + "path": "0/0/31/0", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "type": "p2trMusig2", + "unknownKeyVals": [], + "witnessUtxo": { + "script": "5120bef89926106c06ce97544152917b395e6eb5d62413929345777d0fdfc835426c", + "value": "2000" + }, + "sighashType": 0, + "tapLeafScript": [ + { + "controlBlock": "c1aaeec06de723385c2cc3d8ea62d0a65f50ca94d817e5fab6d8eb2bac348c6b151d9e587c0062345283d94269c1a888e52f3018810f3dc0a9f4fbde26ea93a7c9", + "script": "20ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8ad2022b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621ac", + "leafVersion": 192 + } + ], + "tapBip32Derivation": [ + { + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ], + "pubkey": "ad16847e339fbc7719b2244e589b396d97e05e0f99f58709912dc391c793bcd8", + "path": "0/0/41/1", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "c50cc2d5ed385c462a867cc7eabd5950e8a4bf39ff09fb778b80f00e1981a801" + ], + "pubkey": "22b3b3a301825a2400f2ca95481b60cf44bc0cc6911fad8aacb200afb0bb0621", + "path": "0/0/41/1", + "masterFingerprint": "cc18ae08" + } + ] + }, + { + "type": "taprootKeyPathSpend", + "unknownKeyVals": [ + { + "key": "fc05424954474f0176e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f309b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "value": "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + } + ], + "witnessUtxo": { + "script": "512076e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "value": "2000" + }, + "sighashType": 0, + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "tapMerkleRoot": "374fb6b7b07c3c445983e4322f9766f341bbbe217d5c5042eb2ec3dba7fa426c", + "tapBip32Derivation": [ + { + "leafHashes": [], + "pubkey": "66450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "path": "0/0/41/2", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [], + "pubkey": "15bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93", + "path": "0/0/41/2", + "masterFingerprint": "f65cd869" + } + ], + "musig2Participants": { + "tapOutputKey": "76e415f519958e1044fd1a9fb5b441dcdfb1f4001e0d575ed3bc5058e77f8f30", + "tapInternalKey": "9b01c5303fb01561e2c174fd55c07b7cb343d2845cb8e27ff56b1ef1bc853374", + "participantPubKeys": [ + "0366450bf421f3f0eb679e9ef8726fa8253a6f909309e9e3a35f6e7a9e7b00845e", + "0315bd183502de9d64a7d9c5b1f0f37d06454344ead80650d745b0887a68c79d93" + ] + } + } + ], + "psbtInputsFinalized": null, + "outputs": [ + { + "script": "512090192f4b37a3c72468fe08217cf6427748be5e2b913cb222b057e0a93f02a29d", + "value": "900", + "address": "prl1pjqvj7jeh50rjg687pqsheajzwaytuh3tjy7tyg4s2ls2j0cz52wsyeehjh" + }, + { + "script": "51208ff285241a6daad1e56cd87ca3e76b105d2c931631941098c07323a83fa39e9c", + "value": "900", + "address": "prl1p3leg2fq6dk4dretvmp728emtzpwjeyckxx2ppxxqwv36s0arn6wqvr3n9e" + }, + { + "script": "a914fa7bae6aea517bcb23b5983c469621ccee7a19f387", + "value": "900", + "address": "3QXT22hLrjdp2z5YPJugcA361ZCJPc6CJo" + }, + { + "script": "a914e4560686930902a8c1891dc6878e95f590ec353687", + "value": "900", + "address": "3NWM3SJH1KUnYyS98cHM7NW9Lw8MYh4XE4" + }, + { + "script": "6a0f736574656320617374726f6e6f6d79", + "value": "0" + } + ], + "psbtOutputs": [ + { + "unknownKeyVals": [], + "tapTree": { + "leaves": [ + { + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac", + "leafVersion": 192, + "depth": 1 + }, + { + "script": "20feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73ad202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ac", + "leafVersion": 192, + "depth": 2 + }, + { + "script": "202d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12ad20c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11ac", + "leafVersion": 192, + "depth": 2 + } + ] + }, + "tapInternalKey": "3fdf506d0802c4536c3b61922fd4e4e1e8d4a47bc39a8cd71d81d540d499c5f5", + "tapBip32Derivation": [ + { + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b" + ], + "pubkey": "feebbdfd5ca605ef275996313c9aee57ff8b918e054ae418ef6d2a7ed35c9b73", + "path": "0/0/30/0", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "2ccebf13ac7967fdafec531416b367391bad008702da38dd53078c5dff79c15b", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ], + "pubkey": "2d75dfb538f864d22829e4022e7b4d74f0735c5f5b9336cf0fbdafe19f8dcb12", + "path": "0/0/30/0", + "masterFingerprint": "cc18ae08" + }, + { + "leafHashes": [ + "fece8f2aea6d93c740727455964a9f504b1c2aae9b779897e92366bb61f44439", + "69e69954bfda11f1b152aa43b235ce378c6194c693cb4b35a0ff067bf334c362" + ], + "pubkey": "c7f52e8600fe864d92e0670a941c28b728d54209ad962a8ad819b728dd5a2d11", + "path": "0/0/30/0", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "unknownKeyVals": [], + "tapTree": { + "leaves": [ + { + "script": "20494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0ad20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ac", + "leafVersion": 192, + "depth": 1 + }, + { + "script": "20175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89ad20b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2ac", + "leafVersion": 192, + "depth": 1 + } + ] + }, + "tapInternalKey": "0d0520c99ea4412197d299d9fba92528c5c21559ef81a71ea4d96056c940509f", + "tapBip32Derivation": [ + { + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f" + ], + "pubkey": "494963aaa6161bffcb53acdbcc83b84bfecb1a2e41f414fda74a1ef10bd990d0", + "path": "0/0/40/1", + "masterFingerprint": "f2ef0389" + }, + { + "leafHashes": [ + "8a696420760c35646c9a27cbbdb8b7b4f469298ad2dbd33e563f297dd0d39f9f", + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ], + "pubkey": "175ff7ba9bc5159d844c806d2b52c507398b0bdc2d37208f8a7633c06eaa1b89", + "path": "0/0/40/1", + "masterFingerprint": "cc18ae08" + }, + { + "leafHashes": [ + "e67c0c8072accb04354c1ed4e7230e4c7e1370e7e99a4255dd93f654e37b5758" + ], + "pubkey": "b8142e38b4f58028756d789b82cc9f72391f82c8d8e0500792cacb8dbdde9bb2", + "path": "0/0/40/1", + "masterFingerprint": "f65cd869" + } + ] + }, + { + "unknownKeyVals": [], + "bip32Derivation": [ + { + "pubkey": "02c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c59", + "path": "0/0/0/2", + "masterFingerprint": "547f4576" + }, + { + "pubkey": "039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c135", + "path": "0/0/0/2", + "masterFingerprint": "d4ad8372" + }, + { + "pubkey": "031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb4", + "path": "0/0/0/2", + "masterFingerprint": "405c65bd" + } + ], + "redeemScript": "522102c891f13b973f97a975972117f55121dc9452659413326a4d4bf4805dd17e4c5921039960b4fdd69aba59bb34512e8d359fb6c474d8e0f83dc0807b4217ac1841c13521031cd60f03b809e4ca68ac7289c81a4035ec153661e46b92f35af86d3af985cdb453ae" + }, + { + "unknownKeyVals": [] + }, + { + "unknownKeyVals": [] + } + ], + "extractedTransaction": null +} diff --git a/modules/utxo-lib/test/bitgo/outputScripts.ts b/modules/utxo-lib/test/bitgo/outputScripts.ts index 545914d230..6e2d31916e 100644 --- a/modules/utxo-lib/test/bitgo/outputScripts.ts +++ b/modules/utxo-lib/test/bitgo/outputScripts.ts @@ -37,6 +37,8 @@ describe('output script support', function () { ['ecashTest', ['p2sh']], ['litecoin', ['p2sh', 'p2shP2wsh', 'p2wsh']], ['litecoinTest', ['p2sh', 'p2shP2wsh', 'p2wsh']], + ['pearl', ['p2tr', 'p2trMusig2']], + ['tpearl', ['p2tr', 'p2trMusig2']], ['zcash', ['p2sh']], ['zcashTest', ['p2sh']], ] diff --git a/modules/utxo-lib/test/bitgo/psbt/Psbt.ts b/modules/utxo-lib/test/bitgo/psbt/Psbt.ts index 5254e0b15f..b7e4ede601 100644 --- a/modules/utxo-lib/test/bitgo/psbt/Psbt.ts +++ b/modules/utxo-lib/test/bitgo/psbt/Psbt.ts @@ -1,6 +1,7 @@ import * as assert from 'assert'; import { Network, getNetworkName, networks, getNetworkList, testutil, isMainnet, Transaction } from '../../../src'; +import { isPearl } from '../../../src/networks'; import { getExternalChainCode, outputScripts, @@ -181,6 +182,12 @@ describe('extractP2msOnlyHalfSignedTx failure', function () { function runExtractP2msOnlyHalfSignedTxTest(network: Network, inputs: Input[], outputs: Output[]) { const coin = getNetworkName(network); + // extractP2msOnlyHalfSignedTx is by definition about p2ms (p2sh/p2shP2wsh/p2wsh) inputs. + // A taproot-only network (pearl) supports none of them, so there is nothing to extract. + if (isPearl(network)) { + return; + } + describe(`extractP2msOnlyHalfSignedTx success for ${coin}`, function () { it(`success for ${coin}`, function () { const signers: { signerName: KeyName; cosignerName: KeyName } = { signerName: 'user', cosignerName: 'backup' }; diff --git a/modules/utxo-lib/test/bitgo/psbt/SignVerifyLegacy.ts b/modules/utxo-lib/test/bitgo/psbt/SignVerifyLegacy.ts index 5a1398d50f..d2aef278cd 100644 --- a/modules/utxo-lib/test/bitgo/psbt/SignVerifyLegacy.ts +++ b/modules/utxo-lib/test/bitgo/psbt/SignVerifyLegacy.ts @@ -4,6 +4,7 @@ import { getStrictSignatureCount, getStrictSignatureCounts } from '../../../src/ import { constructTxnBuilder, TxnInput } from '../../../src/testutil'; import { AcidTest, SignStage } from '../../../src/testutil/psbt'; import { getNetworkName } from '../../../src'; +import { isPearl } from '../../../src/networks'; function signCount(signStage: SignStage) { return signStage === 'unsigned' ? 0 : signStage === 'halfsigned' ? 1 : 2; @@ -47,6 +48,11 @@ function runTx(acidTest: AcidTest) { AcidTest.suite() .filter((acidTest) => acidTest.txFormat === 'psbt') + // Skip taproot-only networks (pearl). The suite's fixed output set assumes several + // legacy-signable inputs, but pearl contributes only one (p2tr script path) - the rest + // are key-path spends the legacy builder filters out, so the outputs cannot be funded. + // BitGo builds pearl transactions exclusively via PSBT, covered by SignVerifyPsbt. + .filter((acidTest) => !isPearl(acidTest.network)) .forEach((acidTest) => { runTx(acidTest); }); diff --git a/modules/utxo-lib/test/fixtures_thirdparty/download.ts b/modules/utxo-lib/test/fixtures_thirdparty/download.ts index 3f5d05768c..760e53aced 100644 --- a/modules/utxo-lib/test/fixtures_thirdparty/download.ts +++ b/modules/utxo-lib/test/fixtures_thirdparty/download.ts @@ -2,6 +2,7 @@ import * as fs from 'fs-extra'; import * as childProcess from 'child_process'; import { Network, getNetworkList, getNetworkName, isMainnet } from '../../src'; +import { isPearl } from '../../src/networks'; import { getArchiveUrl, getFixtureInfo, getArchiveRoot, sigHashTestFile, txValidTestFile } from './fixtures'; function downloadAndUnpackTestFixtures(network: Network) { @@ -21,7 +22,8 @@ function downloadAndUnpackTestFixtures(network: Network) { } async function main() { - for (const network of getNetworkList().filter(isMainnet)) { + // Pearl is a btcd (Go) fork and publishes no src/test/data/*.json vectors to download. + for (const network of getNetworkList().filter((n) => isMainnet(n) && !isPearl(n))) { downloadAndUnpackTestFixtures(network); console.log(`${getNetworkName(network)} done`); } diff --git a/modules/utxo-lib/test/fixtures_thirdparty/parse.ts b/modules/utxo-lib/test/fixtures_thirdparty/parse.ts index ba7b2f5679..2a7a5b0371 100644 --- a/modules/utxo-lib/test/fixtures_thirdparty/parse.ts +++ b/modules/utxo-lib/test/fixtures_thirdparty/parse.ts @@ -1,6 +1,14 @@ import * as assert from 'assert/strict'; import { describe } from 'mocha'; -import { getNetworkList, getNetworkName, isBitcoinGold, isMainnet, isZcash, isDogecoin } from '../../src/networks'; +import { + getNetworkList, + getNetworkName, + isBitcoinGold, + isMainnet, + isPearl, + isZcash, + isDogecoin, +} from '../../src/networks'; import { sigHashTestFile, SigHashTestVector, @@ -16,7 +24,8 @@ import { ZcashNetwork, ZcashTransaction } from '../../src/bitgo/zcash/ZcashTrans describe('Third-Party Fixtures', function () { getNetworkList() - .filter(isMainnet) + // Pearl is a btcd (Go) fork and publishes no src/test/data/*.json vectors to parse against. + .filter((network) => isMainnet(network) && !isPearl(network)) .forEach((network) => { describe(`parse ${getNetworkName(network)}`, function () { function runCheckHashForSignature(v: SigHashTestVector | ZcashSigHashTestVector, i: number) { diff --git a/modules/utxo-lib/test/integration_local_rpc/parse.ts b/modules/utxo-lib/test/integration_local_rpc/parse.ts index 0834408ffa..bbb84c61cd 100644 --- a/modules/utxo-lib/test/integration_local_rpc/parse.ts +++ b/modules/utxo-lib/test/integration_local_rpc/parse.ts @@ -3,6 +3,7 @@ import { describe, it } from 'mocha'; import { BIP32Interface } from '@bitgo/secp256k1'; import { isTestnet, TxOutput, getNetworkList, getNetworkName, networks } from '../../src'; +import { isPearl } from '../../src/networks'; import { getDefaultCosigner } from '../../src/testutil'; import { @@ -298,6 +299,11 @@ describe(`regtest fixtures`, function () { return; } + // Pearl regtest fixtures are not generated yet - the local RPC generator has no Pearl node support. + if (isPearl(network)) { + return; + } + const allVersions = getProtocolVersions(network); it('tests default version', function () { // FIXME(BTC-1633): fix generating fixtures for version 455 NU6 diff --git a/modules/utxo-lib/test/networks.ts b/modules/utxo-lib/test/networks.ts index 3468b17049..a3e3f3e60b 100644 --- a/modules/utxo-lib/test/networks.ts +++ b/modules/utxo-lib/test/networks.ts @@ -12,6 +12,7 @@ import { isDogecoin, isLitecoin, isMainnet, + isPearl, isSameCoin, isTestnet, isValidNetwork, @@ -30,7 +31,8 @@ describe('networks', function () { const bitcoinSharedMessagePrefix = (network) => isBitcoin(network) || isBitcoinCash(network) || isBitcoinSV(network); const bitcoinMainnetSharedPubkeyPrefix = (network) => - isMainnet(network) && (isBitcoin(network) || isBitcoinCash(network) || isECash(network) || isBitcoinSV(network)); + isMainnet(network) && + (isBitcoin(network) || isBitcoinCash(network) || isECash(network) || isBitcoinSV(network) || isPearl(network)); const bitcoinMainnetSharedScriptPrefix = (network) => bitcoinMainnetSharedPubkeyPrefix(network); @@ -41,7 +43,8 @@ describe('networks', function () { isECash(network) || isBitcoinGold(network) || isBitcoinSV(network) || - isLitecoin(network)); + isLitecoin(network) || + isPearl(network)); const bitcoinTestnetSharedScriptPrefix = (network) => isTestnet(network) && @@ -50,7 +53,8 @@ describe('networks', function () { isECash(network) || isBitcoinGold(network) || isBitcoinSV(network) || - isDogecoin(network)); + isDogecoin(network) || + isPearl(network)); const bitcoinMainnetSharedWIFPrefix = (network) => isMainnet(network) && @@ -59,11 +63,13 @@ describe('networks', function () { isECash(network) || isBitcoinGold(network) || isBitcoinSV(network) || - isZcash(network)); + isZcash(network) || + isPearl(network)); const bitcoinTestnetSharedWIFPrefix = (network) => isTestnet(network) && !isDogecoin(network); - const bech32Coins = (network) => isBitcoin(network) || isBitcoinGold(network) || isLitecoin(network); + const bech32Coins = (network) => + isBitcoin(network) || isBitcoinGold(network) || isLitecoin(network) || isPearl(network); const sameGroup = (group, network, otherNetwork) => group(network) && group(otherNetwork); @@ -117,6 +123,8 @@ describe('networks', function () { ['ecashTest', false, false], ['litecoin', true, false], ['litecoinTest', true, false], + ['pearl', true, true], + ['tpearl', true, true], ['zcash', false, false], ['zcashTest', false, false], ] diff --git a/modules/utxo-ord/package.json b/modules/utxo-ord/package.json index 53a733a519..d3bca80b99 100644 --- a/modules/utxo-ord/package.json +++ b/modules/utxo-ord/package.json @@ -45,7 +45,7 @@ "directory": "modules/utxo-ord" }, "dependencies": { - "@bitgo/wasm-utxo": "^4.21.1" + "@bitgo/wasm-utxo": "^4.27.0" }, "devDependencies": { "@bitgo/utxo-lib": "^11.24.1" diff --git a/modules/utxo-staking/package.json b/modules/utxo-staking/package.json index 519ccd0fbb..d888f34c30 100644 --- a/modules/utxo-staking/package.json +++ b/modules/utxo-staking/package.json @@ -63,7 +63,7 @@ "@bitgo/babylonlabs-io-btc-staking-ts": "^3.5.1", "@bitgo/utxo-core": "^1.39.4", "@bitgo/utxo-lib": "^11.24.1", - "@bitgo/wasm-utxo": "^4.21.1", + "@bitgo/wasm-utxo": "^4.27.0", "bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4", "bip322-js": "^2.0.0", "bitcoinjs-lib": "^6.1.7", diff --git a/yarn.lock b/yarn.lock index e78d7ef1f2..51d07ab312 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1063,10 +1063,10 @@ resolved "https://registry.npmjs.org/@bitgo/wasm-ton/-/wasm-ton-1.1.1.tgz" integrity sha512-Y4x2V2ZcYWlmx42v7dlrKDtT2DuUt8smk8E98mh7RhpiifJhLk2v5RmXDwBl0A3v9TzUOU6qMOnSS/iZ8Pq52w== -"@bitgo/wasm-utxo@^4.21.1": - version "4.21.1" - resolved "https://registry.npmjs.org/@bitgo/wasm-utxo/-/wasm-utxo-4.21.1.tgz#8763e2505cab0772af35565f355ad1f48552a916" - integrity sha512-GqBNp6FnzK4y6hPSRUn45LYg2tQIl80kNpJ5ivEdYBAg9BXtmvsNwSyr2GuDt3g3MGTZ9/4M1GlbB0OMMUKjAA== +"@bitgo/wasm-utxo@^4.27.0": + version "4.27.0" + resolved "https://registry.npmjs.org/@bitgo/wasm-utxo/-/wasm-utxo-4.27.0.tgz#35e613b7022787e357dab43b71a662d05155ae4e" + integrity sha512-If9zQ3bLO9Xn61h5zWgto3sR9CR+OGD7KoBYJQ8Vp9jBMNKeIe7ZYCc+6xJARwAx90woVl/ivkjPoaYJtmsiYw== "@brandonblack/musig@^0.0.1-alpha.0": version "0.0.1-alpha.1" @@ -8055,23 +8055,23 @@ bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz#16a9e409616b23fef3ccbedb8d42f13bff80295e" integrity sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w== -body-parser@1.20.3, body-parser@1.20.6, body-parser@^1.19.0, body-parser@^1.20.3: - version "1.20.6" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz#60c789c78e0992d906da0a29d71ae01d15c1ed76" - integrity sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g== +body-parser@1.20.3, body-parser@^1.19.0, body-parser@^1.20.3: + version "1.20.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: - bytes "~3.1.2" + bytes "3.1.2" content-type "~1.0.5" debug "2.6.9" depd "2.0.0" - destroy "~1.2.0" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - on-finished "~2.4.1" - qs "~6.15.1" - raw-body "~2.5.3" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" type-is "~1.6.18" - unpipe "~1.0.0" + unpipe "1.0.0" bonjour-service@^1.2.1: version "1.3.0" @@ -8411,7 +8411,7 @@ bytebuffer@5.0.1: dependencies: long "~3" -bytes@3.1.2, bytes@~3.1.2: +bytes@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== @@ -10097,7 +10097,7 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@1.2.0, destroy@~1.2.0: +destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== @@ -12790,17 +12790,6 @@ http-errors@~1.6.1, http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" - integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== - dependencies: - depd "~2.0.0" - inherits "~2.0.4" - setprototypeof "~1.2.0" - statuses "~2.0.2" - toidentifier "~1.0.1" - http-parser-js@>=0.5.1: version "0.5.10" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz" @@ -12929,6 +12918,13 @@ ic0@^0.3.2: "@dfinity/principal" "^2.1.3" cross-fetch "^3.1.5" +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -12943,13 +12939,6 @@ iconv-lite@^0.7.0, iconv-lite@^0.7.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@~0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" @@ -17477,10 +17466,10 @@ propagate@^2.0.0: resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz" integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== -protobufjs@7.2.5, protobufjs@7.6.5, protobufjs@^6.8.8, protobufjs@^7.5.5, protobufjs@^7.5.8, protobufjs@~6.11.2, protobufjs@~6.11.3: - version "7.6.5" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.5.tgz#7b9250cdaf4a06139a9f0fe468a40d7d4febca71" - integrity sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw== +protobufjs@7.2.5, protobufjs@7.6.4, protobufjs@^6.8.8, protobufjs@^7.5.5, protobufjs@^7.5.8, protobufjs@~6.11.2, protobufjs@~6.11.3: + version "7.6.4" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz#8bb000300026efd63eb7951d26e5dbb38f5658f2" + integrity sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -17654,7 +17643,7 @@ qrcode@^1.5.1: pngjs "^5.0.0" yargs "^15.3.1" -qs@6.13.0, qs@6.14.0, qs@6.15.2, qs@^6.11.0, qs@^6.11.2, qs@^6.12.3, qs@^6.5.1, qs@~6.15.1: +qs@6.13.0, qs@6.14.0, qs@6.15.2, qs@^6.11.0, qs@^6.11.2, qs@^6.12.3, qs@^6.5.1: version "6.15.2" resolved "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9" integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw== @@ -17725,15 +17714,15 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@~2.5.3: - version "2.5.3" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" - integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: - bytes "~3.1.2" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - unpipe "~1.0.0" + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" react-base16-styling@^0.6.0: version "0.6.0" @@ -18685,7 +18674,7 @@ setprototypeof@1.1.1: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -setprototypeof@1.2.0, setprototypeof@~1.2.0: +setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -19275,11 +19264,6 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -statuses@~2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" - integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== - stellar-base@^8.2.2: version "8.2.2" resolved "https://registry.npmjs.org/stellar-base/-/stellar-base-8.2.2.tgz" @@ -20069,7 +20053,7 @@ toidentifier@1.0.0: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -toidentifier@1.0.1, toidentifier@~1.0.1: +toidentifier@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== @@ -20586,9 +20570,9 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@~1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== untildify@^4.0.0: