Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DATA EXCHANGE PLATFORM USING BLOCKCHAIN
Document Type and Number:
WIPO Patent Application WO/2020/035320
Kind Code:
A1
Abstract:
A method for exchanging data using a blockchain network includes uploading the data to a plurality of cloud servers and committing the data to the blockchain network. An offer for the data is created on the blockchain network. Payment is received from a data consumer after the offer has been accepted. Smartcontracts are implemented in the blockchain network to verify possession of the data, to settle the offer against the payment and to change an access control list (ACL) such that the data on the cloud servers is accessible by the data consumer.

Inventors:
KARAME GHASSAN (DE)
GARCIA GALVAO ALMEIDA MIGUEL (DE)
Application Number:
PCT/EP2019/070712
Publication Date:
February 20, 2020
Filing Date:
July 31, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NEC LABORATORIES EUROPE GMBH (DE)
International Classes:
H04L29/06; G06F21/60; G06F21/62
Domestic Patent References:
WO2018019364A12018-02-01
Foreign References:
US20180191714A12018-07-05
US9787469B22017-10-10
Other References:
HUBERT RITZDORF ET AL: "Towards Shared Ownership in the Cloud", IACR, INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH, vol. 20170309:102132, 5 March 2017 (2017-03-05), pages 1 - 14, XP061022934
Attorney, Agent or Firm:
ULLRICH & NAUMANN (DE)
Download PDF:
Claims:
CLAIMS

1. A method for exchanging data using a blockchain network, the method comprising: uploading the data to a plurality of cloud servers; committing the data to the blockchain network; creating an offer for the data on the blockchain network; and receiving a payment from a data consumer after the offer has been accepted, wherein smartcontracts are implemented in the blockchain network to verify possession of the data, to settle the offer against the payment and to change an access control list, ACL, such that the data on the cloud servers is accessible by the data consumer.

2. The method according to claim 1, wherein the data uploaded to the cloud servers is encrypted by an all or nothing transform, AONT.

3. The method according to claim 1 or 2, wherein one or more cloud providers of the cloud servers operate or subscribe to at least one blockchain node of the blockchain network such that the one or more cloud providers are notified to make the change to the ACL.

4. The method according to any of claims 1 to 3, wherein the smartcontracts are further used to facilitate the creation and acceptance of the offer for the data.

5. The method according to any of claims 1 to 4, wherein at least one of the

smartcontracts specifies, in the creation of the offer, a public key of a data producer which uploaded the data to the cloud servers, a description of the data, a price of the data and an offer identification.

6. The method according to any of claims 1 to 5, wherein at least one of the

smartcontracts enables cancellation of the offer for the data prior to the offer being accepted.

7. The method according to any of claims 1 to 6, wherein at least one of the

smartcontracts, to verify the possession of the data, connects to the cloud servers to check for an owner of the data, the ACL of the data stored on the cloud servers and a hash of the data.

8. The method according to any of claims 1 to 7, wherein at least one of the smartcontracts continuously or periodically checks that the ACL of the data stored on the cloud servers matches permissions for the data stored in the blockchain network.

9. The method according to any of claims 1 to 8, wherein the payment is an IOU payment.

10. A data exchange platform comprising: a blockchain network comprising a plurality of computer nodes and storing data which has been committed to the blockchain network by a data producer who has also uploaded the data to a plurality of cloud servers; and smartcontracts implemented in the blockchain network to create an offer for the data, to accept the offer for the data, to generate a payment for the data, to verify possession of the data, to settle the offer against the payment and to change an access control list (ACL) such that the data on the cloud servers is accessible by a data consumer who has accepted the offer for the data.

11. The data exchange platform according to claim 10, wherein at least one of the smartcontracts specifies, in the creation of the offer, a public key of a data producer which uploaded the data to the cloud servers, a description of the data, a price of the data and an offer identification.

12. The data exchange platform according to claim 10 or 11, wherein at least one of the smartcontracts enables cancellation of the offer for the data prior to the offer being accepted.

13. The data exchange platform according to any of claims 10 to 12, wherein at least one of the smartcontracts, to verify the possession of the data, connects to the cloud servers to check for an owner of the data, the ACL of the data stored on the cloud servers and a hash of the data.

