User Data Management for Augmented Reality Using Distributed Ledgers

A distributed ledger-based system with software contracts and encryption keys addresses the challenge of secure user data management in augmented reality, enabling user-controlled access and preventing unauthorized data access.

JP7599475B2Active Publication Date: 2024-12-13MAGIC LEAP INC
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2022506148
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-07-31
Filing Date
2020-07-29
Publication Date
2024-12-13
Estimated Expiration
2040-07-29

AI Technical Summary

Technical Problem

Existing systems fail to provide secure and user-controlled management of user data, particularly in augmented, mixed, and virtual reality environments, leading to privacy breaches and unauthorized data access.

Method used

A system utilizing a distributed ledger and software contracts to manage user privacy settings, generating public and private encryption keys, and securely storing and accessing user data based on these settings, ensuring only authorized entities can decrypt and access the data.

Benefits of technology

Ensures user data privacy by allowing users to control access and sharing of their data, preventing unauthorized decryption and maintaining data integrity and confidentiality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007599475000003
    Figure 0007599475000003
  • Figure 0007599475000004
    Figure 0007599475000004
  • Figure 0007599475000005
    Figure 0007599475000005
Patent Text Reader

Abstract

Disclosed herein are systems and methods for setting, accessing, and modifying user privacy settings using a distributed ledger. In one aspect, the system can search previously stored software constructs and identify the most recent version of the software construct associated with the user based on a request for access to user data related to a particular user. The system then determines that the user data is permitted to be shared. The system transmits instructions to a data virtualization platform to extract the encrypted user data from the data platform.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of priority to U.S. patent application Ser. No. 62 / 881,025, filed Jul. 31, 2019, and entitled “USER DATA MANAGEMENT FOR AUGMENTED REALITY USING A DISTRIBUTED LEDGER,” which is incorporated by reference in its entirety. (Limited Copyright Notice)

[0002] A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.

[0003] The present disclosure relates to systems and methods for secure data storage, transfer and access, and in particular to systems and methods for rule-based storage, transfer and access of data, which may be used within an augmented, mixed or virtual reality environment. [Background technology]

[0004] Companies collect vast amounts of user data about their users or customers. This user data can be used, for example, to build computer models for targeted advertising or statistical analysis. Companies collect and sell this user data for profit, which may come at the expense of the user's privacy and may be done without the user's knowledge. Recently, many companies that collect and sell user data have either been breached or hacked by third parties who are selling the data in the wrong way or stealing the data and later selling it on the black market. Summary of the Invention [Means for solving the problem]

[0005] Disclosed herein are systems and methods for setting, accessing, and modifying user privacy settings using a distributed ledger. In one aspect, the system can receive privacy settings associated with a user and create a software contract based, at least in part, on the privacy settings. The system can then create a private key and a public key. The system can store the software contract and the private key in the distributed ledger and transmit the public key to a device configured to collect user data and semantically tag the user data with metadata.

[0006] In another aspect, the system may receive a request from a data virtualization platform for access to user data relating to a particular user. The system may then search previously stored software constructs to identify the latest version of the software construct associated with the user, and based on the search, determine that the user data is permitted to be shared. The system may then transmit instructions to the data virtualization platform on how to extract the user data from the data platform. The system may then receive confirmation from the data platform that the user data has been transmitted to the data virtualization platform, and the system may then access the private encryption key and software construct associated with the user. The system may then transmit the private encryption key and details associated with the software construct to a data matching system, and may then receive an indication from the data matching system that the private encryption key and the user data match. Based on the received indication that the private encryption key and the user data match, the system then transmits the private encryption key to the data virtualization platform so that the data virtualization platform may decrypt the encrypted user data received from the data platform.

[0007] In yet another aspect, the system can receive a request from a data virtualization platform for access to user data associated with a particular user. The system can then search previously stored software constructs to identify software constructs associated with the user and determine, based on the search, that the user data is permitted to be shared. In some aspects, the user data can include third-party data from one or more third-party services. The system can then prepare and transmit to the data virtualization platform instructions on how to extract the third-party data from the one or more third-party services and receive notification from the data virtualization platform that the third-party data was successfully retrieved by the data virtualization platform. In response to receiving the notification, the system can retrieve a public encryption key from the software construct and transmit the public encryption key to the data virtualization platform such that the data virtualization platform can encrypt the third-party data and transmit the third-party data to the data platform for storage.

[0008] The augmented reality, virtual reality, and mixed reality systems described herein are merely examples and should not be construed as limiting the embodiments or aspects to the particular technologies described. Thus, although augmented reality, virtual reality, and mixed reality systems are described herein, it should be understood that the embodiments and disclosures may apply to any consumer electronic device that collects or generates data.

