Uniswap is a decentralised exchange in the form of two smart contracts hosted on the Ethereum blockchain, as well as a public, open source front-end client. It's a 100% on-chain market maker allowing the swapping of ERC20 tokens, as well as ETH to an ERC20, and vice-versa.