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.
- Host: GitHub
- URL: https://github.com/siddhantprateek/chainsaw
- Owner: siddhantprateek
- License: mit
- Created: 2022-09-10T09:48:23.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-11-24T16:27:28.000Z (over 3 years ago)
- Last Synced: 2025-04-10T01:36:24.972Z (about 1 year ago)
- Topics: flask, hyperledger, hyperledger-besu, python, solidity, typescript
- Language: TypeScript
- Homepage: https://chainsaw-nine.vercel.app/
- Size: 9.34 MB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
chainsaw

### 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

## 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
```