I’d like to design an attestation for a driver’s license. I’m working on a car rental project and need to verify that the driver is licensed to operate the vehicle in question. Obviously:
- It should work world-wide because this is crypto.
- It should cover n-different types of vehicles: car, truck, boat, airplane.
- The important part is “The person at <0x> address certified to operate ”
- It implies is-a-human… for now.
- Addresses should be able to self-attest.
- Other addresses should be able to add ‘isTrue’ or whatever attestations to “selfies” when for example somebody “cards you” for various reasons.
- Expiration date matters, and it should self/autonomously revoke after that date.
All I want it to certify is the existence of a state-issued driver’s license. This should become part of a person’s identity, but should not be used to identify a person. Accordingly the following data normally found on driver’s licenses does not matter and should not be included:
- Date of issuance because we assume it was sometime before first date of “selfie”.
- Date of birth because “is legal to drink/vote/draft/whatever” should be separate attestations.
- Gender because vehicles don’t care what you are.
- Address because the vehicle does not care where you live.
- Blood type because vehicle will not attempt to repair you if you crash it…for now.
- Issuing authority because if they’re really all that important they can self-identify in the system and attest to the licenses they endorse. Otherwise any individual can eyeball any other individual’s card and attest.
Ok now that I run through that process let’s generalize it even more. A driver’s license is a special instance of a general license or permission. So how about this:
{
bytes32 can; // short verb
bytes32 a; // short noun
uint64 until; // unix timestamp of expiration
}
Which will read like:
“can” <short verb like “drive”, “operate”, “service”, “remove”, “repair”, “inspect”, “broker”, “explode”, etc>
“a” <short noun like “car”, “boat”, “plane”, “house”, “classRtruck”, “spleen”, “platypus”, etc.> “until”
And the resolver should return true if before and false if after until
It would be nice if the resolver could automagically revoke the attestation if querried after until to save the the trouble of revoking the expired license to replace it with the new one. Then they could just cleanly load the new license. Is that possible?
Otherwise It looks good to me in English.
What do you folks around the world think?