:information_source: breakdown of matching engine This breakdown is only a logical seperation of the matching engine ```plantuml @startuml !pragma teoz true box Kalypso #lightblue box "Matching Engine" #lightgreen control "Event Listeners" as EL entity "Matching Algorithm" as MA entity "Matching Engine Signer" as MES end box entity "Kalypso\nSmart Contracts" as KSC end box == Start Loading == KSC--> EL: Fetch the previous requests and generator's data (if exists) == End Loading == KSC -->>o EL: Listen to REGISTER event activate EL note right of EL REGISTER contains generator's address generator's supported marketId end note EL -> MA: Store the generator data and market ID deactivate EL KSC -->> EL: Listen to ASK event note right of EL ASK contains askId end note activate EL EL --> MA: Send the ASK ID activate MA deactivate EL MA --> MES: Send generator assignement info deactivate MA MES -> KSC: Broadcast the transaction KSC --> EL: Listen to generator state change (this may be optional) activate EL note right of EL There are 3 other types of events for generator REQUEST_FOR_EXIT WIP EXIT end note EL --> MA: Send the state information deactivate EL note right of MA Sync the local state end note @enduml ```