# US 12,015,602 B2 · Information security system and method for secure data transmission among user profiles using a blockchain network

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,015,602 B2
- Document ID: US12015602B2
- Status: Granted
- Kind: B2
- Application number: 17/403,165
- Filed: 2021-08-16
- Published: 2023-02-16
- Granted: 2024-06-18
- Earliest claimed: 2021-08-16
- Assignees: Bank of America Corporation
- Applicants: Bank of America Corporation
- Inventors: Sidhartha Chandran
- Web page: https://patentgrep.com/patent/US12015602B2

## CPC

- H04L 63/083: {using passwords (cryptographic mechanisms or cryptographic arrangements for entity authentication using a predetermined code H04L9/3226)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 16/22: Indexing; Data structures therefor; Storage structures
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 63/102: {Entity profiles}
- H04L 2463/121: Timestamp
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for transmitting data objects among user profiles receives a request to transmit a particular number of a first type of data object to a receiver profile. The system determines whether a sender profile is associated with the particular number of the first type of data object. In response to determining that the sender profile is not associated with the particular number of the first type of data object, the system identifies one or more other types of data objects that correspond to the particular number of the first type of data object. The system initiates a user interaction session. The system generates a block within a blockchain network to store user interaction session metadata. The system transmits the identified one or more other types of data objects to the receiver profile. The system stores, in the block, a completion token that indicates the user interaction session is completed.

## Claims

### Claim 1

A system for transmitting data objects among user profiles using a blockchain comprising:
a blockchain network comprising a sender node and a receiver node, wherein:
the sender node is associated with a sender profile; and
the receiver node is associated with a receiver profile; and
a processor, communicatively coupled with the blockchain network, and configured to:
receive a request to transmit a particular number of a first type of data object to the receiver profile;
evaluate the sender profile to determine whether the sender profile is associated with the particular number of the first type of data object;
in response to determining that the sender profile is not associated with the particular number of the first type of data object, determine whether the sender profile is associated with one or more other types of data objects that correspond to the particular number of the first type of data object;
in response to determining that the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object:
initiate a user interaction session between the sender profile and the receiver profile, wherein during the user interaction session the one or more other types of data objects are transmitted from the sender profile to the receiver profile;
generate a block in the blockchain network, wherein:
the block is used to store user interaction session metadata comprising one or more of the sender profile, the receiver profile, and the requested data object; and
the block comprises a storage capacity;
retrieve the one or more other types of data objects from the sender profile;
transmit the one or more other types of data objects from the sender profile to the receiver profile;
store, in the block, an indication that the one or more other types of data objects are transmitted from the sender profile to the receiver profile; and
store, in the block, a completion token that indicates the user interaction session is completed.

### Claim 2 (depends on 1)

The system of claim 1, wherein the processor is further configured to distribute the user interaction session between a plurality of nodes within the blockchain network such that the user interaction session is verifiable at any node from among the plurality of nodes.

### Claim 3 (depends on 1)

The system of claim 1, wherein the processor is further configured to, in response to determining that the sender profile is not associated with the particular number of the first type of data object, determine whether the sender profile is associated with two or more types of data objects that in the aggregate amount to the particular number of the first type of data object.

### Claim 4 (depends on 1)

The system of claim 1, wherein:
the sender profile is associated with a first organization; and
the processor is further configured to:
determine whether the one or more other types of data objects are available to be transmitted to the receiver profile at a particular timestamp;
in response to determining that the one or more other types of data objects are not available to be transmitted to the receiver profile at the particular timestamp:
fetch a number of second data objects equivalent to the particular number of the first type of data object from the first organization; and
transmit the number of second data objects to the receiver profile.

### Claim 5 (depends on 1)

The system of claim 1, wherein determining whether the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object comprises:
determining a plurality of performance indicators that indicate the performance of a plurality of data objects associated with the sender profile based at least in part upon historical data of the plurality of data objects, such that in response to determining that the historical data indicates that a value associated with a particular data object has become less than a threshold value, a low performance indicator is assigned to the particular data object, wherein each data object from among the plurality of data objects is associated with a different performance indicator from among the plurality of performance indicators;
ranking the plurality of data objects based at least in part upon the plurality of performance indicators; and
identifying one or more data objects that are associated with the least performance indicators less than a threshold performance indicator, and that correspond to the particular number of the first type of data object.

### Claim 6 (depends on 1)

The system of claim 1, wherein the processor is further configured to:
in response to determining that the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object:
generate a security token that is used to validate the user interaction session;
send a first copy of the security token in the sender node;
send a second copy of the security token in the receiver node; and
in response to transmitting the one or more other types of data objects from the sender profile to the receiver profile, determine whether the user interaction session is valid by determining whether the first copy of the security token matches the second copy of the security token.

### Claim 7 (depends on 1)

The system of claim 1, wherein each of the sender node and the receiver node comprises a computing device or a virtual machine.

### Claim 8

A method for transmitting data objects among user profiles using a blockchain comprising:
receiving a request to transmit a particular number of a first type of data object to a receiver profile;
evaluating a sender profile to determine whether the sender profile is associated with the particular number of the first type of data object;
in response to determining that the sender profile is not associated with the particular number of the first type of data object, determining whether the sender profile is associated with one or more other types of data objects that correspond to the particular number of the first type of data object;
in response to determining that the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object:
initiating a user interaction session between the sender profile and the receiver profile, wherein during the user interaction session the one or more other types of data objects are transmitted from the sender profile to the receiver profile;
generating a block in a blockchain network, wherein:
the blockchain network comprises a sender node and a receiver node;
the sender node is associated with the sender profile;
the receiver node is associated with the receiver profile;
the block is used to store user interaction session metadata comprising one or more of the sender profile, the receiver profile, and the requested data object; and
the block comprises a storage capacity;
retrieving the one or more other types of data objects from the sender profile;
transmitting the one or more other types of data objects from the sender profile to the receiver profile;
storing, in the block, an indication that the one or more other types of data objects are transmitted from the sender profile to the receiver profile; and
storing, in the block, a completion token that indicates the user interaction session is completed.

### Claim 9 (depends on 8)

The method of claim 8, further comprising distributing the user interaction session between a plurality of nodes within the blockchain network such that the user interaction session is verifiable at any node from among the plurality of nodes.

### Claim 10 (depends on 8)

The method of claim 8, further comprising, in response to determining that the sender profile is not associated with the particular number of the first type of data object, determining whether the sender profile is associated with two or more types of data objects that in the aggregate amount to the particular number of the first type of data object.

### Claim 11 (depends on 8)

The method of claim 8, further comprising:
determining whether the one or more other types of data objects are available to be transmitted to the receiver profile at a particular timestamp;
in response to determining that the one or more other types of data objects are not available to be transmitted to the receiver profile at the particular timestamp:
fetching a number of second data objects equivalent to the particular number of the first type of data object from a first organization, wherein the first organization is associated with the sender profile; and
transmitting the number of second data objects to the receiver profile.

### Claim 12 (depends on 8)

The method of claim 8, wherein determining whether the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object comprises:
determining a plurality of performance indicators that indicate the performance of a plurality of data objects associated with the sender profile based at least in part upon historical data of the plurality of data objects, such that in response to determining that the historical data indicates that a value associated with a particular data object has become less than a threshold value, a low performance indicator is assigned to the particular data object, wherein each data object from among the plurality of data objects is associated with a different performance indicator from among the plurality of performance indicators;
ranking the plurality of data objects based at least in part upon the plurality of performance indicators; and
identifying one or more data objects that are associated with the least performance indicators less than a threshold performance indicator, and that correspond to the particular number of the first type of data object.

### Claim 13 (depends on 8)

The method of claim 8, further comprising:
in response to determining that the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object:
generating a security token that is used to validate the user interaction session;
sending a first copy of the security token in the sender node;
sending a second copy of the security token in the receiver node; and
in response to transmitting the one or more other types of data objects from the sender profile to the receiver profile, determine whether the user interaction session is valid by determining whether the first copy of the security token matches the second copy of the security token.

### Claim 14 (depends on 8)

The method of claim 8, wherein each of the sender node and the receiver node comprises a computing device or a virtual machine.

### Claim 15

A computer program comprising executable instructions stored in a non-transitory computer-readable medium that when executed by a processor causes the processor to:
receive a request to transmit a particular number of a first type of data object to a receiver profile;
evaluate a sender profile to determine whether the sender profile is associated with the particular number of the first type of data object;
in response to determining that the sender profile is not associated with the particular number of the first type of data object, determine whether the sender profile is associated with one or more other types of data objects that correspond to the particular number of the first type of data object;
in response to determining that the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object:
initiate a user interaction session between the sender profile and the receiver profile, wherein during the user interaction session the one or more other types of data objects are transmitted from the sender profile to the receiver profile;
generate a block in a blockchain network, wherein:
the blockchain network comprises a sender node and a receiver node;
the sender node is associated with the sender profile;
the receiver node is associated with the receiver profile;
the block is used to store user interaction session metadata comprising one or more of the sender profile, the receiver profile, and the requested data object; and
the block comprises a storage capacity;
retrieve the one or more other types of data objects from the sender profile;
transmit the one or more other types of data objects from the sender profile to the receiver profile;
store, in the block, an indication that the one or more other types of data objects are transmitted from the sender profile to the receiver profile; and
store, in the block, a completion token that indicates the user interaction session is completed.

### Claim 16 (depends on 15)

The computer program of claim 15, wherein the instructions when executed by the processor further cause the processor to distribute the user interaction session between a plurality of nodes within the blockchain network such that the user interaction session is verifiable at any node from among the plurality of nodes.

### Claim 17 (depends on 15)

The computer program of claim 15, wherein the instructions when executed by the processor, further cause the processor to, in response to determining that the sender profile is not associated with the particular number of the first type of data object, determine whether the sender profile is associated with two or more types of data objects that in the aggregate amount to the particular number of the first type of data object.

### Claim 18 (depends on 15)

The computer program of claim 15, wherein the instructions when executed by the processor, further cause the processor to:
determine whether the one or more other types of data objects are available to be transmitted to the receiver profile at a particular timestamp;
in response to determining that the one or more other types of data objects are not available to be transmitted to the receiver profile at the particular timestamp:
fetch a number of second data objects equivalent to the particular number of the first type of data object from a first organization, wherein the first organization is associated with the sender profile; and
transmit the number of second data objects to the receiver profile.

### Claim 19 (depends on 15)

The computer program of claim 15, wherein determining whether the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object comprises:
determining a plurality of performance indicators that indicate the performance of a plurality of data objects associated with the sender profile based at least in part upon historical data of the plurality of data objects, such that in response to determining that the historical data indicates that a value associated with a particular data object has become less than a threshold value, a low performance indicator is assigned to the particular data object, wherein each data object from among the plurality of data objects is associated with a different performance indicator from among the plurality of performance indicators;
ranking the plurality of data objects based at least in part upon the plurality of performance indicators; and
identifying one or more data objects that are associated with the least performance indicators less than a threshold performance indicator, and that correspond to the particular number of the first type of data object.

### Claim 20 (depends on 15)

The computer program of claim 15, wherein the instructions when executed by the processor, further cause the processor to:
in response to determining that the sender profile is associated with the one or more other types of data objects that correspond to the particular number of the first type of data object:
generate a security token that is used to validate the user interaction session;
send a first copy of the security token in the sender node;
send a second copy of the security token in the receiver node; and
in response to transmitting the one or more other types of data objects from the sender profile to the receiver profile, determine whether the user interaction session is valid by determining whether the first copy of the security token matches the second copy of the security token.
