CRUX IDs are powered by the Blockstack Naming Service. Each CRUX ID has a 1:1 mapping to a Blockstack ID. The SDK defines rules of converting between CRUX IDs and Blockstack IDs.

BNS has two jobs -

1 Reserving a Name for a PublicKey - AKA "Registration of CRUX ID"


BNS represents ownership of each identity with a standard ECDSA keypair, same as what the Bitcoin network uses to represent ownership of Bitcoin.
Bitcoin gives us a way to establish global consensus on an append-only log in a network of trustless nodes. In the Bitcoin network, the network of nodes are incentivized to establish a global view of the append only log.
BNS binds a KeyPair to a Name by storing it in this append only log. The log is secured by the same hash power and cryptography that secures value and ownership of money in the Bitcoin Network.

2 Resolving a Name to a PublicKey - AKA "CRUX ID as Public Key Infrastructure"

Now that the Name->PublicKey mapping is stored securely in the Bitcoin blockchain, we can ‘resolve’ the easy to remember name to a public key, similar to how DNS helps resolve an easy to remember domain name to an IP address.
If we rely solely on the Bitcoin Blockchain for this purpose, each lookup would be very slow since the entire Bitcoin Blockchain would need to be parsed to determine the result.
BlockStack helps to offload these lookups to entities known as BNS Nodes which make up the BNS Network. Each BNS Node keeps continuously monitoring its independent view of the Bitcoin blockchain and indexes any new name registrations or modifications to old ones. Applications can then simply ask a trusted BNS Node for a quick answer.

3 Risk Analysis

Section 2.1, 2.2 and 2.3 of the Risk Analysis document walks through the new risks introduced with CRUX IDs, and how those risks are mitigated.