This disclosure relates generally to sharing data in computer networks and, more particularly, to a blockchain-based digital data exchange.
Deep learning solutions for big data analytics depend on the availability of a large amount of data to enable building of the machine learning models and extracting of patterns and/or other information from the data. Thus, a lack of sufficient data may prevent the use of deep learning solutions or other machine learning techniques in some data analytics applications. Also, data aggregation systems that make data available to such deep learning solutions or other machine learning techniques can be susceptible to data privacy breaches. In the past, the data that is improperly released through such a breach and/or the entity or entities improperly obtaining and using the breached data may be undetectable and/or untraceable.
The figures are not to scale. In general, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts, elements, etc.
Example methods, apparatus, systems and articles of manufacture (e.g., physical storage media) to implement a blockchain-based digital data exchange are disclosed herein. An example blockchain-based digital data exchange system implemented in accordance with teachings of this disclosure enables a data publisher (e.g., a data seller, a data lessor, a data sharer, etc.) to provide (e.g., sell, lease, share, etc.) data to a data subscriber (e.g., a data buyer, a data lessee, a data recipient, etc.) through robust data transactions. The data transactions implemented by such a blockchain-based digital data exchange system can enable transaction conditions to be specified and enforced by the data publisher and/or the data subscriber. Furthermore, the data transactions implemented by such a blockchain-based digital data exchange system can be tracked in a reliable, distributed manner such that improperly accessed data (e.g., obtained through a data privacy breach) can be traced back to identify the entity or entities that improperly accessed the data.
Some example blockchain-based digital data exchange systems implemented in accordance with teachings of this disclosure include data publisher endpoint devices associated with data providers operating in the system and data subscriber endpoint systems associated with data subscribers operating in the system. Example data publisher endpoint devices disclosed herein include an example datamart publisher client to transmit a message to a data exchange to publish availability of data to be accessed from data storage associated with the data publisher endpoint device. The datamart publisher client in such examples is also to initiate a transaction to provide a data subscriber endpoint system with access to the data in response to a request from the data subscriber endpoint system. Disclosed example publisher endpoint devices also include an example blockchain client to publish a record of the transaction to an example blockchain network when the transaction is validated by the datamart publisher client. In some examples, the record is to be included in a blockchain implemented by the blockchain network. Some disclosed example publisher endpoint devices further include a data producing application to provide the data to the data storage associated with the endpoint device.
In some disclosed examples, the datamart publisher client is further to determine a label for the data (e.g., based on a hash of the data), determine a price for accessing the data and include the label and the price in the message to transmit to the data exchange to publish the availability of the data.
In some such disclosed examples, the request from the data subscriber endpoint system includes a public encryption key associated with the data subscriber endpoint system. In some such examples, the datamart publisher client is to encrypt the data with the public encryption key to generate encrypted data, and transmit a second message to the data subscriber endpoint system to initiate the transaction. In some examples, the second message is to specify a location at which the encrypted data can be accessed by the data subscriber endpoint system. Also, in some disclosed examples, the datamart publisher client is to receive a response to the second message from the data subscriber endpoint system, with the response to indicate whether the transaction is accepted by the data subscriber endpoint system.
Some disclosed example data publisher endpoint devices further include a smart contract application to validate the transaction when the response to the second message indicates the transaction has been accepted by the data subscriber endpoint system. For example, the smart contract application can confirm payment of the price by the data subscriber endpoint system to validate the transaction. Additionally or alternatively, in some disclosed examples, the datamart publisher client is further to determine a condition for accessing the data and to include the condition in the message to transmit to the data exchange to publish the availability of the data. In some such examples, the smart contract application is to monitor access of the data by the data subscriber endpoint system to enforce the condition after the transaction has been validated. In some such examples, the blockchain client is to publish another record to the block chain network to update (e.g., terminate) the transaction when the smart contract application determines the condition has been violated by the data subscriber endpoint system. For example, the condition may specify a duration during which the data is permitted to be accessed, a frequency at which the data is permitted to be accessed, etc.
In some disclosed examples, the record to be published to the blockchain network is to include a transaction identifier, the label for the data (e.g., based on a hash of the data), the price for accessing the data, an identifier associated with the particular data publisher endpoint device providing the data and an identifier associated with the particular data subscriber endpoint system receiving the data. In some such disclosed examples, the blockchain client is to transmit the record to computing nodes included in the blockchain network to publish the record to the blockchain network. In some such disclosed examples, the blockchain client is also to monitor the blockchain for other records including corresponding labels matching the particular data label included in the published record, and will notify the datamart publisher client when at least one other record in the blockchain includes a corresponding label matching the particular data label included in the published record (which may indicate this data is a part of another, potentially unauthorized transaction).
Example data subscriber endpoint systems disclosed herein include a datamart subscriber client to access a notification from a data exchange. The notification is to indicate that a data publisher endpoint device has published availability of data associated with the data publisher endpoint device. The datamart subscriber client in such examples is also to transmit a request to the data publisher endpoint device to initiate a transaction to provide the data subscriber endpoint system with access to the data. Disclosed example data subscriber endpoint systems also include a blockchain client to publish a record of the transaction to a blockchain network when the transaction is validated by the datamart subscriber client. In some examples, the record is to be included in a blockchain implemented by the blockchain network. Some disclosed example subscriber endpoint systems further include a data processing application to process the accessed data.
In some disclosed examples, the datamart subscriber client is to transmit a message to the data exchange to subscribe for data availability notifications. In some disclosed examples, the datamart subscriber client is to compare the notification from the data exchange to one or more criteria to determine whether to request initiation of the transaction to provide the data subscriber endpoint system with access to the data.
In some disclosed examples, the datamart subscriber client is to access a message received from the data publisher endpoint device in response to the request transmitted to the data publisher endpoint device. In some examples, the message is to specify a location at which the data can be accessed by the data subscriber endpoint system. In some such examples, the datamart subscriber client is to access the data from the location specified in the message. Furthermore, in some such disclosed examples, the request transmitted to the data publisher endpoint device is to include a public encryption key associated with the data subscriber endpoint system. In some such examples, the datamart subscriber client is further to decrypt the data accessed from the location specified in the message from the data publisher endpoint device, with the datamart subscriber client to decrypt the data based on a private encryption key associated with the public encryption key.
Some disclosed example data subscriber endpoint systems further include a smart contract application to evaluate the data accessed from the location specified in the message from the data publisher endpoint device to determine whether to validate the transaction. In some such examples, the smart contract application is to evaluate the data based on a condition specified for the data in the notification from the data exchange. For example, the condition may specify a quantity of the data. a duration covered by the data, etc. Additionally or alternatively, in some disclosed examples, the smart contract application is further to monitor the data accessed from the location specified in the message from the data publisher endpoint device to enforce the condition after the transaction has been validated. In some such examples, the blockchain client is to publish another record to the block chain network to update (e.g., terminate) the transaction when the smart contract application determines the data does not satisfy the condition.
These and other example methods, apparatus, systems and articles of manufacture (e.g., physical storage media) to implement a blockchain-based digital data exchange are disclosed in further detail below.
As noted above, deep learning solutions for big data analytics depend on the availability of a large amount of data to enable building of the machine learning models and extracting of patterns and other information from the data. To support the use of deep learning solutions and/or other machine learning techniques in a given data analytics application, data aggregation system may be employed to attempt to obtain (e.g., aggregate) the necessary underlying data. However, prior data aggregation systems are often limited resource intensive, trial-and-error approaches for obtaining data. For example, such prior data aggregation systems may rely on user trials to obtain the necessary data, with a user trial involving contacting a universe of users to identify a group of users willing to participate in the user trial, obtaining signed release forms and/or other agreements from the group of users, and then collecting the data from the group of users (e.g., at a specified time) once the conditions of the trial are met. Such an approach can expend considerable computational resources to identify and contact the universe of users, coordinate obtaining the release forms/agreements from the group of user, schedule the collection of data from the group of users, etc. Furthermore, if sufficient data is not collected, additional computational resources will be expended attempting to find additional users to fill the gap in the collected data.
As also noted above, the data aggregation systems that make data available to deep learning or other machine learning solutions can be susceptible to data privacy breaches and/or other improper accesses of the collected data. Past data aggregation systems provide few, if any, mechanisms for detecting the entities responsible for such breaches. Past data aggregation systems also provide few, if any, mechanisms for tracing the use of the data obtained improperly by such entities.
In contrast with such prior data aggregation systems, example blockchain-based digital data exchange systems implemented in accordance with teachings of this disclosure allow users (e.g., individuals, companies, etc.), referred to herein as data providers, to proactively offer to provide (e.g., sell, lease, share, etc.) their data (e.g., generated or otherwise associated with their respective data provider endpoints) to recipients (e.g., individuals, companies, etc.), referred to herein as data subscribers, that are interested in obtaining (e.g., buying, leasing, borrowing, etc.) the data for use in one or more applications, such as deep learning solutions for big data analytics. Disclosed example blockchain-based digital data exchange systems enable data providers to obtain compensation (e.g., payment, rewards, etc.) for providing access to data generated or otherwise associated with their respective data provider endpoints and/or to set one or more other conditions to be satisfied to gain and/or retain access to the data generated or otherwise associated with their respective data provider endpoints. Disclosed example blockchain-based digital data exchange systems enable data subscriber endpoints to subscribe to data availability notifications identifying data being offered by data providers, as well as one or more characteristics of the data and/or one or more conditions to be satisfied to gain and/or retain access to the data. Such features of example blockchain-based digital data exchange systems disclosed herein alleviate the need to employ resource intensive, trial-and-error approaches for identifying users, reaching agreement with the users and obtaining their data. This is because the data being offered for access and the conditions for access are proactively announced by the data provider endpoints and searchable/filterable in the disclosed example blockchain-based digital data exchange systems.
Moreover, example blockchain-based digital data exchange systems implemented in accordance with teachings of this disclosure are rooted in a blockchain that records each data transaction in the system. The records maintained in the blockchain identify the particular data the was the subject of each published transaction, as well as the data provider and the data subscriber participating in the transaction. The records are maintained in the blockchain in a distributed manner that is resistant to tampering, corruption, etc. Because the records identify the particular data the was the subject of each published transaction, as well as the data provider and the data subscriber participating in each transaction, the blockchain records can be monitored to detect if improperly accessed data becomes the subject of a transaction in the system and, if so, the participants in the improper transaction. Thus, unlike prior data aggregation systems, example blockchain-based digital data exchange systems disclosed herein provide mechanisms for detecting the entities responsible for data breaches and for tracing the use of the data obtained improperly by such entities.
Turning to the figures, a block diagram of an example blockchain-based digital data exchange system 100 implemented in accordance with teachings of this disclosure is illustrated in
The example data publisher endpoint device 105 of
In the illustrated example of
In the illustrated example of
In the illustrated example of
As such, the blockchain client 140A is included in the data publisher endpoint device 105 of the illustrated example to publish data transaction records to the blockchain implemented by the blockchain network 120, with the data transaction records being associated with data provided by the data publisher endpoint device 105. In some examples, the blockchain client 140A also monitors the blockchain implemented by the blockchain network 120 to identify other records in the blockchain that correspond to data owned and/or being provided by the data publisher endpoint device 105. If such records are found, the blockchain client 140A can notify the datamart publisher client 135, which takes appropriate action to notify a user of the data publisher endpoint device 105 of the potential improper access of the data (e.g., by presenting a message via a user interface, transmitting a message to a user device, etc.). Implementation and operation of the blockchain client 140A of the illustrated example is described in further detail below and in connection with
In the illustrated example of
In some examples, the smart contract application 145 is programmed by the datamart publisher client 135 to continue to monitor access of data, which is the subject of a validated transaction, after the transaction has been validated to enforce the relevant condition(s) governing access to the data by the data subscriber endpoint system 110. For example, the smart contract application 145 may be programmed with conditions governing the frequency with which the data is permitted to be accessed, the amount of data that is permitted to be accessed, the duration of time during which the data is permitted to be accessed, etc. For example, if the data subscriber endpoint system 110 has agreed to lease data made available by the data publisher endpoint device 105 (e.g., stored in the data storage 130), the smart contract application 145 may be programmed to monitor whether an expiration time of the lease has elapsed. When the expiration time has elapsed, the smart contract application 145 may block access to the data by the data subscriber endpoint system 110 (e.g., by encrypting the data with an encryption key unknown to the data subscriber endpoint system 110, by blocking messages (e.g., data requests) originating from the data subscriber endpoint system 110, etc.). In some examples, if the smart contract application 145 determines one or more of the relevant conditions have been breached after the transaction has been validated, the smart contract application 145 can enforce a penalty condition, as described above.
In some examples, the smart contract application 145 is programmed to monitor data, which is the subject of an initiated or validated transaction, to enforce relevant condition(s) to be met by the data publisher endpoint device 105. Such condition(s) can be specified by the datamart publisher client 135 when publishing the availability of the data, and/or can be specified by the data subscriber endpoint system 110 in message sent to request initiation of the transaction and/or acceptance of the transaction. For example, if the data that is the subject of the transaction is collected and/or generated in real-time from the data producing application 150, the smart contract application 145 may be programmed to interface with and monitor the data producing application 150 as shown. For example, the smart contract application 145 may monitor the data collection and/or generation process, the frequency of data collection and/or generation, the time and/or duration of data collection and/or generation, etc., to ensure the data is being collected and/or generated by the data producing application 150 in accordance with the relevant condition(s) governing the transaction, thereby enforcing the relevant condition(s). If, for example, one or more of the relevant condition(s) are not met, such as the data producing application 150 not being activated at the agreed-upon time, frequency or otherwise in accordance with agreed-upon procedures, the smart contract application 145 can detect this breach of the relevant condition(s) and enforce a penalty condition, as described above.
The example data subscriber endpoint system 110 of
In the illustrated example of
In the illustrated example of
As noted above, the digital data exchange system 100 is built upon the example blockchain network 120, which implements a blockchain. As such, the blockchain client 140B is included in the data subscriber endpoint system 110 of the illustrated example to publish data transaction records to the blockchain implemented by the blockchain network 120, with the data transaction records being associated with data being accessed by the data subscriber endpoint system 110. Implementation and operation of the blockchain client 140B of the illustrated example is described in further detail below and in connection with
In the illustrated example of
In some examples, the smart contract application 145 is programmed by the datamart subscriber client 160 to interface with and continue to monitor access of data, which is the subject of a validated transaction, by a data consumer application 127 after the transaction has been validated to enforce the relevant condition(s) governing access to the data by the data consumer application 127 of the data subscriber endpoint system 110. For example, the smart contract application 165 may be programmed with conditions governing the frequency with which the data is permitted to be accessed, the amount of data that is permitted to be accessed, the duration of time during which the data is permitted to be accessed, etc. For example, if the data subscriber endpoint system 110 has agreed to lease data made available by the data publisher endpoint device 105 (e.g., stored in the data storage 130), the smart contract application 165 may be programmed to monitor whether an expiration time of the lease has elapsed. When the expiration time has elapsed, the smart contract application 165 causes the associated data to be deleted from the data storage 170 of the data subscriber endpoint system 110. In some examples, if the smart contract application 165 determines one or more of the relevant conditions have been breached after the transaction has been validated, the smart contract application 165 can enforce a penalty condition, as described above.
In some examples, the smart contract application 165 is programmed to monitor data, which is the subject of an initiated or validated transaction, to enforce relevant condition(s) to be met by the data publisher endpoint device 105. Such condition(s) can be specified by the data publisher endpoint device 105 when publishing the availability of the data, and/or by the data subscriber endpoint system 110 when requesting initiation of the transaction and/or accepting the transaction. For example, if the data that is the subject of the transaction is collected in real-time by the data publisher endpoint device 105, the smart contract application 165 may be programmed to monitor the data to ensure it is consistent with the relevant condition(s) governing data collection. If, for example, one or more of the relevant condition(s) are not met, such as the data not being associated an agreed-upon generation time, not exhibiting an agreed-upon update frequency or otherwise not in accordance with agreed-upon procedures, the smart contract application 165 can detect this breach of the relevant condition(s) and enforce a penalty condition, as described above.
In the illustrated example of
The communication network 125 of the illustrated example can be implemented by any number and/or types of communication networks. For example, the communication network 125 can be implemented by one or more wired/cabled networks, one or more wireless networks (e.g., mobile cellular networks, satellite networks, etc.), one or more proprietary networks, one or more public networks (e.g., such as the Internet), etc., or any combination thereof.
Although the example blockchain-based digital data exchange system 100 of
A block diagram of an example implementation of the datamart publisher client 135 included in the example data publisher endpoint device 105 of
The datamart publisher client 135 of
The datamart publisher client 135 of
In some examples, the record published by the transaction authorizer 220 includes the label (e.g., hash) identifying the data, the price for accessing the data, an identifier associated with the data publisher endpoint device 105 and an identifier associated with the data subscriber endpoint system 110. In some examples, the record also includes a transaction type specifying the permitted type(s) of data access permitted by the transaction. Examples of transaction types include, but are not limited to, data read access, data write access, data processing access (e.g., read and write), etc.
In some examples, the data provider 225 implements data encryption to provide a particular data subscriber, such as the data subscriber endpoint system 110, with access to specific data. For example, the transaction initiation request from the data subscriber endpoint system 110 may include a public encryption key associated with the data subscriber endpoint system 110. In such examples, the data provider 225 can encrypt the specific data to be made accessible to the data subscriber endpoint system 110 with the public encryption key provided by the data subscriber endpoint system 110. The data subscriber endpoint system 110 can then decrypt the data with the private encryption key associated with its public encryption key. In some such examples, if the data provider 225 is to later block access to the data by the data subscriber endpoint system 110, the data provider 225 can use a different key to encrypt the data, which is not paired with the private encryption key of the data subscriber endpoint system 110. By using encryption in this manner, the data publisher endpoint device 105 can restrict data access to only intended recipient(s) by creating different versions (e.g., copies) of the data that are encrypted with the respective public encryption key(s) associated with the intended recipient(s).
In some examples, the transaction authorizer 220 operates with the data validator 215 of the datamart publisher client 135 to enforce relevant condition(s) governing characteristics of the data and/or access to the data after the transaction has been validated. For example, the data validator 215 can program the smart contract application 145 with condition(s) to be monitored while a transaction for given identified data is active. For example, the data validator 215 may program the smart contract application 145 with conditions governing the frequency with which the identified data is to be accessed, the amount of identified data that is to be accessed, the duration of time during which the identified data is permitted to be accessed, etc. If the data validator 215 determines that one or more of the specified condition(s) has not been met, the transaction authorizer 220 can update the transaction accordingly. For example, the transaction authorizer 220 may terminate the transaction, place the transaction on hold, etc. In some such examples, the transaction authorizer 220 publishes a record updating the transaction to the blockchain network 120, which is to be added to the blockchain implemented by the blockchain network 120. For example, the record may include the label (e.g., hash) identifying the data, the price for accessing the data, the identifier associated with the data publisher endpoint device 105, the identifier associated with the data subscriber endpoint system 110 and a transaction type set to terminated, on-hold, etc.
A block diagram of an example implementation of the datamart subscriber client 160 included in the example data subscriber endpoint system 110 of
The datamart subscriber client 160 of
If the target characteristics specified for the data the data subscriber endpoint system 110 wishes to access match the information included in the notification from the data exchange 115, the transaction authorizer 315 transmits a request including the data label contained in the notification to the data publisher identified in the notification, such as the data publisher endpoint device 105, to initiate a transaction to allow the data subscriber endpoint system 110 to gain access to the offered data. In some examples, the request includes a public key associated with the data subscriber endpoint system 110, which is to be used by the data publisher endpoint device 105 to encrypt the data to that is to be provided to the data subscriber endpoint system 110. In some examples, the transaction initiation request sent by the transaction authorizer 315 includes one or more conditions specified by the data subscriber endpoint system 110 and that are to be met by the data provided by the data publisher endpoint device 105. For example, such conditions may govern collection of the data and may specify a required data generation time, a required update frequency, etc. In some examples, the transaction authorizer 315 implements a GUI to permit specification of the conditions to be met by the data provided by the data publisher endpoint device 105.
In some examples, the transaction authorizer 315 operates with the data retriever 305 of the datamart subscriber client 160 to perform an initial validation of the data being provided by the data publisher endpoint device 105 before accepting the data transaction. For example, in response to a request to initiate a data transaction, the data publisher endpoint device 105 may initiate the transaction by providing the data subscriber endpoint system 110 with initial access to the offered data. In such an example, the data retriever 305 retrieves the offered data from the data publisher endpoint device 105 and decrypts the data with the private encryption key associated with the public encryption key included in the request that was transmitted by the transaction authorizer 315 to request initiation the data transaction. The transaction authorizer 315 then interfaces with the smart contract application 165 of the data subscriber endpoint system 110 to verify the relevant condition(s) specified for the data (e.g., as specified in the notification received from the data exchange 115 and/or in the transaction initiation request sent by the transaction authorizer 315) are met. If one or more of the conditions are not met, the transaction authorizer 315 cancels the transaction. However, if the relevant condition(s) have been met, the transaction authorizer 315 transmits a message to the data publisher endpoint device 105 to accept the transaction and, in some examples, causes the blockchain client 140B of the data subscriber endpoint system 110 to publish a record of the transaction to the blockchain network 120, which is to be added to the blockchain implemented by the blockchain network 120. Characteristics of the record published by the blockchain client 140B are described above in connection with
In some examples, the transaction authorizer 315 operates with the data validator 320 and/or the access validator 325 of the datamart subscriber client 160 to enforce relevant condition(s) governing the data and/or access to the data after the transaction has been validated. For example, the data validator 320 can program the smart contract application 165 with data characteristic condition(s) to be monitored while a transaction for given data is active. For example, the data validator 320 may program the smart contract application 165 with condition governing the collection of the data by the data publisher endpoint device 105, as described above. In some examples, the access validator 325 can program the smart contract application 165 with data access condition(s) to be monitored while a transaction for given identified data is active. For example, the access validator 325 may program the smart contract application 165 with conditions governing the frequency with which the data retriever 305 is permitted to access the data made available by the data publisher endpoint device 105, the amount data the data retriever 305 is permitted to access, the duration of time during which the data retriever 305 is permitted to access data, etc. If the data validator 320 and/or the access validator 325 determines that one or more of the specified condition(s) have not been met, the transaction authorizer 315 can update the transaction accordingly. For example, the transaction authorizer 315 may terminate the transaction, place the transaction on hold, etc. In some such examples, the transaction authorizer 315 publishes a record updating the transaction to the blockchain network 120, which is to be added to the blockchain implemented by the blockchain network 120. For example, the record may include the label (e.g., hash) identifying the data, the price for accessing the data, the identifier associated with the data publisher endpoint device 105, the identifier associated with the data subscriber endpoint system 110 and a transaction type set to terminated, on-hold, etc.
A block diagram of an example blockchain client 140 that may be used to implement the blockchain client 140A included in the example data publisher endpoint device 105 and/or the blockchain client 140B included in the example data subscriber endpoint system 110 of
The blockchain client 140 includes the transaction auditor 410 to audit the records contained in the blockchain implemented by the blockchain network 120. Because the records contained in the blockchain include labels (e.g., hashes) identifying the data that is the subject of each record, the transaction auditor 410 can examine the blockchain to identify records associated with specific data of interest. If a record associated with the specific data of interest is found, the transaction auditor 410 can further examine the contents of the record, such as the identifier of the data publisher endpoint device 105 included in the record, the identifier of the data subscriber endpoint system 110, etc., to determine whether the data transaction associated with the record was proper or improper. If the data transaction was improper, the transaction auditor 410 can notify its associated datamart client (e.g., the datamart publisher client 135 or the datamart subscriber client 160) of the improper data transaction to enable the datamart client to take appropriate remedial action (e.g., such as presenting a message at the associated endpoint, sending a message to a user device, enforcing a monetary penalty on one or more of the endpoints associated with the improper transaction, etc.).
For example, consider a scenario in which a first data subscriber endpoint system 110 improperly copied data accessed from a data publisher endpoint device 105 and makes the copied data available to a second data subscriber endpoint system 110 in the digital data exchange system 100 (e.g., by selling the copied data, leasing the copied data, etc.). A record of this improper transaction would be added to the blockchain implemented by the blockchain network 120 in the manner described above. The record would include the label (e.g., hash) identifying the data, and would also identify the first data subscriber endpoint system 110 as the data provider in this transaction, and would identify the second data subscriber endpoint system 110 as the data subscriber of this transaction. In such an example, the transaction auditor 410 could identify the specific data that was the subject of this transaction based on the label (e.g., hash) included in the record, and could determine the transaction was improper because the record identifies the first data subscriber endpoint system 110 as the data provider in the transaction, but the first data subscriber endpoint system 110 was not authorized to copy and share the data with another data subscriber.
An example message sequence diagram 500 illustrating example operation of the of the blockchain-based digital data exchange system 100 of
Assuming the data identified in the data availability notification 515 is of interest to the data subscriber endpoint system 110, the data subscriber endpoint system 110 transmits an example data transaction request 520 to the data publisher endpoint device 105 identified in the data availability notification 515. In the illustrated example, the data transaction request 520 includes the label (e.g., hash) identifying the data as specified in the data availability notification 515, and a public encryption key associated with the data subscriber endpoint system 110. In the illustrated example, in response to the data transaction request 520, the data publisher endpoint device 105 transmits an example data transaction initiation message 525 to the data subscriber endpoint system 110. In the illustrated example, the data transaction initiation message 525 specifies a location (e.g., a network address, a uniform resource locator (URL), etc.) at which the data subscriber endpoint system 110 can access the data identified by the label (e.g., hash) included in the data transaction request 520. In the illustrated example, the data subscriber endpoint system 110 accesses the data, decrypts the data using the private encryption key associated with the public encryption key included in the data transaction request 520, and validates the data as described above (which is represented by block 530 in
In the illustrated example, in response to the accept transaction message 535, the data publisher endpoint device 105 also validates the transaction (e.g., by confirming a specified payment for accessing the data has been paid), as described above (which is represented by block 530 in
In the illustrated example, the data publisher endpoint device 105 and the data subscriber endpoint system 110 continue to monitor, as described above, the data being provided by the data publisher endpoint device 105 and/or the data access operations being performed by the data subscriber endpoint system 110 to enforce the condition(s) specified for the transaction (which is represented by blocks 555 and 560 in
While example manners of implementing the example data publisher endpoint device 105 and the example data subscriber endpoint system 110 are illustrated in
Flowcharts representative of example hardware logic, machine readable instructions, hardware implemented state machines, and/or any combination thereof for implementing the example data publisher endpoint device 105 and the example data subscriber endpoint system 110 are shown in
As mentioned above, the example processes of
“Including” and “comprising” (and all forms and tenses thereof) are used herein to be open ended terms. Thus, whenever a claim employs any form of “include” or “comprise” (e.g., comprises, includes, comprising, including, having, etc.) as a preamble or within a claim recitation of any kind, it is to be understood that additional elements, terms, etc. may be present without falling outside the scope of the corresponding claim or recitation. As used herein, when the phrase “at least” is used as the transition term in, for example, a preamble of a claim, it is open-ended in the same manner as the term “comprising” and “including” are open ended. The term “and/or” when used, for example, in a form such as A, B, and/or C refers to any combination or subset of A, B, C such as (1) A alone, (2) B alone, (3) C alone, (4) A with B, (5) A with C, (6) B with C, and (7) A with B and with C. As used herein in the context of describing structures, components, items, objects and/or things, the phrase “at least one of A and B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B. Similarly, as used herein in the context of describing structures, components, items, objects and/or things, the phrase “at least one of A or B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B. As used herein in the context of describing the performance or execution of processes, instructions, actions, activities and/or steps, the phrase “at least one of A and B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B. Similarly, as used herein in the context of describing the performance or execution of processes, instructions, actions, activities and/or steps, the phrase “at least one of A or B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B.
An example program 600 that may be executed to implement the example data publisher endpoint device 105 of
If a request to initiate a data transaction is received (block 620), at block 625 the data publisher endpoint device 105 encrypts the data identified in the transaction initiation request with a public encryption key included in the transaction initiation request, as described above. At block 625, the data publisher endpoint device 105 also initiates the data transaction by providing the requesting data subscriber endpoint system 110 with initial access to the identified data, as described above. At block 630, the data publisher endpoint device 105 monitors for a message from the requesting data subscriber endpoint system 110 indicating acceptance of the transaction.
If the data transaction is accepted (block 630), at block 635 the data publisher endpoint device 105 validates the acceptance of the transaction (e.g., by confirming the specified payment for accessing the data has been made by the requesting data subscriber endpoint system 110), as described above. If the transaction is validated (block 640), at block 645 the data publisher endpoint device 105 publishes a record of the transaction to the blockchain network 120, as described above. At block 650, the data publisher endpoint device 105 continues to validate any relevant data collection condition(s), data access condition(s), etc., specified for the transaction, as described above. If one or more of the conditions are not met (block 655), the data publisher endpoint device 105 publishes a record updating the transaction to the blockchain network 120, as described above. At block 665, the data publisher endpoint device 105 stops the requesting data subscriber endpoint system 110 from being able to access the data, as described above.
An example program 700 that may be executed to implement the example data subscriber endpoint system 110 of
If a response message initiation the data transaction is received in response to the transaction initiation request (block 725), at block 730 the data subscriber endpoint system 110, as described above. For example, at block 730 the data subscriber endpoint system 110 may access the data at a location specified in the received transaction initiation message, decrypt the data using a private encryption key associated with the public encryption key included in the transaction initiation request, and validate the data against one or more conditions, as described above.
If the data is validated (block 735), at block 740 the data subscriber endpoint system 110 transmits a message to the data publisher endpoint device 105 to accept the transaction, as described above. At block 745, the data subscriber endpoint system 110 publishes a record of the transaction to the blockchain network 120, as described above. At block 750, the data subscriber endpoint system 110 continues to validate any relevant data collection condition(s), data access condition(s), etc., specified for the transaction, as described above. If one or more of the conditions are not met (block 755), the data subscriber endpoint system 110 publishes a record updating the transaction to the blockchain network 120, as described above. At block 765, the data subscriber endpoint system 110 stops accessing the data from the data publisher endpoint device 105, as described above
The processor platform 800 of the illustrated example includes a processor 812. The processor 812 of the illustrated example is hardware. For example, the processor 812 can be implemented by one or more integrated circuits, logic circuits, microprocessors, GPUs, DSPs, or controllers from any desired family or manufacturer. The hardware processor 812 may be a semiconductor based (e.g., silicon based) device. In this example, the processor 812 implements the example datamart publisher client 135, the example blockchain client 140A, the example smart contract applications 145, the example data labeler 205, the example data availability publisher 210, the example data validator 215, the example transaction authorizer 220, the example data provider 225, the example transaction publisher 405 and/or the example transaction auditor 410.
The processor 812 of the illustrated example includes a local memory 813 (e.g., a cache). The processor 812 of the illustrated example is in communication with a main memory including a volatile memory 814 and a non-volatile memory 816 via a link 818. The link 818 may be implemented by a bus, one or more point-to-point connections, etc., or a combination thereof. The volatile memory 814 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random Access Memory (RDRAM®) and/or any other type of random access memory device. The non-volatile memory 816 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 814, 816 is controlled by a memory controller.
The processor platform 800 of the illustrated example also includes an interface circuit 820. The interface circuit 820 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), a Bluetooth® interface, a near field communication (NFC) interface, and/or a PCI express interface.
In the illustrated example, one or more input devices 822 are connected to the interface circuit 820. The input device(s) 822 permit(s) a user to enter data and/or commands into the processor 812. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, a trackbar (such as an isopoint), a voice recognition system and/or any other human-machine interface. Also, many systems, such as the processor platform 800, can allow the user to control the computer system and provide data to the computer using physical gestures, such as, but not limited to, hand or body movements, facial expressions, and face recognition.
One or more output devices 824 are also connected to the interface circuit 820 of the illustrated example. The output devices 824 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display (LCD), a cathode ray tube display (CRT), an in-place switching (IPS) display, a touchscreen, etc.), a tactile output device, a printer and/or speakers(s). The interface circuit 820 of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip and/or a graphics driver processor.
The interface circuit 820 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem, a residential gateway, a wireless access point, and/or a network interface to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 826. The communication can be via, for example, an Ethernet connection, a digital subscriber line (DSL) connection, a telephone line connection, a coaxial cable system, a satellite system, a line-of-site wireless system, a cellular telephone system, etc.
The processor platform 800 of the illustrated example also includes one or more mass storage devices 828 for storing software and/or data. Examples of such mass storage devices 828 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, redundant array of independent disks (RAID) systems, and digital versatile disk (DVD) drives. In some examples, the mass storage device(s) 828 may implement the data storage 130. Additionally or alternatively, in some examples the volatile memory 814 may implement the data storage 130.
The machine executable instructions 832 corresponding to the instructions of
The processor platform 900 of the illustrated example includes a processor 912. The processor 912 of the illustrated example is hardware. For example, the processor 912 can be implemented by one or more integrated circuits, logic circuits, microprocessors, GPUs, DSPs, or controllers from any desired family or manufacturer. The hardware processor 912 may be a semiconductor based (e.g., silicon based) device. In this example, the processor 912 implements the example blockchain client 140B, the example datamart subscriber client 160, the example smart contract application 165, the example data retriever 305, the example data availability subscriber 310, the example transaction authorizer 315, the example data validator 320, the example access validator 325, the example transaction publisher 405 and/or the example transaction auditor 410.
The processor 912 of the illustrated example includes a local memory 913 (e.g., a cache). The processor 912 of the illustrated example is in communication with a main memory including a volatile memory 914 and a non-volatile memory 916 via a link 918. The link 918 may be implemented by a bus, one or more point-to-point connections, etc., or a combination thereof. The volatile memory 914 may be implemented by SDRAM, DRAM, RAMBUS® RDRAM® and/or any other type of random access memory device. The non-volatile memory 916 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 914, 916 is controlled by a memory controller.
The processor platform 900 of the illustrated example also includes an interface circuit 920. The interface circuit 920 may be implemented by any type of interface standard, such as an Ethernet interface, a USB, a Bluetooth® interface, an NFC interface, and/or a PCI express interface.
In the illustrated example, one or more input devices 922 are connected to the interface circuit 920. The input device(s) 922 permit(s) a user to enter data and/or commands into the processor 912. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, a trackbar (such as an isopoint), a voice recognition system and/or any other human-machine interface. Also, many systems, such as the processor platform 900, can allow the user to control the computer system and provide data to the computer using physical gestures, such as, but not limited to, hand or body movements, facial expressions, and face recognition.
One or more output devices 924 are also connected to the interface circuit 920 of the illustrated example. The output devices 924 can be implemented, for example, by display devices (e.g., an LED, an OLED, an LCD, a CRT display, an IPS display, a touchscreen, etc.), a tactile output device, a printer and/or speakers(s). The interface circuit 920 of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip and/or a graphics driver processor.
The interface circuit 920 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem, a residential gateway, a wireless access point, and/or a network interface to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 926. The communication can be via, for example, an Ethernet connection, a DSL connection, a telephone line connection, a coaxial cable system, a satellite system, a line-of-site wireless system, a cellular telephone system, etc.
The processor platform 900 of the illustrated example also includes one or more mass storage devices 928 for storing software and/or data. Examples of such mass storage devices 928 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, RAID systems, and DVD drives. In some examples, the mass storage device(s) 928 may implement the example data storage 170. Additionally or alternatively, in some examples the volatile memory 914 may implement the example data storage 170.
The machine executable instructions 932 corresponding to the instructions of
From the foregoing, it will be appreciated that example methods, apparatus and articles of manufacture have been disclosed to implement a blockchain-based digital data exchange to enable aggregation of data to support deep learning solutions for big data analytics. Blockchain-based digital data exchanges, as disclosed herein, can provide many benefits over prior data aggregation systems. For example, blockchain-based digital data exchanges, as disclosed herein, enable data owners to determine whether to sell or lease their data, specify conditions on recipients of the data, and obtain monetary reward in return. Also, data access is traceable in blockchain-based digital data exchanges disclosed herein. For example, each data access by a different recipient involves another data transaction, and such transactions are broadcast to the entire blockchain network. The transactions in the blockchain are identified by labels (e.g., hashes) identifying the data, such that data owners can trace each data access. Data access is also controllable in blockchain-based digital data exchanges disclosed herein. For example, the data owner can specify one or more conditions (e.g., constraints) on accessing the data being sold, leased, etc. (e.g., such as how long the data is permitted to be accessed). Smart contract code can be used to automatically enforce such conditions. Data access is also verifiable in blockchain-based digital data exchanges disclosed herein. For example, smart contract code can be used to enforce one or more conditions on how the data is collected to thereby satisfy the requirements of the data recipient (e.g., data buyer). Blockchain-based digital data exchanges, as disclosed herein, utilize blockchains to ensure protected data transactions, thereby eliminating the need for a separate, trusted third party to perform such a function.
The foregoing disclosure provides examples blockchain-based digital data exchange systems. The following further examples, which include subject matter such as a data publisher endpoint device for a blockchain-based digital data exchange system, at least one computer-readable storage medium including instructions that, when executed by at least one processor, cause the at least one processor to implement a data publisher endpoint device for a blockchain-based digital data exchange system, means for implementing a data publisher endpoint device for a blockchain-based digital data exchange system, a method for a data publisher endpoint device in a blockchain-based digital data exchange system, a data subscriber endpoint system for a blockchain-based digital data exchange system, at least one computer-readable storage medium including instructions that, when executed by at least one processor, cause the at least one processor to implement a data subscriber endpoint system for a blockchain-based digital data exchange system, means for implementing a data subscriber endpoint system for a blockchain-based digital data exchange system, and a method for a data subscriber endpoint system in a blockchain-based digital data exchange system are disclosed herein. The disclosed examples can be implemented individually and/or in one or more combinations.
Example 1 is a data publisher endpoint device including a datamart publisher client to transmit a message to a data exchange to publish availability of data to be accessed from data storage associated with the data publisher endpoint device and, in response to a request from a data subscriber endpoint system, initiate a transaction to provide the data subscriber endpoint system with access to the data. The data publisher endpoint device of example 1 also includes a blockchain client to publish a record of the transaction to a blockchain network when the transaction is validated by the datamart publisher client, the record to be included in a blockchain implemented by the blockchain network
Example 2 includes the subject matter of example 1, wherein datamart publisher client is further to determine a label for the data, determine a price for accessing the data, and include the label and the price in the message to transmit to the data exchange to publish the availability of the data.
Example 3 includes the subject matter of example 2, wherein the message is a first message, the request includes a public encryption key associated with the data subscriber endpoint system, and the datamart publisher client is to: encrypt the data with the public encryption key to generate encrypted data; transmit a second message to the data subscriber endpoint system to initiate the transaction, the second message to specify a location at which the encrypted data can be accessed by the data subscriber endpoint system; and receive a response to the second message from the data subscriber endpoint system, the response to indicate whether the transaction is accepted by the data subscriber endpoint system.
Example 4 includes the subject matter of example 3, and further includes a smart contract application to validate the transaction when the response to the second message indicates the transaction has been accepted by the data subscriber endpoint system, the smart contract application to confirm payment of the price by the data subscriber endpoint system to validate the transaction.
Example 5 includes the subject matter of example 4, wherein the record is a first record, and (1) the datamart publisher client is further to determine a condition for accessing the data and to include the condition in the message to transmit to the data exchange to publish the availability of the data, (2) the smart contract application is to monitor access of the data by the data subscriber endpoint system to enforce the condition after the transaction has been validated, and (3) the blockchain client is to publish a second record to the block chain network to update the transaction when the smart contract application determines the condition has been violated by the data subscriber endpoint system.
Example 6 includes the subject matter of example 5, wherein the condition specifies at least one of a duration during which the data is permitted to be accessed or a frequency at which the data is permitted to be accessed.
Example 7 includes the subject matter of example 3, wherein the smart contract application is further to monitor a data producing application of the data publisher endpoint device to enforce a condition for at least one of generating or collecting the data.
Example 8 includes the subject matter of any one of examples 2 to 7, wherein the record is to include a transaction identifier, the label, the price, an identifier associated with the data publisher endpoint device and an identifier associated with the data subscriber endpoint system, and the blockchain client is to transmit the record to computing nodes included in the blockchain network to publish the record to the blockchain network.
Example 9 includes the subject matter of example 8, wherein the label is a first label, the record is a first record and the blockchain client is further to monitor the blockchain for records other than the first record including corresponding labels matching the first label, and notify the datamart publisher client when at least one of the records other than the first record includes a corresponding label matching the first label.
Example 10 includes the subject matter of any one of examples 1 to 9, and further includes a data producing application to provide the data to the data storage associated with the data publisher endpoint device.
Example 11 includes at least one non-transitory computer readable storage medium including computer readable instructions that, when executed, cause at least one processor of a data publisher endpoint device to at least (1) transmit a message to a data exchange to publish availability of data to be accessed from data storage associated with the data publisher endpoint device, (2) initiate a transaction to provide a data subscriber endpoint system with access to the data in response to a request from the data subscriber endpoint system, and (3) publish a record of the transaction to a blockchain network when the transaction is validated, the record to be included in a blockchain implemented by the blockchain network.
Example 12 includes the subject matter of example 11, wherein the computer readable instructions, when executed, further cause the at least one processor to determine a label for the data, determine a price for accessing the data, and include the label and the price in the message to transmit to the data exchange to publish the availability of the data.
Example 13 includes the subject matter of example 12, wherein the message is a first message, the request includes a public encryption key associated with the data subscriber endpoint system, and the computer readable instructions, when executed, cause the at least one processor to: encrypt the data with the public encryption key to generate encrypted data; transmit a second message to the data subscriber endpoint system to initiate the transaction, the second message to specify a location at which the encrypted data can be accessed by the data subscriber endpoint system; and receive a response to the second message from the data subscriber endpoint system, the response to indicate whether the transaction is accepted by the data subscriber endpoint system.
Example 14 includes the subject matter of example 13, wherein the computer readable instructions, when executed, further cause the at least one processor to execute a smart contract application to validate the transaction when the response to the second message indicates the transaction has been accepted by the data subscriber endpoint system, the smart contract application to confirm payment of the price by the data subscriber endpoint system to validate the transaction.
Example 15 includes the subject matter of example 14, wherein the record is a first record, and the computer readable instructions, when executed, further cause the at least one processor to: determine a condition for accessing the data and include the condition in the message to transmit to the data exchange to publish the availability of the data; execute the smart contract application to monitor access of the data by the data subscriber endpoint system to enforce the condition after the transaction has been validated; and publish a second record to the block chain network to update the transaction when the smart contract application determines the condition has been violated by the data subscriber endpoint system.
Example 16 includes the subject matter of example 15, wherein the condition specifies at least one of a duration during which the data is permitted to be accessed or a frequency at which the data is permitted to be accessed.
Example 17 includes the subject matter of example 14, wherein the smart contract application is further to monitor a data producing application of the data publisher endpoint device to enforce a condition for at least one of generating or collecting the data.
Example 18 includes the subject matter of any one of examples 12 to 17, wherein the record is to include a transaction identifier, the label, the price, an identifier associated with the data publisher endpoint device and an identifier associated with the data subscriber endpoint system, and the computer readable instructions, when executed, cause the at least one processor to transmit the record to computing nodes included in the blockchain network to publish the record to the blockchain network.
Example 19 includes the subject matter of example 18, wherein the label is a first label, the record is a first record and the computer readable instructions, when executed, further cause the at least one processor to monitor the blockchain for records other than the first record including corresponding labels matching the first label, and present a notification when at least one of the records other than the first record includes a corresponding label matching the first label.
Example 20 includes the subject matter of any one of examples 11 to 19, wherein the computer readable instructions, when executed, further cause the at least one processor to execute a data producing application to provide the data to the data storage associated with the data publisher endpoint device.
Example 21 is a data subscriber endpoint system including a datamart subscriber client to access a notification from a data exchange, the notification to indicate that a data publisher endpoint device has published availability of data associated with the data publisher endpoint device, and transmit a request to the data publisher endpoint device to initiate a transaction to provide the data subscriber endpoint system with access to the data. The data subscriber endpoint system of claim 21 also includes a blockchain client to publish a record of the transaction to a blockchain network when the transaction is validated by the datamart subscriber client, the record to be included in a blockchain implemented by the blockchain network.
Example 22 includes the subject matter of example 21, wherein the notification is a first notification, and the datamart subscriber client is further to transmit a message to the data exchange to subscribe for data availability notifications, and compare the first notification to one or more criteria to determine whether to request initiation of the transaction to provide the data subscriber endpoint system with access to the data.
Example 23 includes the subject matter of example 22, wherein the datamart subscriber client is further to access a message received from the data publisher endpoint device in response to the request, the message to specify a location at which the data can be accessed by the data subscriber endpoint system, and access the data from the location specified in the message.
Example 24 includes the subject matter of example 23, wherein the request is to include a public encryption key associated with the data subscriber endpoint system, and the datamart subscriber client is further to decrypt the data accessed from the location specified in the message, the datamart subscriber client to decrypt the data based on a private encryption key associated with the public encryption key.
Example 25 includes the subject matter of example 23 or example 24, and further includes a smart contract application to evaluate the data accessed from the location specified in the message to determine whether to validate the transaction, the smart contract application to evaluate the data based on a condition specified for the data in the first notification.
Example 26 includes the subject matter of example 25, wherein the condition specifies at least one of a quantity of the data or a duration covered by the data.
Example 27 includes the subject matter of example 25 or example 26, wherein the record is a first record, the smart contract application is further to monitor the data accessed from the location to enforce the condition after the transaction has been validated, and the blockchain client is to publish a second record to the block chain network to update the transaction when the smart contract application determines the data does not satisfy the condition.
Example 28 includes the subject matter of any one of examples 21 to 27, and further includes an application to process the data.
Example 29 includes at least one non-transitory computer readable storage medium including computer readable instructions that, when executed, cause at least one processor of a data subscriber endpoint system to at least (1) access a notification from a data exchange, the notification to indicate that a data publisher endpoint device has published availability of data associated with the data publisher endpoint device, (2) transmit a request to the data publisher endpoint device to initiate a transaction to provide the data subscriber endpoint system with access to the data, and (3) publish a record of the transaction to a blockchain network when the transaction is validated, the record to be included in a blockchain implemented by the blockchain network.
Example 30 includes the subject matter of example 29, wherein the notification is a first notification, and the computer readable instructions, when executed, further cause the at least one processor to transmit a message to the data exchange to subscribe for data availability notifications, and compare the first notification to one or more criteria to determine whether to request initiation of the transaction to provide the data subscriber endpoint system with access to the data.
Example 31 includes the subject matter of example 30, wherein the computer readable instructions, when executed, further cause the at least one processor to access a message received from the data publisher endpoint device in response to the request, the message to specify a location at which the data can be accessed by the data subscriber endpoint system, and access the data from the location specified in the message.
Example 32 includes the subject matter of example 31, wherein the request is to include a public encryption key associated with the data subscriber endpoint system, and the computer readable instructions, when executed, further cause the at least one processor to decrypt the data accessed from the location specified in the message, the data to be decrypted based on a private encryption key associated with the public encryption key.
Example 33 includes the subject matter of example 31 or example 32, wherein the computer readable instructions, when executed, further cause the at least one processor to execute a smart contract application to evaluate the data accessed from the location specified in the message to determine whether to validate the transaction, the smart contract application to evaluate the data based on a condition specified for the data in the first notification.
Example 34 includes the subject matter of example 33, wherein the condition specifies at least one of a quantity of the data or a duration covered by the data.
Example 35 includes the subject matter of example 33 or example 34, wherein the record is a first record, and the computer readable instructions, when executed, further cause the at least one processor to execute the smart contract application to further monitor the data accessed from the location to enforce the condition after the transaction has been validated, and publish a second record to the block chain network to update the transaction when the smart contract application determines the data does not satisfy the condition.
Example 36 includes the subject matter of any one of examples 29 to 35, wherein the computer readable instructions, when executed, further cause the at least one processor to execute an application to process the data.
Example 37 is a method including transmitting, by executing an instructions with a processor of a data publisher endpoint device, a message to a data exchange to publish availability of data to be accessed from data storage associated with the data publisher endpoint device. The method of example 37 also includes initiating, by executing an instructions with the processor, a transaction to provide a data subscriber endpoint system with access to the data in response to a request from the data subscriber endpoint system. The method of example 37 further includes publishing, by executing an instructions with the processor, a record of the transaction to a blockchain network when the transaction is validated, the record to be included in a blockchain implemented by the blockchain network.
Example 38 includes the subject matter of example 37, wherein the method further includes determining a label for the data, determining a price for accessing the data, and including the label and the price in the message to transmit to the data exchange to publish the availability of the data.
Example 39 includes the subject matter of example 38, wherein the message is a first message, the request includes a public encryption key associated with the data subscriber endpoint system, and the method further includes encrypting the data with the public encryption key to generate encrypted data; transmitting a second message to the data subscriber endpoint system to initiate the transaction, the second message to specify a location at which the encrypted data can be accessed by the data subscriber endpoint system; and receiving a response to the second message from the data subscriber endpoint system, the response to indicate whether the transaction is accepted by the data subscriber endpoint system.
Example 40 includes the subject matter of example 39, wherein the method further includes executing a smart contract application to validate the transaction when the response to the second message indicates the transaction has been accepted by the data subscriber endpoint system, the smart contract application to confirm payment of the price by the data subscriber endpoint system to validate the transaction.
Example 41 includes the subject matter of example 40, wherein the record is a first record, and the method further includes: determining a condition for accessing the data and include the condition in the message to transmit to the data exchange to publish the availability of the data; executing the smart contract application to monitor access of the data by the data subscriber endpoint system to enforce the condition after the transaction has been validated; and publishing a second record to the block chain network to update the transaction when the smart contract application determines the condition has been violated by the data subscriber endpoint system.
Example 42 includes the subject matter of example 41, wherein the condition specifies at least one of a duration during which the data is permitted to be accessed or a frequency at which the data is permitted to be accessed.
Example 43 includes the subject matter of example 40, wherein the smart contract application is further to monitor a data producing application of the data publisher endpoint device to enforce a condition for at least one of generating or collecting the data.
Example 44 includes the subject matter of any one of examples 38 to 43, wherein the record is to include a transaction identifier, the label, the price, an identifier associated with the data publisher endpoint device and an identifier associated with the data subscriber endpoint system, and the method further includes transmitting the record to computing nodes included in the blockchain network to publish the record to the blockchain network.
Example 45 includes the subject matter of example 44, wherein the label is a first label, the record is a first record and the method further includes monitoring the blockchain for records other than the first record including corresponding labels matching the first label, and presenting a notification when at least one of the records other than the first record includes a corresponding label matching the first label.
Example 46 includes the subject matter of any one of examples 37 to 45, wherein the method further includes executing a data producing application to provide the data to the data storage associated with the data publisher endpoint device.
Example 47 is a method including access, by executing an instruction with a processor of a data subscriber endpoint system, a notification from a data exchange, the notification to indicate that a data publisher endpoint device has published availability of data associated with the data publisher endpoint device. The method of example 47 also includes transmitting a request to the data publisher endpoint device to initiate a transaction to provide the data subscriber endpoint system with access to the data. The method of example 47 further includes publishing a record of the transaction to a blockchain network when the transaction is validated, the record to be included in a blockchain implemented by the blockchain network.
Example 48 includes the subject matter of example 47, wherein the notification is a first notification, and the method further includes transmitting a message to the data exchange to subscribe for data availability notifications, and comparing the first notification to one or more criteria to determine whether to request initiation of the transaction to provide the data subscriber endpoint system with access to the data.
Example 49 includes the subject matter of example 48, wherein the method further includes accessing a message received from the data publisher endpoint device in response to the request, the message to specify a location at which the data can be accessed by the data subscriber endpoint system, and accessing the data from the location specified in the message.
Example 50 includes the subject matter of example 49, wherein the request is to include a public encryption key associated with the data subscriber endpoint system, and the method further includes decrypting the data accessed from the location specified in the message, the data to be decrypted based on a private encryption key associated with the public encryption key.
Example 51 includes the subject matter of example 49 or example 50, wherein the method further includes executing a smart contract application to evaluate the data accessed from the location specified in the message to determine whether to validate the transaction, the smart contract application to evaluate the data based on a condition specified for the data in the first notification.
Example 52 includes the subject matter of example 51, wherein the condition specifies at least one of a quantity of the data or a duration covered by the data.
Example 53 includes the subject matter of example 51 or example 52, wherein the record is a first record, and the smart contract application is further to monitor the data accessed from the location to enforce the condition after the transaction has been validated, and publish a second record to the block chain network to update the transaction when the smart contract application determines the data does not satisfy the condition.
Example 54 includes the subject matter of any one of examples 47 to 53, wherein the method further includes executing an application to process the data.
Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.