charms-js
Version:
TypeScript SDK for decoding Bitcoin transactions containing Charms data
24 lines (23 loc) • 880 B
JavaScript
import { Address, OutScript } from '@scure/btc-signer';
/**
* Extracts a Bitcoin address from an output script.
* Supports all standard output types including P2PKH, P2SH, P2WPKH, P2WSH, and P2TR (Taproot).
*
* @param scriptBuf - The scriptPubKey as a Buffer
* @param network - Target network ('mainnet' or 'testnet4')
* @returns The decoded address string, or empty string if decoding fails
*/
export function extractAddress(scriptBuf, network = 'testnet4') {
try {
const scriptBytes = new Uint8Array(scriptBuf);
const decoded = OutScript.decode(scriptBytes);
// @scure/btc-signer uses undefined for mainnet, 'testnet' for testnet
const address = network === 'mainnet'
? Address().encode(decoded)
: Address('testnet').encode(decoded);
return address;
}
catch (error) {
return '';
}
}