14. The data exchange platform according to any of claims 10 to 13, wherein at least one of the smartcontracts continuously or periodically checks that the ACL of the data stored on the cloud servers matches permissions for the data stored in the blockchain network.

15. A non-tangible, computer-readable medium containing instructions which, upon execution by one or more processors with access to memory, provides for execution of a method for exchanging data using a blockchain network comprising: uploading the data to a plurality of cloud servers; committing the data to the blockchain network; creating an offer for the data on the blockchain network; and receiving an IOU payment from a data consumer after the offer has been accepted, wherein smartcontracts are implemented in the blockchain network to verify possession of the data, to settle the offer against the IOU payment and to change an access control list, ACL, such that the data on the cloud servers is accessible by the data consumer.

Description:
DATA EXCHANGE PLATFORM USING BLOCKCHAIN

CROSS-REFERENCE TO PRIOR APPLICATION

[0001] Priority is claimed to U.S. Provisional Patent Application No. 62/764,918 filed on August 15, 2018, the entire disclosure of which is hereby incorporated by reference herein.

FIELD

[0002] The present invention relates to the application of blockchain technology to establish and operate a secure and transparent data exchange platform.

BACKGROUND

[0003] Data has been becoming increasingly more valuable. At the same time, there has been an increasing amount of data being exchanged between different parties. Depending on the scenario, these parties may or may not know each other, and many times cannot trust each other. In addition, there is a demand from society, both companies and individuals, for increased privacy and accountability for those that do not sufficiently safeguard data or adhere to established rules (e.g., penalties for data leaks).

SUMMARY

[0004] In an embodiment, the present invention provides a method for exchanging data using a blockchain network. The method includes uploading the data to a plurality of cloud servers and committing the data to the blockchain network. An offer for the data is created on the blockchain network. Payment is received from a data consumer after the offer has been accepted. Smartcontracts are implemented in the blockchain network to verify possession of the data, to settle the offer against the payment and to change an access control list (ACL) such that the data on the cloud servers is accessible by the data consumer.

BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The present invention will be described in even greater detail below based on the exemplary figures. The invention is not limited to the exemplary embodiments. All features described and/or illustrated herein can be used alone or combined in different combinations in embodiments of the invention. The features and advantages of various embodiments of the present invention will become apparent by reading the following detailed description with reference to the attached drawings which illustrate the following:

[0006] FIG. 1 schematically illustrates a current method of using a blockchain network to pay for goods;

[0007] FIG. 2 schematically illustrates a method according to an embodiment of the present invention for exchanging data using a blockchain network; and

[0008] FIG. 3 schematically illustrates a data exchange platform and the computer implementation of a method according to an embodiment of the present invention for exchanging data using a blockchain network.

DETAILED DESCRIPTION

[0009] Embodiments of the present invention provide a data exchange platform that relies on blockchain technology and cloud computing to provide privacy and security. Embodiments of the present invention provide functions allowing to create and regulate such a data exchange platform, as well as a process to regulate the data exchange over the blockchain by using all or nothing encryption in a keyless deterministic way.

[0010] According to an embodiment of the present invention, a paradigm (for example, an Internet of Things (IoT) environment) is provided for where there are data producers (e.g. companies or users that own smart devices) and data consumers (e.g. companies that engage in big data analytics or artificial intelligence). The data producers are able to generate value by selling their data. The data consumers can bid on data that is relevant to them. It is possible to act as both a data producer and consumer.

[0011] Furthermore, according to an embodiment of the present invention, the data producers are able to keep their data private and secure, even from very strong adversaries such as governments or rogue cloud providers, and are preferably also able to provide specific and revocable access to their data. Moreover, the participants in the blockchain network have sufficient assurance that the data exists and that who is selling it is the actual owner.

[0012] In order to achieve this paradigm, embodiments of the present invention create an environment where data can be exchanged, traced, and where access policies can be enforced while keeping the whole process transparent to all the participants, so anyone can verify whether the rules are being followed or not. At the same time, embodiments of the present invention keep the data private to all but the authorized parties.

[0013] In particular, the inventors have recognized that blockchain by its nature provides a good setting to achieve the aforementioned environment as it is generally used as a distributed ledger, tracking transactions that happen amongst its participants. Additionally, the inventors have recognized that blockchain allows for the remote execution of computer programs, and in particular smartcontracts, that can be used to manage and regulate the market. These smartcontracts can enforce rules and automatically take punitive actions against those infringing them.

