Bird
Raised Fist0
Blockchain / Solidityprogramming~30 mins

Automated Market Makers (AMM) in Blockchain / Solidity - Mini Project: Build & Apply

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
Automated Market Makers (AMM) Simulation
📖 Scenario: You want to understand how a simple Automated Market Maker (AMM) works in a blockchain environment. An AMM allows users to trade tokens automatically using a liquidity pool without needing a traditional order book.In this project, you will simulate a basic AMM that holds two tokens and uses the constant product formula to determine prices and trades.
🎯 Goal: Build a simple Python program that models an AMM liquidity pool with two tokens, calculates the price based on reserves, and simulates a token swap.
📋 What You'll Learn
Create a dictionary to represent the liquidity pool with exact token reserves
Add a variable for the swap fee percentage
Write a function to calculate the output amount of tokens for a given input amount using the constant product formula
Print the amount of tokens received after a swap
💡 Why This Matters
🌍 Real World
Automated Market Makers are used in decentralized exchanges on blockchains to enable token trading without traditional order books.
💼 Career
Understanding AMMs is important for blockchain developers, DeFi engineers, and anyone working with decentralized finance applications.
Progress0 / 4 steps
1
Set up the liquidity pool reserves
Create a dictionary called liquidity_pool with these exact entries: 'TokenA': 1000 and 'TokenB': 1000 to represent the initial reserves of each token.
Blockchain / Solidity
Hint

Use curly braces to create a dictionary with keys 'TokenA' and 'TokenB' and values 1000 each.

2
Add the swap fee configuration
Create a variable called swap_fee and set it to 0.003 to represent a 0.3% fee on swaps.
Blockchain / Solidity
Hint

Assign the decimal 0.003 to the variable swap_fee.

3
Write the swap calculation function
Define a function called calculate_swap_output that takes three parameters: input_amount, input_reserve, and output_reserve. Inside the function, calculate the amount of output tokens received after applying the swap fee and using the constant product formula: output_amount = (input_amount_with_fee * output_reserve) / (input_reserve + input_amount_with_fee), where input_amount_with_fee = input_amount * (1 - swap_fee). Return the output_amount.
Blockchain / Solidity
Hint

Use the formula given and remember to apply the swap fee before calculating output.

4
Simulate a token swap and print the output
Use the calculate_swap_output function to calculate how many 'TokenB' tokens you get when swapping 100 'TokenA' tokens. Store the result in a variable called tokens_received. Then print the exact string "Tokens received: {tokens_received:.6f}" using an f-string to show 6 decimal places.
Blockchain / Solidity
Hint

Call the function with input_amount=100, input_reserve=liquidity_pool['TokenA'], output_reserve=liquidity_pool['TokenB'], then print with 6 decimals.

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