An open API service indexing awesome lists of open source software.

https://github.com/siddhantprateek/chainsaw

Chainsaw is a application that processes Medical DICOM files and store meta-data over decentrialized private blockchain network.
https://github.com/siddhantprateek/chainsaw

flask hyperledger hyperledger-besu python solidity typescript

Last synced: 3 months ago
JSON representation

Chainsaw is a application that processes Medical DICOM files and store meta-data over decentrialized private blockchain network.

Awesome Lists containing this project

README

          

chainsaw

![](./assets/chainsaw.png)

### Tech Stack

- Typescript/Javascript
- GraphQL
- Solidity
- Hyperledger Besu
- Tessera - Configuring a network that supports private transactions requires starting a Tessera node for each Hyperledger Besu node.
- To create privacy-enabled network, have used IBFT 2.0

## Architecture

![](./assets/dicomARCH.png)

## User Stories

- [ ] Grafana Loki Monitoring
- [x] Hyperledger Fabric -> Hyperledger Besu
- [ ] Vulnerability Check
- [x] Generating dicom Metadata and storing in Private network
- [x] Privacy Enabled Network
- [x] Permissioned Based Network
- [ ] Create UI for user interaction
- [x] Zero-Fees Transaction
- [ ] Continous Delivery / Integration

### Design

- [Design](https://www.figma.com/file/4NZ6kpEryti59lFASyvgyE/chainsaw?node-id=0%3A1&t=J58QPxwi3FyfBrhu-1)

## Start Nodes

### Node-1
```bash
besu --data-path=data --genesis-file=../genesis.json --permissions-accounts-contract-enabled --permissions-accounts-contract-address "0x0000000000000000000000000000000000008888" --permissions-nodes-contract-enabled --permissions-nodes-contract-address "0x0000000000000000000000000000000000009999" --permissions-nodes-contract-version=2 --rpc-http-enabled --rpc-http-cors-origins="*" --rpc-http-api=ADMIN,ETH,NET,PERM,IBFT --host-allowlist="*"
```

### Node-2
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes= --permissions-accounts-contract-enabled --permissions-accounts-contract-address "0x0000000000000000000000000000000000008888" --permissions-nodes-contract-enabled --permissions-nodes-contract-address "0x0000000000000000000000000000000000009999" --permissions-nodes-contract-version=2 --rpc-http-enabled --rpc-http-cors-origins="*" --rpc-http-api=ADMIN,ETH,NET,PERM,IBFT --host-allowlist="*" --p2p-port=30304 --rpc-http-port=8546
```

### Node-3
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes= --permissions-accounts-contract-enabled --permissions-accounts-contract-address "0x0000000000000000000000000000000000008888" --permissions-nodes-contract-enabled --permissions-nodes-contract-address "0x0000000000000000000000000000000000009999" --permissions-nodes-contract-version=2 --rpc-http-enabled --rpc-http-cors-origins="*" --rpc-http-api=ADMIN,ETH,NET,PERM,IBFT --host-allowlist="*" --p2p-port=30305 --rpc-http-port=8547
```

### Node-4
```bash
besu --data-path=data --genesis-file=../genesis.json --bootnodes= --permissions-accounts-contract-enabled --permissions-accounts-contract-address "0x0000000000000000000000000000000000008888" --permissions-nodes-contract-enabled --permissions-nodes-contract-address "0x0000000000000000000000000000000000009999" --permissions-nodes-contract-version=2 --rpc-http-enabled --rpc-http-cors-origins="*" --rpc-http-api=ADMIN,ETH,NET,PERM,IBFT --host-allowlist="*" --p2p-port=30306 --rpc-http-port=8548
```

## Permission configuration for Node-1
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["","","","EnodeNode4"]], "id":1}' http://127.0.0.1:8545

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["","","","EnodeNode4"]], "id":1}' http://127.0.0.1:8546

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["","","","EnodeNode4"]], "id":1}' http://127.0.0.1:8547

curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["","","","EnodeNode4"]], "id":1}' http://127.0.0.1:8548

```

## Add peers for Node-1
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":[""],"id":1}' http://127.0.0.1:8546

curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":[""],"id":1}' http://127.0.0.1:8547

curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":[""],"id":1}' http://127.0.0.1:8548
```

## Add peers for Node-2
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":[""],"id":1}' http://127.0.0.1:8547

curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":[""],"id":1}' http://127.0.0.1:8548
```

## Add peers for Node-3
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":[""],"id":1}' http://127.0.0.1:8548
```

## Confirm permissioned network is working
```bash
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' localhost:8545
```