[0014] In order to enable the use of blockchain to provide for the secure and transparent exchange of data, and especially larger amounts of data, embodiments of the present invention also provide for adaptations to be made to the blockchain in order to make the solution more ideal. These adaptations in particular advantageously recognize, address and solve problems which have inhibited blockchain use for data exchange. These problems include:

1. It is very inefficient and expensive to send large amounts of data over the blockchain, but without doing so there is currently no technical solution that allows the blockchain to keep track of who owns the data.

2. Committing data into the blockchain will make it permanently available to all the participants on the network, and there will be no way of either a) revoking the access or b) deleting the data.

3. Without committing data into the blockchain there is currently no technical way for the blockchain (and therefore all the peers therein) to have proof that whoever is trying to sell data has ownership. Also, once the transaction is completed, the recipient has access to the data.

4. Key management (to manage access to encrypted files) is usually a very arduous task in that it is burdensome on computer resources and requires detailed security measures, careful design and trusted authorities for issuing and revoking them. [0015] According to embodiments of the present invention, technical adaptations are applied to the blockchain to provide technical solutions that address and solve these problems, thus allowing for the efficient exchange of data between entities, or delivery of data from the data producer to the data consumer, while still maintaining blockchain traceability, as well as cryptographical proof that the data consumer got the data, and that the data producer is authorized to distribute the data and/or actually owns what it is selling.

[0016] In an embodiment, the present invention provides a method for exchanging data using a blockchain network which includes uploading the data to a plurality of cloud servers and committing the data to the blockchain network. An offer for the data is created on the blockchain network. Payment is received from a data consumer after the offer has been accepted. Smartcontracts are implemented in the blockchain network to verify possession of the data, to settle the offer against the payment and to change an access control list (ACL) such that the data on the cloud servers is accessible by the data consumer.

[0017] In the same or other embodiment, the data uploaded to the cloud servers is encrypted by an all or nothing transform (AONT).

[0018] In the same or other embodiment, one or more cloud providers of the cloud servers operate or subscribe to at least one blockchain node of the blockchain network such that the one or more cloud providers are notified to make the change to the ACL.

[0019] In the same or other embodiment, the smartcontracts are further used to facilitate the creation and acceptance of the offer for the data.

[0020] In the same or other embodiment, at least one of the smartcontracts specifies, in the creation of the offer, a public key of a data producer which uploaded the data to the cloud servers, a description of the data, a price of the data and an offer identification.

[0021] In the same or other embodiment, at least one of the smartcontracts enables cancellation of the offer for the data prior to the offer being accepted.

[0022] In the same or other embodiment, at least one of the smartcontracts, to verify the possession of the data, connects to the cloud servers to check for an owner of the data, the ACL of the data stored on the cloud servers and a hash of the data. [0023] In the same or other embodiment, at least one of the smartcontracts continuously or periodically checks that the ACL of the data stored on the cloud servers matches permissions for the data stored in the blockchain network.

[0024] In the same or other embodiment, the payment is an IOU payment.

[0025] In another embodiment, the present invention provides data exchange platform. The data exchange platform includes a blockchain network comprising a plurality of computer nodes and storing data which has been committed to the blockchain network by a data producer who has also uploaded the data to a plurality of cloud servers; and smartcontracts implemented in the blockchain network to create an offer for the data, to accept the offer for the data, to generate a payment for the data, to verify possession of the data, to settle the offer against the payment and to change an access control list (ACL) such that the data on the cloud servers is accessible by a data consumer who has accepted the offer for the data.

[0026] In the same or other embodiment, at least one of the smartcontracts specifies, in the creation of the offer, a public key of a data producer which uploaded the data to the cloud servers, a description of the data, a price of the data and an offer identification.

[0027] In the same or other embodiment, at least one of the smartcontracts enables cancellation of the offer for the data prior to the offer being accepted.

[0028] In the same or other embodiment, at least one of the smartcontracts, to verify the possession of the data, connects to the cloud servers to check for an owner of the data, the ACL of the data stored on the cloud servers and a hash of the data.

