IP Library Patent Application 16773405
Patent Application
App. No. 16/773,405

METHODS AND DEVICES FOR PROVIDING TRAVERSABLE KEY-VALUE DATA STORAGE ON BLOCKCHAIN

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 None
App. No.
16/773,405
Abstract

Disclosed herein are methods, devices, and apparatuses, including computer programs stored on computer-readable media, for providing traversable key-value data storage. One of the methods includes: receiving a first user-provided key-value pair for recordation on a storage system, the first user-provided key-value pair comprising a first user-provided key and a first user-provided value; assigning a first index to the first user-provided key-value pair; generating a first index-to-key key-value pair, the first index-to-key key-value pair having a key comprising the first index and a value comprising the first user-provided key; generating a first key-to-index key-value pair, the first key-to-index key-value pair having a key comprising the first user-provided key and a value comprising the first index; and storing the first user-provided key-value pair, the first index-to-key key-value pair, and the first key-to-index key-value pair on the storage system.

Claims (75)

1 . A computer-implemented method for providing traversable key-value data storage, the method comprising:

receiving a first user-provided key-value pair for recordation on a storage system, the first user-provided key-value pair comprising a first user-provided key and a first user-provided value;

assigning a first index to the first user-provided key-value pair;

generating a first index-to-key key-value pair, the first index-to-key key-value pair being separate from the first user-provided key-value pair, the first index-to-key key-value pair having a key comprising the first index assigned to the first user-provided key-value pair and a value comprising the first user-provided key in the first user-provided key-value pair;

generating a first key-to-index key-value pair, the first key-to-index key-value pair being separate from the first index-to-key key-value pair and the first user-provided key-value pair, the first key-to-index key-value pair having a key comprising the first user-provided key in the first user-provided key-value pair and a value comprising the first index assigned to the first user-provided key-value pair;

storing the first user-provided key-value pair, the first index-to-key key-value pair, and the first key-to-index key-value pair on the storage system; and

facilitating a data operation on the first user-provided key-value pair based on at least one of the first index-to-key key-value pair or the first key-to-index key-value pair stored on the storage system.

2 . The method of claim 1 , further comprising:

providing the traversable key-value data storage on a blockchain; and

providing a programming interface to receive a data request from a smart contract executing on the blockchain.

3 . The method of claim 1 , further comprising:

receiving a request to traverse through a plurality of user-provided key-value pairs stored on the storage system;

determining a list of indices assigned to the plurality of user-provided key-value pairs;

traversing through a plurality of index-to-key key-value pairs based on the list of indices to obtain a list of user-provided keys; and

traversing through the plurality of user-provided key-value pairs based on the obtained list of user-provided keys.

4 . The method of claim 1 , further comprising:

receiving a second user-provided key-value pair for recordation on the storage system, the second user-provided key-value pair comprising a second user-provided key and a second user-provided value;

determining whether any user-provided key-value pair stored on the storage system comprises a user-provided key matching the second user-provided key; and

in response to a determination that a particular user-provided key-value pair stored on the storage system comprises a user-provided key matching the second user-provided key, setting the second user-provided value as the value for the particular user-provided key-value pair.

5 . The method of claim 4 , further comprising:

in response to a determination that no user-provided key-value pair stored on the storage system comprises a user-provided key matching the second user-provided key, processing the second user-provided key-value pair for recordation on the storage system.

6 . The method of claim 5 , wherein the processing the second user-provided key-value pair for recordation on the storage system further comprises:

assigning a second index to the second user-provided key-value pair;

generating a second index-to-key key-value pair, the second index-to-key key-value pair having a key comprising the second index and a value comprising the second user-provided key;

generating a second key-to-index key-value pair, the second key-to-index key-value pair having a key comprising the second user-provided key and a value comprising the second index; and

storing the second user-provided key-value pair, the second index-to-key key-value pair, and the second key-to-index key-value pair on the storage system.

7 . The method of claim 1 , further comprising:

receiving a request to delete the first user-provided key-value pair;

determining whether the first index assigned to the first user-provided key-value pair is at an end of an indexing sequence; and

in response to a determination that the first index is at the end of the indexing sequence, deleting the first user-provided key-value pair, the first index-to-key key-value pair, and the first key-to-index key-value pair from the storage system.

8 . The method of claim 7 , further comprising:

in response to a determination that the first index is not at the end of the indexing sequence, rearranging the indexing sequence.

9 . The method of claim 8 , wherein the rearranging the indexing sequence further comprises:

identifying a replacement index-to-key key-value pair, the replacement index-to-key key-value pair having been indexed at the end of the indexing sequence;

replacing the value of the first index-to-key key-value pair with a value contained in the replacement index-to-key key-value pair;

identifying a replacement key-to-index key-value pair, the replacement key-to-index key-value pair having a key comprising the value contained in the replacement index-to-key key-value pair;

setting the first index as the value of the replacement key-to-index key-value pair; and

deleting the first user-provided key-value pair, the replacement index-to-key key-value pair, and the first key-to-index key-value pair from the storage system.

