Hi everyone and thanks in advance for your help, i'm trying to understand <strong>hyperledger fabric (and composer) privacy capabilities</strong>.
Hi everyone and thanks in advance for your help, i'm trying to understand hyperledger fabric (and composer) privacy capabilities.
The application scenario sees different sellers and deliverers in the same network (e.g. i brought a package from Amazon (placed an order), chosen to be delivered by the A courier that, for costs reason, decided to cooperate (sub-delegate) with the courier B for a single stop in the multi-stop delivery path planned for the package to arrive to the customer). For this order, I want Amazon, courier A and B to see delivery plans details, but i don't want other sellers or deliverers to see it.
Now, the above mentioned requirement may be enforced using Composer ACLs (or, similarly, writing a chaincode with the same constraints in Go in Fabric). The only issue is that other deliverer or seller peers would have full access to the world state and ledger history on the disk, so that they can circumvent ACL enforcement and access all the data related to other organizations' agreements.
ABAC (Attribute Based Access Control) enforcement, using enrolling certificate attributes to conditionally discriminate access and transaction execution in the chaincode, have the same limits: I think it may be useful mainly to assess different roles in an organization (e.g. an admin from a normal user).
Then we have the option to keep "private data" (prices, etc) out of the ledger, using a different system to store them out-of-band. This is ok, but other organizations will be able, if we don't use channels, to understand with whom we're doing business with and the approximate number of orders and deliveries. This private information can be even be inserted inside the blockchain network using, starting from Fabric 1.2, Private Data Collections (PDC), avoiding using a different external system, since we can just specify which data must be stored by which organization peers only. Anyway, PDC configuratin data are just shared JSON files, so every organization can understand with whom you're doing business with.
Finally, we have the Channels: we could instantiate a channel for the Amazon-Courier A - Courier B group, to be used for this order and orders in the future that have them as actors. This seems ok, since order data is now disseminated only between channel peers. Considering the administrative burden to configure and maintain a channel, a huge scenario like ours, in which we have thousand of sellers and couriers, may require potentially NxM2 channels, with N number of resellers and M the couriers, which seems not feasible.
Did I get it all right? there are other consideration to be made, in your opinion? Thank you
I have a couple of question regarding the tamper proof mechanism of the blockchain.
When you think about designing a blockchain network using Hyperledger sawtooth, It’s important to consider how your data will grow and amplify as your business. Being familiar with on-chain and off-chain data there are certain questions that popped up in terms of data management.
I have configured amazon managed blockchain setup with Hyperledger 1.2. The network is prepared with a single member and a single peer node. Hyperledger Fabric Client setup is with Golang 1.10.3. I have installed, Instantiated, Queried and Invoked mycc chaincode example given in AWS tutorial