-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Marcus Brandenburger <[email protected]>
- Loading branch information
1 parent
36a60d3
commit aa8b5f7
Showing
1 changed file
with
41 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,47 @@ | ||
# IRB approval sample | ||
# Institutional Review Board (IRB) Sample | ||
|
||
Get redis | ||
This demo implements an FPC-based IRB experiment approval services to protect the confidentiality of data being used in analytical experiments. | ||
Multiple participants, namely, data providers, experimenter, and principal investigators are collaborating to conduct analytical research using sensitive data. | ||
|
||
We show a prototype of an application that performs analytical experiments on data such that: | ||
- Any constraints on the use of the data are respected (consent). | ||
- The confidentiality of data and policies for its use is maintained. | ||
- Analytical experiments must be approved by an IRB which ensures that the description and implementation of the experiment are appropriate. | ||
- Analytical experiments are executed in an SGX container (Graphene) that can attest to the integrity of the computation. | ||
|
||
The demo was presented at the Hyperledger Global Forum (HLGF) 2021. Check the recordings on [youtube](https://www.youtube.com/watch?v=MU4BpZp8A1Y). | ||
|
||
Note that the source code in here is a simplified version to fully focus on the FPC implementation. | ||
In particular, the experiment is not protected with SGX. | ||
The full source code for the HLFG21 presentation is located in the [irb-demo](https://github.com/hyperledger/fabric-private-chaincode/tree/irb-demo/samples/demos/irb) branch. | ||
|
||
The IRB use case requires the interaction between the participants. | ||
A typical application flow begins with the data registration and consent, following the approval protocol, and finally executing the experiment and publishing the results. | ||
We use [Fabric Smart Client](https://github.com/hyperledger-labs/fabric-smart-client) to implement the complex interactions. | ||
|
||
## Code structure | ||
- `/chaincode` contains the FPC chaincode that implements the IRV approval service | ||
- `/experimenter` contains the analytic experiment code based on [PyTorch](https://pytorch.org/). | ||
- `/pkg` contains implementations for various components, including crypto, container management, etc. | ||
- `/protos` contains the message definitions used in this application | ||
- `/views` contains the protocol implementation for the data provider, experimenter, and investigator. | ||
- `irb_test.go` is the starting point of the demo. | ||
- `topology.go` defines the Fabric network used in this demo. | ||
|
||
## Setup | ||
|
||
The demo uses redis to store the data provided by the patients. Get a redis docker image. | ||
```bash | ||
docker pull redis:latest | ||
``` | ||
|
||
Next, we build the components of the demo by running: | ||
```bash | ||
make build | ||
``` | ||
|
||
## Run the demo | ||
|
||
```bash | ||
make build test | ||
``` | ||
make test | ||
``` |