[0029] In the same or other embodiment, at least one of the smartcontracts continuously or periodically checks that the ACL of the data stored on the cloud servers matches permissions for the data stored in the blockchain network.

[0030] In a further embodiment, the present invention provides a non-tangible, computer- readable medium containing instructions which, upon execution by one or more processors with access to memory, provides for execution of a method for exchanging data using a blockchain network. The method includes uploading the data to a plurality of cloud servers and committing the data to the blockchain network. An offer for the data is created on the blockchain network. Payment is received from a data consumer after the offer has been accepted. Smartcontracts are implemented in the blockchain network to verify possession of the data, to settle the offer against the payment and to change an access control list (ACL) such that the data on the cloud servers is accessible by the data consumer.

[0031] FIG. 1 shows a current system 10 in which goods, such as data 14, can be exchanged between a producer 11 and a consumer 12 using a blockchain network 15 for electronic payment 16. Specifically, as indicated by block [1] in FIG. 1, the electronic payments 16 (e.g., a ledger of debt) are tracked and agreed upon on the blockchain network 15; and as indicated by the block [2] in FIG. 1, the goods, such as the data 14, are transferred via a side channel with no real options for traceability from the blockchain network 15. Thus, while the blockchain network 15 can be used for electronic payments 16, and allows those electronic payments 16 to be verified and stored, the transfer of goods, such as the data, is separate from the blockchain network 15 and therefore lacks the security and traceability of the electronic payments 16. Moreover, the blockchain network 15 cannot verify that the producer 11 actually owns the goods and the consumer 12 actually received the goods.

[0032] An alternative to FIG. 1 could be a scenario where both the data 14 and the electronic payment 16 are transferred via the blockchain network 15. However, this would bloat and overload the blockchain network 15 since blockchain technology is not optimized to transfer huge amounts of data. Moreover, there would be a lack of security and privacy since the data available to every blockchain node in the blockchain network.

[0033] Embodiments of the present invention advantageously allow for the exchange of data using blockchain while maintaining security and privacy and not overloading the blockchain network. In particular, blockchain smartcontracts are utilized to transparently coordinate data exchanges on a data exchange platform operable as a marketplace that has all of its functionality implemented inside the blockchain itself. Encryption using an all or nothing transform (AONT) is utilized in order to keep the data secure and private while avoiding having to do key management.

[0034] Embodiments of the present invention involve the following entities/components and their functionality:

Data producer: An entity (e.g. user, computer, server) that generates and/or distributes data. Data consumer: An entity (e.g. user, computer, server) that uses data, either to provided services or to post-process to add additional value (e.g. machine learning).

Data: Digital information.

Blockchain: A growing and shared list of digital records (ledger) on a blockchain network (comprising computing entities acting as blockchain nodes) that are cryptographically linked, wherein consensus among computing nodes has to be achieved for entries to be added.

Payment: The trade value given by the consumer to the producer (e.g. digital currency, debt token, etc.) for the data.

Smartcontract: A computer program (code) that handles the business logic which was pre-agreed by the network members. This code is available (i.e. can be inspected) to all the members present on the network (i.e. producers and consumers).

All or nothing transform (AONT) encryption: A mathematical function that is hard to reverse except if all the outputs are known (i.e. it only allows to retrieve all the data - partial retrievals are not possible). This transform can be further enhanced with the encryption of a set or subset of its outputs. In an embodiment, an AONT encryption scheme referred to herein as Bastion and discussed in U.S. Patent No. 9,787,469 can be advantageously applied as discussed below.

[0035] FIG. 2 schematically illustrates a system 20 according to an embodiment of the present invention which include two main phases (setup and trading), the setup phase occurs at the blocks [1] and [2], and the data exchange phase occurs at the blocks [2], [3] and [4] A data producer 21 uploads data to the cloud. Preferably, to enhance security of the data, the data producer 21 applies AONT encryption and stores the data distributed among a plurality of cloud servers 24. Smartcontracts 28 are implemented in the blockchain network 25 to adapt it for the secure, traceable and transparent exchange of data tied to the electronic payment 26. Additionally, the smartcontracts 28 provide to ensure that an access control list (ACL) for the data on the cloud servers 24 matches an ACL of the blockchain network which is changed to add the data consumer 22 after the data consumer has paid for the data, and the blockchain network 25 has reached consensus on the electronic payment 26. [0036] In the following, different functions are described which can be used to achieve the solution according to embodiments of the present invention. These functions include:

