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