Escrow in smart contract

EthereumEthereum
$1,338.84
0.85%
23D Ago
self.ethereum
I was discussing trying to trade one Reddit avatar for another with another user here on Reddit and we both lamented at the lack of an established escrow service. Then it occurred to me that escrow for trading NFTs seems like a function that could very easily be handled by a smart contract with no centralized service. Does this exist? Am I missing something very obvious that makes this impractical? Or has it just not been built yet?