[0009] Details of one or more implementations of the subject matter described herein are set forth in the accompanying drawings and the following description. Other features, aspects, and advantages will be apparent from the description, drawings, and claims. Neither this summary nor the following detailed description purports to define or limit the scope of the subject matter of the present disclosure. Additional embodiments of the present disclosure are described below with reference to the appended claims, which may serve as additional explanations of the present disclosure. The present invention provides, for example, the following: (Item 1) 1. A user device, comprising: one or more computer-readable storage devices configured to store computer-executable instructions; A head-mounted display; a sensor configured to detect an environment of the user device; a distributed ledger manager, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; a data platform having one or more databases; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and transmitting to the user device: receiving a privacy setting associated with the first user; transmitting the privacy settings to a distributed ledger manager; and receiving from the distributed ledger manager a first public encryption key associated with the first user; collecting environmental data associated with the user device via the sensor; encrypting the environmental data based on the first public encryption key; semantically tagging the encrypted environmental data with metadata, the metadata indicating at least identifying information about the user device; transmitting the semantically tagged and encrypted environmental data to a data platform, the data platform comprising one or more databases; one or more hardware computer processors that perform the A user device comprising: (Item 2) 2. The user device of claim 1, wherein the public encryption key is generated by the distributed ledger manager based, at least in part, on the privacy preference. (Item 3) 3. A user device according to any one of claims 1-2, wherein the sensor includes one or more of an accelerometer, a camera, and a GPS sensor. (Item 4) A user device according to any one of items 1-3, wherein the metadata is not encrypted. (Item 5) 1. A user device, comprising: one or more computer-readable storage devices configured to store computer-executable instructions; A head-mounted display; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and transmitting to the user device: receiving a privacy setting associated with the first user; transmitting the privacy settings to the distributed ledger manager via the network interface for storage on a distributed ledger; and receiving from the distributed ledger manager via the network interface a first public encryption key associated with the first user; collecting environmental data associated with the user device via the sensor, the sensor being configured to detect surroundings of the user device; encrypting the environmental data based on the first public encryption key; semantically tagging the encrypted environmental data with metadata, the metadata indicating at least identifying information about the user device; transmitting the semantically tagged and encrypted environmental data via the network interface to a data platform, the data platform comprising one or more databases; one or more hardware computer processors that perform the A user device comprising: (Item 6) 6. The user device of claim 5, wherein the public encryption key is generated by the distributed ledger manager based, at least in part, on the privacy setting. (Item 7) 7. A user device according to any one of claims 5-6, wherein the sensor includes one or more of an accelerometer, a camera, and a GPS sensor. (Item 8) A user device according to any one of items 5-7, wherein the metadata is not encrypted. (Item 9) 1. A method comprising: receiving a privacy setting associated with a first user; transmitting the privacy settings to a distributed ledger manager, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; receiving from the distributed ledger manager a first public encryption key associated with the first user; collecting environmental data associated with the user device via a sensor, the sensor configured to detect surroundings of the user device; encrypting the environmental data based on the first public encryption key; semantically tagging the encrypted environmental data with metadata, the metadata indicating at least identifying information about the user device; transmitting the semantically tagged and encrypted environmental data to a data platform, the data platform comprising one or more databases; A method comprising: (Item 10) 10. The method of claim 9, wherein the public encryption key is generated by the distributed ledger manager based, at least in part, on the privacy preference. (Item 11) 11. The method of any one of claims 9-10, wherein the sensor includes one or more of an accelerometer, a camera, and a GPS sensor. (Item 12) 12. The method according to any one of claims 9-11, wherein the metadata is not encrypted. (Item 13) 1. A system comprising: one or more computer readable storage devices, said one or more computer readable storage devices comprising: computer executable instructions; a privacy setting associated with the user; a software construct, the software construct being based, at least in part, on the privacy setting; a private encryption key associated with the user, each user being assigned one private encryption key; public encryption keys associated with the users, each user being assigned one public encryption key; user data associated with said user; one or more computer readable storage devices configured to store A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing the system with: receiving, from a first device via the network interface, a first privacy setting associated with a first one of the users; creating a first software construct based at least in part on the first privacy setting, the first software construct being configured to implement the first privacy setting; creating and encrypting a first private key associated with the first user; storing the first software contract and the encrypted first private key; creating a first public key associated with the first user; transmitting the first public key via the network interface to the first device, the first device configured to collect first user data and semantically tag the first user data with first metadata; one or more hardware computer processors that perform the A system comprising: (Item 14) Item 14. The system of item 13, wherein the first software contract is a smart contract. (Item 15) Item 15. The system of item 14, wherein the first software contract and the encrypted first private key are stored in a distributed ledger. (Item 16) Further comprising a data platform comprising one or more databases; The one or more hardware computer processors further comprise: receiving first user data from the first device, the first user data being semantically tagged with one or more semantic tags; storing first user data in the data platform, the data platform being separate from the distributed ledger; Calculating and assigning a hash identification value to the first user data; encoding the one or more semantic tags and the hash identification value into a distributed ledger; 16. The system of any one of items 13-15, configured to: (Item 17) 17. The system of any one of items 13-16, wherein the first privacy setting is encrypted. (Item 18) 18. The system of any one of claims 13-17, wherein the first user data is based, at least in part, on environmental data collected by the first device. (Item 19) 19. The system of any one of items 13-18, wherein the first user data is encrypted. (Item 20) 20. The system of any one of claims 13-19, wherein the first metadata includes data indicating the date and time the first user data was collected, a device that collected the first user data, and an indication that the data is first user data. (Item 21) 1. A method comprising: receiving, from a first device, a first privacy setting associated with a first user of a plurality of users, each user of the plurality of users being associated with a privacy setting, a public encryption key, and a private encryption key; creating a first software construct based at least in part on the first privacy setting, the first software construct being configured to implement the first privacy setting; creating and encrypting a first private key associated with the first user; storing the first software contract and the encrypted first private key; creating a first public key associated with the first user; transmitting the first public key to the first device, the first device being configured to collect first user data and semantically tag the first user data with first metadata; A method comprising: (Item 22) 22. The method of claim 21, wherein the first software contract is a smart contract. (Item 23) 23. The method of claim 22, wherein the first software contract and the encrypted first private key are stored in a distributed ledger. (Item 24) receiving first user data, the first user data being semantically tagged with one or more semantic tags; storing first user data in a data platform, the data platform being separate from the distributed ledger and comprising one or more databases; calculating and assigning a hash identification value to the first user data; encoding the one or more semantic tags and the hash identification value into a distributed ledger; 24. The method according to any one of items 21-23, further comprising: (Item 25) 25. The method according to any one of claims 21-24, wherein the first privacy setting is encrypted. (Item 26) 26. The method of any one of claims 21-25, wherein the first user data is based, at least in part, on environmental data collected by the first device. (Item 27) 27. The method according to any one of claims 21-26, wherein the first user data is encrypted. (Item 28) 28. The method of any one of claims 21-27, wherein the first metadata includes data indicating the date and time the first user data was collected, a device that collected the first user data, and an indication that the data is first user data. (Item 29) 1. A system comprising: one or more computer readable storage devices, said one or more computer readable storage devices comprising: computer executable instructions; a privacy setting associated with the user; a software construct, the software construct being based, at least in part, on the privacy setting; a private encryption key associated with the user, each user being assigned one private encryption key; one or more computer readable storage devices configured to store a data virtualization platform comprising a user interface configured to display user data; a data platform configured to store user data associated with said user; a data matching system configured to determine whether a private encryption key matches encrypted user data such that the user data can be decrypted with the private encryption key; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing the system with: receiving a request for access to first user data from the data virtualization platform via the network interface, the first user data being associated with a first user; searching the software components to identify a latest version of a first one of the software components associated with the first user; determining, based on the search, at least in part, that the first user data is permitted to be shared based on the first software contract; preparing and transmitting instructions to the data virtualization platform via the network interface for extracting the first user data from the data platform; receiving from the data platform, via the network interface, a confirmation that the first user data has been encrypted and transmitted to the data virtualization platform, the confirmation including a description of the first user data transmitted; in response to receiving the confirmation, accessing a first private encryption key associated with the first user and the first software contract; transmitting to the data matching system via the network interface the first private encryption key and details associated with the first software contract; receiving an indication from the data matching system via the network interface that the first private encryption key and the first user data match; based on the received indication that the first private encryption key and the first user data match, transmitting the first private encryption key to the data virtualization platform via the network interface such that the data virtualization platform may decrypt the encrypted first user data received from the data platform; one or more hardware computer processors that perform the A system comprising: (Item 30) 30. The system of claim 29, wherein the private encryption keys, including the first private encryption key, are stored in a distributed ledger. (Item 31) 31. The system of any one of claims 29-30, wherein the software contracts, including the first software contract, are smart contracts. (Item 32) 32. The system of any one of claims 29-31, wherein the software contracts, including the first software contract, are stored in a distributed ledger. (Item 33) The one or more hardware computer processors further comprise: generating a second private encryption key; generating and storing a second software construct that includes the second private encryption key; transmitting the first private encryption key and the second private encryption key to the data platform via the network interface such that the data platform can decrypt the first user data with the first private encryption key and re-encrypt the first user data with the second private encryption key; 33. The system of any one of items 29-32, configured to: (Item 34) Item 34. The system of item 33, wherein the second software construct also stores a description of the first user data transmitted to the data virtualization platform. (Item 35) The system of any one of items 29-34, wherein the first user data that is determined to be allowed to be shared based, at least in part, on the first software contract is also based, at least in part, on an account associated with a purchaser device that accesses the data virtualization platform, the purchaser device being associated with a request for access to the first user data. (Item 36) 1. A method comprising: receiving a request for access to first user data from a data virtualization platform, the first user data being associated with a first user, the data virtualization platform comprising a user interface configured to display the user data; searching software constructs to identify a latest version of a first one of the software constructs associated with the first user, the software construct being based at least in part on the privacy settings; determining, based on the search, at least in part, based on the first software contract, that the first user data is permitted to be shared; preparing and transmitting instructions to the data virtualization platform for extracting the first user data from a data platform, the data platform being configured to store user data associated with the user; receiving confirmation from the data platform that the first user data has been encrypted and transmitted to the data virtualization platform, the confirmation including a description of the first user data transmitted; in response to receiving the confirmation, accessing a first private encryption key associated with the first user and the first software contract; transmitting the first private encryption key and details associated with the first software contract to a data matching system, the data matching system being configured to determine whether a private encryption key matches encrypted user data such that the user data can be decrypted with the private encryption key; receiving an indication from the data matching system that the first private encryption key and the first user data match; transmitting the first private encryption key to the data virtualization platform based on the received indication that the first private encryption key and the first user data match, such that the data virtualization platform may decrypt the encrypted first user data received from the data platform; A method comprising: (Item 37) Item 37. The method of item 36, wherein the private encryption keys, including the first private encryption key, are stored in a distributed ledger. (Item 38) 38. The method of any one of items 36-37, wherein the software contracts including the first software contract are smart contracts. (Item 39) 39. The method of any one of items 36-38, wherein the software contracts, including the first software contract, are stored in a distributed ledger. (Item 40) generating a second private encryption key; generating and storing a second software contract including the second private encryption key; transmitting the first private encryption key and the second private encryption key to the data platform such that the data platform can decrypt the first user data with the first private encryption key and re-encrypt the first user data with the second private encryption key; 40. The method according to any one of items 36-39, further comprising: (Item 41) Item 41. The method of item 40, wherein the second software construct also stores a description of the first user data transmitted to the data virtualization platform. (Item 42) The method of any one of items 36-41, wherein the first user data that is determined to be allowed to be shared based, at least in part, on the first software contract is also based, at least in part, on an account associated with a buyer device that accesses the data virtualization platform, the buyer device being associated with a request for access to the first user data. (Item 43) 1. A system comprising: one or more computer readable storage devices, said one or more computer readable storage devices comprising: computer executable instructions; a privacy setting associated with the user; a software construct, the software construct being based, at least in part, on the privacy setting; public encryption keys associated with said users, each user being assigned one public encryption key; one or more computer readable storage devices configured to store a data virtualization platform comprising a user interface configured to display user data; a data platform configured to store user data associated with said user; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing the system with: receiving a request for access to first user data from the data virtualization platform via the network interface, the first user data being associated with a first user; searching the software compartments to identify a first software compartment of the software compartments associated with the first user, the first software compartment being a most recent version; and determining, based on the search, at least in part, based on the first software contract, that the first user data is permitted to be shared, the first user data including first third-party data from one or more third-party services; preparing and transmitting to the data virtualization platform via the network interface instructions for extracting the first third party data from the one or more third party services; receiving a notification from the data virtualization platform via the network interface that the first third-party data has been successfully read by the data virtualization platform; responsive to receiving the notification, retrieving a first public encryption key from the first software construct; transmitting the first public encryption key to the data virtualization platform via the network interface such that the data virtualization platform may encrypt and transmit the third-party data to the data platform for storage. one or more hardware computer processors that perform the A system comprising: (Item 44) Item 44. The system of item 43, wherein the public encryption keys, including the first public encryption key, are stored in a distributed ledger. (Item 45) 45. The system of any one of claims 43-44, wherein the software contracts including the first software contract are smart contracts. (Item 46) 46. ​​The system of any one of claims 43-45, wherein the software contracts, including the first software contract, are stored in a distributed ledger. (Item 47) 47. The system of any one of claims 43-46, wherein the third-party data includes social media data. (Item 48) The one or more hardware computer processors further comprise: 48. The system of any one of claims 43-47, configured to, in response to receiving the notification, store data describing details associated with the reading of the third-party data. (Item 49) 49. The system of claim 48, wherein the data describing details associated with the reading of the third-party data includes information related to the extraction, processing, profiling or tagging, and encryption of the third-party data. (Item 50) The system of any one of items 43-49, wherein the first user data that is determined to be allowed to be shared based, at least in part, on the first software contract is also based, at least in part, on an account associated with a purchaser device that accesses the data virtualization platform, the purchaser device being associated with a request for access to the first user data. (Item 51) 1. A method comprising: receiving a request for access to first user data from a data virtualization platform, the first user data being associated with a first user, the data virtualization platform comprising a user interface configured to display the user data; searching software compartments to identify a first software compartment of the software compartments associated with the first user, the first software compartment being a most recent version; determining, based on the search, at least in part, based on the first software contract, that the first user data is permitted to be shared, the first user data including first third-party data from one or more third-party services; preparing and transmitting to the data virtualization platform instructions for extracting the first third party data from the one or more third party services; receiving a notification from the data virtualization platform that the first third-party data has been successfully read by the data virtualization platform; responsive to receiving the notification, retrieving a first public encryption key from the first software contract; transmitting the first public encryption key to the data virtualization platform such that the data virtualization platform may encrypt and transmit the third-party data to a data platform for storage; A method comprising: (Item 52) Item 52. The method of item 51, wherein the public encryption keys, including the first public encryption key, are stored in a distributed ledger. (Item 53) 53. The method of any one of items 51-52, wherein the software contracts including the first software contract are smart contracts. (Item 54) 54. The method of any one of claims 51-53, wherein the software contracts, including the first software contract, are stored in a distributed ledger. (Item 55) 55. The method of any one of claims 51-54, wherein the third-party data includes social media data. (Item 56) 56. The method of any one of claims 51-55, further comprising the step of storing data describing details associated with the reading of the third-party data in response to receiving the notification. (Item 57) 57. The method of claim 56, wherein the data describing details associated with the retrieval of the third-party data includes information related to the extraction, processing, profiling or tagging, and encryption of the third-party data. (Item 58) The method of any one of items 51-57, wherein the first user data that is determined to be allowed to be shared based, at least in part, on the first software contract is also based, at least in part, on an account associated with a buyer device that accesses the data virtualization platform, the buyer device being associated with a request for access to the first user data. (Item 59) A data platform, one or more computer readable storage devices, said one or more computer readable storage devices comprising: computer executable instructions; public encryption keys associated with users, each user being assigned one public encryption key; user data associated with the user; an identification value associated with said user data; one or more computer readable storage devices configured to store a distributed ledger manager, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing to the data platform: receiving a first one of the user data from a first device via the network interface, the first user data including data that is encrypted and semantically tagged with first metadata; storing the first user data in the one or more computer readable storage devices; calculating an identification value for the first user data, the identification value being based on a hash algorithm; assigning said identification value to said first user data; storing the calculated identification value in the one or more computer readable storage devices; transmitting transaction data to the distributed ledger manager via the network interface, the transaction data including the calculated identification value, the first metadata, and information related to a transfer of first user data from the first user device to the data platform; one or more hardware computer processors that perform the A data platform that provides: (Item 60) 60. The data platform of claim 59, wherein the first metadata includes data indicating a date and time the first user data was collected, a device that collected the first user data, and an indication that the data is first user data. (Item 61) The data platform of any one of items 59-6, wherein the first user data is encrypted based on a first public encryption key associated with the first user. (Item 62) 62. The data platform of any one of claims 59-61, wherein the distributed ledger manager is configured to encode the transaction data into a distributed ledger. (Item 63) 63. The data platform of any one of items 59-62, wherein the first user data is based, at least in part, on environmental data collected by the first device. (Item 64) 1. A method comprising: receiving first user data from a first device, the first user data comprising data that is encrypted and semantically tagged with first metadata; storing the first user data in the one or more computer readable storage devices; calculating an identification value for the first user data, the identification value being based on a hash algorithm; assigning said identification value to said first user data; storing the calculated identification value in the one or more computer readable storage devices; transmitting transaction data via the network interface to a distributed ledger manager, the transaction data including the calculated identification value, the first metadata, and information related to a transfer of first user data from the first user device to the data platform, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; A method comprising: (Item 65) Item 65. The method of item 64, wherein the first metadata includes data indicating a date and time the first user data was collected, a device that collected the first user data, and an indication that the data is first user data. (Item 66) 66. The method of any one of items 64-65, wherein the first user data is encrypted based on a first public encryption key associated with the first user. (Item 67) 7. The method of any one of claims 64-66, wherein the distributed ledger manager is configured to encode the transaction data into a distributed ledger. (Item 68) Item 68. The method of any one of items 64-67, wherein the first user data is based, at least in part, on environmental data collected by the first device. (Item 69) A data platform, one or more computer readable storage devices, said one or more computer readable storage devices comprising: Executable instructions; User data associated with the user; one or more computer readable storage devices configured to store a data virtualization platform comprising a user interface configured to display user data; a data matching system configured to determine whether a private encryption key matches encrypted user data such that the user data can be decrypted with the private encryption key; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing to the data platform: receiving, from the data virtualization platform via the network interface, a first request for access to at least a portion of first user data, the first user data being associated with a first user; in response to receiving the first request, identifying, within the one or more computer readable storage devices, the first user data based, at least in part, on the first request, the first user data having been previously received from a first device and stored in response to receipt; transmitting at least a portion of the first user data to the data virtualization platform via the network interface, the first user data being encrypted and semantically tagged with first metadata; transmitting, via the network interface to a data matching system, confirmation of successful transmission of at least a portion of the first user data to the data virtualization platform and information describing the portion of the first user data that was transmitted, wherein the data matching system is configured to verify that at least a portion of the first user data associated with the first user and a first private encryption key match; one or more hardware computer processors that perform the A data platform that provides: (Item 70) 70. The data platform of claim 69, wherein the first metadata includes data indicating a date and time the first user data was collected, a device that collected the first user data, and an indication that the data is first user data. (Item 71) 71. The data platform of any one of items 69-70, wherein the first user data is encrypted based on a first public encryption key associated with the first user. (Item 72) 72. The data platform of any one of items 69-71, wherein the verified matching performed by the data matching system includes a determination that the first private encryption key can decrypt at least a portion of the first user data. (Item 73) a distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; The one or more hardware computer processors further include: receiving the first private encryption key and a second private encryption key from the distributed ledger manager via the network interface, the first and second private encryption keys associated with the first user; and identifying, within the one or more computer readable storage devices, the first user data, the first user data having been previously received from a first device and having been stored in response to receipt; decrypting the first user data with the first private encryption key; encrypting the decrypted first user data with the second private encryption key; storing the first user data encrypted with the second private encryption key in the one or more computer readable storage devices; 73. The data platform of any one of items 69-72, configured to cause (Item 74) The one or more hardware computer processors further include: receiving a second request from the data virtualization platform via the network interface for access to generic user data, the generic user data including anonymized and pseudonymized data associated with the user data and cannot be used to identify any of the users; and identifying, within the one or more computer readable storage devices, the general user data based, at least in part, on the request; and transmitting at least a portion of said general user data to said data virtualization platform via said network interface; 74. The data platform of any one of items 69-73, configured to cause (Item 75) 75. The data platform of any one of claims 69-74, further comprising the data matching system. (Item 76) 76. The data platform of any one of items 69-75, wherein the first request is based, at least in part, on a first software contract associated with the first user. (Item 77) 77. The data platform of any one of claims 69-76, wherein at least a portion of the first user data that is transmitted is based, at least in part, on a first software contract associated with the first user. (Item 78) A data platform as described in any one of items 69-77, wherein at least a portion of the first user data that is transmitted is based, at least in part, on an account associated with a buyer device accessing the data virtualization platform, the buyer device being associated with a request for access to the first user data. (Item 79) 1. A method comprising: receiving a first request for access to at least a portion of first user data from a data virtualization platform, the first user data being associated with a first user, the data virtualization platform comprising a user interface configured to display user data; in response to receiving the first request, identifying in one or more computer readable storage devices, at least in part, the first user data based on the first request, the first user data having been previously received from a first device and stored in response to receipt; transmitting at least a portion of the first user data to the data virtualization platform, the first user data being encrypted and semantically tagged with first metadata; transmitting to a data matching system a confirmation of successful transmission of at least a portion of the first user data to the data virtualization platform and information describing the transmitted portion of the first user data, the data matching system being configured to match at least a portion of the first user data associated with the first user and a first private encryption key, the data matching system being further configured to determine whether a private encryption key matches encrypted user data such that the user data may be decrypted with the private encryption key; A method comprising: (Item 80) 80. The method of claim 79, wherein the first metadata includes data indicating a date and time the first user data was collected, a device that collected the first user data, and an indication that the data is first user data. (Item 81) 81. The method of any one of items 79-80, wherein the first user data is encrypted based on a first public encryption key associated with the first user. (Item 82) 82. The method of any one of claims 79-81, wherein the verified matching performed by the data matching system includes a determination that the first private encryption key can decrypt at least a portion of the first user data. (Item 83) receiving the first private encryption key and a second private encryption key from a distributed ledger manager, the first and second private encryption keys associated with the first user, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; identifying, in the one or more computer readable storage devices, the first user data, the first user data having been previously received from a first device and having been stored in response to receipt; decrypting the first user data with the first private encryption key; encrypting the decrypted first user data with the second private encryption key; storing, in the one or more computer readable storage devices, the first user data encrypted with the second private encryption key; 83. The method according to any one of items 79-82, further comprising: (Item 84) receiving a second request from the data virtualization platform for access to generic user data, the generic user data including anonymized and pseudonymized data associated with the user data and which cannot be used to identify any of the users; identifying, within the one or more computer readable storage devices, the general user data based, at least in part, on the request; transmitting at least a portion of the general user data to the data virtualization platform; 84. The method according to any one of items 79-83, further comprising: (Item 85) 85. The method of any one of claims 79-84, wherein the data platform further comprises the data matching system. (Item 86) 86. The method of any one of claims 79-85, wherein the first request is based, at least in part, on a first software contract associated with the first user. (Item 87) 87. The method of any one of claims 79-86, wherein at least a portion of the first user data that is transmitted is based, at least in part, on a first software contract associated with the first user. (Item 88) A method according to any one of items 79-87, wherein at least a portion of the first user data that is transmitted is based, at least in part, on an account associated with a buyer device that accesses the data virtualization platform, the buyer device being associated with a request for access to the first user data. (Item 89) 1. A data virtualization platform, comprising: one or more computer readable storage devices, said one or more computer readable storage devices comprising: computer executable instructions; a private encryption key associated with a user, each user being assigned one private encryption key; User data associated with said user; one or more computer readable storage devices configured to store a distributed ledger manager, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; a data platform having one or more databases; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing the data virtualization platform with: receiving a first one of the private encryption keys from the distributed ledger manager via the network interface, the first private encryption key associated with a first user; receiving instructions from the distributed ledger manager via the network interface to retrieve a first user data of the user data from the data platform, the first user data being associated with a first user; preparing and transmitting, based on the received instructions, a first request for the first user data to the data platform via the network interface; receiving, from the data platform via the network interface, the first user data based on the first request, the first user data being encrypted; decrypting the first user data with the first private encryption key, the first user data being received from the data platform; and processing the decrypted first user data to anonymize and pseudonymize the first user data; determining the processed first user data by verifying that it is not possible to identify the first user based on the anonymized and pseudonymized first user data; one or more hardware computer processors that perform the A data virtualization platform. (Item 90) The one or more hardware computer processors further include: receiving from the distributed ledger manager via the network interface a second one of the private encryption keys, the second private encryption key associated with a second user; and receiving a first instruction from the distributed ledger manager via the network interface to read a second user data of the user data from the data platform, the second user data being associated with a second user; preparing and transmitting, to the data platform via the network interface, a second request for the second user data based on the first received instruction; receiving, from the data platform via the network interface, second user data based on the second request, wherein the second user data is encrypted; and decrypting the second user data with the second private encryption key and the second user data received from the data platform; processing the decrypted second user data to anonymize and pseudonymize the second user data; determining processed second user data by verifying that it is not possible to identify the second user based on the anonymized and pseudonymized second user data; Item 90. The data virtualization platform of item 89, configured to perform the steps of: (Item 91) The one or more hardware computer processors further include: Item 91. The data virtualization platform of item 90, configured to verify that it is not possible to identify the first user based on the anonymized and pseudonymized first user data. (Item 92) The one or more hardware computer processors further include: The data virtualization platform of any one of items 89-91, configured to display the processed first user data on an electronic user interface. (Item 93) The one or more hardware computer processors further include: receiving, via the electronic user interface, a second instruction to terminate use of the processed first user data; deleting the processed first user data and any data associated with the first user, including a first private encryption key, based on the received second instructions; 93. The data virtualization platform of any one of items 89-92, configured to: (Item 94) The one or more hardware computer processors further include: further processing the processed first user data to create analyzed first user data, the analyzed first user data including processed first user data having one or more analytical tools applied to the data, the one or more analytical tools including one or more of aggregation, pre-analysis, and contextualization; encoding the analyzed first user data with metadata, the metadata indicating at least that the analyzed first user data is associated with a first user; monitoring the analyzed first user data and preventing unauthorized export of some or all of the analyzed first user data from the data virtualization platform; 94. The data virtualization platform of any one of items 89-93, configured to: (Item 95) The one or more hardware computer processors further include: receiving a third request to transmit analytical data from the data virtualization platform, the analytical data including results associated with an analysis initiated by the data virtualization platform and data associated with the first user; and transmit data associated with an analysis initiated by the data virtualization platform based on the third request, and not transmit data associated with the first user. Item 95. The data virtualization platform of item 94, configured to perform the following: (Item 96) The one or more hardware computer processors further include: receiving, via the electronic user interface, a third instruction to terminate use of the processed first user data; deleting the processed first user data and any data associated with the first user, including a first private encryption key, based on the received third instructions; and Item 96. The data virtualization platform of item 95, configured to perform the following: (Item 97) The data virtualization platform of any one of items 89-96, wherein the instructions for retrieving first user data are based, at least in part, on a first software contract associated with the first user. (Item 98) A data virtualization platform as described in any one of items 89-97, wherein the instructions for retrieving the first user data are based, at least in part, on an account associated with a purchaser device accessing the data virtualization platform, the purchaser device being associated with a request for access to the first user data. (Item 99) 1. A method comprising: receiving a first one of the private encryption keys from a distributed ledger manager, the first private encryption key associated with a first user, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; receiving instructions from the distributed ledger manager to retrieve a first one of the user data from a data platform, the first user data being associated with a first user, the data platform comprising one or more databases; preparing and transmitting a first request for the first user data to the data platform based on the received instructions; receiving the first user data from the data platform based on the first request, the first user data being encrypted; decrypting the first user data with the first private encryption key and the first user data received from the data platform; processing the decrypted first user data to anonymize and pseudonymize the first user data; determining the processed first user data by verifying that it is not possible to identify the first user based on the anonymized and pseudonymized first user data; A method comprising: (Item 100) receiving a second one of the private encryption keys from the distributed ledger manager, the second private encryption key being associated with a second user; receiving a first instruction from the distributed ledger manager to retrieve a second one of the user data from the data platform, the second user data being associated with a second user; preparing and transmitting to the data platform a second request for the second user data based on the first received instruction; receiving, from the data platform, the second user data based on the second request, the second user data being encrypted; decrypting the second user data with the second private encryption key received from the data platform and the second user data; processing the decrypted second user data to anonymize and pseudonymize the second user data; determining the processed second user data by verifying that it is not possible to identify the second user based on the anonymized and pseudonymized second user data; 99. The method of claim 99, further comprising: (Item 101) The one or more hardware computer processors further include: Item 101. The method of item 100, configured to verify that it is not possible to identify the first user based on the anonymized and pseudonymized first user data. (Item 102) The method of any one of claims 99-101, further comprising the step of displaying the processed first user data on an electronic user interface. (Item 103) receiving, via the electronic user interface, a second instruction to terminate use of the processed first user data; deleting the processed first user data and any data associated with the first user, including a first private encryption key, based on the received second instruction; The method according to any one of items 99-102, further comprising: (Item 104) further processing the processed first user data to create analyzed first user data, the analyzed first user data comprising processed first user data having one or more analytical tools applied to the data, the one or more analytical tools comprising one or more of aggregation, pre-analysis, and contextualization; encoding the analyzed first user data with metadata, the metadata indicating at least that the analyzed first user data is associated with a first user; monitoring the analyzed first user data and preventing unauthorized export of some or all of the analyzed first user data from the data virtualization platform; The method according to any one of items 99-103, further comprising: (Item 105) receiving a third request to transmit analytical data from the data virtualization platform, the analytical data including results associated with an analysis initiated by the data virtualization platform and data associated with the first user; transmitting data associated with an analysis initiated by the data virtualization platform based on the third request, and not transmitting data associated with the first user; Item 105. The method of item 104, further comprising: (Item 106) receiving, via the electronic user interface, a third instruction to terminate use of the processed first user data; deleting the processed first user data and any data associated with the first user, including a first private encryption key, based on the received third instruction; Item 106. The method of item 105, further comprising: (Item 107) 107. The method of any one of claims 99-106, wherein the instructions for retrieving first user data are based, at least in part, on a first software contract associated with the first user. (Item 108) A method according to any one of items 99-107, wherein the instructions for retrieving the first user data are based, at least in part, on an account associated with a buyer device accessing the data virtualization platform, the buyer device being associated with a request for access to the first user data. (Item 109) 1. A data virtualization platform, comprising: one or more computer readable storage devices, said one or more computer readable storage devices comprising: computer executable instructions; User data associated with the user one or more computer readable storage devices configured to store a distributed ledger manager, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; A network interface; one or more hardware computer processors in communication with the one or more computer readable storage devices, executing the computer executable instructions, and providing the data virtualization platform with: receiving a first instruction from the distributed ledger manager via the network interface to retrieve third party data from a first one of the one or more third party services, the third party data being associated with a first user; Retrieving third-party data from the first third-party service associated with the first user based on the instructions; and processing the third-party data and encoding the third-party data with metadata, the metadata indicating a third-party service from which the third-party data was retrieved and that the third-party data is associated with the first user; combining third party data with previously retrieved data associated with the first user; transmitting to the distributed ledger manager via the network interface a notification of the third-party data that was retrieved, the notification including a time that the third-party data was retrieved and a service for which the third-party data was retrieved; and one or more hardware computer processors that perform the A data virtualization platform. (Item 110) Item 109. The data virtualization platform of item 109, wherein the one or more third-party services include a social media service. (Item 111) The data virtualization platform of any one of items 109-110, wherein the instructions for retrieving the third-party data include first user account information associated with the first third-party service. (Item 112) The data virtualization platform of any one of items 109-111, wherein the instructions for retrieving the third-party data include instructions on how to make at least one API call to the first third-party service. (Item 113) The one or more hardware computer processors further include: 13. The data virtualization platform of any one of items 109-112, configured to process the third-party data and remove any redundant information not required by the data virtualization platform. (Item 114) The one or more hardware computer processors further include: 114. The data virtualization platform of any one of claims 109-113, configured to process the third-party data and format the data into a configuration preferred by the data virtualization platform. (Item 115) 1. A data virtualization platform, comprising: receiving a first instruction to read third party data from a first of one or more third party services from a distributed ledger manager, the third party data being associated with a first user, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; retrieving third-party data from the first third-party service associated with the first user based on the instructions; processing the third-party data and encoding the third-party data with metadata, the metadata indicating a third-party service from which the third-party data was retrieved and that the third-party data is associated with the first user; combining third party data with previously retrieved data associated with the first user; transmitting to the distributed ledger manager a notification of the third-party data that was retrieved, the notification including a time that the third-party data was retrieved and a service for which the third-party data was retrieved; and Data virtualization platform, including: (Item 116) Item 116. The method of item 115, wherein the one or more third-party services include a social media service. (Item 117) 17. The method of any one of claims 115-116, wherein the instructions for retrieving the third-party data include first user account information associated with the first third-party service. (Item 118) Item 118. The method of any one of items 115-117, wherein the instructions for retrieving the third-party data include instructions on how to make at least one API call to the first third-party service. (Item 119) 19. The method of any one of claims 115-118, further comprising processing the third-party data to remove any redundant information not required by the data virtualization platform. (Item 120) 120. The method of any one of claims 115-119, further comprising processing the third-party data and formatting the data into a configuration preferred by the data virtualization platform. [Brief description of the drawings]

