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): mediator service that can notify registered peers on inbox message available.
Learning Objectives
Project Plan
Stage 1: HTTP Server and handle simple Json messages
- Answerable 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.
Expected Outcome
Mentee Skills
Mentee Open Source Contribution Experience
Future plans
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