Skip to content

Latest commit

 

History

History
124 lines (105 loc) · 4.48 KB

DID.md

File metadata and controls

124 lines (105 loc) · 4.48 KB

Seraph ID DID Definition.

Abstract

To introduce Self-Sovereign Identity support in the NEO blockchain and enforce compatibility with the raising standards we propose a DID method for NEO. The DID is a pre-requisite for the Seraph ID.

The W3C Credentials Community Group DIDs standard was chosen for future interopability with other Decentralized Identifier provider. The following DID Method will be registered on DID Method Registry.

NEO-DID Method Definition

Context

As defined in the W3C Credentials Community Group DIDs standard the context is defined as

{
  "@context": "https://w3id.org/did/v1"
}

Subject

The Seraph ID subject is "neoid" and the following format is required:

did = "did:neoid:" network ":" specific-idstring
network = ("test" / "main" / "priv")
specific-idstring = NEO public address or issuer smart contract ScriptHash (see below)

specific-idstring will be generated using a NEO Public key

<pre>
{
  "id": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527"
}

Public Keys

A public key section is defined in order to support encryption and cryptography operations. The public key is generated according to the NEO cryptography available support. If the identity is public in the network (on-chain identity) then its smart contract ScriptHash will be also listed in the available public keys.

 "publicKey": [{
    "id": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527#keys-1",
    "type": "EcdsaSecp256r1VerificationKey2019",
    "controller": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527",
    "publicKeyHex": "02103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e"
  },{
    "id": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527#keys-2",
    "type": "EcdsaSecp256r1VerificationKey2019",
    "controller": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527",
    "publicKeyHex": "38fdd55282cace2081c1db2f8ac5979fa2cd23bf2d7a15c6c687190e42c5272d5a"
  }]

Service Endpoint

Given the versatile nature of NEO Seraph ID for public, on-chain identity, endpoint to interact with the identity itself is represented by a smart contract. For off-chain, discrete identity, using identity cloud manager, a specific endpoint is provided.

  "service": [{
    "type": "smartContractService",
    "serviceEndpoint":"https://www.cloudservice1.org/me"
  },{
    "type": "cloudWallet",
    "serviceEndpoint":"https://me.cloudservice2.com"
  }]

Method Example

The following example shows the extensive DID method definition proposed for a single, public, on-chain identity (e.g. Issuer).

{
  "@context": "https://w3id.org/did/v1",
  "id": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527",
  "authentication": [
      {
        "type": "EcdsaSecp256r1Authentication2019",
        "publicKey": [
          "did:neoid:priv:81210f2127603ae7e910e452e4a140ee4e713527#keys-1"
        ]
      },
      {
        "type": "EcdsaSecp256r1Authentication2019",
        "publicKey": [
          "did:neoid:priv:81210f2127603ae7e910e452e4a140ee4e713527#keys-2"
        ]
      }

  ]
  "publicKey": [{
    "id": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527#keys-1",
    "type": "EcdsaSecp256r1VerificationKey2019",
    "controller": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527",
    "publicKeyHex": "02103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e"
  },{
    "id": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527#keys-2",
    "type": "EcdsaSecp256r1VerificationKey2019",
    "controller": "did:neoid:main:81210f2127603ae7e910e452e4a140ee4e713527",
    "publicKeyHex": "38fdd55282cace2081c1db2f8ac5979fa2cd23bf2d7a15c6c687190e42c5272d5a"
  }],
  "service": [{
    "type": "smartContractService",
    "serviceEndpoint":"https://www.cloudservice1.org/me"
  },{
    "type": "CloudService",
    "serviceEndpoint":"https://me.cloudservice2.com"
  }]
}

References