DECAF• Professional is designed to provide am ecosystem for organisations and users to have complete discretion over a particular document, maintaining integrity, transparency, availibility and authenticity. The application's architecture was built using blockchain technology.
DECAF• Professional requires a Metamask enabled browser to avail the services. At present, we officially aim to support the following browser:
1. Authentication:
-
Users and organizations can register using their personal email or using gmail.
-
Users can login and change their profile photo, gender, biodata, location, phone and birth date.
-
Organizations can login and change their profile photo, biodata, location and phone.
2. Crypto Wallet Support:
-
The application is designed to support Ethereum based wallets, namely Metamask.
-
The wallet is integrated in the architecture of the application so as to support transactions using cryptocurrencies developed on the Ethereum blockchain.
-
Organizations and users can connect to their wallet and can view their network, wallet balance and their metamask account address.
-
Organizations and users need to connect to the wallet to access all features of the application.
3. Organization to User Document Issuing:
-
A dynamic form is created, which checks whether the receiver is connected to a wallet or not so as to retrieve the metamask account address for the transaction.
-
Organization uploads a master file (PDF/Image). The file status is dynamically updated along with the preview of the file after interactions with a smart contract.
-
The file is checked for any previous signature using a smart contract. If a signature is found, the transaction is blocked and the organization cannot sign/issue the file.
-
Organization signs the file using the metamask wallet and confirms the transaction for issuing the file to a user using a smart contract.
4.User to 3rd Party Document Sharing:
-
A similar form as mentioned above is created to check for the receiver.
-
User uploads a master file and a valid signature is checked using a smart contract.
-
A valid master file then can be shared to another 3rd party organization.
-
Users cannot send a version file to an organization.
5. Document Verification:
-
A separate microservice is created for verifying a document.
-
A 3rd party can verify by interacting with a smart contract, who was the original signer of the document. Signer’s email address, metamask address and name is viewed.
-
This same framework is used in the above forms for conducting valid transactions.
6. Version Control:
-
A version control mechanism is implemented using smart contract interaction.
-
Organizations can issue new versions of a particular master document, to create a version directory for that document.
-
All the versions of that master document are visible across the user base and subsequent 3rd party organizations with whom the master document is shared.
7. Access Control:
-
An access control framework is implemented using smart contract interaction.
-
Organizations can revoke the access of a particular master document and its version directory from the user. Subsequently the 3rd parties will also be denied access.
-
Users can also revoke the access of the master document and its version directory from 3rd party organizations.
-
Steps:
- Login into your account and connect your Metamask wallet to the application.
- Enter the email address of receiver. The account address and receiver's name will be updated dynamically. (Note: The receiver must be connected to a wallet.)
- Choose your file to upload. Wait for the file's ipfs hash to generate. (Note: File status will be updated dynamically.)
- Sign the document and confirm the transaction to execute the smart contract for signature using the Metamask wallet.
- Send the file by confirming one more transaction using the Metamask wallet.
- In the transaction table select the 'Add' button to add a version document. Follow steps 2 to 5 for issuing the version document.
-
Steps:
- Login into your account and connect your Metamask wallet to the application.
- Enter the email address of receiving organisation. The account address and receiver's name will be updated dynamically. (Note: The receiver must be connected to a wallet.)
- Choose your file to upload. Wait for the file's ipfs hash to generate. (Note: File status will be updated dynamically.)
- Check whether the file has a valid signature and is indeed sent by the issuing organisation.
- Send the file by confirming 2 transactions using the Metamask wallet.
(Note: User cannot send the version document. The master document must be selected.)
-
Steps:
- Login into your account and connect your Metamask wallet to the application.
- Go to the 'Verification' tab in the 'Settings' page.
- Choose your file to upload. Wait for the file's ipfs hash to generate. (Note: File status will be updated dynamically.)
- Issuer's details will be displayed if the file has a valid signature.
(Note: Organisation cannot issue a document that is already signed by another organisations.)
-
Steps:
- Login into your account and connect your Metamask wallet to the application.
- In the transactions table, click the 'Revoke' button.
- Confirm the transaction using the Metamask wallet to execute the smart contract.
(Note: The document and its version map will be revoked from the users as well the 3rd party organisations with whom they have shared the document.) (Note: User will not be authorised to share this document again until the document is issued again.)
- We have created a home page and landing page to have an entry point for the application.
Home Page |
---|
- We have created a landing page to give a breif description about the product development team and the product.
Product Description | Team Description |
---|---|
Running the application:
- Install
Metamask extension
on chrome. Setup your wallet. - Clone the repo:
git clone https://github.com/De-CAF/DECAF-React.git
. - Create project on
https://goerli.infura.io
. - Create
.secret.json
file with content as {"projectId":Goerli Project Id
, "mnemonics":Wallet Secret
}. npm i --save
npm start
.
Running Local Blockhain Network:
- Install
Ganache
. - Setup Ganache with network id
1337
and RPC serverHTTP://127.0.0.1:8545
. - Add the network to your Metamask Wallet in
Settings
orAdd Network
button under theNetworks
tab.
Deploying Smart Contract on a network:
- Make sure
Truffle CLI
is installed in your pc. - To deploy the smart contract on local network Ganache, run the command
truffle migrate
. - To deploy the smart contract on testnet, for instance Goerli, run the command
truffle migrate --network goerli
.
Shreyas More: shreyas.mm@somaiya.edu
Pranav Ahuja: pranav.ahuja@somaiya.edu
Nandita Kadam: nandita.kadam@somaiya.edu
Ramesh Krishnan: ramesh.krishnan@somaiya.edu