Bird
Raised Fist0
Blockchain / Solidityprogramming~10 mins

Automated Market Makers (AMM) in Blockchain / Solidity - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Automated Market Makers (AMM)
User provides Token A and Token B
AMM Pool receives tokens
Calculate new token reserves
Apply constant product formula: x * y = k
Determine output token amount
User receives swapped tokens
Update pool reserves for next trade
The AMM takes tokens from the user, updates reserves using a formula, and returns swapped tokens, keeping the product of reserves constant.
Execution Sample
Blockchain / Solidity
reserveA = 1000
reserveB = 1000
inputA = 100
k = reserveA * reserveB
newReserveA = reserveA + inputA
newReserveB = k / newReserveA
outputB = reserveB - newReserveB
This code swaps Token A for Token B using the constant product formula in an AMM pool.
Execution Table
StepVariableValueCalculation/ActionExplanation
1reserveA1000Initial reserveStarting Token A in pool
2reserveB1000Initial reserveStarting Token B in pool
3inputA100User inputUser adds 100 Token A to swap
4k1000000reserveA * reserveBConstant product remains fixed
5newReserveA1100reserveA + inputAPool now has 1100 Token A
6newReserveB909.09k / newReserveACalculate new Token B reserve
7outputB90.91reserveB - newReserveBUser receives ~90.91 Token B
8---Swap complete, reserves updated
💡 Swap ends after calculating output tokens and updating reserves.
Variable Tracker
VariableStartAfter Step 3After Step 5After Step 6Final
reserveA10001000110011001100
reserveB100010001000909.09909.09
inputA-100100100100
k--100000010000001000000
newReserveA--110011001100
newReserveB---909.09909.09
outputB---90.9190.91
Key Moments - 3 Insights
Why do we multiply reserveA and reserveB to get k?
Because the AMM uses the constant product formula x * y = k to keep the pool balanced, as shown in step 4 of the execution_table.
Why does outputB equal reserveB minus newReserveB?
Because the user receives the difference in Token B reserves after the swap, as calculated in step 7 of the execution_table.
Why do we add inputA to reserveA before calculating newReserveB?
Because the pool's Token A reserve increases by the user's input before recalculating Token B reserve, shown in step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 6, what is the value of newReserveB?
A909.09
B1000
C1100
D90.91
💡 Hint
Check the 'Value' column at step 6 in the execution_table.
At which step does the pool calculate the constant product k?
AStep 3
BStep 5
CStep 4
DStep 7
💡 Hint
Look for the step where k = reserveA * reserveB is calculated in the execution_table.
If the user inputs 200 Token A instead of 100, which variable changes first in the variable_tracker?
AreserveB
BinputA
CnewReserveB
DoutputB
💡 Hint
Look at the variable_tracker to see which variable records the user input first.
Concept Snapshot
Automated Market Makers (AMM) use a formula x * y = k to keep token reserves balanced.
Users swap tokens by adding one token to the pool.
The pool calculates the output token amount by maintaining k constant.
Reserves update after each swap to reflect new balances.
This allows decentralized token trading without order books.
Full Transcript
Automated Market Makers (AMM) let users swap tokens by interacting with a pool of two tokens. The pool keeps the product of the token reserves constant, called k. When a user adds some amount of Token A, the pool calculates how much Token B to give back so that reserveA times reserveB stays equal to k. This process updates the reserves and completes the swap. The key steps are: starting reserves, user input, calculating k, updating reserves, and determining output tokens. This method allows smooth token swaps without needing buyers and sellers to match directly.

Practice

(1/5)
1. What is the main purpose of an Automated Market Maker (AMM) in blockchain?
easy
A. To enable token trading without a middleman using math formulas
B. To store user passwords securely
C. To mine new blocks in the blockchain
D. To create new tokens automatically

Solution

  1. Step 1: Understand AMM's role

    AMMs allow users to trade tokens directly without needing a traditional exchange or middleman.
  2. Step 2: Identify the key feature

    They use mathematical formulas and token reserves to set prices and enable swaps.
  3. Final Answer:

    To enable token trading without a middleman using math formulas -> Option A
  4. Quick Check:

    AMM = trading without middleman [OK]
