IP Library › Granted Patent US 12,401,522
Granted Patent B1
US 12,401,522 · App. 18/363,943 · Granted Aug 26, 2025

Decentralized social network systems and methods

Inventors: Harpo Roeder (Austin, TX); Eron Jokipii (Austin, TX); Koen Jeukendrup (Eindhoven, NL); Kelvin Keultjes (Eindhoven, NL)
Assignee: FUTO Holdings Inc.
H04L9/3247H04L9/3073H04L9/3297
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,401,522
App. No.
18/363,943
Granted
Aug 26, 2025
Kind
B1
Abstract

A decentralized social network architecture allows reliable, multi-device, censorship-resistant distribution of messages. Network messages include a profile ID identifying a cryptographic public key, a device ID identifying a device used by the profile, a payload, a vector clock for the profile including a scalar for each device used by the profile, a real-time timestamp, and a message signature generated with the cryptographic private key counterpart of the public key. The signature authenticates each message as a self-contained entity, without cryptographic reference to previous messages. A user profile can employ multiple, independent server(s) for message distribution, and can add and remove servers from its distribution network. Security is provided in a decentralized manner via public key cryptography and a decentralized web of trust.

Claims (65)

1. A method comprising employing at least one hardware processor of a computer system to:

receive a first social network message from a first device in a decentralized social network, the first message including

a first user profile identifier identifying a public key of a public/private key pair of a first user profile, the first device being assigned to the first user profile,

a first device identifier identifying the first device,

a first content payload including social networking post content,

a vector clock state for the first user profile, the vector clock state comprising a plurality of scalar values, each scalar value characterizing a device assigned to the first user profile, and a message signature generated by signing the first message using a private key of the public/private key pair of the first user profile;

assemble a second social network message for posting on the decentralized social network, wherein the second social network message includes

a second user profile identifier identifying a public key of a public/private key pair of a second user profile, the computer system being assigned to the second user profile,

a second device identifier identifying the computer system,

a second content payload including social networking post content,

a vector clock state for the second user profile, the vector clock state comprising a plurality of scalar values, each scalar value characterizing a device assigned to the second user profile, and a message signature generated by signing the second message using a private key of the public/private key pair of the second user profile;

receive user input identifying a distribution server for the second user profile; and

add the identified distribution server to a set of existing distribution servers for the second user profile.

2. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to:

receive user input identifying a replacement distribution server for the second user profile, and replace an existing distribution server for the second user profile with the identified replacement distribution server.

3. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to transmit the second social network message for distribution to multiple independently-controlled servers having different domain names.

4. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to update a vector clock state for the first user profile maintained by the computer system according to the vector clock state for the first user profile received in the first message.

5. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to receive a third social network message from another device assigned to the second user profile in the decentralized social network, the third social network message including:

the second user profile identifier identifying the public key of the public/private key pair of the second user profile,

a third device identifier identifying the another device assigned to the second user profile, a third content payload including social networking post content,

another vector clock state for the second user profile, comprising a plurality of scalar values each characterizing a device assigned to the second user profile, and

a message signature generated by signing the third message using the private key of the public/private key pair of the second user profile.

6. The method of claim 5 , further comprising employing the at least one hardware processor of the computer system to:

use the another vector clock state for the second user profile received in the third message to identify a missing message belonging to the second user profile; and

in response, request the missing message from a server distributing messages belonging to the second user profile.

7. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to:

use the vector clock state for the first user profile received in the first message to identify a missing message belonging to the first user profile;

in response, look up a server distributing messages belonging to the first user profile; and

in response, request the missing message from the server distributing messages belonging to the first user profile.

8. The method of claim 1 , wherein the first message further includes a real time timestamp, and the method further comprises employing the at least one hardware processor of the computer system to order a display of received social network messages belonging to the first user profile according to the real time timestamp.

9. The method of claim 1 , wherein the display of received social network messages belonging to the first user profile comprises displays of messages generated by multiple devices belonging to the first user profile, and ordered in the display according to real time timestamps of the messages generated by multiple devices.

10. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to maintain a local instance of a conflict-free replicated data type (CRDT) storing at least one field of the second message.

11. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to formulate a query message for performing a search for content across multiple distributed social network user profiles.

12. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to initiate a user profile creation sequence comprising:

receiving user input selecting a distributed social network handle for the second user profile;

receiving user input selecting a server for distributing social network messages belonging to the second user profile; and

storing the public/private key pair for the second user profile, the public/private key pair for the second user profile being generated during the user profile creation sequence.

13. The method of claim 1 , further comprising employing the at least one hardware processor of the computer system to receive an identifier of the first user profile as a trusted user profile of the distributed social network, the identifier of the first user profile as a trusted user profile of the distributed social network being issued by a first entity belonging to the distributed social network.

14. The method of claim 13 , further comprising employing the at least one hardware processor of the computer system to receive an identifier of the first entity as a trusted entity of the distributed social network, the identifier of the first entity as a trusted entity of the distributed social network being issued by a second entity belonging to the distributed social network.

