# Technical Overview

Goat Trading is based on Uniswap V2 but includes functionality specific to the protocol. The main extra functionality is:

* MEV protection
* Bootstrapping liquidity (starting pools with virtual Ether and raising it as the token is traded)
* Vesting protection
* All fees taken in Ether and separate from liquidity (lps can collect lp fees without burning lp token)
* Liquidity locks for initial liquidity provider (Not just initial lp but minimum for others as well inorder to restrict bad lps from fees sandwiching)
* A “takeover” function that allows teams to reset a pool that a griefer made
* Pairs are created against eth(weth)

We have also removed:

* TWAP

Other than these, algorithmic functionality should be the same as Uniswap. The x \* y = k equation should always be used, although k will be adjusted once a  pool goes from bootstrapping period to the main period. This will result in a loss of liquidity.
