An interesting application of webfinger is data cloning.
Imagine that object IDs are not URLs, but URNs:
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "urn:uuid:360bd565-07d1-4478-866e-3cbdc041b234",
"type": "Note",
"attributedTo": "https://alice.example/user",
"content": "Hello world"
}
The ID here is location-independent, so the object is not tied to a particular server. However, it is not clear how it can be retrieved. We can solve this problem by adding a list of servers to the ID:
urn:uuid:360bd565-07d1-4478-866e-3cbdc041b234?hosts=alice.example,backup.example
Here is a reply to this Note
:
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "urn:uuid:42a0c931-9d1a-41c9-b4dc-3070c4204674?hosts=bob.example,backup.example",
"type": "Note",
"attributedTo": "https://bob.example/user",
"inReplyTo": "urn:uuid:360bd565-07d1-4478-866e-3cbdc041b234?hosts=alice.example,backup.example",
"content": "Test"
}
The recipient of this reply can use webfinger to find a referenced object:
GET https://backup.example/.well-known/webfinger?resource=urn:uuid:360bd565-07d1-4478-866e-3cbdc041b234
This approach provides redundancy without the downsides of using hashlinks, ipfs://
URIs or other immutable pointers.
The integrity of objects can be proved using FEP-8b32 integrity proofs.