15. A computer system having at least one hardware processor and a memory programmed to:

receive a first social network message from a first device in a decentralized social network, the first message including

a first user profile identifier identifying a public key of a public/private key pair of a first user profile, the first device being assigned to the first user profile,

a first device identifier identifying the first device,

a first content payload including social networking post content,

a vector clock state for the first user profile, the vector clock state comprising a plurality of scalar values, each scalar value characterizing a device assigned to the first user profile, and a message signature generated by signing the first message using a private key of the public/private key pair of the first user profile;

assemble a second social network message for posting on the decentralized social network, wherein the second social network message includes

a second user profile identifier identifying a public key of a public/private key pair of a second user profile, the computer system being assigned to the second user profile,

a second device identifier identifying the computer system,

a second content payload including social networking post content,

a vector clock state for the second user profile, the vector clock state comprising a plurality of scalar values, each scalar value characterizing a device assigned to the second user profile, and a message signature generated by signing the second message using a private key of the public/private key pair of the second user profile;

receive user input identifying a distribution server for the second user profile; and

add the identified distribution server to a set of existing distribution servers for the second user profile.

16. A non-transitory computer-readable medium storing instructions which, when executed by at least one hardware processor of a computer system, cause the computer system to:

receive a first social network message from a first device in a decentralized social network, the first message including

a first user profile identifier identifying a public key of a public/private key pair of a first user profile, the first device being assigned to the first user profile,

a first device identifier identifying the first device,

a first content payload including social networking post content,

a vector clock state for the first user profile, the vector clock state comprising a plurality of scalar values, each scalar value characterizing a device assigned to the first user profile, and a message signature generated by signing the first message using a private key of the public/private key pair of the first user profile;

assemble a second social network message for posting on the decentralized social network, wherein the second social network message includes

a second user profile identifier identifying a public key of a public/private key pair of a second user profile, the computer system being assigned to the second user profile,

a second device identifier identifying the computer system,

a second content payload including social networking post content,

a vector clock state for the second user profile, the vector clock state comprising a plurality of scalar values, each scalar value characterizing a device assigned to the second user profile, and a message signature generated by signing the second message using a private key of the public/private key pair of the second user profile; and

receive user input identifying a distribution server for the second user profile; and

add the identified distribution server to a set of existing distribution servers for the second user profile.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2023
From: ROEDER, HARPO; JOKIPII, ERON; JEUKENDRUP, KOEN; KEULTJES, KELVIN
To: FUTO HOLDINGS INC.
Reel/Frame 064710/0276 →
References Cited (27)
US 9419854B1 · Wang · 2016 [cited by applicant]
US 9692815B2 · Caldwell · 2017 [cited by applicant]
US 9830333B1 · Wisniewski · 2017 [cited by applicant]
US 11388120B2 · Cohen · 2022 [cited by applicant]
US 20080148054A1 · Cahill · 2008 [cited by examiner]
US 20120109830A1 · Vogel · 2012 [cited by examiner]
US 20160378737A1 · Keslin · 2016 [cited by applicant]
US 20160381099A1 · Keslin · 2016 [cited by applicant]
US 20170078384A1 · Trandafir · 2017 [cited by applicant]
US 20180219685A1 · Deery · 2018 [cited by examiner]
US 20190036932A1 · Bathen · 2019 [cited by examiner]
US 20190179806A1 · Reinsberg · 2019 [cited by examiner]
US 20200127828A1 · Liu · 2020 [cited by examiner]
US 20200169425A1 · Hofstee · 2020 [cited by examiner]
US 20200304498A1 · Buchner · 2020 [cited by applicant]
US 20210184845A1 · Hébert · 2021 [cited by examiner]
US 20210234849A1 · Lamb · 2021 [cited by applicant]
US 20210377254A1 · Avetisov · 2021 [cited by examiner]
US 20220263754A1 · Tracy · 2022 [cited by applicant]
US 20230028555A1 · Cameron · 2023 [cited by applicant]
US 20230033192A1 · Sutherland · 2023 [cited by applicant]
US 20240171377A1 · Fields · 2024 [cited by examiner]
Sruthi Sree Kumar, “Vector Clocks” May 17, 2020 (Year: 2020). [cited by examiner]
Ronald L. Rivest, “SPKI/SDSI 2.0 A Simple Distributed Security Infrastructure” MIT Lab for Computer Science, 1996. [cited by examiner]
Scuttlebutt, Scuttlebutt Protocol Guide, downloaded from https://ssbc.github.io/scuttlebutt-protocol-guide/ on Apr. 11, 2023. [cited by applicant]
Wikipedia, Mastodon (Social Network), downloaded from https://en.wikipedia.org/wiki/Mastodon_(social _network) on Apr. 11, 2023. [cited by applicant]
Wikipedia, Keybase, downloaded from https://en.wikipedia.org/wiki/Keybase on Apr. 11, 2023. [cited by applicant]