From b7d102ec1282fd4d73b5f65d4cacef6880be3680 Mon Sep 17 00:00:00 2001 From: tripathyr Date: Tue, 8 Aug 2023 18:32:09 +0530 Subject: [PATCH] Taproot Outputs spend capacity --- scripts/btcOperator.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/btcOperator.js b/scripts/btcOperator.js index 2abb80f..0d54c23 100644 --- a/scripts/btcOperator.js +++ b/scripts/btcOperator.js @@ -92,6 +92,9 @@ }, bech32Address: { value: key => coinjs.bech32Address(btcOperator.pubkey(key)).address + }, + bech32mAddress: { + value: key => segwit_addr.encode("bc",1,key) } }); @@ -107,6 +110,8 @@ return btcOperator.segwitAddress(key) === addr; case "bech32": return btcOperator.bech32Address(key) === addr; + case "bech32m": + return btcOperator.bech32mAddress(key) === addr; // Key is a byte array of 32 bytes default: return null; } @@ -116,7 +121,7 @@ if (!addr) return undefined; let type = coinjs.addressDecode(addr).type; - if (["standard", "multisig", "bech32", "multisigBech32"].includes(type)) + if (["standard", "multisig", "bech32", "multisigBech32","bech32m"].includes(type)) return type; else return false; @@ -281,6 +286,7 @@ BECH32_OUTPUT_SIZE = 23, BECH32_MULTISIG_OUTPUT_SIZE = 34, SEGWIT_OUTPUT_SIZE = 23; + BECH32M_OUTPUT_SIZE = 35; // Check this later function _redeemScript(addr, key) { let decode = coinjs.addressDecode(addr); @@ -291,6 +297,8 @@ return key ? coinjs.segwitAddress(btcOperator.pubkey(key)).redeemscript : null; case "bech32": return decode.redeemscript; + case "bech32m": + return decode.outstring; //Maybe the redeemscript will come when input processing happens for bech32m default: return null; } @@ -328,6 +336,8 @@ return BASE_OUTPUT_SIZE + BECH32_MULTISIG_OUTPUT_SIZE; case "multisig": return BASE_OUTPUT_SIZE + SEGWIT_OUTPUT_SIZE; + case "bech32m": + return BASE_OUTPUT_SIZE + BECH32M_OUTPUT_SIZE; default: return null; }