--- title: Petname Language --- Many different cryptographic identifiers get a petname, but the primary one of thought and concern is petnames for Zooko identifiers. A Zooko identifier arrives as display name, nickname, public key, and signature binding the display name and nickname to the public key. A petname for a Zooko name is derived from the nickname: - remove all leading and trailing whitespace. - If there are no alphabetic characters, prefix it with one at random. - Move any leading characters that are not alphabetic from prefix to affix. - Replace all whitespaces with hyphens. - Replace all special characters with their nearest permitted equivalent.\ \"#%&'(),.:;<=>?@[]\\^{|} ~\` are special characters that allow escape from plain text. In displayed text, @ will signify a petname corresponding to a Zooko name.\ If someone's nickname is Bob, he will likely get the petname Bob, which will be displayed in text as `@Bob`, indicating it is likely to be translated in transmission and reception. - If the result is a duplicate of an existing petname, append a number that renders it unique. - The user gets the opportunity to revise the petname, but his petname has to be a valid identifier that conforms to the above rules, or else it gets revised again. - The user may know that several petnames correspond to one entity, but he cannot assign several nicknames to one petname. We will also eventually have local ids for receive addresses.