You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Abstract


Mediator service is like a drop box / post box that Aries agents can use to receive and store encrypted messages in their stead.

Basic flow:

  • people can send you messages at the mediator address if you are not always available to receive messages
  • you can pick them up later from mediator service using pick up protocol

Mediator/ Agency are useful for scenarios like mobile phone agents which can't always receive messages. Due to reasons including:

  • network interruption
  • sleep /power off
  • power conservation optimizations

There exist a agency/mediator service for Aries, but it has limitations:

  • Written in NodeJS. A Rust based mediator service would be desirable for better integration with vcx
  • Does not support pick up protocol

A new Rust based Aries mediator service would offer.

  • High performance
  • Horizontal scalability
  • Simpler and more robust integration with Aries-vcx
  • Support for newer standard protocols like Pick Up protocol.

Deliverables

Main Deliverables:

  • Specialized high performance Aries agent (mediator to-be) that can store "forward messages" received through connection protocol.
  • Pickup protocol data structs and impl inside aries-vcx
  • Mediator service that can answer pick up protocol requests to authenticated peers
  • CI to build and test on new commits.


Extra Deliverables:

  • CI to make releases based on tags and provide binaries or docker image in Github's release section.
  • (stretch goal): design/document mediator service component that can notify registered peers on inbox message available.

Project Plan

Stage 1: HTTP Server and handle simple Json messages

  • Research and choose rust based web framework, suitable for project goals
  • Answerable HTTP end points to connect to service
  • Define storage traits and impl
  • Tests to ensure proper functioning of above features
  • CI: Build on commit/pushed commits.

Stage 2: Add data structures for Connection protocol to service

  • Load required modules from Aries-VCX and use in service to handle aries connections
  • Decide if there is need to alter storage traits, or to just create new implementations, and act accordingly.
  • Optimise endpoints (API etc) for with Aries connection and to handle multiple of them simultaneously
  • tests (see if data is being stored in database.)

stage 3: Add pickup protocol data structure to Aries-Vcx

  • Add data structures and maybe traits to Ariec vcx related to pickup protocol
  • (this could take time to design, iterate, and code inside vcx.). So break into sub-tasks as necessary.
  • Tests for above

Stage 4: Integrate included pickup protocol stuff in mediator code.

  • Pull pickup struct definitions / traits from vcx and integrate with local impl
  • see if additional local interfaces need to be defined for http / mediation (like accounts etc)
  • Tests.

Milestones

Eval1:
- setup development environment
- rust learning (learn and gain good pedagogical familiarity with concepts used: structs, impls, macros, etc)
- basic web service skeleton ready
- CI for making sure builds succeed

Eval2:
- Demonstrate grasp of basic rust concepts (mentioned earlier)
- Grasp understanding of more advanced rust concepts (arc etc)
- Able to use existing sophisticated/complex rust library inside a different project.

Eval3:
- Demonstrate usable rust proficiency to integrate new code/features in complex codebase such as aries-vcx

Eval4

- Deliver functioning mediator service integrated with Aries vcx
- Set up CI on project repositories

Future plans

Design and document ways in which websocket based notification service could be integrated into mediator service project


Participants (Mentors/Mentees)

Mentors

NameHyperledger DiscordAffiliation
Patrik StasPatrik Stas#7722Absa Group
Bogdan Mircea

bobozaur#5997

Absa Group

Miroslav Kovar

mirgee#3763Absa Group
George Mulhearngmulhearn#0356

Mentee

NameHyperledger Discord
Naian G@naine


Processes

Internal communication and updates:

    • Slack is used for regular communications and updates
    • Weekly Zoom meetings are scheduled to discuss the progress, blocks, questions, advice
    • Biweekly mentee-mentee meetings for knowledge sharing, active collaboration.




  • No labels