Upload files: A function called by the data producers 21 which includes the steps of encrypting the data using AONT and uploading the output files to multiple cloud servers 24, which may be run by the same or preferably different cloud providers.

Cloud Blockchain ACL: A function that the cloud providers run which includes the steps of establishing a subscription to a blockchain node, preferably multiple blockchain nodes to provide resilience, to allow the cloud servers 24 to be notified about changes to the permissions for the data in the blockchain after acceptance of an offer, and so that those changes are enacted on their ACLs. It is also possible that the cloud providers run their own blockchain node and therefore avoid the subscription.

Function 1 - Bastion: All or Nothing Encryption:

Input: k: Key, x [1]. - , x[m] blocks of plain text file ( m has to be odd )

Output: c[l\, ... , c[m + 1] m + 1 blocks of cipher text

Procedure:

u

y[m + 1] <- {0,1} where l is the block size of the block cipher and y[m + l]is its IV for i = 1 ... m do

y[i\ = x[i]@AES . Enc k (y[m + 1] + i)

end for

t <- y[l]

for i = 2 ... m + 1 do

t = t@y[i\

end for

for i = 1 ... m + 1 do

c[i\ = t@y[i\

end for

Function 2 - Bastion: Decryption:

Input: k: Key, c[l\, ... , c[m + 1]

Output: x[l\, ... , x[m]

Procedure: t <- c[m + 1]

for i = 1 ... m do

t = t®c[i]

end for

for i = 1 ... m + 1 do

y[i] = t@c[i ]

end for

for i = 1 ... m do

x[i] = y[i]@AES. Dec k (y[m + 1] + i)

end for

[0037] As previously stated, embodiments of the present invention provide for the implementation of base functions that allow to operate a digital data marketplace using the blockchain network 25. To achieve this, smartcontracts 28 are deployed to implement the following functionalities:

Verify Data: In order to be able to transfer or sell data, the blockchain has to verify, to a certain degree of confidence, that the data producer 21 possesses the data. This is done by a smartcontract 28 that connects to the cloud provider(s) of the cloud servers 24 and checks the file ownership, file ACL and file hash. This provides sufficient proof of data possession. Because it is run by a smartcontract 28, the result of its execution can be trusted.

Offer Create: This function involves the steps of generating an offer for data and placing it on the blockchain network 25. Generating the offer includes specifying the public key of the data producer 21 , a description of the data being sold, the price for the data and an identifier. The offer is only submitted to the blockchain network 25 when it has been validated successfully (e.g., the smartcontract for verifying the data ran successfully). This type of transaction will be mainly used by data producers 21.

Cancel Offer: The cancel offer function allows the owner of a valid, not yet expired, offer to cancel it. Upon calling the cancel offer function, the offer is deemed cancelled and is no longer available for acceptance in the blockchain network 25. Accept Offer: This function is called to accept an existing offer which has not been cancelled. This type of transaction will be mainly used by data consumers 22.

[0038] Setup phase at blocks [1] and [2] in FIG. 2: In order to begin trading, the data producer 21 upload its data to multiple cloud servers 24. The data is first run through AONT encryption and is padded if needed, by adding some additional bits to ensure that the size is a multiple of 128 bits. In this way it is assured that the data will consist of multiple files and that they will be securely stored across multiple cloud servers 24. A major benefit of using AONT encryption is it provides security while avoiding the cumbersome process of key management. For this, Function 5 - Upload Files (see below) is used which includes calls to Function 1 - Bastion: All or Nothing Encryption (see above). The cloud servers 24 can either run a blockchain node or subscribe to multiple nodes in order to fetch the permissions/ ACL for the files it is hosting. In this manner, ACL or permission changes made on the blockchain network 25 through the acceptance of offers will be mimicked in the ACL for the files in the cloud servers 24. Lor example, the cloud providers receive notifications from the blockchain node(s) they run or subscribe to about changes for permissions for data and adjust their ACLs for the files containing the data accordingly. The user is also added to the blockchain by calling the function add_user from Lunction 6 - Smartcontract Setup (see below).

Afterwards, the data producer 21 then commits the data, which that entity has uploaded, to the blockchain, which is done by evoking add_data from Lunction 6 - Smartcontract Setup. This will, by calling verify_data validate that the data was provided correctly, that the data producer 21 has ownership over it, and that the ACL is valid.

[0039] Data exchange phase at blocks [2], [3] and [4] in LIG. 2: When trading a data producer 21 can sell data that it owns by calling offer_create, likewise it is also possible for the data producer 21 to cancel the offer by calling offer_cancel from Lunction 7 - Smartcontract Trading (see below). A data consumer 22 can search for data offers by using the functionalities in Lunction 7 - Smartcontract Trading and look for details using Lunction 8 - Smartcontract Get Details (see below). The data consumer 22 can accept offers by using offer_accept from Lunction 7 - Smartcontract Trading. Throughout the whole process verify _data from Lunction 6 - Smartcontract Setup is run to challenge the cloud providers and verify that the cloud servers 24 are keeping their ACL honest with the blockchain. When an offer is successfully accepted there will be a payment, which is an IOU payment according to a preferred embodiment, created between the seller and the buyer. In addition, the ACL of the blockchain network 25 will be changed to reflect it. IOUs are unique to the pair (data producer 21 and data consumer 22) involved with the exchange and will track all the transactions between them. The data consumer 22 can then have access to the data by downloading all the files (they are able to since they are already on the ACL of the cloud servers 24 after the changes implemented through the respective functions implemented in the blockchain network 25).

Function 3 - Data Structures:

Struct User contains

ID type string

Pk type [ ]byte

End

Struct Data contains

ID type string

FilesID type [ ][ ]byte

Owner type [ ]byte

URLs type [ ] string

ACL type [ ][ ]byte

end

Struct Offer contains

ID type string

Data type *Data

Value type float

State type bool

end

Struct IOU contains

ID type string

Userl type string

User2 type string

Value type float end

Function 4 - Cloud Blockchain Node for ACL: function Subscribc(//7us type [ ]string)

Notify ( ) = BlockchainSubscribe. (files)

end function

function Notify (file type string)

CloudFileACL = Blockchain. get_data_details(fileID). ACL

end function

Function 5 - Upload Files:

Input: clouds: list of cloud services to be used, files: list of files

Output: status: "success or error", hash: hashes from the files

Procedure:

if length(clouds) < 2 then

return error

end if

foreach file in files do

key <- {0,l} fc

fileBlocks = nil

while file. Has More Bits ( ) do

fileBlocks

= Append^fileBlocks, file. ReadBits(128)) #128bit blocks same as AES end while

while length(fileBlocks)% 2 == 0 then

fileBlocks

= App end (file Blocks , new [16]byte) #Blank padding to have enough blocks

end while

Blocks = Bastion. encrypt(fileBlocks, key)

Blocks = Append(Blocks, key)

length(Blocks)

Ti— - lenght (clouds) r = length(B locks)— n * length(clouds)

foreach cloud in clouds do

tOupioad = ( < 0)? Blocks. pop(n = 1): Blocks pop (n) r = r— 1

FilesID = Append(FilesID, (file. ID))

end for

end for

return Success

Function 6 - Smartcontract Setup:

Global variable: map: key— value stored on the blockchain

function add_user (user type User, sign type [ ]byte)

if ! verifySignature(sign, user) then

return error

end if

if ! verify( user)

return error

end if

if map. Contains ( key) then

return error

end if

key = "user" 11 user. ID

map. Set (key, user)

return sucess

end function function add_data (user type User, sign type [ ]byte, data type Data) if ! verify(sign, user, )then

return error

end if

if ! verify data(data, user)

return error end if

if map. Contains { data. FilesID ) then

return error

end if

key = "data" 11 data. FilesID

map. Set {key, data)

return sucess

end function function verify _data {data type Data, user type User)

foreach file in data do

if ! cloud. exists{f He. url) or cloud file. ID{file. url)\

= file. ID or cloud. acl{f He. url)\ = file. acl or cloud owner {file. url)\ = user then

return false

end if

end for

return true

end function function get_all_data()

return map. GetAUStartingWithf data")

end function

function get_all_users()

return map. GetAUStartingWithf'user ")

end function

function get_all_offers()

return map. GetAUStartingWithf'offer ")

end function

function get_all_iou()

return map. GetAUStartingWith{" IOU")

end function Function 7 - Smartcontract Trading:

Global variable: map: key— value stored on the blockchain

function offer_create (user type User, sign type [ ]byte, offer type Offer) if ! verify{sign, user, )then

return error

end if

if ! verify _data{of f er . data , user )

return error

end if

of fer. state = true

key = "offer"data. FilesID

map. Set {key, offer )

return sucess

end function function offer_cancel (user type User, sign type [ ]byte, offer type Offer) if ! verify{sign, user, )then

return error

end if

if ! verify _data{of f er . data , user )

return error

end if

if ! offer. state

return error

end if

offer state = false

key = offer data. FilesID

map.Set{key, offer )

return sucess

end function function offer_accept(user type User, sign type [ ]byte, offer type Offer) if ! verify{sign, user, )then

return error

end if

if ! of fer. state or

return error

end if

if ! verify _data{of f er . data , offer data owner )

return error

end if

offer state = false

key = offer. ID

map. Set {key, offer )

if user.ID > offer.data.owner then

key = "IOU" | | hashfuser.ID , offer.data.owner)

value = get Jou_details{hash{offer. data. owner , user. ID)) value + of fer. value else

key = "IOU" 11 hash{offer.data. owner , user.ID)

value = get_iou_details{hash{offer.data.owner, user. ID)) value— of fer. value end if

map.Set{key, value)

key = "data" 11 offer. Data. ID

map.Set{key, Append{offer. Data. ACL, user. ID))

return sucess

end function

Function 8 - Smartcontract Get Details: function get_data_details(datalD string)

key =“data"\ \dataID

if ! map. Contains key) then

return "error"

end if

return map. Get{key) end function function get_user_details(userlD string)

key = "user"\ \userID

if ! map. Contains (key) then

return“error"

end if

return map. Getikey )

end function function get_offers_details(offerlD string)

key = “offer"\ \offerD

if ! map. Contains (key) then

return“error"

end if

return map. Getikey )

end function function get_iou_details(ioulD string)

key = "lOU"\ \ioulD

if ! map. Contains (key) then

return“error"

end if

return map. Getikey )

end function

[0040] FIG. 3 illustrates different computer entities, each comprising non-volatile physical memory and one or more computer processors, involved with the data exchange platform, and a method for data exchange. Unless one of the steps S 1 -S 14 requires the performance of one or more of the other steps prior to its execution, the steps can be performed at different times and orders than that shown in FIG. 3. [0041] In a step Sl, the data producer encrypts the data it would like to transfer, preferably using AONT, and uploads the files output from the AONT to multiple cloud servers from one or more cloud providers in a step S2 for distributed storage on the cloud servers in a step S3. In a step S4, the data producer registers with the blockchain network, in case this has not been done already. In a step S5, the cloud provider subscribes to one or more of the blockchain nodes, which are computer entities which run the blockchain, if this has not been done already, or itself runs one or more blockchain nodes. In a step S7, the verify data function is called by the blockchain network implementing the corresponding smartcontract described above to verify possession of the data. Preferably, the verify data function is run continuously or periodically in regular intervals to ensure that the cloud provider is keeping its ACL consistent with the blockchain. Once successfully verified by execution of the smartcontract for verifying the data, an offer for the data can be generated in step S8 by implementing the corresponding smartcontract described above. Optionally, prior to acceptance, the offer can be cancelled in a step S8A, using the corresponding smartcontract described above. In a step S9, a data consumer can search details of the offer stored in the blockchain network, and can call the function for accepting the offer in step S10, wherein each of these steps S9 and S 10 are likewise implemented using the corresponding

smartcontracts described above. In a step Sl 1, the blockchain network creates a payment on the ledger, preferably an IOU payment which will track all other transactions between the data producer and the data consumer, once the blockchain network reaches consensus on the payment. In a step S12, a node of the blockchain network requests the cloud provider to change the ACL for the files containing the data to add the data consumer and the ACL, for example, by calling the verify data function as in step S7 and/or sending a notification to the cloud providers by virtue of the subscription. Since the data consumer is now on the ACL for the files, the data consumer can access the files in a step S13 and download them in a step S14. Since AONT encryption is used, the data can be decrypted once the data consumer has access to the files.

[0042] Another solution would be to use asymmetric keys so that the data producer encrypts the data in the cloud servers using the public key of the data consumer. Thus, when the data consumer gets added to the ACL, that consumer (and that consumer alone) will have all the means to access the data. This solution is more naive than the one presented previously as it will require much more storage capacity on the cloud (1 file instance per consumer), as well as to go through the hurdle of key management. [0043] Another solution would be to not use encryption. In this case, the cloud provider is trusted and the ACL is used to manage access to the files. This solution is really naive and requires a lot of trust in the cloud provider.

[0044] Such a naive approach is very inefficient and expensive (sending large amounts of data over the blockchain), it also lacks privacy (committing data into the blockchain will make it permanently available to all the participants on the network), and has no access control (once data is committed there is no chance of a) revoking the access or b) deleting it). If data is not committed and a disconnected side-channel is used to share it there is no technical way that the peers have proof of a) who owns the data, b) who can retrieve it, and c) who has accessed or retrieved the data. Thus, the naive approach would come at a huge bandwidth and communication cost compared to embodiments of the present invention. Moreover, in contrast to embodiments of the present invention, the data is not secured, private or verifiable using a naive approach.

