@startuml 'https://plantuml.com/sequence-diagram actor User User -> baseApp : Transaction Type baseApp -> router : Route(ctx, msgRoute) router --> baseApp : handler baseApp -> handler: Msg(Context, Msg(...)) handler -> msgServer : (Context, Msg) alt addresses invalid, denominations wrong, etc. msgServer --> handler : error end msgServer -> keeper : perform action, update context keeper --> msgServer : results, error code msgServer -> Context.EventManager : Emit relevant events msgServer -> msgServer : maybe wrap results in more structure msgServer --> handler : result, error code baseApp <-- handler : results, error code @enduml