10 . The method of claim 2 , wherein the data request comprises at least one of: a request to record a user-provided key-value pair, a request to retrieve a user-provided key-value pair, a request to delete a user-provided key-value pair, or a request to traverse through user-provided key-value pairs stored on the blockchain.

11 . The method of claim 1 , further comprising:

concatenating a key contained in a user-provided key-value pair, a key contained in an index-to-key key-value pair, and a key contained in a key-to-index key-value pair according to a concatenation rule.

12 . The method of claim 11 , wherein the concatenation rule includes specification of a user identifier and a type indicator.

13 . The method of claim 12 , wherein the type indicator indicates whether a key is a user-provided key, a system generated key for an index-to-key key-value pair, or a system generated key for a key-to-index key-value pair.

14 . The method of claim 11 , wherein the concatenation rule is a prefix rule.

15 . A device for providing traversable key-value data storage on a storage system, comprising:

one or more processors; and

one or more computer-readable memories coupled to the one or more processors and having instructions stored thereon that are executable by the one or more processors, wherein the one or more processors are configured to:

receive a first user-provided key-value pair for recordation on a storage system, the first user-provided key-value pair comprising a first user-provided key and a first user-provided value;

assign a first index to the first user-provided key-value pair;

generate a first index-to-key key-value pair, the first index-to-key key-value pair being separate from the first user-provided key-value pair, the first index-to-key key-value pair having a key comprising the first index assigned to the first user-provided key-value pair and a value comprising the first user-provided key in the first user-provided key-value pair;

generate a first key-to-index key-value pair, the first key-to-index key-value pair being separate from the first index-to-key key-value pair and the first user-provided key-value pair, the first key-to-index key-value pair having a key comprising the first user-provided key in the first user-provided key-value pair and a value comprising the first index assigned to the first user-provided key-value pair;

store the first user-provided key-value pair, the first index-to-key key-value pair, and the first key-to-index key-value pair on the storage system; and

facilitate a data operation on the first user-provided key-value pair based on at least one of the first index-to-key key-value pair and the first key-to-index key-value pair stored on the storage system.

16 . (canceled)

17 . A non-transitory computer-readable medium having stored therein instructions that, when executed by a processor of a device, cause the device to perform a method for providing traversable key-value data storage, the method comprising:

receiving a first user-provided key-value pair for recordation on a storage system, the first user-provided key-value pair comprising a first user-provided key and a first user-provided value;

assigning a first index to the first user-provided key-value pair;

generating a first index-to-key key-value pair, the first index-to-key key-value pair being separate from the first user-provided key-value pair, the first index-to-key key-value pair having a key comprising the first index assigned to the first user-provided key-value pair and a value comprising the first user-provided key in the first user-provided key-value pair;

generating a first key-to-index key-value pair, the first key-to-index key-value pair being separate from the first index-to-key key-value pair and the first user-provided key-value pair, the first key-to-index key-value pair having a key comprising the first user-provided key in the first user-provided key-value pair and a value comprising the first index assigned to the first user-provided key-value pair;

storing the first user-provided key-value pair, the first index-to-key key-value pair, and the first key-to-index key-value pair on the storage system; and

facilitating a data operation on the first user-provided key-value pair based on at least one of the first index-to-key key-value pair and the first key-to-index key-value pair stored on the storage system.

18 . The device of claim 15 , wherein the one or more processors are further configured to:

provide the traversable key-value data storage on a blockchain; and

provide a programming interface to receive a data request from a smart contract executing on the blockchain.

19 . The device of claim 15 , wherein the one or more processors are further configured to:

receive a request to traverse through a plurality of user-provided key-value pairs stored on the storage system;

determine a list of indices assigned to the plurality of user-provided key-value pairs;

traverse through a plurality of index-to-key key-value pairs based on the list of indices to obtain a list of user-provided keys; and

traverse through the plurality of user-provided key-value pairs based on the obtained list of user-provided keys.

20 . The device of claim 15 , wherein the one or more processors are further configured to:

receive a second user-provided key-value pair for recordation on the storage system, the second user-provided key-value pair comprising a second user-provided key and a second user-provided value;

determine whether any user-provided key-value pair stored on the storage system comprises a user-provided key matching the second user-provided key; and

in response to a determination that a particular user-provided key-value pair stored on the storage system comprises a user-provided key matching the second user-provided key, set the second user-provided value as the value for the particular user-provided key-value pair.

21 . The device of claim 20 , wherein the one or more processors are further configured to:

in response to a determination that no user-provided key-value pair stored on the storage system comprises a user-provided key matching the second user-provided key, process the second user-provided key-value pair for recordation on the storage system.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2020
From: ADVANTAGEOUS NEW TECHNOLOGIES CO., LTD.
To: ADVANCED NEW TECHNOLOGIES CO., LTD.
Reel/Frame 053761/0338 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2020
From: ALIBABA GROUP HOLDING LIMITED
To: ADVANTAGEOUS NEW TECHNOLOGIES CO., LTD.
Reel/Frame 053713/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2020
From: CHEN, SHENGLONG
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 052302/0178 →