DID生成
1、百度DID
DID格式:did:ccp:<method-specific-id>
其中<method-specific-id>=base58(ripemd160(sha256(<Base DID Document>))) (參考比特幣,使用雙 hash)。
其中<Base DID Document>:
{
"@context": "https://w3id.org/did/v1",
"publicKey": [
{
"id": "#keys-1",
"type": "Secp256k1",
"publicKeyHex": "02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71"
},
{
"id": "#keys-2",
"type": "Secp256k1",
"publicKeyHex": "4b4042665b3235a12fb49730ff620fef1c96e9efa5c90119abd2e8acfe856053"
}
],
"authentication": ["#key-1"],
"recovery": ["#key-2"]
}
在<Base DID Document>中定義了兩個公鑰,#keys-1主私鑰對應的公鑰,#keys-2為備私鑰對應的公鑰。
生成秘鑰的算法支持:
- Secp256k1
- RSA(TBD)
2、Ontology DID
DID格式:did:ont:idString
其中idString生成規(guī)則:
- 生成32字節(jié)的隨機nonce,計算h = Hash160(nonce),data = VER || h;
- 對data計算兩次SHA256,并取結(jié)果哈希的前4字節(jié)作為校驗,即checksum = SHA256(SHA256(data))[0:4];
- 令idString = base58(data || checksum);
上述過程中,|| 表示連接前后兩個字節(jié)串,VER 是1個字節(jié)的標簽位。
ONT ID需要在本體區(qū)塊鏈上注冊之后才能生效,可以在應用中使用。同一個ONT ID不能重復進行注冊。