現在,Alice能夠使用car 12A15:
{
"@context":[
"https://w3id.org/security/v2",
"https://autopower.example/"
],
"id":"https://autocar12A15.example/a-fancy-car/proc/7a397d7b",
"parentCapability":"https://autocar12A15.example/a-fancy-car",
"invoker":"https://social.example/alice#key-for-car",
"proof":{
"type":"Ed25519Signature2018",
"created":"2018-02-13T21:26:08Z",
"capabilityChain":[
"https://autocar12A15.example/a-fancy-car"
],
"jws":"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..lfAFjrWE-4RxhL0gtzSMRX72NR9SRDgaMmkjPA4if0ERbw4R2bnts5sAs8OyhAlbFzBAKOqrFk57AYqwSR2vCw",
"proofPurpose":"capabilityDelegation",
"verificationMethod":"https://example.com/i/alice/keys/1"
}
}
瞭解以上結構:
· parentCapability-由於這是第一個委派的功能,parentCapability指向此功能將要針對的目標(在本例中為Alice's Car)
· invoker:我們正在專門授予Alice的一個加密金鑰的授權
· Proof : 最後,我們使用來自Alice Car的capabilityDelegation欄位的加密材料對該物件進行簽名,並使用capabilityDelegationproofPurpose。
· 注意:更改了alice,bob和Car的DID,只是為了直觀地瞭解誰是關鍵。
開啟汽車,用Alice寫的“去辦公室”:
{
"@context":[
"https://example.org/zcap/v1",
"https://autopower.example/"
],
"id":"urn:uuid:ad86cb2c-e9db-434a-beae-71b82120a8a4",
"action":"Drive",
"proof":{
"type":"RsaSignature2016",
"proofPurpose":"capabilityInvocation",
"capability":"https://autocar12A15.example/a-fancy-car/proc/7a397d7b",
"created":"2016-02-08T17:13:48Z",
"creator":"https://social.example/alice/#key-for-car",
"signatureValue":"..."
}
}
action-要執行什麼樣的動作Drive-開啟汽車併到達辦公室
capabiltiy:在此汽車上的能力取決於汽車12A15
現在回到問題上來,Bob請求Alice讓他用幾天車。在這種情況下,Alice使用警告將使用汽車的責任委託給Bob
{
"@context":[
"https://example.org/zcap/v1",
"https://autopower.example/"
],
"id":"https://social.example/alice/caps#79795d78",
"parentCapability":"https://autocar12A15.example/a-fancy-car/proc/7a397d7b",
"invoker":"https://bob.example/bob/#key-33",
"caveat":[
{
"type":"ValidWhileTrue",
"uri":"https://social.example/alice/bob-can-still-use-car"
}
],
"proof":{
"type":"RsaSignature2016",
"proofPurpose":"capabilityDelegation",
"created":"2017-03-28T06:01:25Z",
"creator":"https://social.example/alice/#key-for-car",
"signatureValue":"..."
}
}
警告:它允許將來撤銷,只要警告是真的,Bob可以使用Alice汽車,或者以其他方式autocar12A15將允許Bob使用其服務,只要警告成立。
invoker : Alice授予對Bob金鑰之一的訪問權
proof: Alice用她被授予對autocar12A15的授權權的金鑰
Bob去了一家旅館,並委託代客(Carol)放權並增加了限制,要求代客泊車,以免代客在旅館內搭便車。
{
"@context":[
"https://example.org/zcap/v1",
"https://autopower.example/"
],
"id":"https://bob.example/bob/caps#2cdea8c1",
"parentCapability":"https://social.example/alice/caps#79795d78",
"invoker":"https://carol.example/#key-bf36",
"caveat":[
{
"type":"DriveNoMoreThan",
"kilometers":4000
}
],
"proof":{
"type":"RsaSignature2016",
"proofPurpose":"capabilityDelegation",
"created":"2017-06-13T19:15:03Z",
"creator":"https://bob.example/bob/#key-33",
"signatureValue":"..."
}
}
//警告:Alice的儀表顯示目前行駛了3995公里,因此這隻比當前值多了5公里
invoker : 授權卡羅爾使用汽車服務
proof: Bob簽署了這個物件,現在autocar12A15將允許carol使用其服務,如果需要,carol最多可以使用5公里的路程
CapabilityInvocation和CapabilityDelegation是DID的兩個重要屬性,可讓使用者控制IoT裝置,智慧汽車,數字裝置等非生物物品。
DID僅透過證明加密金鑰的所有權即可確保實體的存在,並且無需人工干預即可與其他實體進行互動。