[0010] [Figure 1] FIG. 1 illustrates an example of a user data transaction system, including examples of interactions and data transfers between components of the system.

[0011] [Figure 2A] FIG. 2A illustrates a flow diagram of an exemplary method for creating or updating privacy settings for a user.

[0012] [Figure 2B] 2B-2C show swim lane flow diagrams of example methods for creating or updating privacy settings for a user. [Figure 2C] 2B-2C show swim lane flow diagrams of example methods for creating or updating privacy settings for a user.

[0013] [Diagram 3] 3 shows a flow diagram of an exemplary method for identifying, transmitting, and decrypting user data. Certain additional or alternative blocks are depicted in FIGS.

[0014] [Figure 4] 4 shows a flow diagram of a method for generating a new private encryption key and re-encrypting user data with the new private encryption key. Certain additional or alternative steps are depicted in FIG.

[0015] [Diagram 5] 5 shows a flow diagram of a method for appending social media data retrieved from one or more third party services to user data. An additional or alternative step is depicted in FIG. 6B.

[0016] [Figure 6A]6A shows a flow diagram of a method for verifying, processing, and monitoring user data. Certain additional or alternative steps are depicted in FIG.

[0017] [Figure 6B] 6B shows a flow diagram of an embodiment of a method for processing a request for anonymized and pseudonymized user data. Certain additional or alternative steps are depicted in FIGS.

[0018] [Figure 7A] FIG. 7A illustrates an example of a spatial computing device or wearable display system.

[0019] [Figure 7B] FIG. 7B diagrammatically illustrates one embodiment of a user data transaction system.

[0020] [Figure 8] FIG. 8 illustrates a computer system with which certain methods discussed herein may be implemented.

[0021] Throughout the drawings, reference numbers may be reused to indicate correspondence between referenced elements. The drawings are provided to illustrate example embodiments described herein and are not intended to limit the scope of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0022] Detailed Description overview Enterprises that provide spatial computing devices, and such devices to enterprise users or customers, can collect user data related to such users, which can include environmental data, i.e., data based on the surroundings of the spatial computing device. The type of user data that users will generate on and interact with a spatial computing device can be much more sensitive and valuable than that available on many other platforms or services today. For example, user data is more sensitive because it can provide information about the user's environment (e.g., the user's home, bedroom, office, faces and bodies of people in the neighborhood, or the like) and the user's personal identity (e.g., the user's personal preferences for products, people, places, the user's personal identification data, or the like). User data can also provide information about the user's physical capabilities (e.g., whether the user requires glasses or a prescription the user may require, the user's height, the user's weight, the user's stride length, the user's physical appearance, or the like). In some implementations, the user data can provide information about the user's health (e.g., heart rate, analysis of the user's blood through the user's skin, or the like). It may be desirable to protect this information to provide control over how user data is used. It may be advantageous for a spatial computing device or associated system to allow a user to control the level of protection for this information, such that the user controls data collection and / or sharing of the user's data based on the user's personal privacy preferences. For example, in some embodiments, a user may provide updateable privacy settings, which may be stored on an immutable distributed ledger, where incremental changes in privacy settings may be added to new locations and previous privacy settings may also be reviewed.

[0023] Through the use of public-key cryptography and public distributed ledger technology (e.g., blockchain, Bitcoin, Ethereum, Tangle, or equivalent) in conjunction with support for software contracts (e.g., smart contracts or equivalent), users can maintain control and privacy of their proprietary data. For example, users can control whether their data (e.g., user data collected from them) is available or shared at all, manage who has access to it, manage the portions of the data that are accessible or shared, manage who is accessible to which portions of the data, and users can benefit from providing access to some or all of the data. In addition, the systems and methods described herein can also foster trust between providers of such services (e.g., companies that collect or have collected user data, third-party companies hired to manage user data, or equivalent) and those who choose to use devices that collect user data.

[0024] A combination of software contracts (e.g., smart contracts, Ethereum smart contracts, Turing complete smart contracts, or equivalents) and key cryptography can provide a solution that can be tailored to include the richest data sets. The systems and methods described herein can provide a user-friendly way for users to maintain access to, and thus control over, their user data.

[0025] In some embodiments, key cryptography (e.g., public key cryptography or equivalent) can be configured to generate a pair of encryption keys, a public key and a private key, for each user of the platform. The public key can be shared publicly, while the private key is intended to remain only under the control of the user. One advantage of key cryptography can include data confidentiality, so that user data is kept private. For example, a user can encrypt its user data using its previously generated public key, and only the user would be able to decrypt the user data at a later point in time using its private key. Another advantage of key cryptography can include data authenticity, so that a user can digitally sign some piece of data using its private key to prove that they originated it.

[0026] A distributed ledger, in conjunction with software contract support, can provide a permissionless, trustless, censorship-resistant, and immutable ledger that can be configured to track the state of account balances and facilitate the transition of smart contracts from one valid state to another. Sometimes referred to as a shared ledger or distributed ledger technology or DLT, and which can also include tangles and other forms of distributed storage, a distributed ledger can be a consensus of replicated, shared, and synchronized digital data that is geographically spread across multiple facilities, countries, or institutions. One form of distributed ledger design is a blockchain system, which can be either public or private. A ledger may be distributed in a peer-to-peer network, and may comprise a distributed database that is spread across several nodes (devices), a directed acyclic graph (DAG), or other data structure. Data confidentiality and authenticity as described can be provided by a distributed ledger and can also be used outside the context of a distributed ledger via key cryptography. In the context of information security, distributed ledgers can also provide improved data integrity and non-repudiation. One advantage of public distributed ledger technology can include data integrity, for example, by ensuring that data is not manipulated without permission. Another advantage of public distributed ledger technology can include data availability and accessibility, for example, where users may connect and access data on the distributed ledger through the use of the Internet. For example, a central organization cannot block or grant special privileges to any party on the distributed ledger. Another advantage of public distributed ledger technology can include censorship resistance, for example. For example, a central organization cannot control who can and cannot store data on the blockchain.

[0027] Currently, distributed ledger technology has its limitations. For example, the technology can be expensive (e.g., transaction fees can be high), not entirely secure (e.g., 51% attacks, possible chain forks, or the like), not entirely scalable, and slower than traditional centralized services involving databases. Improvements to distributed ledger technology are ongoing and may affect the systems and methods described herein. Current limitations on distributed ledger technology should not be construed as limitations on the systems and methods described herein.

[0028] Improvements in distributed ledger technology will translate into improvements in the systems and methods described herein. For example, some improvements may include lower transaction fees, increased security (e.g., achieving a final state of the blockchain, resistance to 51% attacks, limiting the possibility of forking, or the like), increased scalability (e.g., through the use and implementation of sharding, different consensus mechanisms, or the like), or other new features or advantages that may directly or indirectly improve the systems and methods described herein.

[0029] Currently, storing large amounts of data on a distributed ledger can be expensive or cumbersome, so it is desirable to implement a solution in which a database is used to store data on a secure server, but where user privacy settings can be stored on the distributed ledger, however, it should be appreciated that as distributed ledger technology improves, both user privacy settings and user data can be stored and accessed via the distributed ledger.

[0030] In addition, designing a computer user interface that is usable by humans and easily learned can be difficult. The various embodiments of the interactive and dynamic user interface of the present disclosure are the result of significant research, development, refinement, iteration, and testing. This non-trivial development has resulted in the user interface described herein that may provide significant cognitive and ergonomic efficiencies and advantages over previous systems. The interactive and dynamic user interface includes improved human-computer interaction that may provide reduced mental workload, improved decision-making, reduced work stress, or the like for the user. For example, user interaction with the interactive user interface described herein may provide an optimized display of resource dependencies, or data transformations, relationships, allowing users to access, navigate, assess, and master such information more quickly than previous systems.

[0031] One advantage of the systems and methods described herein is that operators of data platforms, services associated with spatial computing devices, and any related services that collect user data will not have direct access to the user data because the data is encrypted and the operator would not have the proper key to decrypt the user data. For example, an advantage of such an implementation is that in the event of a security breach, if the user data is stolen, based on the encryption, it will be difficult to nearly impossible for the user data to be decrypted without the proper key. In addition, if a government agency orders the submission of user data from the operator, the operator will not be able to decrypt the user data and comply with such a submission order. This will allow the operator to avoid public relations that would leak such sensitive user data.

[0032] In some situations, users must trust that whoever hosts the user data will not modify or misuse the user data in any way. Because a user can store a hash of the user data in the blockchain before uploading the user data, it is easy to verify whether the user data has been tampered with. For example, a new hash of the uploaded user data can be determined and compared with the stored hash. Thus, another advantage of the systems and methods described herein is that there can be a verification procedure to verify whether the user data has been modified.

[0033] In some embodiments, should a user lose or forget their private key, a private key recovery option may be available. For example, using a series of two-factor authentication mechanisms (e.g., email, Facebook, SMS, phone, Phone-a-Friend, or equivalent), a user can retrieve access to the private key associated with their account across different devices. This would allow the same user to be logged in on different devices and different platforms.

[0034] In some embodiments, there may be issues with the entity sponsoring or hosting the user data unilaterally destroying or blocking access to the user data. However, in some embodiments, decentralized cloud storage solutions can be implemented (e.g., Sia, Storj, Filecoin, and / or IPFS). Encrypted user data may be stored on a decentralized cloud, and the sponsoring or hosting entity would have little or no control over the stored user data.

[0035] In addition, in some embodiments, a user may allow a third party to access the user data, and although such user data may only be accessible temporarily, the third party may still misuse the user data. In some embodiments, a non-centralized escrow-like mechanism may be implemented to resolve disputes over misused user data. After a user grants a third party permission to access the user's user data, the third party receiving or accessing the user data will be required to deposit a certain amount of coins, tokens, or funds as a promise not to misuse the user data (e.g., share the user data with or sell it to other unauthorized third parties, inadequately protect or fail to protect the user data from security breaches or unauthorized access, or the like). If a user alleges that a third party to whom the user gave access violated a pre-configured privacy agreement, for example, a decentralized autonomous organization (DAO) can decide who is responsible (e.g., OpenZeppelin and Aragon provide platforms to allow DAOs to make such decisions). If it is determined that there has been a privacy security breach, for example, the tokens entrusted by the third party may either be destroyed or deleted, or sent to the user. This will incentivize the third party not to misuse user data. Alternatively, any third party may be required to entrust a very large percentage of the funds they own. If the third party breaches the privacy of any of the users with whom the third party is transacting, the DAO can make a decision as to whether the third party is liable. If the third party is liable, all the entrusted funds will either be destroyed or deleted, or shared among the affected users. This will incentivize the third party not to breach the trust of any of the users, since the total amount entrusted may harm the third party if it is sufficiently high.

[0036] In some embodiments, distributed systems are often designed to be fault tolerant. Thus, even if one of the nodes in a cluster goes down, the system remains fully functional from the end user's perspective. However, if a node continues to function properly and acts as if it is functioning correctly, but carefully performs a different function, it may harm the integrity of the data and / or affect the user's experience. Nodes that take such misbehavior into account, for example, are called Byzantine Fault Tolerant. While many different forms of consensus protocols exist, Proof of Stake (PoS) and Roof of Work (PoW) are two of the most common because they take Byzantine Fault Tolerance into account. For example, PoW takes Byzantine Fault Tolerance into account by forcing misbehaving miners to expend a very large amount of computational resources if they wish to calculate blocks faster than the rest of the network. Rather than trying to attack the network, an attacker (e.g., a misbehaving miner or equivalent) can make more money by supporting the network as a legitimate miner. In another embodiment, PoS allows for Byzantine fault tolerance by forcing miners to deposit large amounts of funds if they wish to generate a block. Another miner or a different full node will attempt to reconcile the corresponding blockchains and if they determine that one of the miners has misbehaved and computed an incorrect block, they will signal to the rest of the network. Rather than trying to attack the network, an attacker (e.g., a misbehaving miner or equivalent) can make more money by supporting the network as a legitimate miner.

[0037] In some embodiments, the architecture described herein can support object recognizers (ORs) that rely on the user's sensor data. In some examples, if a spatial computing device provider hosts a third-party OR on the provider's server, the provider needs to be able to decrypt the user's data at some point. This means that an external OR cannot be started without the provider having direct access to the user's data. In another example, if the provider chooses to have the third party run the OR on its own server and gives the user control over which third parties have access to the user's user data, the user has the option to allow third party access to the user's user data, even if the provider is not able to decrypt the user data in the first place. Exemplary User Data Transaction System

[0038] FIG. 1 illustrates an example of a user data transaction system 100, including examples of interactions and data transfer between components of the system. For example, how internal components or systems of the user data transaction system 100 interact and what data is transferred between components or systems. The agent 106, distributed ledger 108, and software construct 110 may be the same as the agent, distributed ledger, and software construct described herein (e.g., with respect to other embodiments and examples), which are components or systems of the user data transaction system 100. Also, the described systems and components may include one component or many components. The components described herein are not meant to be comprehensive, but merely a sample of which components may be implemented. Some components may be combined, and others may be removed or substituted with similar components. Also, some components may be part of one system, or part of multiple systems connected and operating together to achieve the same or similar functions. Exemplary Agents

