Updating attribute values in a distributed zero-knowledge database
AssigneeThinkspan, LLC
InventorsDaniel Patrick Sullivan, James Michael Faris, Brian Samuel Taylor
Life of this patent
Estimating the term…
Abstract
Multiple devices can update the same attribute of the same node stored in a zero-knowledge database. The node can contain one or more attributes and attribute values. The multiple devices can belong to the same user, or they can belong to different users who all have access to the node and the attributes, for example, via sharing. The disclosed technology determines how the updates to the attribute values are propagated through the system. The attribute values can include information about the user or can include information about the graph, such as incoming or outgoing edges from a node.
Claims19
A method comprising:
- receiving, by a user device, an update request for a version of a node stored in a zero-knowledge database from a server, wherein the user device does not modify the requested version of the node, wherein the node is encrypted and the server cannot decrypt the node or derive any attribute values of the node;
- initializing timestamp metadata corresponding to each attribute value and indicating a time when the update request was received at the user device;
- determining whether the node has been instantiated and/or initiated on the user device;
- in response to the node not being instantiated and/or initiated on the user device:
- instantiating and/or initiating the node on the user device;
- merging one or more attributes of the node with at least one updated attribute stored in the user device to generate an updated node and assigning the timestamp metadata to each updated attribute value;
- and
- adding the updated node to a queue of updates to be sent to the server;
- and
- in response to the node being instantiated and/or initiated on the user device:
- merging the one or more attributes of the node with the at least one updated attribute stored in the user device to generate the updated node by:
- determining which attributes in the node have been updated;
- assigning the timestamp metadata to each updated attribute value;
- and
- preserving existing timestamp metadata for attributes that have not been updated;
- and
- adding the updated node to the queue of updates to be sent to the server.
A system comprising:
- a server;
- and
- one or more processors in communication with the server, the one or more processors are configured to:
- receive an update request for a version of a node stored in a zero-knowledge database from the server, wherein the one or more processors do not modify the requested version of the node, wherein the node is encrypted and the server cannot decrypt the node or derive any attribute values of the node;
- initialize timestamp metadata indicating a time when the update request was received, wherein each attribute value in the node has a corresponding timestamp metadata;
- receive the node and an associated version number;
- determine whether the node has been instantiated and/or initiated by the one or more processors;
- in response to the node not being instantiated and/or initiated by the one or more processors:
- instantiate and/or initiate the node;
- merging one or more attributes of the node with at least one updated attribute stored in a memory coupled to the one or more processors to generate an updated node by assigning the timestamp metadata to each updated attribute value;
- and
- adding the updated node and the version number to a queue of updates to be sent to the server;
- and
- in response to the node being instantiated and/or initiated by the one or more processors:
- merge the one or more attributes of the node with the at least one updated attribute stored in the memory to generate the updated node by:
- determining which attributes in the node have been updated;
- assigning the timestamp metadata to each updated attribute value;
- and
- preserving existing timestamp metadata for attributes that have not been updated;
- and
- add the updated node and the version number to the queue of updates to be sent to the server,
- wherein the version number as received by the server is compared against a current version number of the node that is stored on the server,
- wherein for the version number being determined as identical to the current version number, storing the updated node in the zero-knowledge database and incrementing the current version number.
Dependencies are inferred from the claim text.