Think of a DID method as a unique recipe for creating and managing DIDs. Each recipe, or DID method, is defined by a specific set of instructions, which we call a DID method specification. Now, let's talk about the specification of the ZK DID Method.
To create a valid ZK DID, you need a method name, which in this case is 'zk'. Remember, this method name should always be in lowercase.
Once you have your method name, you combine it with specific identifiers to form a ZK DID. There are two main types of DIDs you can create: Ethereum Virtual Machine(EVM)-based DIDs and Non-EVM-based DIDs.
For an EVM-based DID, the structure looks like this:
zk-did = "did:zk:" + <user-ethereum-address>
user-ethereum-address = "0x" 40*HEXDIG
Here is an example: did:zk:0x51fA67337...82EB6a9B22A
For a Non-EVM-based DID, the structure is slightly different:
zk-did = "did:zk:" + <non-evm-chain-name> + [ ":" + <user-address> ]
non-evm-chain-name = "sui" | "aptos" | ...
user-address = [a-zA-Z0-9]{1,64}
Here's an example: did:zk:sui:0xd5059a902ad02b...7ceaf7d6