Uniswap allows users to swap tokens and ETH by trading against a pool of assets held in a smart contract. Instead, anyone can add assets to a pool and earn a share of its trading fees. Liquidity providers earn fees in tokens and ether, based on their ownership of the pool.