@metalabel/dfos-protocol 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROTOCOL.md +259 -27
- package/README.md +14 -6
- package/dist/chain/index.d.ts +22 -1
- package/dist/chain/index.js +2 -1
- package/dist/chunk-CZSEEZLL.js +258 -0
- package/dist/{chunk-ASGEXSVT.js → chunk-GEVJ3SEV.js} +60 -4
- package/dist/credentials/index.d.ts +206 -0
- package/dist/credentials/index.js +35 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +40 -8
- package/examples/beacon.json +14 -0
- package/examples/content-delegated.json +44 -0
- package/examples/credential-read.json +12 -0
- package/examples/credential-write.json +14 -0
- package/examples/merkle-tree.json +28 -0
- package/package.json +5 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Beacon: signed merkle root announcement with witness countersignature",
|
|
3
|
+
"type": "beacon",
|
|
4
|
+
"controllerJws": "eyJhbGciOiJFZERTQSIsInR5cCI6ImRpZDpkZm9zOmJlYWNvbiIsImtpZCI6ImRpZDpkZm9zOmUzdnZ0Y2s0MmQ0ZWFjZG56dnRybjYja2V5X3I5ZXYzNGZ2YzIzejk5OXZlYWFmdDgiLCJjaWQiOiJiYWZ5cmVpaGhvbHV1aTdzN25zNzRpZW02YWhmeHNiNDcyaHdvZ2JxZDMyeXJycDVmenRjM2t4YTVxdSJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiYmVhY29uIiwiZGlkIjoiZGlkOmRmb3M6ZTN2dnRjazQyZDRlYWNkbnp2dHJuNiIsIm1lcmtsZVJvb3QiOiI3ZTgwZDQ3ODBmNDU0ZTBmY2EwYjA5MGQ4YzY0NmY1NzJiNDkzNTRmNTQxNTQ1MzE2MDYxMDVhYWQyZmRhMjhlIiwiY3JlYXRlZEF0IjoiMjAyNi0wMy0wN1QwMDowNTowMC4wMDBaIn0._1RgZpMv63-M3ZUeTNX679xkAeX3TY0PJ0ImH7422cKA7I88Hf8bBVQMVVhP3oNdvX7i7Q4se5EP3kk5aEuxDQ",
|
|
5
|
+
"witnessJws": "eyJhbGciOiJFZERTQSIsInR5cCI6ImRpZDpkZm9zOmJlYWNvbiIsImtpZCI6ImRpZDpkZm9zOmUzdnZ0Y2s0MmQ0ZWFjZG56dnRybjYja2V5X2V6OWE4NzR0Y2tyM2R2OTMzZDNja2QiLCJjaWQiOiJiYWZ5cmVpaGhvbHV1aTdzN25zNzRpZW02YWhmeHNiNDcyaHdvZ2JxZDMyeXJycDVmenRjM2t4YTVxdSJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiYmVhY29uIiwiZGlkIjoiZGlkOmRmb3M6ZTN2dnRjazQyZDRlYWNkbnp2dHJuNiIsIm1lcmtsZVJvb3QiOiI3ZTgwZDQ3ODBmNDU0ZTBmY2EwYjA5MGQ4YzY0NmY1NzJiNDkzNTRmNTQxNTQ1MzE2MDYxMDVhYWQyZmRhMjhlIiwiY3JlYXRlZEF0IjoiMjAyNi0wMy0wN1QwMDowNTowMC4wMDBaIn0.awA8ctmLHjJCHZcH0lav7HpadkIoGiG2WR-pCf-0XfPVi9dD8Z2at0E7iAnOUnVEc5VthBo-mMklSIJFK28IDw",
|
|
6
|
+
"controllerPublicKey": "z6MkrzLMNwoJSV4P3YccWcbtk8vd9LtgMKnLeaDLUqLuASjb",
|
|
7
|
+
"witnessPublicKey": "z6MkfUd65JrAhfdgFuMCccU9ThQvjB2fJAMUHkuuajF992gK",
|
|
8
|
+
"expected": {
|
|
9
|
+
"beaconCID": "bafyreihholuui7s7ns74iem6ahfxsb472hwogbqd32yrrp5fztc3kxa5qu",
|
|
10
|
+
"did": "did:dfos:e3vvtck42d4eacdnzvtrn6",
|
|
11
|
+
"merkleRoot": "7e80d4780f454e0fca0b090d8c646f572b49354f54154531606105aad2fda28e",
|
|
12
|
+
"createdAt": "2026-03-07T00:05:00.000Z"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Content chain: creator signs genesis, delegate signs update with write VC",
|
|
3
|
+
"type": "content-delegated",
|
|
4
|
+
"chain": [
|
|
5
|
+
"eyJhbGciOiJFZERTQSIsInR5cCI6ImRpZDpkZm9zOmNvbnRlbnQtb3AiLCJraWQiOiJkaWQ6ZGZvczplM3Z2dGNrNDJkNGVhY2RuenZ0cm42I2tleV9yOWV2MzRmdmMyM3o5OTl2ZWFhZnQ4IiwiY2lkIjoiYmFmeXJlaWFmeG9ka290ZzJpZGE1eHBjZWR2MzdrMmtqZDdqbmJ5Z2hhamhub3VvYm9qaWF4eGo1eGkifQ.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiY3JlYXRlIiwiZGlkIjoiZGlkOmRmb3M6ZTN2dnRjazQyZDRlYWNkbnp2dHJuNiIsImRvY3VtZW50Q0lEIjoiYmFmeXJlaWduN2dmdXU1NHdvMmdlZzN0ZjV0ZXBlcGxibGt0YWhqZnpxanB1aml6YzdhMmJvZXljY2EiLCJiYXNlRG9jdW1lbnRDSUQiOm51bGwsImNyZWF0ZWRBdCI6IjIwMjYtMDMtMDdUMDA6MTA6MDAuMDAwWiIsIm5vdGUiOm51bGx9.oanyS9rbkqrxd1j8T172jVG4ILKFwW2t1JhkQLxsFqHMMURqA5Hl-0GzGFrfSkQT02Nq5RMYXzhcToqbjoV8AQ",
|
|
6
|
+
"eyJhbGciOiJFZERTQSIsInR5cCI6ImRpZDpkZm9zOmNvbnRlbnQtb3AiLCJraWQiOiJkaWQ6ZGZvczpuemtmODM4ZWZyNDI0NDMzcm4ycnprI2tleV9hOHIyNzQzNGFhcjc2YWU3MmM4NzdmIiwiY2lkIjoiYmFmeXJlaWJtMjRmNjY3cGlsNHhiZ2M3emZhM3lvdXRkandya3B4YTJjbWQ3Zm50aWxhYWljMmRlNzQifQ.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoidXBkYXRlIiwiZGlkIjoiZGlkOmRmb3M6bnprZjgzOGVmcjQyNDQzM3JuMnJ6ayIsInByZXZpb3VzT3BlcmF0aW9uQ0lEIjoiYmFmeXJlaWFmeG9ka290ZzJpZGE1eHBjZWR2MzdrMmtqZDdqbmJ5Z2hhamhub3VvYm9qaWF4eGo1eGkiLCJkb2N1bWVudENJRCI6ImJhZnlyZWlmbml5bmQ2aGV2NjQ2dW9hamFjM2VnYWs3cDJxZmhyaGhvNG1mbXBwYTNydGNqcGV0Z2RlIiwiYmFzZURvY3VtZW50Q0lEIjoiYmFmeXJlaWduN2dmdXU1NHdvMmdlZzN0ZjV0ZXBlcGxibGt0YWhqZnpxanB1aml6YzdhMmJvZXljY2EiLCJjcmVhdGVkQXQiOiIyMDI2LTAzLTA3VDAwOjExOjAwLjAwMFoiLCJub3RlIjoiZGVsZWdhdGVkIGVkaXQgYnkga2V5MyIsImF1dGhvcml6YXRpb24iOiJleUpoYkdjaU9pSkZaRVJUUVNJc0luUjVjQ0k2SW5aaksycDNkQ0lzSW10cFpDSTZJbVJwWkRwa1ptOXpPbVV6ZG5aMFkyczBNbVEwWldGalpHNTZkblJ5YmpZamEyVjVYM0k1WlhZek5HWjJZekl6ZWprNU9YWmxZV0ZtZERnaWZRLmV5SnBjM01pT2lKa2FXUTZaR1p2Y3pwbE0zWjJkR05yTkRKa05HVmhZMlJ1ZW5aMGNtNDJJaXdpYzNWaUlqb2laR2xrT21SbWIzTTZibnByWmpnek9HVm1jalF5TkRRek0zSnVNbko2YXlJc0ltVjRjQ0k2TVRjNU9EYzJNVFl3TUN3aWFXRjBJam94TnpjeU9EUXhOakF3TENKMll5STZleUpBWTI5dWRHVjRkQ0k2V3lKb2RIUndjem92TDNkM2R5NTNNeTV2Y21jdmJuTXZZM0psWkdWdWRHbGhiSE12ZGpJaVhTd2lkSGx3WlNJNld5SldaWEpwWm1saFlteGxRM0psWkdWdWRHbGhiQ0lzSWtSR1QxTkRiMjUwWlc1MFYzSnBkR1VpWFN3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lZMjl1ZEdWdWRFbGtJam9pWVdNeU5ubzRlbXRyWlRZM2VqUTRZV1l6Y21ob09TSjlmWDAuZG5vN2lkcnVTMUZDVzl2ZEp5TjAyT1g0a05vcEh0RGlvRE5feHo3MzdBb2tmT1FZa0c3VHFzcXlmM3VPQ0p1MTRtZmhLbGNsb2RMT01LcVBGcGJNQkEifQ.8CiWJSk5Aw0OntAj_vxMawd4rDx42SwhlaPFpevthXVYqXLIOjEeyUO59YnbfQ4dSoz2PfEoRTrBnm4oXIPYAg"
|
|
7
|
+
],
|
|
8
|
+
"creatorPublicKey": "z6MkrzLMNwoJSV4P3YccWcbtk8vd9LtgMKnLeaDLUqLuASjb",
|
|
9
|
+
"delegatePublicKey": "z6MkvsvmSh2dGnu2qw1Tnw7M5fz98ycfuYGxqnpfgmPkLv7o",
|
|
10
|
+
"documents": [
|
|
11
|
+
{
|
|
12
|
+
"content": {
|
|
13
|
+
"$schema": "https://schemas.dfos.com/post/v1",
|
|
14
|
+
"format": "short-post",
|
|
15
|
+
"title": "Original Post",
|
|
16
|
+
"body": "Content created by the chain owner.",
|
|
17
|
+
"createdByDID": "did:dfos:e3vvtck42d4eacdnzvtrn6"
|
|
18
|
+
},
|
|
19
|
+
"baseDocumentCID": null,
|
|
20
|
+
"createdByDID": "did:dfos:e3vvtck42d4eacdnzvtrn6",
|
|
21
|
+
"createdAt": "2026-03-07T00:10:00.000Z"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"content": {
|
|
25
|
+
"$schema": "https://schemas.dfos.com/post/v1",
|
|
26
|
+
"format": "short-post",
|
|
27
|
+
"title": "Delegated Edit",
|
|
28
|
+
"body": "Content updated by an authorized delegate.",
|
|
29
|
+
"createdByDID": "did:dfos:nzkf838efr424433rn2rzk"
|
|
30
|
+
},
|
|
31
|
+
"baseDocumentCID": "bafyreign7gfuu54wo2geg3tf5tepeplblktahjfzqjpujizc7a2boeycca",
|
|
32
|
+
"createdByDID": "did:dfos:nzkf838efr424433rn2rzk",
|
|
33
|
+
"createdAt": "2026-03-07T00:11:00.000Z"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"authorization": "eyJhbGciOiJFZERTQSIsInR5cCI6InZjK2p3dCIsImtpZCI6ImRpZDpkZm9zOmUzdnZ0Y2s0MmQ0ZWFjZG56dnRybjYja2V5X3I5ZXYzNGZ2YzIzejk5OXZlYWFmdDgifQ.eyJpc3MiOiJkaWQ6ZGZvczplM3Z2dGNrNDJkNGVhY2RuenZ0cm42Iiwic3ViIjoiZGlkOmRmb3M6bnprZjgzOGVmcjQyNDQzM3JuMnJ6ayIsImV4cCI6MTc5ODc2MTYwMCwiaWF0IjoxNzcyODQxNjAwLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIkRGT1NDb250ZW50V3JpdGUiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiY29udGVudElkIjoiYWMyNno4emtrZTY3ejQ4YWYzcmhoOSJ9fX0.dno7idruS1FCW9vdJyN02OX4kNopHtDioDN_xz737AokfOQYkG7Tqsqyf3uOCJu14mfhKlclodLOMKqPFpbMBA",
|
|
37
|
+
"expected": {
|
|
38
|
+
"contentId": "ac26z8zkke67z48af3rhh9",
|
|
39
|
+
"creatorDID": "did:dfos:e3vvtck42d4eacdnzvtrn6",
|
|
40
|
+
"isDeleted": false,
|
|
41
|
+
"currentDocumentCID": "bafyreifniynd6hev646uoajac3egak7p2qfhrhho4mfmppa3rtcjpetgde",
|
|
42
|
+
"length": 2
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "VC-JWT: DFOSContentRead credential",
|
|
3
|
+
"type": "credential",
|
|
4
|
+
"credential": "eyJhbGciOiJFZERTQSIsInR5cCI6InZjK2p3dCIsImtpZCI6ImRpZDpkZm9zOmUzdnZ0Y2s0MmQ0ZWFjZG56dnRybjYja2V5X3I5ZXYzNGZ2YzIzejk5OXZlYWFmdDgifQ.eyJpc3MiOiJkaWQ6ZGZvczplM3Z2dGNrNDJkNGVhY2RuenZ0cm42Iiwic3ViIjoiZGlkOmRmb3M6bnprZjgzOGVmcjQyNDQzM3JuMnJ6ayIsImV4cCI6MTc5ODc2MTYwMCwiaWF0IjoxNzcyODQxNjAwLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIkRGT1NDb250ZW50UmVhZCJdLCJjcmVkZW50aWFsU3ViamVjdCI6e319fQ.zGC2aUOgqXlVwTxSFSa_6g_gGEDEtS5YMLfIJNyPC9hn5IcbHtHxET8MqOKmFfKm9xJgA8uyDv12sr_D3hF9DQ",
|
|
5
|
+
"issuerPublicKey": "z6MkrzLMNwoJSV4P3YccWcbtk8vd9LtgMKnLeaDLUqLuASjb",
|
|
6
|
+
"subjectPublicKey": "z6MkvsvmSh2dGnu2qw1Tnw7M5fz98ycfuYGxqnpfgmPkLv7o",
|
|
7
|
+
"expected": {
|
|
8
|
+
"iss": "did:dfos:e3vvtck42d4eacdnzvtrn6",
|
|
9
|
+
"sub": "did:dfos:nzkf838efr424433rn2rzk",
|
|
10
|
+
"vcType": "DFOSContentRead"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "VC-JWT: DFOSContentWrite credential (broad + narrowed)",
|
|
3
|
+
"type": "credential",
|
|
4
|
+
"broadCredential": "eyJhbGciOiJFZERTQSIsInR5cCI6InZjK2p3dCIsImtpZCI6ImRpZDpkZm9zOmUzdnZ0Y2s0MmQ0ZWFjZG56dnRybjYja2V5X3I5ZXYzNGZ2YzIzejk5OXZlYWFmdDgifQ.eyJpc3MiOiJkaWQ6ZGZvczplM3Z2dGNrNDJkNGVhY2RuenZ0cm42Iiwic3ViIjoiZGlkOmRmb3M6bnprZjgzOGVmcjQyNDQzM3JuMnJ6ayIsImV4cCI6MTc5ODc2MTYwMCwiaWF0IjoxNzcyODQxNjAwLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIkRGT1NDb250ZW50V3JpdGUiXSwiY3JlZGVudGlhbFN1YmplY3QiOnt9fX0.Oj0wl8jjzJtT7nluaTa3e9UgdDBnAYagTRs5ZnlW3Dvfxw8BUkEuZ2o_gu80QBl1cHUUxLwmc3-lToPPT7iMCQ",
|
|
5
|
+
"narrowCredential": "eyJhbGciOiJFZERTQSIsInR5cCI6InZjK2p3dCIsImtpZCI6ImRpZDpkZm9zOmUzdnZ0Y2s0MmQ0ZWFjZG56dnRybjYja2V5X3I5ZXYzNGZ2YzIzejk5OXZlYWFmdDgifQ.eyJpc3MiOiJkaWQ6ZGZvczplM3Z2dGNrNDJkNGVhY2RuenZ0cm42Iiwic3ViIjoiZGlkOmRmb3M6bnprZjgzOGVmcjQyNDQzM3JuMnJ6ayIsImV4cCI6MTc5ODc2MTYwMCwiaWF0IjoxNzcyODQxNjAwLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIkRGT1NDb250ZW50V3JpdGUiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiY29udGVudElkIjoiYTgyejkyYTNobmRrNmM5N3RoY3JuOCJ9fX0.XecRGtsjHJbE5S2AxNLkfvnHof_t7gZRe_qrbBCLogvzPule51CWVWFsgJctgWu2jEPGiFxAedPOuuhXitSLBA",
|
|
6
|
+
"issuerPublicKey": "z6MkrzLMNwoJSV4P3YccWcbtk8vd9LtgMKnLeaDLUqLuASjb",
|
|
7
|
+
"subjectPublicKey": "z6MkvsvmSh2dGnu2qw1Tnw7M5fz98ycfuYGxqnpfgmPkLv7o",
|
|
8
|
+
"expected": {
|
|
9
|
+
"iss": "did:dfos:e3vvtck42d4eacdnzvtrn6",
|
|
10
|
+
"sub": "did:dfos:nzkf838efr424433rn2rzk",
|
|
11
|
+
"vcType": "DFOSContentWrite",
|
|
12
|
+
"narrowContentId": "a82z92a3hndk6c97thcrn8"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Merkle tree: 5 content IDs → sorted → leaf hashes → root, with inclusion proof for \"charlie\"",
|
|
3
|
+
"type": "merkle",
|
|
4
|
+
"contentIds": ["alpha", "bravo", "charlie", "delta", "echo"],
|
|
5
|
+
"expected": {
|
|
6
|
+
"sortedIds": ["alpha", "bravo", "charlie", "delta", "echo"],
|
|
7
|
+
"root": "7e80d4780f454e0fca0b090d8c646f572b49354f54154531606105aad2fda28e",
|
|
8
|
+
"leafCount": 5,
|
|
9
|
+
"charlieProof": {
|
|
10
|
+
"contentId": "charlie",
|
|
11
|
+
"root": "7e80d4780f454e0fca0b090d8c646f572b49354f54154531606105aad2fda28e",
|
|
12
|
+
"path": [
|
|
13
|
+
{
|
|
14
|
+
"hash": "4f4a9410ffcdf895c4adb880659e9b5c0dd1f23a30790684340b3eaacb045398",
|
|
15
|
+
"position": "right"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"hash": "90d39555bb3c223e12f5a375c3011d2462fe2e1e36b8416a0b623d5831a9b4f3",
|
|
19
|
+
"position": "left"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"hash": "092c79e8f80e559e404bcf660c48f3522b67aba9ff1484b0367e1a4ddef7431d",
|
|
23
|
+
"position": "right"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metalabel/dfos-protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "DFOS Protocol — Ed25519 signed chain primitives, beacons, merkle trees, and verification",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,6 +40,10 @@
|
|
|
40
40
|
"./merkle": {
|
|
41
41
|
"import": "./dist/merkle/index.js",
|
|
42
42
|
"types": "./dist/merkle/index.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"./credentials": {
|
|
45
|
+
"import": "./dist/credentials/index.js",
|
|
46
|
+
"types": "./dist/credentials/index.d.ts"
|
|
43
47
|
}
|
|
44
48
|
},
|
|
45
49
|
"files": [
|