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

Compare with Current View Page History

« Previous Version 4 Next »

Abstract


Mediator service is like a drop box / post box that Aries agents can use to receive and store encrypted messages in its 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 commit.


Extra Deliverables:

  • CI to make releases on based on tags and provide binaries 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 need to alter storage traits, or just create new implementation 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.

Evaluation

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

Patrik Stas, Discord: Patrik Stas#7722, Absa Group
Bogdan Mircea, Discord: bobozaur#5997, Absa Group
Miroslav Kovar, Discord: mirgee#3763, Absa Group
George Mulhearn, Discord: gmulhearn#0356

Mentee

Naian G, Discord @nain





  • No labels