การ Swap เหรียญใน Decentralize Exchange (DEX) และผลกระทบด้านราคา (Price Impact)

Jittapong Kumtara
3 min readApr 5, 2024

--

ในการ Swap หรือแลกเปลี่ยนสกุลเงิน Digital ใน Decentralize Exchange หรือ DEX นั้นใช้กลไกที่เรียกว่า Automated Market Maker หรือ AMM เพื่อให้การแลกเปลี่ยนเกิดขึ้นได้โดยไม่ต้องใช้ Order Book แบบดั้งเดิม

กลไกของ AMM นั้นมีหลักการคือผู้ฝากเงินจะนำเงินมาฝากไว้ใน Liquidity Pool เพื่อรอให้ผู้ที่ต้องการแลกเงินมาแลกเงินออกไป และมีการใช้ Smart Contract ควบคุมการแลกเปลี่ยน

เพื่อให้เข้าใจและเห็นภาพ กลไกการทำงานของ AMM จะขอยกตัวอย่าง ดังนี้

นาย A ต้องการแลก ETH จำนวน 1 เหรียญ เพื่อให้ได้มาซึ่งเหรียญ USDT ใน DEX แห่งหนึ่ง

และ DEX นั้นๆ มี Liquidity Pool ของคู่เหรียญ ETH:USDT อยู่ และในขณะนั้น Liquidity Pool ดังกล่าว มีเหรียญ ETH อยู่ 10 ETH และ USDT อยู่ 40,000 USDT

คำถามคือจากการแลกเหรียญ 1 ETH นาย A จะได้เหรียญ USDT ไปทั้งหมดเท่าไหร่ ?

ภาพตัวแทนของตัวอย่าง

โดยทั่วไปในกลไกการควบคุมราคาของเหรียญใน AMM นั้นใช้สมการ

  • X คือปริมาณเปรียญตัวที่ 1: ในตัวอย่างนี้สมมติคือ ETH = 10
  • Y คือปริมาณเปรียญตัวที่ 2: ในต่างอย่างนี้สมมติคือ USDT = 40,000
  • K คือค่าคงที่ของการแลกเปลี่ยน: ในตัวอย่างนี้คือ 10 * 40,000 = 400,000

ภาพตัวแทนของตัวอย่าง

และหลักการคือ ในการแลกเปลี่ยนแต่ละครั้งจะมีการนำเหรียญตัวหนึ่งเข้ามาใน Liquidity Pool เพื่อดึงเหรียญอีกตัวหนึ่งออกจาก Liquidity Pool โดยที่ค่าคงที่ K จะต้องไม่เปลี่ยนแปลง หรือคงที่เสมอเพื่อรักษามูลค่าของ Liquidity Pool เอาไว้

ได้ภาพตามนี้

ยกตัวอย่างเช่น ในการแลก ETH จำนวน 1 เหรียญ เพื่อให้ได้มาซึ่งเหรียญ USDT นั้น จะทำให้ ETH ใน Liquidity Pool เพิ่มขึ้น และ USDT ใน Liquidity Pool ลดลง โดยที่ปริมาณ USDT ที่ลดลงจะต้องทำให้ค่าคงที่ K จะต้องไม่เปลี่ยนแปลง จากสิ่งที่เรารู้ เราสามารถเขียนสมการหาค่า USDT ที่จะได้ ดังนี้

จากสมการ X * Y = K ทำการแทนที่ X ด้วย ETH และ Y ด้วย USDT ได้สมการ

จัดรูปสมการ ได้ดังนี้

เราต้องการหา USDT ที่จะได้ จากการเพิ่ม ETH ใน Liquidity Pool ทำการแทนที่ตัวแปร USDT ด้วย USDT หลังจากการ Swap ในที่นี้จะเรียกว่า NewUSDT และ ETH ด้วย ETH หลังจากการ Swap ในที่นี้จะเรียกว่า NewETH ได้สมการ

NewUSD หรือ USDT หลังจากการ Swap นั้นคือ ปริมาณ USDTในPool(USDInPool) หักออก(-) ด้วย USDTที่Userจะได้(getUSD) และ NewETH หรือ ETH หลังจากการ Swap คือ ปริมาณ ETHในPool(ETHInPool) บวก(+) ด้วย ETHที่จะเข้าPool(spendETH) ได้สมการ

จัดรูปสมการ

หลังจากนั้นแทนค่าในสมการ จะได้ว่า

เพราะฉะนั้นเราจะได้ USDT จำนวน 3,636.36 จากการแลก 0.5 ETH

ได้ภาพตามนี้

มาถึงจุดนี้อาจจะสงสัยว่าทำไมเราได้ USDT น้อยกว่าที่คิด เพราะว่าเมื่อดูอัตราส่วน ETH:USDT ในปัจจุบันคือ 1:4,000 เราควรจะได้ 4,000 USDT ใช่ไหม ? สิ่งนี้เรียกว่าผลกระทำด้านราคาหรือ Price Impact ที่เกิดจาก AMM ที่ใช้สมการ X * Y = K ในการกำหนดราคา

เพื่อให้เห็นภาพ Price Impact ที่เกิดจากสมการมากขึ้น เราจะมาคำนวนหา Price Impact ที่เปลี่ยนแปลงไปตามจำนวน ETH ที่ใช้ในการ Swap ด้วยค่าต่างๆ กัน

จากตารางจะเห็นว่ายิ่งเราเพิ่มปริมาณของ ETH ที่จะแลก เราจะยิ่งได้ราคาแย่ลงไปเรื่อย ๆ หรือ Price Impact มากขึ้นเรื่อยๆ

เมื่อนำข้อมูลดังกล่าวมาวาดกราฟ จะได้กราฟปริมาณ ETH ที่ใช้ในการแลก ต่อราคาได้ดังนี้

(ในการคำนวนนี้เพื่อให้เห็นภาพของปัจจัยที่ส่งผลของ Price Impact ชัดเจนขึ้น เราจะยังไม่พิจารณาปัจจัยอื่นๆที่เกิดขึ้นจากการ Swap เช่น ค่า Fee ของ LP, ค่า Gas, …)

ดังนั้นปริมาณเหรียญที่เราจะใช้ในการแลกใน DEX เราควรที่จะต้องสังดูปัจจัยด้าน Price Impact ประกอบด้วย ไม่เช่นนั้นเราจะได้ราคาที่ดีน้อยลงเรื่อย ๆ หากใครต้องการที่จะเข้าใจเชิงลึกมากขึ้นเกี่ยวกับสมการ X * Y = K สามารถเข้าไปอ่านต่อได้ที่ “วิเคราะห์สมการ AMM เชิงลึก (TODO)”

สิ่งที่หลายๆ คนอาจจะสงสัยถัดจากนี้คือ เราสามรถหลีกเลี่ยง Price Impact ได้ไหม และทำอย่างไร ซึ่งจะอยู่ในบทความถัดไป

--

--

Jittapong Kumtara
0 Followers

Software Engineer with Financial Science as a Hobby