Giter Site home page Giter Site logo

nu-umbral's Introduction

Nu-Nucypher

This code contains python implementation of Nucypher's Umbral library. Code runs on mock net and and uses redis as a primary store for storing the capsule and policy.

For Platform visit https://github.com/mcd-50/Nu-Platform For NuCypher visit https://github.com/mcd-50/Nu-Umbral For Solidity visit https://github.com/mcd-50/Nu-Solidity For Frontend visit https://github.com/mcd-50/Nu-Frontend

Demo Url

http://35.200.190.101:10002 (frontend platform url)

Other Urls

Genobank DNA wallet

To empower the world to upload FDA approved Saliva DNA extraction information on blockchain, stored on IPFS to enable an anonymous and encrypted way powered by NuChyper to interact with the World’s Genomic ecosystem with privacy & control.

How Platform Works

  • First Bob will create an account by providing the email (Used only for communication purpose for now) and password (a password for generating the blockchain address).

  • Now bob will get the following values and needs only the accountAddress and password for using the platform services.

    • accountAddress (Ethereum address)
    • publicKey (Nucypher public key)
    • privateKey (Nucypher private key)
  • Now Bob will upload the data by filling the folloing values (Since system is anonymous there is no login and all)

    • accountAddress
    • password
    • publicKey
    • privateKey
    • detail about the DNA
    • file (blob)
  • Once bob uploads the data. It will be encrypyted and hosted to IPFS. For encryption Bob's (publicKey, privateKey) will be used and following will be generated

    • capsule (capsule object which be stored against a capsuleId[uuid])
    • ciphettext
  • Now these two values (capsuleId, ciphertext) will stored on blockchain by calling our solidty contract and transaction hash will be generated.

  • Bob will get the capsuleId (aka salivaId) and transactionHash of the blockchain transaction

  • The capsuleId and deatils of DNA data (like whose DNA is this and all) will be visible to everyone.

  • Suppose alice wants to access the DNA data after looking and DNA details

  • Now alice will create an account by providing the email (Used only for communication purpose for now) and password (a password for generating the blockchain address).

  • Alice will create a "Request access" by providing the following details

    • accountAddress (alice's)
    • Nucypher publicKey (alice's) for creating the policy where kfrags are attached
    • capsuleId
    • password (alice's)
  • A mail will be sent to Bob's email address for the consent. Bob can give his consent by clicking the link in email.

  • Once bob give the concent a policyId will be generated and for Alice and alice will get an email containing a secret code to access the policyId and transaction will be made on blockchain with following values

    • policyId
    • capsuleId
    • pubKey
    • singingPubKey
  • Now alice will go to the "decode page" and paste the received secret code.

  • Upon decode request the kfrags will be extracted and attached to the capsule (fetched from capsule map using capsuleId). And decrypted IPFS file link will be shared with the Alice.

This explains our platform (POC) working in a nutshell.

Challenges we faced

  • Setting up python backend and interacting with the umbral libraries
  • Faced a lot of problems in set_correction_keys modules
  • 16 Variable limit in solidity fuction
  • and few we didn't counted on.
  • IPFS uploaded file not showing on public gateway.

Futures improvements

  • We wish to add admin policies
  • QR codes
  • Mobile app
  • More robust communication channel.
  • Handling encryption of the data

Tech we used

  • NodeJs
  • React
  • Geth
  • Solidity
  • Python (umbral)
  • JavaScript

Team members

  • Daneil Uribe
  • Sagar Jethi
  • Ayush A.

Video link

Screenshots

  • Screenshot
  • Screenshot
  • Screenshot
  • Screenshot

nu-umbral's People

Contributors

mcd-50 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.