Time-Weighted Average Price (TWAP) Oracles: How Uniswap Feeds Price Data to Other Protocols