# Abstract

## JAMM's Changes

1. JAMM is mainly based on Uniswap v2. For more in-depth information on the core contract logic, read the [Uniswap v2 documentation](https://docs.uniswap.org/contracts/v2/overview).
2. One of changes is fee mechanism. Unlike Uni V2's fixed fee, JAMM V2 offers multiple fee options. Therefore, in most functions involving pairs, the address and fee parameters are required to jointly determine the unique pool.
3. The other is referral mechanism. Each address can be bound to an inviter, and 10% of the fee generated by the address will be returned to the inviter.&#x20;

   p.s.The inviter address can only be bound during the first transaction. If the inviter parameter is empty during the first transaction, the protocol's revenue address will be filled in by default.
4. It should be noted that when token contract supports fees or other non-standard functions, special functions such as swapExactTokensForTokensSupportingFeeOnTransferTokens need to be used when trading and withdrawing liquidity. For specific examples and instructions, see the [router contract](https://jamm-trading.gitbook.io/jamm.fun/contract-interface/jammrouter).

## Mainnet Contract Address

1. URL: <https://jamm.fun>
2. Factory: 0x6b5d54E6F73e96Ca960DBA71D778b98221939aa6
3. Router: 0x3F26fb54C28Eab026e908A9A9357a456F3c8Dc87

<table><thead><tr><th>Coin</th><th width="428.99609375">Address</th><th data-type="number">Decimals</th></tr></thead><tbody><tr><td>wJU</td><td>0x4d1B49B424afd7075d3c063adDf97D5575E1c7E2</td><td>18</td></tr><tr><td>USDT</td><td>0xc8e19C19479a866142B42fB390F2ea1Ff082E0D2</td><td>18</td></tr><tr><td>ETH</td><td>0x80077F108Dd73B709C43A1a13F0EEF25e48f7D0e</td><td>18</td></tr><tr><td>BNB</td><td>0x151b6F646Ac02Ed9877884ed9637A84f2FD8FaA6</td><td>18</td></tr></tbody></table>

## Testnet Contract Address

1. URL: <http://jamm.fun>
2. Factory: 0xbddd716a9d6325700d1c29562c819987e5b1f6a8
3. Router: 0x3f8b0038023393009712D0051D192a8825dd02B9

<table><thead><tr><th>Coin</th><th width="428.99609375">Address</th><th data-type="number">Decimals</th></tr></thead><tbody><tr><td>wJU</td><td>0xb8cdb16bc2b64d42638e285a691973ff10078d8e</td><td>18</td></tr></tbody></table>

## Notes

1. All function calls involving JU require the corresponding amount of JU to be attached
2. Before adding liquidity, you need to authorize the routing contract to use tokens
3. Before removing liquidity, you need to authorize the routing contract to use LP tokens
4. Before swapping, you need to authorize the routing contract to use input tokens
5. It is recommended to set a reasonable slippage protection value (amountMin)
6. Ensure that the transaction is completed before the deadline
