- Owner
- verified on-chain
- Primary address
- bc1p… connected
- Avatar
- inscription-linked
- Listing
- not listed
What is BNRP?
BNRP is an open resolution layer for BTC-native names. It gives wallets, marketplaces, and apps a shared way to read name records — ownership, avatars, addresses, inscriptions, and provenance data — directly from Bitcoin-native sources.
It is not a registry. It does not issue names. It is the resolver: a standard for reading what already exists on-chain.
- name owner address
- name primary Bitcoin address
- name avatar / inscription link
- name text records (Twitter, website, description)
- name marketplace listing status
- address primary name (reverse lookup)
- namespace supported resolver / indexer
What BTCNative uses it for
BTCNative uses BNRP to index, verify, and display BTC-native identity records across supported namespaces including .btc, .sats, .x, .ord, and others.
What BNRP does not mean
Resolver examples
These are illustrative examples of how BNRP reads name data. Live data is fetched from on-chain sources at resolution time.
- Owner
- verified on-chain
- Primary address
- bc1p… connected
- Avatar
- none set
- Listing
- listed
- Owner
- unresolved placeholder
- Primary address
- unavailable
- Avatar
- none set
- Listing
- listed
Developer reference
BNRP provides a normalized record model for BTC-native names. The API returns a consistent shape regardless of which underlying indexer resolved the name.
/v1/resolve/{name}
Forward resolve — name → records
/v1/reverse/{address}
Reverse resolve — address → primary name
/v1/batch?names=a,b,c
Batch resolve — up to 20 names
Base URL: https://api.bnrp.name/v1/
{
"name": "example.btc",
"owner": "bc1p...",
"primaryAddress": "bc1p...",
"avatar": "inscriptionId or URL",
"records": {
"twitter": "",
"website": "",
"description": ""
},
"listing": {
"status": "listed",
"price": "",
"marketplace": "BTCNative"
},
"provenance": {
"source": "unisat | btcname | sns",
"verifiedAt": "2026-01-01T00:00:00Z"
}
}
One name. Many addresses.
A single BTC-native name can carry records for any chain. Your .btc name is the canonical identity root. Every record below is optional and set by the owner.
GET https://api.bnrp.name/v1/resolve?name=satoshi.btc
{
"name": "satoshi.btc",
"owner": "bc1p...",
"addresses": {
"BTC": "bc1p...",
"LIGHTNING": "satoshi@getalby.com",
"ETH": "0x...",
"SOL": "So1..."
},
"profile": {
"display": "Satoshi",
"com.twitter": "satoshi",
"url": "https://bitcoin.org"
},
"via": "unisat",
"resolved_at": "2026-04-23T20:00:00Z",
"cached": true
}
Bitcoin is always the root. All other address fields are optional owner-set records.
Subnames & namespaces
Coming nextTop-level names will be able to issue subnames under their namespace. A collector who owns artist.btc could issue shop.artist.btc or vault.artist.btc as independently resolvable names. Each subname carries its own BNRP records and resolves through the same open protocol.
shop.artist.btc
Storefront — issued by artist.btc holder
vault.punk.btc
Cold storage namespace — controlled by punk.btc
dev.satoshi.btc
Developer identity — separate records, same root
pay.brand.btc
Payment address sub-namespace for brands
The parent name holder controls subname issuance. No platform permission required. Records are inscribed on Ordinals and resolved via BNRP API.
Subnames resolve through the same api.bnrp.name/v1/resolve endpoint. No new DNS or off-chain infrastructure needed.
Each subname is an inscription owned by the subname holder. Transfer of the parent does not transfer subnames — each resolves independently.
This is a protocol roadmap item. Subname issuance is not yet live. Follow @btcnativename for updates.
Permanent history. Current state.
Bitcoin inscriptions are permanent. BNRP does not edit old inscriptions. Instead, each update creates a new Bitcoin-native record. The resolver reads the latest valid record, while the full history remains visible.
A newer inscription is not automatically valid. BNRP validates each update against these requirements:
- Authorized by the current owner or delegated manager
- Matches the namespace policy
- Uses a newer nonce or version number
- Is confirmed or safely indexed (not unconfirmed or chain-reorged)
- Has not been revoked or superseded by a later valid record
Not all operations are live on BNRP indexing today. This is the full planned operation set. Current support: record_register, record_update. Subname ops are roadmap.
What BNRP does not mean
Full resolver record schema
This is the extended BNRP record model including resolver state, namespace data, record history, and provenance.
{
"name": "example.btc",
"owner": "bc1...",
"primaryAddress": "bc1...",
"avatar": "inscriptionId or URL",
"records": {
"twitter": "",
"website": "",
"description": ""
},
"listing": {
"status": "listed",
"price": "",
"marketplace": "BTCNative"
},
"provenance": {
"source": "unisat | btcname | sns",
"verifiedAt": ""
},
"resolver": {
"protocol": "BNRP",
"rule": "latest-valid-inscription-wins",
"currentRecord": "",
"recordHistory": []
},
"namespace": {
"enabled": false,
"policy": "parent-controlled",
"subnameCount": 0,
"delegates": []
}
}
{
"name": "shop.artist.btc",
"type": "subname",
"parent": "artist.btc",
"label": "shop",
"status": "active",
"authorization": {
"authorized": true,
"method": "parent-owner",
"verifiedAt": ""
},
"owner": "bc1...",
"records": {
"btc": "bc1...",
"website": "https://example.com",
"avatar": "inscription-id"
},
"policy": { "type": "parent-controlled" },
"currentRecord": {
"rule": "latest-valid-inscription-wins",
"inscriptionId": "",
"nonce": 3,
"op": "subname_update",
"verifiedAt": ""
},
"recordHistory": [
{ "inscriptionId": "", "op": "subname_register", "nonce": 1, "status": "superseded" },
{ "inscriptionId": "", "op": "subname_update", "nonce": 2, "status": "superseded" },
{ "inscriptionId": "", "op": "subname_update", "nonce": 3, "status": "current" }
],
"provenance": { "source": "bnrp", "createdAt": "", "updatedAt": "" },
"resolver": { "health": "ok", "verifiedAt": "" }
}