Like I previously wrote, I have been brainstorming a way to design smart contracts (on-chain modules) and resource management (using transaction scripts, and script functions) separately. I call this smart contract design pattern “accountless design”, since the smart contract itself would be account agnostic: the module and its functions do not care where the resources are obtained from, and where those will be saved to.
This design pattern relies on Outbox (or something similar).
This gives a lot of flexibility, and makes the on-chain code footprint smaller: one vital part of the mosaic of smart contract security.
I am writing a small book on Move patterns, and a more detailed description of this pattern will be included.