ConsenSysMesh / ConsenSysMesh/web3studio-sidejam

Minimum Viable Message Bus 🚌

Open
#2 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
2
Forks
1
PR merge metrics
No merged PRs in 30d

Description

## Overview

As an engineer connecting services, I want an always-on, tamper-resistant message bus to pass messages between services so that I can coordinate my services.

### Reference

- [Epic - MB for Stratego](https://github.com/ConsenSys/web3studio-sidejam/issues/1)
- [Atomic Crosschain Transactions (Pantheon)](https://arxiv.org/abs/1904.12079)
- [chain.link](https://docs.chain.link/docs)
- [General Message Bus Pattern](https://github.com/ConsenSys/web3studio-sidejam/issues/1#issuecomment-490906621)

### Questions

- What patterns exist in other MQ, MB systems?
- What steps should be put in place to prevent deadlocking?
- Is it all on the client? Does the MB need to expose features to allow clients to prevent deadlocking?
- Should a "time-lock" mechanism be put in place? See Atomic Crosschain Transactions. "Message slots" per topic for concurrency?

### Assumptions

- Optimize for keeping gas low

### Acceptance

- A smart contract to be used as a MB, it should:
- accept a message and provide guarantees that once the calling process get's a successful return that the message is guaranteed (to some degree) to be durable.
- Provide some way for services to request messages since a cursor (timestamp, vector, clock, hash chain, etc..)
- Provide some scheme for additional metadata on the messages that could be read (optionally) by services and used for filtering. (topics, senders, etc.)
- Emit events allowing services to process in real time
- Allow for deadlock prevention (See questions)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.