This is a variation on some of the earlier ideas I shared here:
An optimistic clearinghouse where users deposit a bond (e.g., 10 ETH or something), and the clearinghouse contract is on a chain with the UMA oracle stack. Then you have an application-specific roll-up where users can post buy and sell offers for any assets on any chain. If someone else takes the other side of the trade, they must deliver the goods within a set period of time. If they don’t, their bond can be claimed by the other party up to some specified amount.
This should make trades super cheap without needing to move assets until they’re actually sold and without having to move them to different chains. It’s multi-chain by default. For instance, you could execute Solana trades with this mechanism, since only the clearinghouse contract with the bonds needs to be on an EVM chain with the UMA oracle. And I guess you could have multiple clearinghouse contracts on every chain where UMA exists.
Thinking about it a bit more, it would work better if everything stays on chains supported by UMA, so the assets could be put in an escrow contract while the other party executes the other side of the trade. But if the bond is high enough, it’s not strictly necessary (if the other asset doesn’t show up, you can claim the bond).
I think this clearinghouse idea works best for NFTs, actually, since the trades aren’t generally as time sensitive. T+2 settlement for NFTs is probably fine.