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
Step 1: Understand AMM's role
AMMs allow users to trade tokens directly without needing a traditional exchange or middleman.
Step 2: Identify the key feature
They use mathematical formulas and token reserves to set prices and enable swaps.
Final Answer:
To enable token trading without a middleman using math formulas -> Option A
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
Step 1: Recall AMM constant product formula
AMMs use the formula where the product of token reserves remains constant.
Step 2: Identify the correct formula
The formula is x * y = k, where x and y are token reserves and k is constant.
Final Answer:
x * y = k -> Option D
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
Step 1: Calculate constant k
k = x * y = 100 * 200 = 20000.
Step 2: Calculate new y after adding 10 to x
New x = 100 + 10 = 110. New y = k / new x = 20000 / 110 ≈ 181.82.
Final Answer:
181.82 -> Option A
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:
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
Step 1: Review function logic
The function calculates k correctly and finds new reserves after swap.
Step 2: Check for missing AMM details
It does not include swap fees, which reduce the effective input amount.
Final Answer:
The function does not account for swap fees -> Option C
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
Step 1: Calculate effective input after fee
The input tokens are reduced by the fee: x_in_with_fee = x_in * (1 - 0.003).
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.
Final Answer:
Code snippet B correctly applies the fee and calculates output -> Option B
Quick Check:
Subtract fee before adding input [OK]
Hint: Multiply input by (1 - fee) before calculation [OK]