Verifiable Credentials are pieces of information that have cryptographic proof by some reliable third party. For example, you could have a credential that proves your degree, signed by your education. These credentials an enable privacy-friendly transactions where a credential owner can prove being part of some group, without needing to actually identify themselves. For example, you could prove that you're over 18 by showing a credential issued by your government, without actually having to show your ID card with your birthdate. Verifiable Credentials are still not that widely used, but various projects exists that have had moderate success in implementing it.
Every time an Agent updates a Resource, an Atomic Commit is made. This Commit is cryptographically signed by an Agent, just like how Verfifiable Credentials are signed. In essence, this means that all atomic data created through commits is fully verifiable.
How could this verification work?
- Find the Commit that has created / edited the value that you want to verify. This can be made easier with a specialized Endpoint that takes a
signerand returns the associated Commit(s).
- Check the signer of the Commit. Is that an Agent that you trust?
- Verify the signature of the Commit using the public key of the Agent.
Sometimes, credentials need to be revoked. How could revocation work?
- Find the Commit (see above)
- Get the signer (see above)
- Find the
/isRevokedEndpoint of that signer, send a Request there to make sure the linked Commit is still valid and not revoked.
If you are a Verifier who wants to check someone's birthdate, you'll probably expect a certain datatype in return, such as a date that is formatted in some specific way. Atomic Schema makes it possible to express which properties are required in a certain Class, and it also makes it possible to describe which datatype is linked to a specific Property. Combined, they allow for fine-grained descriptions of models / classes / schemas.