صرافی های غیرمتمرکز چطور کار میکنند؟ آشنایی با مدل بازارساز خودکار (AMM)

صرافی های ارز دیجیتال غیر متمرکز (Decentralized Exchanges) یا به اختصار DEX پدیده ای است که از سال 2018 وارد فضای کریپتو شد و در بازار گاوی 2020 تا 2022 محبوبیت زیادی به دست آورد. این صرافی ها در اصل یک قرارداد هوشمند هستند که کاربران با استفاده از آنها میتوانند در بستر بلاکچین، بدون اینکه نیاز باشد اموال شان را به حساب یک صرافی متمرکز واریز کنند؛ معاملات‌شان را انجام دهند.صرافی های متمرکز در مقابل صرافی های غیرمتمرکزچرا صرافی های غیرمتمرکز محبوب شدند ؟صرافی های غیر متمرکز (DEXs) :بر خلاف صرافی های متمرکز از شما ثبت نام یا احراز هویت نمیخواهند.بر خلاف صرافی های متمرکز که تنها پروژه‌های معتبر و محدودی را لیست میکنند، هر کسی میتواند در صرافی های غیر متمرکز توکن خود را لیست کند و در نتیجه انواع توکن ها و شت کوین ها در آنها قابل معامله است.بر خلاف صرافی های متمرکز که یک ارگان رسمی هستند، صرافی های غیر متمرکز یک قرارداد هوشمند در بستر بلاکچین هستند و در نتیجه خبری از تحریم و محدودیت و اعمال قانون دولت نیست.صرافی های غیر متمرکز چگونه کار میکنند ؟قبل از پاسخ به این سوال ابتدا باید ببینیم روال کاری در صرافی های متمرکز چگونه است. در صرافی های متمرکز (Centralized Exchanges) شما دارایی خود را به کیف پول صرافی واریز میکنید و اموال شما در اختیار صرافی خواهد بود (که این خود یک ریسک محسوب میشود و شما باید به صرافی اعتماد داشته باشید) سپس شما به صفحه ارز مورد نظرتان که قصد معامله دارید میروید و سفارش خرید یا فروش ثبت میکنید.صرافی های متمرکز بر اساس مدل دفتر سفارشات (Order Book) معاملات را به انجام میرسانند، در این مدل کاربران سفارشات خرید و فروش خود را ثبت میکنند و اعلام میکنند که با چه نرخی مایل به معامله هستند. صرافی این سفارشات را در دفتر سفارشات ثبت میکند و هرگاه یک خریدار و یک فروشنده مایل باشند با نرخ یکسان معامله کنند، صرافی معامله را به قول معروف "جوش میدهد".نمونه یک دفتر سفارشات - در سمت راست سفارشات فروش را میبینید و در سمت چپ سفارشات خرید، فروشنده ها مایل به معامله در قیمت بالاتر اند اما خریداران مایل به معامله در قیمت پایین تر هستند. اگر خریدار و فروشنده ای مایل به معامله در یک قیمت باشند صرافی معامله را انجام میدهد.اگر در بازار بورس ایران فعالیت کرده باشید دقیقا همین سیستم را دیده‌اید. برای خرید سهام در بورس، شما قیمت پیشنهادی خود را اعلام میکنید و یک سفارش خرید ثبت میکنید. هرگاه کسی مایل باشد با نرخی که شما اعلام کردید یک سفارش فروش ثبت کند معامله انجام میشود. (لزومی ندارد خریدار و فروشنده بخواهند مبلغ یکسانی را معامله کنند، این امکان هست که در هر مرحله بخشی از معامله شما انجام شود یا به بیان دیگر شما(خریدار) به چند فروشنده وصل شوید)اگر میخواهید بیشتر در مورد اردربوک بدانید حتما این مقاله مفصل از وب سایت میهن بلاکچین را مطالعه کنید.اما آیا همه صرافی های دنیا از این سیستم استفاده میکنند؟ خیر!یک طلا فروشی را در نظر بگیرید. موقعی که شما قصد خرید طلا دارید، در مغازه منتظر کسی که بخواهد طلایش را بفروشد نمی‌مانید بلکه مستقیم از طلافروش طلا میخرید. برعکس آن هم صادق است؛ برای فروش طلایتان در مغازه منتظر خریدار نمینشینید بلکه مستقیم آن را به طلافروش میفروشید.بنابراین یک طلافروش برخلاف یک صرافی متمرکز یا بازار سهام، خریدار و فروشنده را مستقیم به یکدیگر وصل نمیکند بلکه خود به عنوان پلی میان خریدار و فروشنده عمل میکند.به این سیستم بازارسازی (market making) میگویند و به طلافروش اصطلاحا بازارساز (market maker) گفته میشود. برای تبدیل شدن به یک بازارساز برای یک جفت ارز مشخص شما نیاز به 2 مخزن نقدینگی یا استخر نقدینگی (liquidity pool) دارید (لازم است از هر کدام از دو ارز میزان مناسبی داشته باشید)به عنوان نمونه در مثال بالا، طلافروش باید میزان قابل توجهی ریال (ارز 1) و میزان قابل توجهی طلا (ارز 2) داشته باشد وگرنه عملکرد مناسبی به عنوان بازارساز نخواهد داشت (فرض کنید یک مشتری پولدار می‌آید و میخواهد میزان زیادی طلا بخرد در حدی که طلا فروش اصلا اینقدر طلا در مغازه ندارد، بنابراین میزان سرمایه این 2 استخر نقدینگی اهمیت دارد)سیستم دفتر سفارشات در صرافی های متمرکز و بازار سهامسیستم بازارسازی در بعضی از صرافی ها به خصوص صرافی های غیر متمرکزصرافی های غیر متمرکز از مدل بازارسازی استفاده میکنند. موقعی که شما اتریوم خود را در یک صرافی غیر متمرکز مانند Uniswap میفروشید تا برابر آن تتر دریافت کنید در واقع اتریوم خود را به استخر نقدینگی اتریوم صرافی منتقل کرده اید و در ازای آن از استخر نقدینگی تتر صرافی، معادل آن تتر دریافت کرده اید.در سیستم بازارسازی قیمت چگونه مشخص میشود ؟در مدل دفتر سفارشات، صرافی در تعیین قیمت هیچ دخالتی ندارد، نبرد بین خریدار و فروشنده (همان عرضه و تقاضا) قیمت را مشخص میکند. اما در سیستم بازاریابی اینگونه نیست و خود صرافی باید نرخ را تنظیم کند.در طلافروشی‌ها و صرافی‌های ستنی مانند صرافی‌های میدان فردوسی ، نرخ‌ها و قیمت‌ها را از یک مرجع رسمی (مانند بانک مرکزی یا یک وب سایت معتبر) استعلام میگیرند اما در صرافی های غیر متمرکز اینگونه نیست و خود صرافی باید نرخ تبدیل را تعیین کند اما این کار چگونه انجام میشود؟صرافی های غیرمتمرکز نرخ تبدیل را با استفاده از یک الگوریتم به نام بازارساز خودکار (Automated Market Maker) یا مختصرا AMM مشخص میکنند.بازارساز خودکار یا AMM چیست؟بازارساز خودکار نامی است که به الگوریتم مورد استفاده توسط صرافی های غیر متمرکز داده اند. این الگوریتم در کد قرارداد هوشمند صرافی غیر متمرکز تعبیه شده است. چند نوع الگوریتم بازارساز خودکار وجود دارد که در این مقاله میخواهیم مدل حاصل ضرب ثابت (Constant Product AMM) را بررسی کنیم.در مدل حاصل ضرب ثابت، صرافی غیرمتمرکز از یک اصل ساده پیروی میکند :صرافی، نرخ را طوری تنظیم میکند که همواره حاصل ضرب میزان سرمایه دو استخر نقدینگی یک عدد ثابت شود.بگذارید با یک مثال ببینیم موضوع از چه قرار است.فرض کنید میخواهیم یک سیستم بازارساز خودکار برای جفت ارز اتریوم/تتر راه بیندازیم.در مرحله اول باید قیمت اتریوم را در صرافی های متمرکز چک کنیم. مثلا در آن لحظه اتریوم معادل 150 تتر است.پس از آن در مرحله دوم باید «میزان ارزش یکسان» از اتریوم و تتر فراهم کنیم. چون هر اتریوم 150 برابر تتر است پس باید مقدار دلخواه اتریوم (هرچه بیشتر بهتر) به علاوه 150 برابر آن تتر فراهم کنیم (مثلا 2 اتریوم و 300 تتر تا از لحاظ ارزش برابر باشند)اکنون حاصل ضرب این دو عدد را محاسبه میکنیم و نام آن را K میگذاریم.K = 2 * 300 = 600الگوریتم ما قرار است نرخ تبدیل را طوری تنظیم کند که همواره حاصل ضرب میزان سرمایه دو استخر نقدینگی برابر همین مقدار شود. بنابراین هدف ما این است که همواره :X * Y = KX : سرمایه استخر نقدینگی اتریوم (در حال حاضر برابر 2)Y : سرمایه استخر نقدینگی تتر (در حال حاضر برابر 300)سپس اتریوم ها را به استخر نقدینگی اتریوم و تترها را به استخر نقدینگی تتر منتقل میکنیم.خب حالا فرض کنید یک خریدار آمده و میخواهد تعداد 15 تتر را با اتریوم مبادله کند. با چه نرخی باید این معامله انجام شود ؟پاسخ : معامله را به گونه ای انجام میدهیم که حاصل ضرب موجودی جدید دو استخر نقدینگی همان عدد K شود. بدین گونه :این خریدار قرار است مبلغ 15 تتر را به استخر نقدینگی تتر اضافه کند بنابراین موجودی جدید استخر برابر است با :Y new = 300 + 15 = 315حالا از همان فرمول X*Y=K موجودی جدیدی که استخر نقدینگی اتریوم "باید" داشته باشد را حساب میکنیم :X new = K / Y new = 600 / 315 = 1.9بنابراین موجودی استخر نقدینگی اتریوم باید 1.9 باشد تا حاصل ضرب موجودی دو استخر برابر 600 شود. اما موجودی فعلی استخر 2 اتریوم است بنابراین باید 0.1 اتریوم به خریدار بدهیم تا حساب و کتاب‌مان درست شود.این خریدار مبلغ 15 تتر به استخر نقدینگی صرافی واریز کرد و از آن مبلغ 0.1 اتریوم برداشت کرد بنابراین میتوان نتیجه گرفت این خریدار اتریوم را با نرخ 150 تتر خریده است. در مدل حاصل ضرب ثابت اینگونه نرخ تبدیل مشخص میشود.تغییر قیمت چطور اتفاق می افتد ؟در مدل حاصل ضرب ثابت پس از تغییر نسبت میزان موجودی دو استخر تغییر قیمت اتفاق می‌افتد. مثلا در همین مثال بالا پس از اتمام معامله، تغییر قیمت رخ داده است. در مدل حاصل ضرب ثابت، میشود ارزش دو استخر نقدینگی را یکسان در نظر گرفت بنابراین داریم :315 USDT = 1.9 ETH ---> 1 ETH = 165 USDTهمانطور که دیدید چون تقاضا بیشتر بود (یک خریدار داشتیم اما فروشنده‌ای نداشتیم) قیمت اتریوم در صرافی ما افزایش پیدا کرد (از 150 به 165). برعکس آن اگر یک فروشنده پیدا شود و مقداری اتریوم بفروشد قیمت کاهش می‌یابد. این نبرد بین عرضه و تقاضا قیمت را تعیین میکند. اگر تقاضا بیشتر باشد الگوریتم ما قیمت جدید را بالاتر میبرد و اگر عرضه بیشتر باشد الگوریتم ما قیمت جدید را پایین می‌آورد.هرچه سرمایه استخر نقدینگی کمتر باشد، صرافی ما بیشتر در معرض نوسانات قیمت قرار دارد. در همین مثال بالا دیدید که حجم سرمایه استخر نقدینگی کم بود و با یک خرید ساده قیمت به راحتی افزایش یافت. در واقعیت، استخرهای نقدینگی بعضا میلیون ها دلار حجم سرمایه دارند.آیا ممکن است یک استخر نقدینگی خالی شود؟ اگر یکی بخواهد کل اتریوم موجود را بخرد چه؟در الگوریتم بازارساز حاصل ضرب ثابت چنین چیزی ممکن نیست زیرا هرچقدر شما بخواهید میزان بیشتری اتریوم بخرید، الگوریتم آن را با قیمت بالاتری با شما حساب میکند.بیایید با یک مثال ببینیم اگر بخواهیم یک مبلغ عظیم (نسبت به حجم استخر نقدینگی) اتریوم بخریم (مثلا 1000 تتر) چه اتفاقی می افتد.وضعیت استخر قبل از معامله ما :میزان اتریوم استخر (X) = 2میزان تتر استخر (Y) = 300حالا ما 1000 تتر به استخر نقدینگی واریز میکنیم. موجودی جدید تتر استخر 1300 خواهد شد.برای محاسبه اینکه موجودی جدید اتریوم استخر "باید" چه عددی باشد از همان فرمول X*Y=K استفاده میکنیم.X new = k / Y new = 600 / 1300 = 0.45بنابراین موجودی جدید اتریوم استخر باید 0.45 باشد پس باید 1.55 اتریوم به خریدار بدهیم (که از 2 عدد اتریوم به 0.45 برسیم).همانطور که دیدید موجودی استخر خالی نشد! فقط تتر استخر زیاد شد و اتریوم آن کمتر شد. در الگوریتم حاصل ضرب ثابت هرگز موجودی استخر خالی نمیشود.حال بیاید حساب کنیم صرافی ما در حقیقت اتریوم را با چه نرخی با این خریدار بنده خدا حساب کرده است. خریدار مبلغ 1000 تتر به استخر واریز کرد و مبلغ 1.55 اتریوم به دست آورد بنابراین عملا صرافی ما هر اتریوم را با او 645 تتر حساب کرده است!!! (یک افزایش قیمت بسیار زیاد)در الگوریتم حاصل ضرب ثابت اگر خرید حجیم اتفاق بیفتد یا تقاضا بالا رود، قیمت به طور متناسب تنظیم خواهد شد.در سال 2020 یک خریدار که میخواست از یک صرافی غیر متمرکز مبلغ بالایی اتریوم بخرد یک خرید حجیم انجام داد و باعث پامپ غیرواقعی قیمت صرافی و متعاقبا ضرر چند میلیون دلاری خودش شد زیرا که به حجم سرمایه استخر نقدینگی صرافی توجه نکرده بود.سرمایه استخرهای نقدینگی صرافی‌ها از کجا می‌آید؟صرافی‌های غیرمتمرکز نیاز به میلیون‌ها دلار سرمایه برای تامین استخر‌های نقدینگی دارند. آنها با ارائه بخشی از کارمزدهای تراکنش صرافی به سرمایه گذاران استخرها، آنها را تشویق به سرمایه‌گذاری و تامین نقدینگی استخرها میکنند. سرمایه گذاران هر زمان که بخواهند میتوانند سرمایه خود را برداشت کنند. یک ایراد سرمایه‌گذاری در استخرهای این صرافی‌ها این است که در بازارهای صعودی شما دچار ضرر ناپایدار (Impermanent Loss) خواهید شد.منظور از ضرر ناپایدار یا ضرر غیر دائمی چیست؟فرض کنیم موقعی که اتریوم 150 دلار بوده است ما روی یک استخر نقدینگی سرمایه گذاری کرده ایم. برای سرمایه گذاری روی یک استخر نقدینگی در یک صرافی غیرمتمرکز باید سرمایه خود را به دو نیم تقسیم کنید، نیمی از آن را به ارز 1 و نیم دیگر را به ارز 2 اختصاص دهید. مثلا اگر مجموعا 6K تتر دارید باید به اندازه 3K آن را به اتریوم تبدیل کنید. سپس تترها را به استخر تتر و اتریوم ها را به استخر اتریوم صرافی واریز کنید. (قرار است از همین اعداد برای مثال استفاده کنیم)Y = 3000 , X = 3000/150 = 20 ----> K = X*Y = 3000*20=60,000حال فرض کنید بازار صعودی شده و قیمت اتریوم به 300 تتر رسیده است. در مدل حاصل ضرب ثابت همواره این دو اصل برقرار است :1) حاصل ضرب میزان سرمایه دو استخر برابر عددی ثابت است.2) میزان سرمایه دو استخر از لحاظ ارزش برابر هستند که با استفاده از آن میتوان قیمت یا همان نرخ تبدیل را تقریب زد. برای محاسبه قیمت تنها کافی است عبارت Y/X را حساب کنیم. حاصل تقسیم Y به X در هر لحظه همان نرخ تبدیل اتریوم به تتر در آن لحظه است.اگر این دو اصل را به زبان ریاضی بنویسیم دو معادله داریم :X new * Y new = K = 60,000 Y new / X new = 300 (قیمت جدید اتریوم)از این دو معادله میتوان مقدار Y new (میزان سرمایه جدید استخر تتر) و X new (میزان سرمایه جدید استخر اتریوم) را محاسبه کرد. که پاسخ اینگونه خواهد بود :Y new = 4242 USDT , X new = 14.1 ETHخب حالا بیایید یک مقایسه جالب انجام دهیم. بیایید حساب کنیم اگر پول‌مان را در استخر نقدینگی صرافی سرمایه‌گذاری میکردیم بیشتر سود میبردیم یا اگر خیلی ساده صرفا با کل پول اتریوم میخریدیم :قبل از افزایش قیمت ، مجموعا به اندازه 6000$ سرمایه داشتیم. (3K تتر + 20 اتریوم)پس از افزایش قیمت به اندازه 4242$ + 14.1 اتریوم سرمایه داریم که با احتساب هر اتریوم 300 دلار (قیمت جدید) مجموعا حدود 8470$ ارزش سرمایه جدید ما خواهد بود (2470$ سود به علاوه پاداشی که خود صرافی برای سرمایه‌گذاری‌مان به ما میدهد که البته بحث آن جداست).اگر با کل پول‌مان خیلی راحت از همان اول اتریوم میخریدیم، قیمت اتریوم 2 برابر شده و سرمایه ما هم برابر 12000$ میشد! (6000$ سود)همانطور که دیدید ما با سرمایه‌گذاری روی استخر نقدینگی صرافی از بازار صعودی جا ماندیم و به اندازه دیگران سود نکردیم (2.47K$ سود به جای 6K$ سود). به این مفهوم، ضرر ناپایدار یا Impermanent Loss میگویند.حالا چرا به آن ضرر "ناپایدار" یا ضرر "غیر دائمی" میگویند ؟ به این دلیل که اگر اتریوم به قیمت قبلی خود برگردد (150 دلار) همه چیز به حالت اولیه برخواهد گشت و شما از لحاظ درصد سود سرمایه تفاوتی با کسی که کل سرمایه اش را اتریوم خریده بوده نخواهید داشت. (البته بحث پاداشی که صرافی غیرمتمرکز بابت سرمایه‌گذاری‌تان به شما میدهد جداست، آن را در مقایسه وارد نکرده ایم)در بازار نزولی قضیه کاملا برعکس است و شما «سود غیر دائمی» (Impermanent Profit) را تجربه خواهید کرد که یعنی کمتر از بقیه (که تمام سرمایه‌شان اتریوم بوده) ضرر میکنید.دقت داشته باشید که :ضرر غیر دائمی به معنای ضرر واقعی نیست، بلکه یعنی بازار صعودی بوده اما شما کمتر از بقیه سود کرده‌اید.سود غیر دائمی به معنای سود واقعی نیست، بلکه یعنی بازار نزولی بوده اما شما کمتر از بقیه ضرر کرده‌اید.خلاصه مطلبصرافی های غیرمتمرکز برخلاف صرافی های معروف مثل باینانس و کوین‌بیس که از سیستم دفتر سفارشات استفاده میکنند، از سیستم بازارساز خودکار استفاده میکنند که الگوریتم آن به صورت خودکار قیمت را تنظیم میکند و عملکرد صرافی را تضمین خواهد نمود.