[0039] In some embodiments, the agent 106 can electronically communicate with various systems, which may include the distributed ledger 108, the data platform 112, the data virtualization system 111, and the user device 102 (e.g., a cellular phone, a tablet computer, an electronic reader, a smart watch, a head-mounted augmented, virtual, or mixed reality display system, a wearable display system, the wearable display system 1000 of FIG. 7A, or the like). In some embodiments, the agent 106 can comprise multiple systems connected via a local area network or via the Internet. Also, in some embodiments, for example, the agent 106, or a portion thereof, can be located on the user device 102, the data platform 112, the data virtualization system 111, or the buyer device 104. For example, the user data privacy system 103, including the agent 106 and the data platform 112, can comprise a privacy central data storage solution. The privacy central data storage solution can be private, public, or a combination of private and public components. In some embodiments, data or information (e.g., user data or the like) can be accessed from the privacy central data storage solution (or components thereof) through the use of application programming interface (API) calls. The agent 106 can determine the information to receive from various systems, process, and store in a distributed ledger (e.g., a blockchain, Tangle, or the like).

[0040] In some embodiments, the agent 106 can receive data or instructions from various systems that can be used to generate a software contract 110 (e.g., a smart contract or equivalent) and store the software contract 110 in the distributed ledger 108. For example, the agent 106 can receive privacy setting instructions from the user device 102, the agent 106 can then process the instructions and generate a smart contract that captures the privacy setting instructions, and the agent 106 can then write the smart contract to the blockchain. The types of data transmitted and received by the various systems, including the agent 106, are described in further detail with respect to the flowcharts in Figures 2-6.

[0041] In addition to generating and storing the software construct 110 on the distributed ledger 108, the agent 106 can also generate private and public keys. As discussed herein, key cryptography (e.g., public key cryptography or equivalent) can be configured to generate a pair of encryption keys, i.e., a public key and a private key, for each user of the platform. The public key can be shared publicly, while the private key is intended to remain only under the control of the user. One advantage of key cryptography can include data confidentiality, such that user data is kept private. For example, a user can encrypt its user data using its previously generated public key, and only the user would be able to decrypt the user data at a later point in time using its private key. Another advantage of key cryptography can include data authenticity, such that a user can digitally sign some piece of data using its private key to prove that they originated it. The private and public keys can be stored in the distributed ledger 108 or the software construct 110 and associated with the user for whom the key was generated. The private and public keys can be retrieved from the distributed ledger 108 or software construct 110 and transmitted to various systems, as described in further detail herein. The private key can be transmitted to or received from, for example, the data virtualization system 111, the data platform 112, and / or the user device 102.

[0042] An agent 106 can read software contracts 110 stored in the distributed ledger 108 and generate instructions to extract data based on a particular user's shared preferences reflected in that user's associated software contract 110. Such instructions can be transmitted to the data virtualization system 111, for example, such that the data virtualization system 111 can retrieve the relevant data from the data platform 112 or via one or more third-party services where the relevant data is stored.

[0043] In some embodiments, data transfer or transaction information regarding data accessed or transferred by various systems can be transmitted by the data virtualization system 111 or the data platform 112 to the agent 106. For example, the data virtualization system 111 or the data platform 112 reads / accesses or modifies user data it receives from one or more third-party services (e.g., social networks, file storage services, or the like) or data platforms, and the read / access and modification of such information can be tracked and monitored. The read / access and modification information can also be summarized and accounted for and then sent to the agent 106 for any further processing and storage on the distributed ledger 108. This information can be used, for example, to track or monitor who accessed what type of data and when.

[0044] In some implementations, the agent 106 (or one or more aspects of the agent 106) may include or be implemented within a "virtual computing environment." As used herein, the term "virtual computing environment" should be broadly construed to include computer-readable program instructions executed by one or more processors (e.g., as described below in the example of FIG. 8) to implement one or more aspects of the modules or functionality described herein. Furthermore, in this implementation, one or more modules or engines of the agent 106 may be understood to comprise one or more rule engines of the virtual computing environment that execute rules or other program instructions and modify the operation of the virtual computing environment in response to inputs received by the virtual computing environment. For example, a request received from the user device 102 may be understood to modify the operation of the virtual computing environment and cause the agent 106 to generate a software construct 110, a public or private key, or perform other operations. Such functionality may comprise modification of the operation of the virtual computing environment in response to inputs and according to various rules. Other functionality implemented by the virtual computing environment (as described throughout this disclosure) may further comprise modification of the operation of the virtual computing environment, e.g., the operation of the virtual computing environment may change in response to information gathered from the data platform 112, e.g., by the agent 106. The initial operation of the virtual computing environment may be understood as the establishment of the virtual computing environment. In some implementations, the virtual computing environment may comprise one or more virtual machines or other emulations of a computing system.In some implementations, the virtual computing environment may comprise a hosted computing environment that includes a collection of physical computing resources that may be remotely accessible and rapidly provisioned on an as-needed basis (commonly referred to as a "cloud" computing environment). Distributed Ledgers

[0045] The distributed ledger 108 can be part of the agent 106 or a separate system. The distributed ledger 108 can be configured to store one or more software constructs 110, multiple private and public keys, data transfer or transaction information regarding data accessed or transferred by various systems, and / or any other relevant information (e.g., the time the data was accessed, the account associated with the access, the person to whom the accessed data belongs, whether proper permissions were in place to access the data, the public or private key used to access the data, or the like).

[0046] The distributed ledger, in conjunction with software contract support, can provide a permissionless, trustless, censorship-resistant, and immutable ledger that can be configured to track the state of account balances and facilitate transitions of software contracts 110 from one valid state to another. The combination of software contracts 110 (e.g., smart contracts, Ethereum smart contracts, Turing-complete smart contracts, or equivalents) and key cryptography can provide a solution that can be tailored to include the richest data sets. The systems and methods described herein can provide a user-friendly way for users to maintain access to and / or control of their user data.

[0047] In some embodiments, data transfer or transaction information regarding data accessed or transferred by various systems can be stored in the distributed ledger 108. For example, the data virtualization system 111 may read / access or modify user data it receives from one or more third-party services (e.g., social networks, file storage services, or the like) or the data platform 112, and such read / access and modification information can be tracked and monitored. The read / access and modification information can also be summarized and explained and then sent to the agent 106 for any further processing and storage on the distributed ledger 108. This data transfer or transaction information can be used, for example, to track or monitor who accessed what type of user data and when.

[0048] While there may be inefficiencies with respect to certain implementations of distributed ledgers in the current state of the art (e.g., slower writes to various blocks of the blockchain), the technology is improving rapidly and soon the inefficiencies will be minimal or non-existent compared to traditional or distributed databases. Thus, while the embodiments and examples herein disclose a data platform 112 used to process and store user data, it should be understood that the distributed ledger 108 can be used in conjunction with or in place of the data platform 112 to store such user data.

[0049] In some embodiments, a private blockchain or distributed ledger can be implemented. A private distributed ledger can be useful when building secure services between companies that guarantee integrity. For example, a stock settlement service between three companies uses a private distributed ledger, so the three companies have access to the same information and do not need to trust each other. Alternatively, a bank can have a private distributed ledger for more secure and faster transfer of payments. When building non-centralized consumer-facing products, one goal can be to build a system where users do not need to trust the service provider. End users should be able to see who has accessed their data and how often. Users should have the ability to sync light or full nodes and reconcile their transactions. When transacting with another address, users should be able to see the transaction history and make their own decision as to whether they should trust an address. Software Contract

[0050] In some embodiments, software contracts 110 are self-executing contracts with the terms of agreement between two parties written directly into the lines of code. The code and the agreements contained therein exist across a distributed, decentralized, distributed ledger network. For example, software contracts 110 can allow trusted transactions and agreements to take place between heterogeneous, anonymous parties without the need for a central authority, legal system, or external enforcement mechanisms. They make transactions traceable, transparent, and irreversible. While standard contracts outline the terms of a relationship (usually enforceable by law), software contracts 110 enforce the relationship with cryptographic code. For example, software contracts 110 are programs that execute exactly as they are programmed.

[0051] In some embodiments, a user can update his / her personal privacy settings through his / her individual user device 102. Once the updates are received / accessed, the agent 106 will then prepare a new software construct 110 and store it in the distributed ledger 108. It should be understood that based on distributed ledger (e.g., blockchain, or equivalent) technology, many older versions of a user's software construct may exist and be visible / accessible in various places (e.g., blocks of the blockchain). Therefore, it is desirable for the agent 106 to be able to distinguish which software construct 110 is the latest version. For example, the agent 106 can process the software construct 110 with an alphanumeric identifier that indicates the version of the software construct 110 that is stored. In another embodiment, a date can be included with each software construct 110. In another embodiment, each software construct 110 may contain references to previous software constructs such that certain locations on the distributed ledger 108 will not need to be scrutinized or analyzed upon scrutiny of all software constructs (e.g., older blocks would not need to be searched, either based on included references or because the software construct will be found in newer blocks and will inherently be more up-to-date).

[0052] In some embodiments, a software contract 110 can be used, which can include a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or execution of an agreement. The software contract 110 can enable trusted execution of transactions that can be traceable and irreversible without third parties. Many types of contractual clauses can be made partially or fully self-executing, self-enforcing, or both. The software contract 110 can provide security over traditional contract methods and reduce other transaction costs associated with contracts. One example of a software contract 110 is a smart contract. An example of pseudocode in the Solidity programming language for the smart contract 110 is provided below.

[0053] [ka] [ka]

[0054] The following example flows illustrate how the database may function with encrypted data based on privacy settings set by the user. The example flows serve to illustrate some of the advantages of the system as they are used and operated. It should be understood that other flows not explicitly mentioned may also be generated or exist based on the disclosure set forth herein.

[0055] With regard to encryption keys, an example flow may include the following: In this embodiment, the smart contract acts as a small database that is continually updated as the user adds or removes the list of authorized parties that will have access to the user's data. For example, the user's private key can be securely transferred to the corresponding user device (e.g., 102) after an authentication process. A third party can then request access to the user's environmental data via a distributed ledger transaction. The user can deny access to the environmental data or grant access, either free or for a fee. For example, the user may request a flat-rate up-front fee, a subscription to the user's environmental data, or a bidding platform for the user's environmental data can be introduced. Now, assume for example that the user allows access to the user's environmental data and the third party makes the appropriate payment or consent. As a user generates new environmental data through use of the spatial computing device, the spatial computing device stores the encrypted data (e.g., in an encrypted data database 116) in a data platform (e.g., 112) and updates the state of the software construct 110 to indicate that the new data has been generated or stored. A third party can then query the software construct 110 to retrieve a decryption key and a list of file locations from which to retrieve the user's environmental data. The user can later remove the third party from the software construct (e.g., by creating a new software construct and replacing the old one, or the like), removing their access to the user's environmental data.

[0056] Additionally, in another exemplary flow, even if there may be sensor data stored on a data platform (e.g., 112), an operator of the data platform would be able to decrypt the data because the operator would not have access to the necessary key. For example, an asymmetric private key can be generated for the user and securely transferred to the user's spatial computing device. A temporary symmetric file encryption key can also be generated. The user's sensor data (e.g., environmental data or other user data) generated by the spatial computing device is encrypted using a temporary symmetric file, and a hash of the user's sensor data is calculated as well. The encrypted sensor data is stored on a data platform (e.g., operated by a vendor of the spatial computing device) and a Uniform Resource Identifier (URI) is retrieved. The spatial computing device queries a software contract on the distributed ledger and retrieves a list of all pending third parties interested in the sensor data.

[0057] In some embodiments, the spatial computing device can periodically synchronize the user device 102 with the light nodes of the distributed ledger. Light nodes, i.e., lightweight nodes, do not need to download the full distributed ledger. Instead, light nodes download only block headers and verify the authenticity of transactions. Light nodes are easy to maintain and run on the system. The user selects the third party to which the user wishes to grant permission to its sensor data. In exchange for granting permission, an immediate transfer of funds, points, credits, or the like, or a subscription model between the third party and the user, can occur on the distributed ledger. With respect to the third party, the spatial computing device encrypts a symmetric file encryption key using the provided public key. All encrypted keys are stored with the third party address and with respect to the approved third party. The user adds the URI, hash, and some metadata of the sensor data to the software contract. This set of steps can be repeated each time more sensor data is generated. Any authorized third party can query the software contract and use its private key to retrieve the temporary symmetric file encryption key, then download and decrypt the sensor data. From time to time, if the user wishes to change who has access to its sensor data, the user simply updates the user's privacy settings. Updating the user's privacy settings will trigger the user device to recalculate the temporary symmetric file encryption key and omit the public keys of the other parties when updating the software contract. The selected parties may have access to previously generated data, but may not have access to any newly generated sensor data. Additionally, the temporary symmetric file encryption key can be recalculated periodically or on a per-file basis for added security.In some embodiments, any modification of a software contract that corresponds to a user's address must be signed with an asymmetric private key.

[0058] In some embodiments, a blockchain is used as the distributed ledger. The cost of a blockchain transaction is based on the software contract platform selected. For example, if the Ethereum platform is selected and implemented, transaction times and costs will depend heavily on network usage and the state of the final software or smart contract. Costs may be associated with, for example, publishing the software contract, making a request for a third party to gain access to the user's data, the user updating the list of approved third parties, and the user adding metadata for new user data. In some embodiments, the user updating the list of approved third parties and the user adding metadata for new user data can be batched so that the software contract is updated to the user less frequently and at a much lower cost. In addition, Ethereum is also exploring ways through the software contract to be paid for transactions on behalf of the user, which would be desirable to implement the described system and method. This may provide a way to help new users join until they earn a certain amount of money or points for allowing access to their data and can support further transactions for them. EOS is also a different type of software contract platform that uses a different consensus mechanism called delegated proof-of-stake. At the cost of lower security and integrity, all transactions are free for everyone and costs can be avoided entirely, making it a useful alternative to other smart contract platforms. An exemplary data platform

