การ Swap เหรียญใน Decentralize Exchange (DEX) และผลกระทบด้านราคา (Price Impact)
ในการ 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 ได้ไหม และทำอย่างไร ซึ่งจะอยู่ในบทความถัดไป