SideJam is a series of projects designed to develop application-level examples, frameworks, components (and requirements driving protocol and R&D teams) that use the W3S narrative approach to prove the need for and ability to use the Mainnet as a way to make business safe without silos.
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.
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
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
Questions
Assumptions
Acceptance