!!! Overview[1]
[{$pagename}] ([DID]) is a component of the [W3C Decentralized Identifiers] draft [standard] and is a globally [unique identifier] expressed as a [URI].


[{$pagename}] is a globally [Unique Identifier] that does not require a [Centralized system] [Registration Authority] [Enrollment] because it is registered with [Distributed Ledger Technology] or other form of [Decentralized system]. 
The generic format of a [{$pagename}] is defined in the [specification]. 

[{$pagename}] are [Algorithmmic|Algorithm] [Identifier] that could be stored on a variety of [DataStores] but a [Distributed Ledger Technology] is used most often.

A specific [DID] scheme is defined in a [DID method specification].

[{$pagename}] may relate generically refer a [DID Document] or to a specific [DID Subject]'s [DID]


The __Generic__ [DID] [URI Scheme] conformant with [RFC 3986]. [{$pagename}] consists of a DID followed by an optional [URI Path] and/or [URI Fragment Identifier]. The term __[DID] refers only to the identifier__ conforming to the did rule in the [ABNF] below; when used alone, it does not include a [URI Path] or [URI Fragment Identifier]. A [DID] that may optionally include a path and/or fragment is called a [DID reference].

Following is the [ABNF] definition using the syntax in [RFC 5234] (which defines [ALPHA] as [UPPERCASE] or [Lowercase] A-Z).
* did-reference      = did [[ "/" did-path ] [ "#" did-fragment ]
* [did|DID]                = "did:" method ":" specific-idstring ([URI Scheme])
* [method|DID method specification]             = 1*methodchar
* methodchar         = %x61-7A / [DIGIT]
* specific-idstring  = idstring *( ":" idstring )
* idstring           = 1*idchar
* idchar             = [ALPHA] / [DIGIT] / "." / "-"


!! A simple [example] of a Decentralized Identifier (DID)
{{{did:example:123456789abcdefghi}}}
Where:
* did - [URI Scheme]
* example - [DID method specification]
* 123456789abcdefghi - [DID method specific|DID method specification] [Unique Identifier]


!! [{$pagename}] [Specification] 
[{$pagename}] [Specification] has two purposes:
* define the generic [{$pagename}] scheme and a generic set of [DID Operations] on [DIDs] that can be implemented for any [distributed ledger|Distributed Ledger Technology] or network capable of supporting [DIDs]. 
* define the conformance requirements for a [DID method specification]

!! Persistent and [Immutable]
[{$pagename}] [MUST] be persistent and [immutable], i.e., bound to an [entity] once and never changed (forever). Ideally a [{$pagename}] would be a completely abstract [{$pagename}] (like a [UUID]) that could be bound to multiple underlying [distributed ledgers|Distributed Ledger Technology] or [networks] over time, thus maintaining its persistence independent of any particular ledger or network. However registering the same identifier on multiple ledgers or networks introduces extremely hard entityship and [Trust Anchor] problems and also greatly increases implementation complexity for developers.

To avoid these issues, it is [RECOMMENDED] that [DID method specification] only produce DIDs and [{$pagename}] methods bound to strong, stable ledgers or networks capable of making the highest level of commitment to persistence of the DID and DID method over time.


!! [DID method specification]
[DID method specification] provides definition of how a specific [{$pagename}] [URI Scheme] can be implemented on a specific [Distributed Ledger Technology] or [network], including the precise method(s) by which DIDs and DID Documents can be read, written, and revoked.

!! DID Scheme
DID Scheme is the formal syntax of a [{$pagename}]. The generic DID scheme is defined in this specification. A DID method specification defines a specific DID scheme that works with a specific DID method.

!! [{$pagename}] Resolution
To be useful, [Identifiers] [MUST] be resolvable (e.g. have a means of discovering what the identifier means). The [DID method specification] determines the resolution of the [{$pagename}]s are resolved to a [DID Document]. Resolution is the act of looking up the [DID Document] for a specific [{$pagename}] using the methods given by the [DID method specification]. Taken as a whole, DID infrastructure functions as a global, decentralized key-value store where DIDs act as the keys and [DID Documents] are the values.

!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]
----
* [#1] - [DID Decentralized Identifier) Data Model and Generic Syntax 1.0|https://docs.google.com/document/d/1Z-9jX4PEWtyRFD5fEyyzEnWK_0ir0no1JJLuRu8O9Gs/edit#|target='_blank'] - based on information obtained 2016-12-01-
* [#2] - [W3C Decentralized Identifiers (DIDs)|https://w3c-ccg.github.io/did-spec/|target='_blank'] - based on information obtained 2018-11-29
* [#2] - [Decentralized Identifiers (DIDs) v1.0|https://www.w3.org/TR/did-core/|target='_blank'] - based on information obtained 2020-10-03