[0045] Embodiments of the present invention provide for the following improvements:

1) Coordinating data exchange transparently in the blockchain by means of

smartcontracts that orchestrate in a keyless deterministic fashion access to the AONT- encrypted data on the cloud.

2) Constructing and operating a data exchange platform, e.g., as a digital data marketplace, on the blockchain network by means of smartcontracts used to carry out specific transactions such as offer_create, offer_cancel and IOU payments.

[0046] According to an embodiment, a method for exchanging data using a blockchain network as a data exchange platform comprises the steps of:

1) Producer uploads data to multiple clouds.

2) Producer commits the data to the blockchain.

3) Smartcontract validates proof of possession.

4) Use smartcontracts to create a data offer on the network.

5) Consumer accepts an offer for data on the blockchain. 6) Use smartcontract to settle offers against IOU payments.

7) Use smartcontract to change the cloud ACL of the data.

8) Consumer gets access to the data.

[0047] In an embodiment, a method run by one or more cloud providers for exchanging data using a blockchain network comprises:

1) Receiving data, preferably encrypted by AONT and distributed among multiple files.

2) Storing the files on multiple cloud servers.

3) Subscribing to or operating one or more blockchain nodes.

4) Receiving calls from the blockchain network to verify possession of the data and that the ACL for the files matches with what is stored in the blockchain network, wherein the ACL is updated upon being changed in the blockchain network to include a data consumer that has accepted an offer for the data and paid for it using the blockchain network.

