Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Partial data privacy in Hyperledger Fabric

We want to create data sharing network using Hyperledger Fabric. Each peer(client) is formed by one company agent who is a participant of this network. Each peer(client) can read data with a fee or contribute data to earn some rewards that will be distributed periodically. However, since it is a blockchain, all clients can see each other's sharing data (e.g., by simply looking at the contents of the blocks). Tokens generated using Hyperledger chaincode will be used for a transaction fee.

I want to enforce the following privacy rules in the blockchain:

a. Client A contributed a data record includes a person's name, company and phone. Client A was rewarded for a token after a few weeks. This record's name and company can be viewable by looking at the contents of the blocks. However, its 'phone' is only viewable by the client A itself.

b. When Client B pays a fee to view the phone of this record, only Client B, other clients who have paid and Client A will be able to view the phone.

c. If Client A decides to leave the network, there will be no impact to this record. Other clients can continue to pay a fee to view this record's phone.

I have looked at transaction certificate and channel. How do I achieve data privacy through channel implementation?

In Fabric v1.1, there is an experimental featured known as "private data". With this feature, the actual state is kept local to the peers in a private state database and is not included in the actual blockchain itself. Will I be able to use this to achieve partial data privacy? But what if the client leaves the network? Will the data be gone forever?

like image 230
angelokh Avatar asked Nov 20 '25 04:11

angelokh


1 Answers

Private data is certainly an option, and more so given the fact that upcoming 1.2 will make significant improvements to the private-data feature and it will no longer be experimental.

But this scenario can solved by multiple-channels approach too. The actual data record can go into a separate, newly-created channel that, initially, will only have Client A. Once client B pays fee, it will be let into this new channel and can access the record from the ledger on this channel. From here on, you can either create channels that have multiple records with your subscription model, or even channels with single record.

like image 197
adnan.c Avatar answered Nov 23 '25 01:11

adnan.c