I’m posting here to start a discussion about v3 of the schema for Blockchain ID user profiles.
Here is the documentation on GitHub:
Here is a sample profile:
https://github.com/blockstack/blockchain-id-js/blob/master/docs/profile.md
The schema comes from http://schema.org/Person and has a few additional attributes, including the “account”, “key”, “policy”, “id”, and “publicKey” fields.
To make this expanded format self-defining, we’d have to publish an updated schema definition to a different location that superclasses the schema.org Person definition. Then we would add a field to the schema that looks something like this:
“@context”: “https://blockstack.org/schemas/Person”
Further context:
The profile is loaded by first grabbing the zone file in the DHT, then interpreting the instructions in the zone file for how to find the user’s token file. The token file is then parsed with blockchain-id-js to combine the individual signed statements and render the profile.
Here is a sample zone file:
https://github.com/blockstack/blockchain-id-js/blob/master/docs/zone-file.md
…and here is a sample token file:
https://github.com/blockstack/blockchain-id-js/blob/master/docs/token-file.md
I have a few big questions in my mind about this schema that I’ve been trying to work out. Here are some proposed changes to the existing schema that I’ve been thinking about:
- Change “accounts” to “identities”, remove the “keys” attribute and add all keys to the list of “identities”. PGP keys and bitcoin addresses are both identities just like usernames on other sites. They all are related in the way that a user needs to prove that they have access to the other accounts with some identity statement.
- Remove the “policy” field and put that in the zone file instead.
Welcoming other suggestions.