BtcAddress.stringify
Encodes a BtcAddressRepr, or a Clarity { version, hashbytes } tuple, as a Bitcoin address string for a given network. Pure computation, no network call. Exported in the BtcAddress namespace.
Usage
import { BtcAddress, PoXAddressVersion } from '@stacks/bitcoin-staking';
import { hexToBytes } from '@stacks/common';
import { Cl } from '@stacks/transactions';
const data = hexToBytes('751e76e8199196d454941c45d1b3a323f1433bd6');
BtcAddress.stringify({ version: PoXAddressVersion.P2WPKH, data }, 'mainnet');
// 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'
BtcAddress.stringify({ version: PoXAddressVersion.P2WPKH, data }, 'testnet');
// 'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx'
// Same address from a Clarity tuple
const tuple = Cl.tuple({ version: Cl.buffer(Uint8Array.of(0x04)), hashbytes: Cl.buffer(data) });
BtcAddress.stringify(tuple, 'mainnet');
// 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'Notes
Versions
0x00to0x03encode as base58 addresses, withP2SHP2WPKHandP2SHP2WSHwritten as P2SH addresses.0x04and0x05encode as bech32,0x06as bech32m.The network picks the prefix:
bcand base58 bytes0x00/0x05for'mainnet',tband0x6f/0xc4for'testnet',bcrtand0x6f/0xc4for'devnet'and'mocknet'.An argument with a
typefield is read as a Clarity tuple. A tuple without bufferversionandhashbytesentries throws anErrorstarting withInvalid argument.An unknown version throws
Unexpected PoX address version: <n>. Hash bytes of the wrong length throwInvalid PoX address hashbytes: version <v> requires <n> bytes, got <m>.A
StacksNetworkobject that matches no known network throwsnetworkNameFrom: unrecognized network object.
Signature
Returns
string
The Bitcoin address.
Parameters
address (required)
Type:
BtcAddressRepr | TupleCV
The address to encode: a BtcAddressRepr, or a Clarity tuple with one-byte buffer version and buffer hashbytes, such as one built with Cl.tuple.
network (required)
Type:
StacksNetworkName | StacksNetwork
The network to encode for: a name such as 'mainnet' or 'testnet', or a StacksNetwork object.
Was this helpful?