Hint: AMMs trade tokens using formulas, no middleman needed [OK]
Common Mistakes:
  • Confusing AMM with mining or token creation
  • Thinking AMM stores passwords
  • Assuming AMM creates tokens automatically
2. Which of the following is the correct formula used by a constant product AMM to maintain balance?
easy
A. x + y = k
B. x - y = k
C. x / y = k
D. x * y = k

Solution

  1. Step 1: Recall AMM constant product formula

    AMMs use the formula where the product of token reserves remains constant.
  2. Step 2: Identify the correct formula

    The formula is x * y = k, where x and y are token reserves and k is constant.
  3. Final Answer:

    x * y = k -> Option D
  4. Quick Check:

    Product of reserves = constant [OK]
Hint: Remember: AMM uses multiplication for constant product [OK]
Common Mistakes:
  • Using addition or subtraction instead of multiplication
  • Confusing division with the formula
  • Mixing up variables and constants
3. Given an AMM with reserves x = 100 and y = 200, what is the new y reserve after adding 10 tokens to x and keeping k constant?
medium
A. 181.82
B. 220
C. 190
D. 200

Solution

  1. Step 1: Calculate constant k

    k = x * y = 100 * 200 = 20000.
  2. Step 2: Calculate new y after adding 10 to x

    New x = 100 + 10 = 110. New y = k / new x = 20000 / 110 ≈ 181.82.
  3. Final Answer:

    181.82 -> Option A
  4. Quick Check:

    New y = 20000 / 110 ≈ 181.82 [OK]
Hint: Divide k by new x to find new y quickly [OK]
Common Mistakes:
  • Adding instead of dividing to find new y
  • Using old y value without adjustment
  • Forgetting to add tokens to x before calculation
4. Identify the error in this Python function that calculates output tokens from an AMM swap:
def get_output_amount(x_reserve, y_reserve, x_in):
    k = x_reserve * y_reserve
    new_x = x_reserve + x_in
    new_y = k / new_x
    return y_reserve - new_y
medium
A. The function returns new_y instead of the difference
B. The function uses addition instead of multiplication for k
C. The function does not account for swap fees
D. The function uses integer division instead of float division

Solution

  1. Step 1: Review function logic

    The function calculates k correctly and finds new reserves after swap.
  2. Step 2: Check for missing AMM details

    It does not include swap fees, which reduce the effective input amount.
  3. Final Answer:

    The function does not account for swap fees -> Option C
  4. Quick Check:

    Missing fees in calculation [OK]
Hint: Remember to subtract swap fees from input amount [OK]
Common Mistakes:
  • Ignoring swap fees in calculations
  • Confusing return values
  • Using integer division in Python 3 (which is float by default)
5. You want to implement a function that calculates the output token amount from a swap on an AMM with a 0.3% fee. Given reserves x=500, y=1000, and input x_in=50, which code snippet correctly calculates the output amount?
hard
A. def swap_output(x, y, x_in): fee = 0.003 x_in_with_fee = x_in + fee k = x * y new_x = x + x_in_with_fee new_y = k / new_x return y - new_y
B. def swap_output(x, y, x_in): fee = 0.003 x_in_with_fee = x_in * (1 - fee) k = x * y new_x = x + x_in_with_fee new_y = k / new_x return y - new_y
C. def swap_output(x, y, x_in): fee = 0.003 x_in_with_fee = x_in * fee k = x * y new_x = x + x_in_with_fee new_y = k / new_x return y - new_y
D. def swap_output(x, y, x_in): fee = 0.003 x_in_with_fee = x_in / (1 - fee) k = x * y new_x = x + x_in_with_fee new_y = k / new_x return y - new_y

Solution

  1. Step 1: Calculate effective input after fee

    The input tokens are reduced by the fee: x_in_with_fee = x_in * (1 - 0.003).
  2. Step 2: Calculate new reserves and output

    Use constant product k = x * y, then new_x = x + x_in_with_fee, new_y = k / new_x, output = y - new_y.
  3. Final Answer:

    Code snippet B correctly applies the fee and calculates output -> Option B
  4. Quick Check:

    Subtract fee before adding input [OK]
Hint: Multiply input by (1 - fee) before calculation [OK]
Common Mistakes:
  • Adding fee instead of subtracting
  • Multiplying input by fee only
  • Dividing input by (1 - fee) incorrectly