[0048] While the invention has been illustrated and described in detail in the drawings and foregoing description, such illustration and description are to be considered illustrative or exemplary and not restrictive. It will be understood that changes and modifications may be made by those of ordinary skill within the scope of the following claims. In particular, the present invention covers further embodiments with any combination of features from different embodiments described above and below. Additionally, statements made herein characterizing the invention refer to an embodiment of the invention and not necessarily all embodiments.

[0049] The terms used in the claims should be construed to have the broadest reasonable interpretation consistent with the foregoing description. For example, the use of the article “a” or“the” in introducing an element should not be interpreted as being exclusive of a plurality of elements. Likewise, the recitation of“or” should be interpreted as being inclusive, such that the recitation of“A or B” is not exclusive of“A and B,” unless it is clear from the context or the foregoing description that only one of A and B is intended. Further, the recitation of“at least one of A, B and C” should be interpreted as one or more of a group of elements consisting of A, B and C, and should not be interpreted as requiring at least one of each of the listed elements A, B and C, regardless of whether A, B and C are related as categories or otherwise. Moreover, the recitation of“A, B and/or C” or“at least one of A, B or C” should be interpreted as including any singular entity from the listed elements, e.g., A, any subset from the listed elements, e.g., A and B, or the entire list of elements A, B and C.




 
Previous Patent: DENTAL PROSTHESIS

Next Patent: A DENTAL COMPOSITION