This repository contains the implementation of GeoBlocks
protocol introduced in the paper GeoBlocks [BRAINS'24]
Note that the Paper has 2 major components implemented in different sub repositories of this repo. This includes
- The application gateway implementation
- The smartcontracts implemenation on hyperledger fabric framework
If you use any code in this repository, or want to cite the GeoBlocks work, please cite the following paper:
@inproceedings{agarwal2024geoblocks,
title={GeoBlocks: Trustless Geospatial Data Sharing with Accountability and Decentralized Access Control},
author={Agarwal, Pankaj Kumar and Chadha, Amrit and Ghosh, Bishakh Chandra and Ghosh, Soumya K and Chakraborty, Sandip},
booktitle={2024 6th Conference on Blockchain Research \& Applications for Innovative Networks and Services (BRAINS)},
year={2024},
organization={IEEE}
}
This guide assumes each participant already has a geoserver running locally to which the application gateway connects. If you don't have one, you can use a test docker setup as below
docker run -it -p 80:8080 docker.osgeo.org/geoserver:2.23.0
Note: Tested on node v16.20.2 and npm 8.19.4
npm i
node org_contract.js
Note the codebase was tested on fabric release-2.2
The official installation docs can be found here
- Package the chaincode
peer lifecycle chaincode package acl.tar.gz --path ../chaincode/acl/ --lang golang --label acl_1.0
peer lifecycle chaincode package drs.tar.gz --path ../chaincode/drs/ --lang golang --label drs_1.0
- Create channel
bash network.sh up createChannel -c mychannel -ca
- Deploy packaged chaincode
bash network.sh deployCC -ccn acl -ccp ../chaincode/acl/ -ccl go
bash network.sh deployCC -ccn drs -ccp ../chaincode/drs/ -ccl go
Note: Behind the scenes, this script uses the chaincode lifecycle to package, install, query installed chaincode, approve chaincode for both Org1 and Org2, and finally commit the chaincode. You can refer each of the step involved and how it works here
Run the application gateway after you Geoserver and Fabric setup are done.
This starts an express server, post which you can start using the APIs of the gateway to test the functionality of the application.