[0059] The data platform 112 can include, for example, an anonymized and pseudonymized data database 114, an encrypted data database 116, and a data matching system 118. The data platform 112 can also be used to process and store data. For example, the data platform 112 can store user data or environmental data, including data that the user device 102 collects about the environment of the user device 102 (e.g., ambient information about a room or area, including people's faces, room size, artwork, or anything that may be around a person in a private or public space). In some embodiments, the data platform 112 can also store multiple private and public keys, data transfer or transaction information regarding data accessed or transferred by various systems, or any other relevant information (e.g., the time the data was accessed, the account associated with the access, the person who accessed the data to which it belongs, whether the proper permissions were in place to access the data, the public or private key used to access the data, or the like). In some embodiments, some data is temporarily stored until it is transmitted to the agent 106 for storage on the distributed ledger 108. In some embodiments, part of the data is stored in the data platform 112 and other part is stored in the distributed ledger 108. However, in some embodiments, data may be stored in both systems as a form of redundancy or efficiency.

[0060] The type of user data generated on a spatial computing device can be very personal and in some cases confidential, proprietary, or sensitive. Such user data can be used to build a model of the user's environment and enable content persistence and shared experiences. Doing this involves an object recognizer pipeline to detect and semantically label real objects in the user's surroundings, a world reconstruction pipeline that builds dense meshes for occlusion and collision detection, a map merging pipeline to ensure that users in the same space operate in the same coordinate frame, and the ability to pin and restore virtual content created or shared with the user. For example, a single user's session may generate hundreds of megabytes of user data to do all of the above possibilities. It is desirable for this user data to be stored in a secured manner to create an engaging and immersive experience, but also available to the user, the provider of the spatial computing device, and certain third parties. An exemplary flow for collecting such data without the use of a distributed ledger is as follows:

[0061] 1. A user captures raw sensor data with a spatial computing device.

[0062] 2. A user encrypts data on a spatial computing device.

[0063] 3. The user stores the encrypted data in a cloud storage device (e.g., a data platform) owned by the spatial computing company that provides the spatial computing device.

[0064] 4. The spatial computing company maintains a copy of the user's key that was stored on the device during the manufacturing process.

[0065] 5. Spatial computing companies will decipher your data and build a model of your environment.

[0066] 6. Spatial computing companies will decrypt your data and share it with third parties.

[0067] The systems and methods described herein provide a solution that would give users personalized control over who has access to their user data, what portions of their data are available for access, who may benefit from providing access to that user data, and mechanisms for ensuring the integrity of their user data. For example, users have the option to grant third parties access to their user data without first allowing spatial computing companies to decrypt the data themselves. In the ever-changing field of global consumer data privacy laws, implementations that limit spatial computing companies' access to sensitive data are advantageous in the event of a security breach or non-compliance with such privacy laws. Exemplary Anonymized and Pseudonymized Data Databases

[0068] The anonymized and pseudonymized data database 114 may include user data or environmental data that has been processed to remove any references or indications of the origin of the data. For example, an entity accessing such information stored on the anonymized and pseudonymized data database 114 would not be able to reverse engineer the person / user or people / users associated with the data. It should be understood that in some situations (e.g., small data sets or the like), an entity may be able to statistically narrow down likely users based on certain factors and based on the entity's own proprietary or other publicly accessible information. However, the data itself should not, by itself, indicate the person to whom the data belongs. For example, if a company could access anonymized and pseudonymized data from the anonymized and pseudonymized data database 114 regarding any user using a user device 102 in Butte, Montana, this could provide results regarding 10 people. The company could then determine, within a certain threshold, some of the 10 people, either based on the results alone or with additional proprietary or publicly available data. However, data anonymization and pseudonymization itself does not provide such an indication, and in particular it is desirable to limit any reverse analysis based solely on the results as much as possible. It is therefore important that the algorithms that anonymize and pseudonymize the data are proven to be properly tested and implemented, and that the anonymized and pseudonymized data is cross-checked, in some embodiments, before being provided to third parties.

[0069] In some embodiments, when the data virtualization system 111 requests data from the data platform 112, the data platform 112 can access the anonymized and pseudonymized data database 114, identify relevant encrypted user data, and transmit the anonymized and pseudonymized data to the data virtualization system 111. Data about the transaction can be recorded, and information about the transaction can be transmitted to the agent 106 for processing and storage on the distributed ledger 108. Processing can include associating the transaction data with a particular user or user device 102 or location on the distributed ledger. Processing can also include formatting the data to properly store in the distributed ledger 108 without any errors and for optimized or efficient retrieval or review. Exemplary Encrypted Data Database

[0070] The encrypted data database 116 can store encrypted user or environmental data received from the user devices 102. In some embodiments, the data platform 112 can encrypt the data prior to storage. In some embodiments, the user devices 102 can encrypt the data (e.g., with a public or private encryption key) prior to transmission to the data platform 112 for storage. In some implementations, it may be desirable for the user devices 102 to encrypt their own data to increase overall system security, for example, in the event of a security breach. If a security breach occurs and the data platform 112 is compromised, the encrypted data would not be useful to any security breacher because the encrypted data never arrived decrypted to the data platform 112 and the keys required for decryption may be stored in a separate location (e.g., the distributed ledger 108 or the user devices 102).

[0071] In some embodiments, when the data virtualization system 111 requests data from the data platform 112, the data platform 112 can access the encrypted data database 116, identify the relevant encrypted user data, and transmit the encrypted data to the data virtualization system 111. Data about the transaction can be recorded, and information about the transaction can be transmitted to the agent 106 for processing and storage on the distributed ledger 108. Processing can include associating the transaction data with a particular user or user device 102 or location on the distributed ledger 108. Processing can also include formatting the data to properly store in the distributed ledger 108 without any errors and for optimized or efficient retrieval or review. Exemplary Data Collation System

[0072] The data matching system 118 can match various information prior to transmission between various systems. For example, as described in more detail with respect to FIG. 3, the data matching system 118 can receive confirmation that the private encryption key and software or smart contract criteria or rules, as well as the associated encrypted user data, have been transmitted to the data virtualization system 111 (e.g., including information describing the time and type of transmission and a description of the user data, or any other information that may be relevant). The data matching system 118 can then match that the encrypted user data and the private encryption key match (e.g., by decrypting the data), and then transmit the match result to the agent 106, enabling the agent to transmit the matched private encryption key to the data virtualization system 111 and decrypt the encrypted user data already received. Exemplary Data Virtualization System

[0073] The data virtualization system 111 can communicate with the buyer device 104, the data platform 112, and the agent 106. The data virtualization system 111 can receive a request from the buyer device 104 to access, request, or retrieve certain information or user data. For example, the data virtualization system 111 can request user data from the data platform 112 and, if permitted, receive the requested user data (e.g., encrypted user data). In some embodiments, instructions on how to extract data or what data to extract (e.g., based on the terms of a software contract) can be transmitted to the data virtualization system 111 prior to the data virtualization system 111 sending the request to the data platform 112. In addition, for example, the data virtualization system 111 can receive a private encryption key associated with user data or users of one or more user devices. The private encryption key can be used to decrypt the encrypted user data received from the data platform 112. Additionally, in some embodiments, data transaction information (e.g., information regarding the downloading, reading, accessing, or receiving of a user's relevant data from one or more third-party services or data platforms, or the like) may be transmitted to agent 106 for storage.

[0074] The data virtualization system 111 may provide a user interface to facilitate interaction and manipulation by the buyer device 104 of any user data received and decrypted by the data virtualization system 111. The data virtualization system 111 may also provide an analysis tool configured to provide statistical results, charts, graphs, and models for the buyer device 104 to interact with and manipulate. The data virtualization system 111 may also enable downloading of the results of the analysis. However, in some embodiments, possibly based on user privacy settings dictated by the software construct 110, for example, the data virtualization system 111 may block download or transmission of the decrypted user data and limit the use of the decrypted user data to only the active buyer device 104 session. Upon termination of the session, the data may be deleted and a new private encryption key may be prepared to decrypt the user data, improving security (e.g., so that the released private encryption key is no longer useful). This process is described in further detail, for example, with respect to FIGS. 3 and 4. Exemplary User Device

[0075] The user device 102, in some embodiments, can communicate with the agent 106 and with the data platform. For example, the user device 102 can receive a public or private encryption key from the agent to encrypt any collected or generated user data or environmental data. The encrypted user data can be transmitted to the data platform at certain time intervals (e.g., in real time as the data is generated, daily, hourly, or upon connection to a network, or any other desired time or interval) for storage. In some embodiments, the key is not transmitted to the user device 102, and the collected or generated user data can be encrypted and then transmitted to the data platform 112 for storage. As discussed above and herein, in some implementations, it may be desirable for the user device 102 to encrypt its own data, for example, in the event of a security breach, to increase overall system security. If a security breach occurs and the data platform 112 is compromised, the encrypted data would be useless to any security breacher because it never arrived decrypted to the data platform 112 and the keys needed for decryption may be stored in a separate location (e.g., the distributed ledger 108 or the user device 102).

[0076] A user associated with a user device 102 can also provide user privacy settings or rules. A user has control over their own user data and environmental data generated by their device. A user also has control over the user data that can be accessed from other sources (e.g., (e.g., third parties, other devices, the user themselves, or any other data available). For example, a user can indicate their privacy settings or rules, which are associated with their user data via a web browser or other input method. The privacy settings can indicate limitations regarding the accessibility, sharing, or sale of the user data. For example, privacy settings can indicate limitations regarding the accessibility, sharing, or sale of the user data, including, but not limited to, the following: types of purchasers who may or may not access or purchase the user data, limitations regarding the type of data that can be accessed (e.g., environmental data, third party data associated with the user, user-provided data, or the like), limitations regarding when the data is accessible (e.g., (e.g., time of day, week, or month), limitations regarding how often the data is accessible, etc. , the purpose of the access, the type of access (e.g., type of machine connecting or accessing), the location of the access (e.g., (e.g., country of origin of the buyer system as determined via IP), permissions regarding external data sources (e.g., whether social media data can be imported to append user data), or any other relevant factors. Privacy settings may also include blacklists or whitelists, offering the user the ability to block or allow access to specific people, entities, companies, or the equivalent by name or type. For example, a user may add all banks or associated companies to a blacklist, blocking all user data from being accessed by banks and associated companies. In some embodiments, user privacy settings or privacy rules may be updated by the user from time to time.After a user updates their privacy settings, all future transaction events involving the user's user data will be controlled by the newly updated privacy settings. Exemplary Purchaser Devices

[0077] The buyer device 104 can communicate with the data virtualization system 111. The buyer device 104 can be operated by or associated with a buyer. The buyer can use the buyer device 104 to purchase, view, access, review, analyze, or interact with available user data through the data virtualization system 111. It should be understood that any user data that a buyer may purchase or access is based, at least in part, on each user's privacy settings as programmed into each user's individual software contract. In some embodiments, the software contract can also define the types of buyers that should or should not have access to the data. For example, a particular user may be prohibited from all banks or bank salespeople from accessing the data because they may fear that it may affect their creditworthiness.

[0078] In some embodiments, the data virtualization system 111 may include a user interface to facilitate interaction and manipulation by the buyer device 104 of any user data received and decrypted by the data virtualization system 111. The data virtualization system 111 may also provide analytical tools configured to provide statistical results, charts, graphs, and models for the buyer device 104 to interact with and manipulate. The data virtualization system 111 may also enable downloading of the results of the analysis. However, in some embodiments, possibly based on user privacy settings, e.g., dictated by the software construct 110, the data virtualization system 111 may block download or transmission of the decrypted user data and limit the use of the decrypted user data (e.g., use may be limited to only active buyer device 104 sessions, or certain analytical tools may be blocked or limited, or the like). For example, upon termination of an active buyer device 104 session, the data may be deleted and a new private encryption key may be prepared to decrypt the user data, improving security (e.g., such that the released private encryption key is no longer useful). This process is described in further detail, for example, with respect to FIGS.

[0079] The user device 102 or the purchaser device 104 may include, for example, an augmented, mixed, or virtual reality display device such as the wearable display system 1000 described with reference to FIG. 7A, or devices 702a-702c described with reference to FIG. 7B, or the user device 824 described with reference to FIG. 8. Description of exemplary data flows between various systems

[0080] Figures 2-6 show flow diagrams of various methods for receiving and implementing user privacy settings associated with user data or environmental data across various systems and components. Although a certain order is depicted in Figures 2-6, it should be understood that data may flow back and forth between various systems in any order and in any direction or combination. For example, a capability of one system may be implemented on another system or set of systems. Additionally, for example, one system may be comprised of several systems. Exemplary Processing of User Privacy Settings

[0081] FIG. 2A illustrates a flow diagram of an example method 200 for creating or updating privacy settings for a user.

[0082] In block 202, the user device 102 receives privacy settings associated with a user. The user device 102 can encrypt new or updated privacy settings. The privacy settings can include new settings or updates to previously received settings.

[0083] In block 204, the agent 106 receives the new or updated privacy settings and, if necessary, decrypts the privacy settings. In block 206, the agent 106 creates a software contract (e.g., a smart contract or equivalent) based on the received privacy settings.

[0084] In block 208, the agent 106 creates a private encryption key. In block 210, the agent 106 encrypts the private encryption key. For example, the private encryption key may be encrypted with the public encryption key.

[0085] In block 212, the agent 106 stores the software contract and the encrypted private encryption key in the distributed ledger 108. The agent 106 communicates with the distributed ledger 108 and acts as an intermediary between the various devices. Due to limitations with certain distributed ledger technologies, the agent may be a required component used to interact with and store on the distributed ledger. In some embodiments, the agent 106 may not be required and the distributed ledger 108 itself may be able to fulfill the role of the agent 106.

[0086] In block 214, the agent 106 creates a public encryption key. As with all blocks described with respect to Figures 2-6, block 214 occurs after block 206, but it should be understood that block 214 may occur immediately after block 204, prior to block 204 (e.g., when a user first creates an account or connects to the agent 106), after block 208, or in any order sufficient to accomplish the intended purposes of the present systems and methods.

[0087] In block 216, the agent 106 transmits the public encryption key to the user device 102. In block 218, the user device 102 receives the public encryption key from the agent 106.

[0088] In block 220, the user device collects environmental data, which is based at least in part on the user data, for example, on the surroundings of the user device 102.

[0089] At block 222, the user device 102 encrypts the collected environmental data and any other user data using a public encryption key. At block 224, the encrypted environmental data is semantically tagged with metadata. In some embodiments, the metadata is unencrypted and does not contain personally identifiable information. For example, semantic annotation or tagging may include adding additional information to the encrypted environmental data such that a computer and / or administrator reviewing the encrypted data may be able to ascertain information about the encrypted data (e.g., whose data it is, the user device associated with the data, or the like). In some embodiments, the semantic tagging may be limited in scope to further protect user privacy.

[0090] At block 226, the semantically tagged and encrypted data is transmitted electronically over an encrypted connection to the data platform 112. In some embodiments, the data platform 112 can be a data storage medium (e.g., a data lake, a NoSQL database, or the like). In some embodiments, the data platform 112 can be a series or set of data storage mediums. In some embodiments, the data platform 112 can include a data matching system (e.g., 118) and perform processing and matching on data transmitted to and from the data platform 112. At block 228, the data platform 112 receives the semantically tagged and encrypted data.

[0091] At block 230, the data platform 112 stores the semantically tagged and encrypted data. In some embodiments, in response to being stored, at block 232, the semantically tagged and encrypted data is assigned a hash identification (e.g., a minimum of 32 bytes). In some embodiments, the semantically tagged and encrypted data may be assigned another type of identification value or reference number.

[0092] At block 234, the data platform 112 transmits a notification of the data transaction (e.g., receipt and processing of the semantically tagged and encrypted data or any other relevant information regarding the data transaction) to the agent 106. The data platform 112 also transmits the hashed identification value (or any other identification value if no hash is used) and the semantic tagging information. At block 236, the agent 106 receives the information and / or data.

[0093] In block 238, the agent 106 encodes the hashed identification value and / or the transaction data into the distributed ledger 108. For example, the hashed identification value and the transaction data can be stored along with a reference to, or a copy of, the software contract and the encrypted private encryption key stored in block 212. An advantage of tracking the relationship between the hashed identification value, the transaction data, the software contract, and the private encryption key is that a user can review their privacy settings and, based on the transaction data, verify that the privacy settings are working as intended or, if applicable, that changes should be made to the privacy settings, for example.

[0094] 2B-2C show a swim-lane flow diagram of an exemplary method for creating or updating privacy settings for a user. Similar to FIG. 2A, FIG. 2B-2C shows various steps performed by the data storage medium, the user's device, Oracle, and the data virtualization application. Facilitating exemplary identification, matching, and transmission of user data based on privacy settings

[0095] 3 shows a flow diagram of an exemplary method for identifying, transmitting, and decrypting user data. Certain additional or alternative blocks are depicted in FIGS. 4, 6A, and 6B, as shown in the figures.

[0096] In block 302, the agent 106 receives a request for user data, which may be associated with one or more users. Further details about the request are described in connection with block 622 of FIG. 6B.

[0097] In block 304, the agent 106 searches the distributed ledger 108, i.e., the distributed ledger for software constructs associated with one or more users. An exemplary illustration of the creation of software constructs based on user privacy settings is provided with respect to Figures 2A-2C and herein.

[0098] In block 306, the agent 106 identifies the most recent section of the distributed ledger 108 that includes the relevant software constructs. In some cases, for a user, there may be only one software construct associated with each of the users. In some cases, for other users, there may be two or more software constructs associated with each of the users. This is because, for example, in some distributed ledger technologies, data may be stored in blocks. Once a block is written to the distributed ledger, it cannot be altered or removed. Thus, any update to a software construct must be written to a new block as a new software construct. If a user provides multiple updates to its privacy settings, there will be multiple software constructs stored in multiple blocks of the distributed ledger. The advantage of having old versions of privacy settings stored in the distributed ledger is that it allows a user (or other entity) to view, either directly or indirectly, the history of changes to its privacy settings as represented in the corresponding software constructs. It is beneficial for agent 106, when writing a new software contract for a particular user, to include a reference or indication of the person to whom the software contract is associated and, in some cases, the version of the software contract or when it was created. In some embodiments, agent 106 can determine the most recent software contract if multiple software contracts exist for a particular user based on transaction information (e.g., the date and time when block data was written to a particular block or the date and time when the block was written to the distributed ledger).

[0099] In block 308, the agent 106 determines, based on each of its latest software contracts, one or more users to authorize sharing of its user data. For example, a user may not want to share any information with a particular purchaser associated with a received request for user data, and data associated with those users should not be shared or made accessible. Only user data that is requested and that the user authorizes to be shared should be shared or made accessible to the purchaser associated with the request.

[0100] In block 310, the agent 106 issues instructions to the data virtualization system 111 to extract the requested user data associated with the user who authorized the sharing. In block 312, the data virtualization system 111 receives the instructions from block 310.

[0101] At block 314, the data virtualization system 111 requests the user data from the data platform 112 based on the instructions received from the agent 106. At block 316, the data platform 112 receives the request for access to the user data.

[0102] At block 318, the data platform 112 identifies and retrieves relevant encrypted user data for one or more users who have authorized sharing in one or more databases. Additional details regarding how the data platform 112 interacts with the user data are described in connection with Figures 2 and 4-6. At block 320, the data platform 112 transmits or makes available the relevant encrypted user data to the data virtualization system 111. At block 321, the data virtualization system receives or accesses the relevant encrypted user data from block 320.

[0103] In block 322, the data platform 112 transmits to the data matching system 118 and the agent 106 confirmation that the associated encrypted user data was successfully transmitted or received by the data virtualization system 111 in blocks 320, 321. In block 323, the agent receives the confirmation, and in block 324, the data matching system 118 receives the confirmation.

[0104] In block 325, the agent 106 reads or accesses the private encryption key from a software contract associated with one or more users who have authorized sharing. In block 327, the private encryption key is transmitted to the data matching system 118, and in block 331, the agent performs the additional steps described in Figure 4, beginning in block 402. In block 329, the data matching system 118 receives the private encryption key.

[0105] At block 326, the data verification system 118 verifies that the user data and private encryption keys match, for example, by successfully decrypting the user data associated with each key.

[0106] At block 328, based on whether the user data was successfully decrypted, the data matching system 118 transmits the matching result to the agent 106. In some embodiments, if the user data of multiple users is to be matched and only some are successful and the remaining are unsuccessful (e.g., the private encryption key may not properly decrypt the data for some of the users), the entire result may be transmitted to the agent 106 for processing.

[0107] In block 330, the agent 106 receives the match results. In some embodiments, if some of the private encryption keys were successfully matched and others were not, the successful portions may be transmitted to the data virtualization system 111. In some embodiments, if some of the private encryption keys were successfully matched and others were not, none are transmitted to the data virtualization system 111 and the agent 106 repeats the process in blocks 325-328 with other potential private encryption keys until a match is successful, and then transmits all associated and matched private encryption keys together. It may be desirable to transmit all private encryption keys together, or to prompt the purchaser that not all data is available using the data virtualization system 111 prior to submitting any if the purchaser wishes to adjust or cancel the request. In some embodiments, if some of the private encryption keys are successfully matched by the data matching system 118 in block 326 and others are not, the successful portions may be transmitted to the data virtualization system, and the process at blocks 325, 327, 329, 326, and 328 may be repeated with respect to the unsuccessful portions until the correct private encryption keys are identified, which may then be transmitted to the data virtualization system 111.

[0108] It may be desirable to transmit any private encryption keys, once verified, to the data virtualization system 111 and later transmit any additional verified private encryption keys, once verified, so that a purchaser using the data virtualization system 111 is not delayed and may more quickly review the data with the added data as additional new private encryption keys are received or accessed from block 330 in block 332. In some embodiments, if a private encryption key cannot be verified after a certain number of attempts (e.g., 1, 2, 3, etc.) by the data verification system 118, a final error may be output to the agent 106 and then to the data virtualization system 111 associated with that particular user data associated with the private encryption key that cannot be verified. In block 332, the data virtualization system 111 receives or has access to the verified private encryption key.

[0109] In block 334, based on the associated encrypted user data from block 321 and the matching and verified private encryption keys received from block 332, the data virtualization system 111 can decrypt the encrypted user data using the private encryption key received or accessed from the agent 106 in block 332 using the associated private encryption key for each set of encrypted user data received from the data platform.

[0110] In block 336, the data virtualization system 111 anonymizes and pseudonyms the decrypted user data so that purchasers using the data virtualization system 111 cannot identify the users with whom the data is associated. For example, pseudonymization is a data management and anonymization procedure whereby personally identifiable information fields in a data record are replaced by one or more artificial identifiers, i.e., pseudonyms. A single pseudonym for each replaced field or set of replaced fields makes the data record less identifiable while the remainder remains suitable for data analysis and data processing. In some embodiments, pseudonymized data can be restored to the original state of the data with the addition of information, which then allows individuals to be re-identified, while anonymized data can never be restored to the original state of the data. In some embodiments, if pseudonymization is not as effective as desired (e.g., see block 338 and pre-configured or automatic thresholds), fragmentation or other methods of altering user data can be used as well.

[0111] In block 338, the data virtualization system 111 performs tests to verify and re-verify that re-identification of any of the user data is not possible, i.e., statistically impossible within pre-configured or automatic thresholds (e.g., 40%, 50%, 51%, 80%, 90%, 95%, 99% chance of not being able to associate the data with a particular person).

[0112] In block 340, once the data virtualization system 111 is closed (e.g., in response to receiving an instruction to terminate from the purchaser), the data virtualization system 111 closes the session and erases any received user data and private encryption key. Also, in block 342, FIG. 6A describes additional details regarding how the purchaser may interact with the data virtualization system 111 and how the user data is further protected from being exported or removed from the data virtualization system 111 in block 602. Exemplary Generation of a New Private Encryption Key and Its Application to User Data

[0113] Figure 4 shows a flow diagram of a method 400 for generating a new private encryption key and re-encrypting user data with the new private encryption key. Certain additional or alternative steps are depicted in Figure 3. After the private encryption key is transmitted to the data virtualization system 111 in block 330 in Figure 3, block 331 in Figure 3 may include the process beginning in block 404.

[0114] In block 404, the agent 106 may generate a new private encryption key for any user data associated with the private encryption key transmitted or made available to the data virtualization system 111 in block 330 in FIG. 3. It may be desirable to generate a new private encryption key to re-encrypt the user data associated with any distributed private encryption key. For example, if the purchaser were to reveal any of the private encryption keys it receives through the data virtualization system, the security and privacy of the user data may be compromised. In some embodiments, the purchaser would not have direct access to any private keys received or accessed by the data virtualization system 111, but generating a new private encryption key is still more secure if the purchaser, for example, hacks the data virtualization system without authorization and retrieves the keys.

[0115] In block 406, the agent 106 stores the new private encryption key in an updated software contract associated with the user whose data was shared or accessed in Figure 3. Any information regarding data transactions to and from the data virtualization system will likewise be stored with the updated software contract in some embodiments. For example, transmission details associated with the transmission of the private encryption key in block 330 in Figure 3 will be stored in the updated software contract.

[0116] In block 408, the agent 106 transmits or makes available the new and old private encryption keys (e.g., the keys transmitted in block 330 in FIG. 3) to the data platform 112. In block 410, the data platform receives the new private encryption keys from the agent 106.

[0117] At block 412, the data platform 112 identifies the user data that it associates with the private encryption key it received at block 410. At block 414, the data platform 112 decrypts the user data with the old private encryption key and then re-encrypts the user data with the new private encryption key. The re-encrypted user data is then stored in one or more databases at block 416. Example of appending third-party data to user data

[0118] FIG. 5 shows a flow diagram of a method 500 for appending third-party data retrieved or accessed from one or more third-party services to user data. Some additional or alternative steps are depicted in FIG. 6B. It should be understood that any third-party data can be retrieved or accessed and appended to user data. For example, the third-party data can include financial data (e.g., from a credit bureau or credit rating service), social media data (e.g., Facebook, MySpace, LinkedIn, Instagram, Snapchat, etc.), personal data (e.g., uploaded to file sharing sites such as Dropbox, Box, Google Drive, Apple's iCloud, etc.), any browsing habits from video streaming services (e.g., Netflix, Amazon Prime Video, Hulu, etc.), content from email or chat services (e.g., Gmail, Yahoo Mail, Google Hangouts, Zoom Video, WhatsApp, Facebook Messenger, Outlook, etc.), or any other third-party service to which the user wishes to provide access.

[0119] In block 504, which may begin after the process from block 622 in FIG. 6B described herein, the agent 106 may search for one or more software contracts in the distributed ledger 108 that are associated with a particular user or set of users based on a request for user data received from the data virtualization system 111 (see FIG. 6B for further information and details regarding the request).

[0120] In block 506, the agent 106 may identify a current section of the distributed ledger that includes relevant software constructs for one or more users. As explained above, in some cases, for a user, there may be only one software construct associated with each of the users. In some cases, for other users, there may be two or more software constructs associated with each of the users. This is because, for example, in some distributed ledger technologies, data may be stored in blocks. Once a block is written to the distributed ledger, the block cannot be altered or removed. Thus, any updates to a software construct must be written to a new block as a new software construct. If a user provides multiple updates to its privacy settings, there will be multiple software constructs stored in multiple blocks of the distributed ledger. An advantage of having old versions of privacy settings stored in the distributed ledger is that it allows a user (or other entity) to view, either directly or indirectly, the history of changes to its privacy settings as represented in the corresponding software contract. It is beneficial for the agent 106, when writing a new software contract for a particular user, to include a reference or indication of the person to whom the software contract is associated, and in some cases, the version of the software contract or when it was created. In some embodiments, the agent 106 can determine the most recent software contract when multiple software contracts exist for a particular user, relying on transaction information (e.g., the date and time when block data was written to a particular block or the date and time when the block was written to the distributed ledger).

[0121] In block 508, the agent 106 determines which one or more users will allow sharing of the collected data and data from the one or more third party services based on user privacy settings, which are stored in the distributed ledger and represented by software contracts.

[0122] At block 510, the agent 106 issues instructions to the data virtualization system 111 to extract the requested user data associated with the user who authorized sharing from one or more third party services. The instructions may also include details about the software contract, the types of data that should and should not be shared with purchasers accessing the data virtualization system 111, and who initiated the request for the data. At block 512, the data virtualization system 111 receives or accesses the instructions from block 510.

[0123] In block 514, the data virtualization system 111 reads or accesses the third-party data permitted from one of the one or more third-party services. For example, the read can be performed through the use of an API call or by any other available means.

[0124] In block 516, the data virtualization system 111 profiles the third-party data and tags it with metadata. In some embodiments, the metadata can describe where the third-party data originated, the user with which the third-party data is associated, the time the data was retrieved, or any other relevant information.

[0125] At block 518, the third-party data may be cleansed and formatted. For example, in some embodiments, the data may be edited to remove any information that is not allowed to be shared based on user privacy settings or software contracts. In some embodiments, redundant or non-relevant information may be retrieved (e.g., through an API) and the data must be formatted to comply with data virtualization system 111 requirements or purchaser or system display preferences.

[0126] In block 520, the data virtualization system 111 can augment and contextualize third-party data to any previously stored user data. For example, data augmentation can mean merging an existing database of first-party customer data with third-party data from external authority sources. Also, for example, contextualization can be the process of identifying data (e.g., person or city) relevant to an entity based on the entity's contextual information. For example, context or contextual information can be any information about any entity that can be used to effectively reduce the amount of guesswork required to make decisions within a specific application (through filtering, aggregation, and inference). Contextualization is then the process of identifying data relevant to an entity based on the entity's contextual information. Contextualization can remove non-relevant data from consideration, and has the potential to reduce data in several aspects, including volume, velocity, and variety, in large-scale data-intensive applications. Benefits of contextualization can include the potential to reduce the amount of data based on interest from an application / service / user. In addition, another benefit of contextualization is that by removing non-relevant data, the scalability and efficiency of data processing, querying, and / or delivery can be improved.

[0127] In block 522, the data virtualization system 111 may transmit the notification of the new third-party data and the transaction details retrieved in block 514 to the agent 106. In block 524, the agent 106 may receive the notification of the new third-party data and the transaction details.

[0128] At block 526, the agent 106 may encode the data transaction information (e.g., data extraction, profiling and processing, encryption, etc.) into the distributed ledger 108. Additionally, at block 526, the agent 106 may retrieve a public encryption key associated with the user (or users) from whom the third-party data was retrieved, and at block 528, transmit the public encryption key to the data virtualization system 111. At block 530, the data virtualization system receives the public encryption key.

[0129] At block 532, the data virtualization system 111 encrypts the third-party data read or accessed from the third-party service in block 514, and in some embodiments encrypts the third-party data with any previously stored user data. The encryption at block 532 will occur after processing has been performed on the third-party data by the data virtualization system 111 at blocks 516, 518, and 520.

[0130] At block 534, the data virtualization system 111 transmits or makes available the encrypted user data to the data platform 112. At block 538, the data platform 112 receives or accesses the encrypted user data and, at block 540, stores the encrypted user data in one or more databases.

[0131] In block 536, once the data virtualization system 111 is closed (e.g., in response to receiving an instruction to terminate from the purchaser), the data virtualization system 111 closes the session and erases any user data (including any third party data) and any private encryption keys received by the data virtualization system 111. Figures 6A and 6B also describe additional details regarding how the purchaser may interact with the data virtualization system 111 and how the user data is protected from being further exported or removed from the data virtualization system 111 in block 602. Further verification, processing and monitoring of user data

[0132] 6A shows a flow diagram of a method 600 for verifying, processing, and monitoring user data. Certain additional or alternative steps are depicted in FIG.

[0133] In block 604, which may begin after the process in block 342 from FIG. 3, for example, the data virtualization system 111 performs aggregation, pre-analysis, and / or contextualization on the user data. For example, aggregation may include an aggregate function, which is a function in which values ​​of multiple rows of data may be grouped together to form a single descriptive value. Some common aggregate functions may include average (i.e., the arithmetic mean), count, maximum, median, minimum, mode, range, sum, nanmean (average that ignores NaN values, also known as "nil" or "null"), or stddev. The pre-analysis may be configured to describe how the purchaser will analyze the user data, for example, which may be configured prior to accessing any data. Then, in block 606, the data virtualization system 111 encodes the user data with metadata, as described above and herein.

[0134] At block 608, the data virtualization system 111 uses machine learning or artificial intelligence (AI) to monitor the user data and prevent unauthorized export of the user data. In some embodiments, it is desirable to prevent unauthorized export of some user data from the data virtualization system 111, potentially increasing the security and privacy of the user data. For example, if a purchaser were to take the user data out of the system, the purchaser could then sell the data or make it public.

[0135] In some embodiments, machine learning can be used to monitor user data and buyer interactions with data virtualization system 111 and prevent unauthorized export of user data. For example, data virtualization system 111 (or, in other embodiments, one or more other systems) can implement machine learning algorithms or AI to monitor user data and manipulation of user data to ensure that user data or portions of user data are not exported or copied from data virtualization system 111.

[0136] Several different types of algorithms may be used by the data virtualization system 111 as well. For example, an embodiment herein may use a logistic regression model. However, other models, such as linear regression models, discrete choice models, or generalized linear models, are also possible. The machine learning algorithms can be configured to adaptively develop and update the models over time based on new inputs received by the data virtualization system 111. For example, the models can be regenerated on a periodic basis as new user information is received or retrieved by the data virtualization system 111, helping to keep the predictions in the models more accurate as user data is updated. The data virtualization system 111 is described in more detail further herein.

[0137] Some non-limiting examples of machine learning algorithms that may be used to generate and update parameter functions or predictive models include supervised and unsupervised machine learning algorithms, including regression algorithms (e.g., ordinary least squares regression, etc.), instance-based algorithms (e.g., learning vector quantification, etc.), decision tree algorithms (e.g., classification and regression trees, etc.), Bayesian algorithms (e.g., naive Bayes, etc.), clustering algorithms (e.g., k-means clustering, etc.), association rule learning algorithms (e.g., the Apriori algorithm, etc.), artificial neural network algorithms (e.g., perceptrons, etc.), deep learning algorithms (e.g., deep Boltzmann machines, etc.), dimensionality reduction algorithms (e.g., principal component analysis, etc.), ensemble algorithms (e.g., generalization by stacking, etc.), or other machine learning algorithms.

[0138] These machine learning algorithms may include any type of machine learning algorithm, including hierarchical clustering algorithms and cluster analysis algorithms, such as k-means algorithms. In some cases, the implementation of the machine learning algorithm may include the use of artificial neural networks. By using machine learning techniques, vast amounts (such as terabytes or petabytes) of participant interaction data may be analyzed to identify user preferences. These user preferences may be determined offline using historical data. Furthermore, the determined preferences may then be used in real time to select a matching plan (as described in more detail below), which may provide increased user enjoyment and therefore engagement, compared to other matching systems that do not use the techniques disclosed herein.

[0139] In block 610, the purchaser may analyze the user data and any other statistical data within the virtual environment of the data virtualization system 111. The purchaser may extract the resulting analysis and only the data that is authorized. For example, one user may authorize the export of their individual user data, while another user may not authorize any export or some export capabilities (e.g., only a portion of a user's user data may be exportable and another portion may not be exportable).

[0140] In block 612, once the data virtualization system 111 is closed (e.g., in response to receiving an instruction to terminate from the purchaser), the data virtualization system 111 closes the session and erases any user data and any private encryption keys that the data virtualization system 111 received. Requests for Anonymized and Pseudonymized User Data

[0141] 6B shows a flow diagram of an example embodiment of a method 650 for processing a request for anonymized and pseudonymized user data. Certain additional or alternative steps are depicted in FIGS.

[0142] In block 614, the data virtualization system 111 receives a request from a purchaser to access or purchase user data. The request may include a request for user data that requires checking with the associated software contract and any already processed and stored anonymized and pseudonymized user data. For example, in some embodiments, the system (e.g., data platform 112, agent 106, etc.) may anonymize or de-identify the user data and store the processed data in the data platform 112. In some embodiments, the anonymized and pseudonymized user data may be checked and verified to ensure that the user data is sufficiently anonymized and pseudonymized. In some embodiments, the user must indicate in their privacy settings whether they will allow their data to be anonymized and pseudonymized and / or provided to the purchaser. In some embodiments, the user may not need to make an indication, and instead some or all of their data may be anonymized and pseudonymized and provided to the purchaser. In some embodiments, the anonymized and pseudonymized user data includes only generic statistical information about the user as a whole. Certain filtering options may be available via the data virtualization system 111 to refine the view of anonymized and pseudonymized user data.

[0143] In block 616, the data virtualization system 111 processes the request to determine which portions of the requested user data (e.g., anonymized and pseudonymized user data) are available and authorized to be shared with the purchaser via privacy settings as represented and enforced by the software contract, and which portions of the requested user data require additional approval from the user.

[0144] In block 618, the data virtualization system 111 transmits a request for user data, or makes available a batch of requests, to the agent 106 for portions of the user data that require additional approval from the user. In block 620, the agent 106 receives the request for user data.

[0145] In block 622, the agent 106 searches the distributed ledger 108, i.e., the distributed ledger for one or more software constructs associated with one or more users, based on the request received in block 614. An exemplary illustration of the creation of software constructs based on user privacy settings is provided with respect to Figures 2A-2C and herein. Additional steps are discussed in connection with Figures 3 and 5. For example, there are steps continuing from block 622 that start at block 302 in Figure 3 and block 502 in Figure 5.

[0146] At block 624, without requiring additional approval from the user, the data virtualization system 111 transmits a request for anonymized and pseudonymized user data to the data platform 112 for the portion of the requested user data that is available and authorized to be shared with the purchaser. At block 626, the data platform 112 receives the request for anonymized and pseudonymized user data.

[0147] At block 628, the data platform 112 identifies and transmits any anonymized and pseudonymized user data to the data virtualization system 111. At block 630, the data platform 112 receives any anonymized and pseudonymized user data.

[0148] In block 632, once the data virtualization system 111 is closed (e.g., in response to receiving an instruction to terminate from the purchaser), the data virtualization system 111 closes the session and erases any user data, including any anonymized and pseudonymized user data received by the data virtualization system 111 as well as any private encryption keys. Exemplary Spatial Computing Device

[0149] A spatial computing device or a wearable display system such as a head mounted display (HMD) may be configured to cooperate with a companion device such as a handheld user input device. The spatial computing device may include an outward facing image capture device such as a camera that may image the environment of a user of the spatial computing device. The image capture device may be used to capture and obtain information or data (e.g., a key or secret) displayed on the companion device to establish shared information or data (e.g., a shared key, a shared secret, or a signature key) between the spatial computing device and the companion device. The shared data may in turn be used by the spatial computing device or the companion device to encrypt / decrypt data for / from a secure data transfer or data platform.

[0150] FIG. 7A illustrates an example of a spatial computing device or wearable display system 1000 that may be used to present a virtual reality (VR), augmented reality (AR), or mixed reality (MR) experience to a display system wearer or viewer 1004. The wearable display system 1000 may be programmed to perform any of the applications or embodiments described herein. The display system 1000 includes a display 1008 and various mechanical and electronic modules and systems to support the functionality of the display 1008. The display 1008 may be coupled to a frame 1012, which is wearable by a display system user, wearer, or viewer 1004 and configured to position the display 1008 in front of the eyes of the wearer 1004. The display 1008 may be a light field display. In some embodiments, a speaker 1016 is coupled to the frame 1012 and positioned adjacent to the user's ear canal. In some embodiments, another speaker, not shown, is positioned adjacent the user's other ear canal to provide stereo / adjustable sound control. The display 1008 is operably coupled 1020, such as by wired leads or wireless connectivity, to a local data processing module 1024, which may be mounted in a variety of configurations, such as fixedly attached to the frame 1012, fixedly attached to a helmet or hat worn by the user, built into headphones, or otherwise removably attached to the user 1004 (e.g., in a backpack configuration, in a belt-coupled configuration).

[0151] The frame 1012 may have one or more cameras attached or mounted to the frame 1012 that capture images of the wearer's eye. In one embodiment, the camera may be mounted to the frame 1012 in front of the wearer's eye so that the eye may be imaged directly. In other embodiments, the camera may be mounted along the stem of the frame 1012 (e.g., near the wearer's ear). In such an embodiment, the display 1008 may be coated with a material that reflects light from the wearer's eye back towards the camera. The light may be infrared light since iris features are prominent in infrared images.

[0152] The local processing and data module 1024 may comprise a hardware processor and non-transitory digital memory, such as non-volatile memory (e.g., flash memory), both of which may be utilized to aid in processing, caching, and storing data. The data may include (a) data captured from a sensor (e.g., which may be operatively coupled to the frame 1012 or otherwise attached to the user 1004), such as an image capture device (such as a camera), a microphone, an inertial measurement unit, an accelerometer, a compass, a GPS unit, a wireless device, or a gyroscope, or (b) data obtained and processed using the remote processing module 1028 or a remote data repository 1032, possibly for passing to the display 1008 after processing or retrieval. The local processing and data module 1024 may be operatively coupled to a remote processing module 1028 and a remote data repository 1032 by a communication link 1036 or 1040, such as via a wired or wireless communication link, such that these remote modules 1028, 1032 are available as resources to the local processing and data module 1024. An image capture device can be used to capture eye images used in the eye image processing procedure. Additionally, the remote processing module 1028 and the remote data repository 1032 may be operatively coupled to one another.

[0153] In some embodiments, the remote processing module 1028 may comprise one or more processors configured to analyze and process data or image information, such as video information captured by an image capture device. The video data may be stored locally in the local processing and data module 1024 or in a remote data repository 1032. In some embodiments, the remote data repository 1032 may comprise a digital data storage facility, which may be available through the Internet or other networking configurations in a "cloud" resource configuration. In some embodiments, all data is stored and all calculations are performed in the local processing and data module 1024, allowing for fully autonomous use from the remote modules.

[0154] In some implementations, the local processing and data module 1024 or the remote processing module 1028 are programmed to perform embodiments of the systems and methods as described herein. The image capture device can capture video for a particular application (e.g., video of the wearer's eyes for eye tracking applications or video of the wearer's hands or fingers for gesture identification applications). The video can be analyzed by one or both of the processing modules 1024, 1028. In some cases, offloading at least a portion of the iris code generation to a remote processing module (e.g., in the "cloud") can improve the efficiency or speed of computation. Parameters of the systems and methods disclosed herein can be stored in the data module 1024 or 1028.

[0155] Results of the analysis can be used by one or both of the processing modules 1024, 1028 for additional operations or processing. For example, in various applications, biometric identification, eye tracking, gesture, object, pose recognition or classification, etc. may be used by the wearable display system 1000. For example, the wearable display system 1000 may analyze captured video of the wearer's 1004 hands and recognize gestures by the wearer's hands and the wearable display system (e.g., picking up a real or virtual object, signaling agreement or disagreement (e.g., "thumbs up" or "thumbs down"), etc.).

[0156] The human visual system is complex and difficult to provide a realistic perception of depth. Without being limited by theory, it is believed that a viewer of an object may perceive the object as three-dimensional due to a combination of vergence and accommodation. Vergence movements of the two eyes relative to one another (e.g., rotational movement of the pupils toward or away from one another to converge the gaze of the eyes and fixate on an object) are closely coupled to the focusing (or "accommodation") of the eye's lenses. Under normal conditions, a change in focus of the eye's lenses or accommodation of the eye to change focus from one object to another at a different distance will automatically produce a corresponding change in vergence to the same distance, a relationship known as the "accommodation-vergence reflex." Similarly, a change in vergence will induce a corresponding change in accommodation under normal conditions. A display system that provides a better match between accommodation and vergence may produce a more realistic and comfortable simulation of a three-dimensional image. Another Exemplary User Data Transaction System

[0157] FIG. 7B diagrammatically illustrates an embodiment of a user data transaction system. The user data transaction system can be similar to the user data transaction system 100 described in FIG. 1. The system and method for securely exchanging user data based on privacy settings stored and implemented through the use of an agent (e.g., agent 106 of FIG. 1) and other systems and components of the present disclosure can be implemented by one or more user devices 702a-702c (e.g., user device 102 or purchaser device 104 from FIG. 1 or wearable display system 1000 of FIG. 7A), one or more agents 706 (e.g., agent 106 from FIG. 1), one or more data platforms 712 (e.g., data platform 112 from FIG. 1), and a data virtualization system 711 (e.g., data virtualization system 111 from FIG. 1). In the non-limiting exemplary embodiment shown in Figure 7B, user 701a can operate user devices 702a and 702b (e.g., user devices 102 can include such devices) to create and modify its user privacy settings. In the non-limiting exemplary embodiment shown in Figure 7B, purchaser 701b can operate user device 702c to view, interact with, add additional data to, and analyze user data associated with user 701a or other users.

[0158] User devices 702a-720c may include, for example, cellular phones, tablet computers, electronic readers, smart watches, head-mounted augmented, virtual, or mixed reality display systems, wearable display systems, the wearable display system 1000 of FIG. 7A, or the like. User devices 702a-c may communicate with other devices over a network 718 using communications links 120a, 120b, for example, cellular communications links or Internet connections. Network 718 may be a local area network (LAN), wide area network (WAN), or the Internet accessible by wired or wireless communications links, and may implement, for example, the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard.

[0159] The agent 706 can communicate with other devices on the network 718, e.g., user devices 702a and 702b, using the communication link 126. The data platform 712 can communicate with other devices on the network 718, e.g., the agent 706. The data virtualization system 711 can communicate with other devices on the network 718, e.g., the agent 706 or the user device 702c. The communication links 120a, 120b, 126, 724, 726, or 728 can be wired or wireless communication, cellular communication, Bluetooth, a local area network (LAN), a wide area local area network (WLAN), radio frequency (RF), infrared (IR), or any other communication method or system.

[0160] User devices 702a and 702b can transmit encrypted user data to a data platform 712. User devices 702a and 702b can also be used by user 701a to configure or modify privacy settings of user 701a via agent 706, which may include a distributed ledger (e.g., distributed ledger 108 of FIG. 1). Purchaser 702b can use user device 702c (e.g., purchaser device 104 of FIG. 1) to communicate with data virtualization system 711 and interact with encrypted user data stored on the data platform. Additional Implementation Details and Embodiments

[0161] Various embodiments of the present disclosure may be systems, methods, or computer program products at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform aspects of the present disclosure.

[0162] For example, the functionality described herein may be implemented as software instructions are executed by, or in response to, software instructions that are executed by one or more hardware processors or any other suitable computing device. The software instructions or other executable code may be read from a computer-readable storage medium (or media).

[0163] A computer-readable storage medium can be a tangible device that can retain and store data or instructions for use by an instruction execution device. A computer-readable storage medium can be, for example, but not limited to, an electronic storage device (including any volatile or non-volatile electronic storage device), a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, solid state drives, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disks (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge-in-groove structures having instructions recorded thereon, and any suitable combination of the foregoing. A computer-readable storage medium as used herein is not, per se, to be interpreted as a transitory signal, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium, (e.g., light pulses passing through a fiber optic cable), or an electrical signal transmitted through a wire.

[0164] The computer-readable program instructions described herein can be downloaded to an individual computing / processing device from a computer-readable storage medium or an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the individual computing / processing device.

[0165] Computer readable program instructions (also referred to herein as, for example, "code," "instructions," "modules," "applications," "software applications," or the like) for performing the operations of the present disclosure may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuit networks, or object-oriented programming languages ​​such as Smalltalk, C++, or the like, and procedural programming languages ​​such as the "C" programming language or similar programming languages. The computer readable program instructions may be callable from other instructions, from themselves, or may be called in response to a detected event or interrupt. The computer readable program instructions configured for execution on a computing device may be provided on a computer readable storage medium or as a digital download that may then be stored on the computer readable storage medium (and may originally be stored in a compressed or installable format that requires installation, decompression, or decryption prior to execution). Such computer readable program instructions may be stored, partially or completely, on a memory device (e.g., a computer readable storage medium) of an executing computing device for execution by the computing device. The computer readable program instructions may be executed completely on the user's computer (e.g., the executing computing device), partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or completely on a remote computer or server.In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry, including, for example, programmable logic circuitry, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry to implement aspects of the present disclosure.

[0166] Aspects of the present disclosure are described herein with reference to flowchart illustrations or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations or block diagrams, and combinations of blocks in the flowchart illustrations or block diagrams, can be implemented by computer readable program instructions.

[0167] These computer-readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart or block diagram block or blocks. These computer-readable program instructions may also be stored in a computer-readable storage medium that may direct a computer, programmable data processing apparatus, or other device to function in a particular manner, such that the computer-readable storage medium having instructions stored therein comprises an article of manufacture containing instructions that implement aspects of the functions / acts specified in the flowchart or block diagram block or blocks.

[0168] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device such that the instructions, executed on the computer, other programmable apparatus, or other device, implement the function / acts specified in the flowchart or block or blocks, causing a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer may load the instructions or modules into a dynamic memory of the remote computer and transmit the instructions using a modem over a telephone, cable, or optical line. A modem local to the server computing system may receive the data over the telephone / cable / optical line and place the data on a bus using a converter device, including appropriate circuitry. The bus may carry the data to the memory, from which a processor may read and execute the instructions. The instructions received by the memory may optionally be stored on a storage device (e.g., a solid state drive) either before or after execution by the computer processor.

[0169] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, comprising one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions described in the blocks may occur out of the order described in the figures. For example, two blocks shown in succession may in fact be executed substantially in parallel, or the blocks may sometimes be executed in reverse order depending on the functionality involved. In addition, certain blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states associated therewith may be implemented in other sequences as appropriate.

[0170] Thus, although operations may be depicted in the figures in a particular order, it should be appreciated that such operations need not be performed in the particular order or sequential order depicted, or that all of the depicted operations need not be performed to achieve desirable results. Additionally, the figures may diagrammatically depict one or more exemplary processes in the form of a flow chart. However, other operations not depicted may also be incorporated within the diagrammatically depicted exemplary methods and processes. For example, one or more additional operations may be performed before, after, simultaneously with, or between any of the depicted operations. Additionally, operations may be rearranged or reordered in other implementations. In some circumstances, multitasking and parallel processing may be advantageous. Additionally, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems may generally be integrated together in a single software product or packaged within multiple software products. Additionally, other implementations are within the scope of the following claims. In some cases, the actions recited in the claims may be performed in a different order and still achieve desirable results.

[0171] It should also be noted that each block of the block diagrams or flowchart illustrations, and combinations of blocks in the block diagrams or flowchart illustrations, can be implemented by special-purpose hardware-based systems performing the specified functions or actions or a combination of special-purpose hardware and computer instructions. For example, any of the processes, methods, algorithms, elements, blocks, applications, or other functionality (or portions of functionality) described in the previous sections may be embodied in or fully or partially automated through electronic hardware, such as application-specific processors (e.g., application-specific integrated circuits (ASICs)), programmable processors (e.g., field programmable gate arrays (FPGAs)), application-specific circuitry, or the like (any of which may also combine custom hardwired logic, logic circuits, ASICs, FPGAs, etc., with custom programming / execution of software instructions to perform the techniques).

[0172] Any of the above-mentioned processors or devices incorporating any of the above-mentioned processors may be referred to herein as, for example, a "computer," a "computing device," a "computing device," a "hardware computing device," a "hardware processor," a "processing unit," or the like. The computing devices of the above-mentioned embodiments may generally (but not necessarily) be controlled or coordinated by operating system software, such as Mac OS, iOS, Android, Chrome OS, Windows OS (e.g., Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server, etc.), Windows CE, Unix, Linux, SunOS, Solaris, Blackberry OS, VxWorks, or other suitable operating systems. In other embodiments, the computing devices may be controlled by a proprietary operating system. A conventional operating system, among other things, controls and schedules computer processes for execution, performs memory management, provides file system, networking, I / O services, and provides user interface functionality, such as a graphical user interface ("GUI").

[0173] For example, Figure 8 is a block diagram illustrating a computer system 800 on which various embodiments may be implemented. Such a computer system 800 may include a portion of an agent, a distributed ledger, a user device, a data platform, or a data virtualization system as described herein. The computer system 800 may be used to implement the system described with reference to Figure 7B. The computer system 800 includes a bus 802 or other communication mechanism for communicating information and a hardware processor or processors 804 coupled with the bus 802 for processing information. The hardware processor 804 may be, for example, one or more general-purpose microprocessors.

[0174] Computer system 800 also includes a main memory 806, such as a random access memory (RAM), cache, or other dynamic storage device, coupled to bus 802 for storing information and instructions for execution by processor 804. Main memory 806 may also be used for storing temporary variables or other intermediate information during execution of instructions for execution by processor 804. Such instructions, when stored in storage media accessible to processor 804, render computer system 800 into a special-purpose machine that is customized to perform the operations specified in the instructions.

[0175] Computer system 800 further includes a read only memory (ROM) 808 or other static storage device coupled to bus 802 for storing static information and instructions for processor 804. A storage device 810, such as a magnetic disk, optical disk, or USB thumb drive (flash drive), is provided and coupled to bus 802 for storing information and instructions.

[0176] The computer system 800 may be coupled via the bus 802 to a display 812, such as a cathode ray tube (CRT) or LCD display (or touch screen), for displaying information to a computer user. The computer system 800 may be coupled via the bus 802 or a network link 820 to a user device 824, which may include, for example, an augmented, mixed, or virtual reality display device, such as the user devices 102, 104, 702a-702c, 1000. Additionally, the computer system 800 itself may also include, for example, an augmented, mixed, or virtual reality display device, such as the user devices 102, 104, 702a-702c, 1000. An input device 814, including alphanumeric and other keys, is coupled to the bus 802 for communicating information and command selections to the processor 804. Another type of user input device is a cursor control 816, such as a mouse, trackball, or cursor direction keys, for communicating directional information and command selections to the processor 804 and for controlling cursor movement on the display 812. The input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allow the device to define a position in a plane. In some embodiments, cursor control and co-directional information and command selection may be implemented via receiving touches on a touch screen, without a cursor.

[0177] The computing system 800 may include a user interface module and implement a GUI, which may be stored in a mass storage device as computer executable program instructions executed by the computing device. The computer system 800 may further implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware or program logic that, in combination with the computer system, causes or programs the program computer system 800 to be a special purpose machine, as described below. According to one embodiment, the techniques herein are performed by the computer system 800 in response to the processor 804 executing one or more sequences of one or more computer readable program instructions contained in the main memory 806. Such instructions may be read into the main memory 806 from another storage medium, such as the storage device 810. Execution of the sequences of instructions contained in the main memory 806 causes the processor 804 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.

[0178] Various forms of computer readable storage media may be involved in carrying one or more sequences of one or more computer readable program instructions to the processor 804 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into a dynamic memory of the remote computer and send the instructions over a telephone line using a modem. A modem local to the computer system 800 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector can receive the data carried in the infrared signal and appropriate circuitry can place the data on the bus 802. The bus 802 carries the data to the main memory 806, from which the processor 804 retrieves and executes the instructions. The instructions received by the main memory 806 may optionally be stored on a storage device 810 either before or after execution by the processor 804.

[0179] Computer system 800 also includes a communications interface 818 coupled to bus 802. The communications interface 818 provides a two-way data communication coupling to a network link 820, which is connected to a local network 822. For example, the communications interface 818 may be an integrated services digital network (ISDN) card, a cable modem, a satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, the communications interface 818 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN (or a WAN component for communicating with a WAN). A wireless link may also be implemented. In any such implementation, the communications interface 818 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.

[0180] The network link 820 typically provides data communication through one or more networks to other data devices. For example, the network link 820 may provide a connection through a local network 822 to a user device 824 or data equipment operated by an Internet Service Provider (ISP) 826. The ISP 826 in turn provides data communication services through a worldwide packet data communication network commonly referred to herein as the “Internet” 828. Both the local network 822 and the Internet 828 use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link 820 and through the communication interface 818, which carry the digital data to and from the computer system 800, are exemplary forms of transmission media.

[0181] The computer system 800 can send messages and receive data, including program code, through the network(s), network link 820, and communication interface 818. In an Internet embodiment, a server 830 may transmit requested code for an application program through the Internet 828, P826, local network 822, and communication interface 818. For example, the server 830 may include some or all of the user data transaction system 100, the data visualization system 111, the agent 106, the data platform 112, or the user data privacy system 103.

[0182] The received code may be executed by processor 804 as it is received, or stored in storage device 810, or other non-volatile storage for later execution. Additional Considerations

[0183] As described above, in various embodiments, certain functionality may be accessible by a user through a web-based viewer (such as a web browser) or other suitable software program. In such implementations, the user interface may be generated by a server computing system and transmitted to a user's web browser (e.g., running on the user's computing system). Alternatively, data necessary to generate the user interface (e.g., user interface data) may be provided by the server computing system to a browser from which the user interface may be generated (e.g., the user interface data may be performed by the browser accessing a web service and configured to render the user interface based on the user interface data). The user may then interact with the user interface through the web-browser. The user interface of some implementations may be accessible through one or more dedicated software applications. In some embodiments, one or more of the computing devices or systems of the present disclosure may include a mobile computing device, and the user interface may be accessible through such a mobile computing device (e.g., a smartphone or tablet).

[0184] In some embodiments, the data may optionally be presented in graphical representations, such as visual representations such as charts and graphs, allowing a user to comfortably sift through large amounts of data and take advantage of the particularly high pattern recognition abilities of humans associated with visual stimuli. In some embodiments, the system may present aggregate quantities, such as totals, counts, and averages. The system may also use the information to interpolate or extrapolate, e.g., predict, future developments.

[0185] Moreover, the interactive and dynamic user interfaces described herein are made possible by innovations in efficient interaction between the user interface and underlying systems and components. For example, disclosed herein are improved methods of receiving user inputs, translating and delivering those inputs to various system components, automatic and dynamic execution of complex processes in response to input delivery, automatic interaction between the various components and processes of the system, and automatic and dynamic updating of the user interface. Interaction and presentation of data via the interactive user interfaces described herein can thus provide cognitive and ergonomic efficiencies and advantages over previous systems.

[0186] Various embodiments of the present disclosure provide improvements in various technologies and technical fields. For example, as described above, existing data storage and processing technologies (including, for example, in memory databases) are limited in various respects (e.g., manual data review is slow, costly, and not very detailed, data is very voluminous, etc.), and various embodiments of the present disclosure provide significant improvements over such technologies. In addition, various embodiments of the present disclosure are inseparably linked to computer technology. In particular, various embodiments rely on detection of user inputs via a graphical user interface, calculation of updates to displayed electronic data based on those user inputs, automatic processing of related electronic data, and presentation of updates to displayed images via an interactive graphical user interface. Such features and others (e.g., processing and analysis of large amounts of electronic data) are inextricably linked to and enabled by computer technology, and would not exist without computer technology. For example, the interactions with displayed data described below with reference to various embodiments cannot be reasonably performed by humans alone, without the computer technology on which they are implemented. Moreover, the implementation of various embodiments of the present disclosure via computer technology enables many of the advantages described herein, including more efficient interaction with and presentation of various types of electronic data.

[0187] In various embodiments, a system or computer system is disclosed that comprises a computer-readable storage medium having program instructions embodied therewith, and one or more processors configured to execute the program instructions and cause the one or more processors to perform operations comprising one or more aspects of the embodiments described above or below (including one or more aspects of the appended claims).

[0188] In various embodiments, a computer program product is disclosed that comprises a computer-readable storage medium having program instructions embodied therewith that are executable by one or more processors to cause the one or more processors to perform operations that comprise one or more aspects of the embodiments described above and / or below (including one or more aspects of the appended claims).

[0189] Many variations and modifications may be made to the above-described embodiments, and it is understood that the elements fall within other acceptable embodiments. All such modifications and modifications are intended to be included herein within the scope of the present disclosure. The above description details certain embodiments. However, it should be understood that the present system and method can be practiced in many ways, regardless of the level of detail described above that appears in the document. Also, as mentioned above, it should be noted that the use of a specific terminology when describing a certain feature or aspect of the present system and method should not be taken to imply that the terminology is redefined herein to be limited to include any specific characteristics of the feature or aspect of the present system and method with which the terminology is associated.

[0190] In particular, conditional statements such as "can," "could," "might," or "may," unless specifically stated otherwise or understood otherwise within the context as used, are intended to generally convey that certain embodiments include certain features, elements, and / or steps, while other embodiments do not include them. Thus, such conditional statements are generally not intended to imply that features, elements, and / or steps are in any way required for one or more embodiments, or that one or more embodiments necessarily include logic for determining whether those features, elements, and / or steps should be included or performed in any particular embodiment, with or without authorial input or prompting.

[0191] As used herein, the terms "component," "agent," "module," "device," "mechanism," "unit," "element," "member," "apparatus," "machine," "processor," or "system" should not be construed as contemplated means-plus-function claim terms. For example, elements described using such terms should be construed as being capable of performing any claimed operation associated with the term without the use or application of special or specific programming.

[0192] The term "substantially" when used in conjunction with the term "real-time" forms a phrase that would be readily understood by one of ordinary skill in the art. For example, it is readily understood that such language would include speeds that have no or little discernible delay or wait, or that such delay is short enough that it does not cause confusion, annoyance, or otherwise embarrassment to the user.

[0193] Conjunctive terms such as the phrase "at least one of X, Y, and Z" or "at least one of X, Y, or Z" should generally be understood with context as being used to convey that an item, term, etc. can be either X, Y, or Z, or a combination thereof, unless specifically stated otherwise. For example, the term "or," when used to connect, e.g., a list of elements, is used in its inclusive sense (and not its exclusive sense), such that the term "or" means one, some, or all of the elements in the list. Thus, such conjunctive terms are not generally intended to imply that an embodiment requires that at least one of X, at least one of Y, and at least one of Z, respectively, be present.

[0194] The term "a" as used in this specification and the appended claims is to be given an inclusive interpretation, not an exclusive interpretation. For example, unless specifically stated, the term "a" is not to be understood to mean "exactly one" or "one and only one," but instead, the term "a" means "one or more" or "at least one," regardless of whether it is used in a claim or anywhere else in this specification, and regardless of the use of quantifiers such as "at least one," "one or more," or "multiple" in a claim or anywhere else in this specification.

[0195] In particular, conditional statements used herein, such as "can," "could," "might," "may," "eg," and the like, are generally intended to convey that certain embodiments include certain features, elements, and / or steps, while other embodiments do not, unless specifically stated otherwise or understood otherwise within the context as used. Thus, such conditional statements are generally not intended to imply that features, elements, and / or steps are in any way required for one or more embodiments, or that one or more embodiments necessarily include logic for determining whether those features, elements, and / or steps should be included or performed in any particular embodiment, with or without authorial input or prompting. The terms "comprising," "including," "having," and the like, are synonymous and used inclusively in a non-limiting manner and do not exclude additional elements, features, acts, operations, etc. For example, a general purpose computer with one or more processors should not be interpreted as excluding other computer components, and may possibly include components such as memory, input / output devices, and / or network interfaces, among others.

[0196] Although the above detailed description illustrates, describes, and points out novel features as applied to various embodiments, it should be understood that various omissions, substitutions, and changes in the form and details of the illustrated devices or processes may be made without departing from the spirit of the disclosure. As can be recognized, certain embodiments of the invention described herein may be embodied in forms that do not provide all of the features and advantages described herein, and some features may be used or practiced separately from others. The scope of certain inventions disclosed herein is indicated by the appended claims, rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

[0197] Each of the processes, methods, and algorithms described herein and / or depicted in the accompanying figures may be embodied in code modules executed by one or more physical computing systems, hardware computer processors, application-specific circuits, and / or electronic hardware configured to execute specific and particular computer instructions, and may be fully or partially automated thereby. For example, the computing system may include a general-purpose computer (e.g., a server) or a special-purpose computer programmed with specific computer instructions, special-purpose circuits, etc. The code modules may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language. In some implementations, certain operations and methods may be performed by circuitry specific to a given function.

[0198] Furthermore, certain implementations of the functionality of the present disclosure may be sufficiently mathematically, computationally, or technically complex that special purpose hardware (utilizing appropriate specialized executable instructions) or one or more physical computing devices may be required to implement the functionality, e.g., due to the amount or complexity of the calculations involved, or to provide results in substantially real-time. For example, a video may contain many frames, each frame may have millions of pixels, and specifically programmed computer hardware is required to process the video data to provide the desired image processing task or application in a commercially reasonable amount of time.

[0199] The code modules or any type of data may be stored on any type of non-transitory computer readable medium, such as physical computer storage devices, including hard drives, solid state memory, random access memory (RAM), read only memory (ROM), optical disks, volatile or non-volatile storage devices, combinations of the same, and / or the like. The methods and modules (or data) may also be transmitted as data signals (e.g., as part of a carrier wave or other analog or digital propagating signal) generated over a variety of computer readable transmission media, including wireless-based and wired / cable-based media, and may take a variety of forms (e.g., as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). The results of the disclosed processes or process steps may be stored persistently or otherwise in any type of non-transitory tangible computer storage device or communicated via a computer readable transmission medium.

[0200] Any process, block, state, step, or functionality in the flow diagrams described herein and / or depicted in the accompanying figures should be understood as potentially representing a code module, segment, or portion of code that includes one or more executable instructions for implementing a specific function (e.g., logic or arithmetic) or step in the process. Various processes, blocks, states, steps, or functionality can be combined, rearranged, added to, deleted from, modified, or otherwise altered from the illustrative examples provided herein. In some embodiments, additional or different computing systems or code modules may perform some or all of the functionality described herein. The methods and processes described herein are also not limited to any particular sequence, and the blocks, steps, or states associated therewith can be performed in other sequences as appropriate, for example, serially, in parallel, or in some other manner. Tasks or events may be added to or removed from the disclosed exemplary embodiments. Furthermore, the separation of various system components in the implementations described herein is for illustrative purposes and should not be understood as requiring such separation in all implementations. It should be understood that the program components, methods, and systems described may generally be integrated together in a single computer product or packaged in multiple computer products. Many implementation variations are possible.

[0201] The process, method, and system may be implemented in a network (or distributed) computing environment. Network environments include enterprise-wide computer networks, intranets, local area networks (LANs), wide area networks (WANs), personal area networks (PANs), cloud computing networks, crowdsourced computing networks, the Internet, and the World Wide Web. The network may be a wired or wireless network or any other type of communication network.

[0202] The systems and methods of the present disclosure each have several innovative aspects, none of which is solely responsible for or required for the desirable attributes disclosed herein. The various features and processes described herein may be used independently of one another or may be combined in various ways. All possible combinations and subcombinations are intended to fall within the scope of the present disclosure. Various modifications of the implementations described in the present disclosure may be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other implementations without departing from the spirit or scope of the present disclosure. Thus, the claims are not intended to be limited to the implementations shown herein, but are to be accorded the widest scope consistent with the present disclosure, the principles, and novel features disclosed herein.

[0203] Certain features described herein in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation can also be implemented separately in multiple implementations or in any suitable subcombination. Furthermore, although features may be described above as acting in a combination and may be initially claimed as such, one or more features from the claimed combination may in some cases be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination. No single feature or group of features is necessary or essential to every embodiment.

Claims

1. 1. A user device, comprising: one or more computer-readable storage devices configured to store computer-executable instructions; A head-mounted display; a sensor configured to detect an environment of the user device; A network interface; one or more hardware computer processors in communication with the one or more computer-readable storage devices to execute the computer-executable instructions and to provide the user device with: Receiving a privacy setting associated with a first user; transmitting the privacy settings via the network interface to a distributed ledger manager for storage on a distributed ledger, the distributed ledger manager comprising a distributed ledger and software configured to read and write to the distributed ledger; receiving a first public encryption key associated with the first user from the distributed ledger manager via the network interface; collecting environmental data associated with the user device via the sensor, the sensor being configured to detect surroundings of the user device; encrypting the environmental data based on the first public encryption key; semantically tagging the encrypted environmental data with metadata, the metadata indicating at least identifying information about the user device; transmitting the semantically tagged and encrypted environmental data to a data platform via the network interface, the data platform comprising one or more databases; one or more hardware computer processors for causing the A user device comprising:

2. The user device of claim 1 , wherein an operator of the data platform does not have direct access to the environmental data because the operator does not have the proper key to decrypt the environmental data.

3. 10. The user device of claim 1 , wherein the first public encryption key is generated by the distributed ledger manager based at least in part on the privacy setting.

4. The user device of claim 1 , wherein the sensors include one or more of an accelerometer, a camera, and a GPS sensor.

5. The user device of claim 1 , wherein the metadata is not encrypted.

6. 1. A user device, comprising: one or more computer-readable storage devices configured to store computer-executable instructions; A head-mounted display; one or more hardware computer processors in communication with the one or more computer-readable storage devices to execute the computer-executable instructions and to provide the user device with: Receiving a privacy setting associated with a first user; transmitting the privacy settings to a distributed ledger manager; and receiving from the distributed ledger manager a first public encryption key associated with the first user; and collecting environmental data associated with the user device via one or more sensors; encrypting the environmental data based on the first public encryption key; semantically tagging the encrypted environmental data with metadata, the metadata indicating at least identifying information about the user device; transmitting the semantically tagged and encrypted environmental data to a data platform; one or more hardware computer processors for causing the A user device comprising:

7. 7. The user device of claim 6, wherein the first public encryption key is generated by the distributed ledger manager based at least in part on the privacy setting.

8. The user device of claim 6 , wherein the one or more sensors are configured to detect surroundings of the user device.

9. The user device of claim 6 , wherein the one or more sensors include one or more of an accelerometer, a camera, and a GPS sensor.

10. The user device of claim 6 , wherein the metadata is not encrypted.

11. 7. The user device of claim 6, wherein the distributed ledger manager comprises a distributed ledger and software configured to read and write to the distributed ledger.

12. The user device of claim 6 , wherein the data platform comprises one or more databases.

13. The user device of claim 6 , wherein the data platform operator does not have the proper key to decrypt the environmental data.

14. A method implemented by a user device, comprising: receiving, at the user device, a privacy setting associated with a first user; transmitting the privacy settings to a distributed ledger manager by the user device; receiving, by the user device, from the distributed ledger manager, a first public encryption key associated with the first user; said user device collecting, via one or more sensors, environmental data associated with said user device; the user device encrypting the environmental data based on the first public encryption key; the user device semantically tagging the encrypted environmental data with metadata, the metadata indicating at least identifying information about the user device; the user device transmitting the semantically tagged and encrypted environmental data to a data platform, the data platform comprising one or more databases; A method comprising:

15. 15. The method of claim 14, wherein the first public encryption key is generated by the distributed ledger manager based at least in part on the privacy setting.

16. The method of claim 14 , wherein the one or more sensors are configured to detect surroundings of the user device.

17. The method of claim 14 , wherein the one or more sensors include one or more of an accelerometer, a camera, and a GPS sensor.

18. The method of claim 14 , wherein the metadata is not encrypted.

19. 15. The method of claim 14, wherein the distributed ledger manager comprises a distributed ledger and software configured to read and write to the distributed ledger.

20. The method of claim 14 , wherein an operator of the data platform does not have the proper key to decrypt the environmental data.

Citation Information

Patent Citations

  • Method and system for providing position information

    JP2000156883A

  • Personal information disclosure control system and its method

    JP2004192353A

  • Information transmission method, terminal, and information collection system

    JP2007134866A

  • Privacy Sensitive Consumer Camera Coupled to Augmented Reality System

    JP2018522324A

  • Privacy-sensitive consumer cameras coupled to augmented reality systems

    US20160335802A1