Hey! Blockstack uses zone files to link off-chain data with your on-chain blockchain ID. Let's take a look at my zone file:
pubkey TXT "pubkey:data:04cabba0b5b9a871dbaa11c044066e281c5feb57243c7d2a452f06a0d708613a46ced59f9f806e601b3353931d1e4a98d7040127f31016311050bedc0d4f1f62ff"
_file URI 10 1 "file:///home/jude/.blockstack/storage-disk/mutable/judecn.id"
_https._tcp URI 10 1 "https://blockstack.s3.amazonaws.com/judecn.id"
_http._tcp URI 10 1 "http://node.blockstack.org:6264/RPC2#judecn.id"
_dht._udp URI 10 1 "dht+udp://fc4d9c1481a6349fe99f0e3dd7261d67b23dadc5"
You can get anyone's zone file with
blockstack lookup or
blockstack get_name_zonefile (you'll need to enable the advanced methods if you want to use the latter).
The fields are as follows:
$ORIGIN field must contain your blockchain ID
$TTL field, if given, is how long a client can cache your zone file (in seconds)
pubkey line identifies the ECDSA public key that will be used to authenticate your off-chain data. This isn't required as of 0.14.0, but it will be required in the next release (0.14.1) if you want to store new data.
- The various lines afterwards that have
URI in them point to copies of your profile. Other peoples' clients will try to use each of them to find my profile when they run
blockstack lookup judecn.id.
The formatting is consistent with a DNS zone file, but with the following extra requirements:
- Your public key in the
pubkey TXT record must start with
pubkey:hex: and must be hex-encoded.
- You may have only one public key at this time (if you put two or more, then they will all be ignored).
- Other records like
CNAME will be ignored. The client only pays attention to
We're going to include a zone file wizard in 0.14.1 that will help you fill in the various fields without having to be bothered by these details.