  The rise of Ethereum and other blockchains that support smart contracts has
led to the creation of decentralized exchanges (DEXs), such as Uniswap,
Balancer, Curve, mStable, and SushiSwap, which enable agents to trade
cryptocurrencies without trusting a centralized authority. While traditional
exchanges use order books to match and execute trades, DEXs are typically
organized as constant function market makers (CFMMs). CFMMs accept and reject
proposed trades based on the evaluation of a function that depends on the
proposed trade and the current reserves of the DEX. For trades that involve
only two assets, CFMMs are easy to understand, via two functions that give the
quantity of one asset that must be tendered to receive a given quantity of the
other, and vice versa. When more than two assets are being exchanged, it is
harder to understand the landscape of possible trades. We observe that various
problems of choosing a multi-asset trade can be formulated as convex
optimization problems, and can therefore be reliably and efficiently solved.
