Logo

    Medusa Demo Workplan

    Goal is to create a very minimalistic but elegant UX that connects with the Medusa codebase to perform encryption/decryption with access control.

    DRI

    The Directly Responsible Individual (DRI) for this effort is @Deleted User with @Nicola in support

    Goals

    Main goal is to create a beautiful web application that can serve as a basis to showcase the utility of Medusa to anyone. The application should support giving roles to members, sending ciphertexts to a test Medusa network and then any authorized recipient can ask for decryption. It can become the basis of future applications but the goal is not to become later production code (good but not required).

    Scope

    Deliverables

    • Application Design:
      • Have a “Admin” part that allows
        • to enter address (regular key + medusa key) of readers with a button that triggers the “granting role” logic
        • to list all the accredited “readers”
        • to enter a message, and a a choice list of roles, with a button that triggers the “encrypt to Medusa” logic
      • Have a “Reader” part that allows:
        • Display locally generated Medusa key so it can be given manually to the admin
        • Display the current role if any (or none)
        • Display list of ciphertexts available with each one a button “ask to decrypt”
          • the button will trigger the “decrypt” logic from Medusa network
      • Have a Medusa part that shows the list of all members of the network, listing their keys and the final distributed public key
    • Javascript application Logic: that connects to the medusa smart contracts on our local network (to be provided by us),
      • Allows to have a “main” admin role that can grant reader/writer roles to any address
        • This role can be setup from a manual key setup by our own local network
      • Any client can create their local key (pairing based, so different than ECDSA key) so it can be given “manually” to the admin
        • Any client as well as admin must have some tokens to do transactions so they can be deterministics as when we launch our own internal network.
      • Any “admin” client can write a ciphertext to the network. The encryption will happen in the browser. (for simplicity we consider admin = writer).
      • Any “reader” client (authorized by the admin), can ask for the ciphertext to be decrypted by the network. It will pick uk the decryption event from the smart contract and will decrypt in the browser.
      • The application must communicate to the smart contracts deployed on a local network (done by PL) via web3js or equiavelent framework
        • Sending transactions
        • Listening to events

    Encryption/Decryption: At first, depending on the time, it can be nil operations. We will provide the libraries asap.

    Expectations

    Design docs

    Write up the implementation design doc and documentation on how to use the different systems.

    Technologies used

    The web application should be done with a modern javascript and design framework

    Communication

    Heavy focused calls at the beginning 2h, then a quick 1h call every two days.

    Quality of the work

    The work is not meant to be production ready, future engineering work and audit will turn this into a production ready work. Prototyping speed and trying different ideas are more important at this stage.

    Timing

    Expected timing to complete the MVP is 2 weeks.

    2-3 days for the design

    10 days for the full application

    Team

    TODO

    Progress

    Medusa network setup
    Ganache, rendezvous server
    communication with smart contract and between nodes
    CLI to set it up
    ACL CLI demo
    Authorize, Encrypt & Decrypt
    Sign contract with devshop
    Javascript frontend
    UI
    Web3 communication with smart contract (loading keys etc)
    JS library for encrypting / decrypting
    Slides for showcase Medusa and ACL application

    CryptoNet is a Protocol Labs initiative.