FEP-4adb: Dereferencing identifiers with webfinger

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.

1 Like