---
id: "p2traddr"
kind: "datatype"
status: "draft"
is_pii: false
categories: ["cryptocurrency"]
langs: ["common"]
quality: 93
url: "http://registry.apicrafter.io/datatype/p2traddr"
---

# Bitcoin P2TR address (Taproot, bc1p) (`p2traddr`)

> **Draft.** Draft records have not been reviewed yet and may be incomplete or wrong; do not treat them as authoritative for legal or compliance decisions.

Taproot address of the pay-to-taproot (P2TR) type: witness version 1 with a 32-byte x-only public key (BIP 341), encoded with Bech32m (BIP 350), not Bech32. Mainnet addresses have the prefix bc1p and 62 characters. Lower or upper case, never mixed. Testnet addresses (tb1p) are not matched.

- Parent datatype: `crypto_address`
- Personal data (PII): no
- Categories: Cryptocurrency (cryptocurrency)
- Countries: global
- Languages: Common to most languages (common)
- Classification: identifier

## Detection

Regular expression (Python `re`):

```
^(?:bc1p[02-9ac-hj-np-z]{58}|BC1P[02-9AC-HJ-NP-Z]{58})$
```

Check digit algorithm: `bech32m`

## Examples

- `bc1p0xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7vqzk5jj0` — BIP 350 test vector
- `bc1p0xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7vqzk5jj2` (invalid example) — last character changed, the checksum fails
- `bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3` (invalid example) — witness version 0 address (p2wshaddr)

## Mappings

- presidio: `CRYPTO`

## Supported by tools

- `presidio`

## Translations

- ru: Адрес Bitcoin P2TR (Taproot, bc1p)

## Sources

- doc: <https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki>
- doc: <https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki>
- other: <https://en.bitcoin.it/wiki/Taproot>

## Quality

Score 93/100. Missing: second example.

JSON: <http://registry.apicrafter.io/api/v1/datatypes/p2traddr.json> · Edit: <https://github.com/apicrafter/metacrafter-registry/edit/main/data/datatypes/any/cryptocurrency/p2traddr.yaml>
