برنامهنویس و تحلیلگر سیستم، علاقمند به فناوری بلاکچین و قراردادهای هوشمند
سیستمهای وام دهی مبتنی بر رمزارزها
چندی پیش در گفتمانی بین دو نفر از دوستان توئیتری جناب فی اولر و آقای مهدی صالحی نکاتی در مورد سیستمهای وامدهی مبتنی بر رمزارزها مورد بحث قرار گرفت. اون نکات رو این جا جمع کردم تا زیر دست و پای اصحاب توئیتر له نشه.
فی اولر:
چند وقت پیش یک تبلیغ دیدم از یک سرویس ایرانی که بیتکوین بعنوان گرو قبول میکرد و بهت وام میداد. چندتا نکته به نظر من رسید. نظر شخصیم رو میگم و از صمیم قلب رای رفقایی که دارن توش فعالیت میکنن آرزوی موفقیت میکنم. این رو هم بگم ممکنه این دوستان این موارد رو روی سایتشون نوشته باشن. من صادقانه باید بگم نرفتم بخونم. این مواردی که به نظر من میرسه در واقع ویژگیهای یک پلتفرم «قرضدهی» ایدهآله.
قبل از هرچیز بیاین باهم فرض کنیم ما کلا دیفای رو ندیده میگیریم. یعنی میخوایم از یک نهاد متمرکز پول قرض کنیم. به این صورت که مثلا ۲ برابر مقداری که میخوایم ریالی قرض بگیریم رو اونجا گرو بگذاریم و قسطها رو ریالی پرداخت کنیم و بعد هم اصل بیتکوینها رو پس بگیریم. این روش چه مشکلاتی داره و چطور میشه اون مشکلات رو رفع کرد؟
- مشکل اول: اعتماد این موضوع پاشنه آشیل این بیزنس مدله. شما در هرصورت به اسم و اعتبار اون افرادی که این سیستم رو میچرخونن اعتماد کردید. اون بیتکوین پسفردا اگر ۵ برابر ریالی شد که شما قرض گرفته بودید. اون دیگه شانس شماست که این افراد پول شما رو کامل برگردونن یا نه.
- مشکل دوم: حریم خصوصی. این مشکل رو میشه با روشهایی برطرف کرد. مشکل اصلی اینه که شما مثلا یک UTXO نیم بیتکوینی داری و میخوای مثلا ۵۰ میلی اونجا گرو بذاری. خب اگر حواست نباشه و کار رو اونطور که باید درست انجام ندی حداقلش اینه که اون بابایی که پشت سیستم داشبورد سیستم اون شرکت نشسته از اسم و آدرس و شماره ملی و عکس با شورت ورزشی شما و حداقل نیم بیتکوین دارایی شما خبر داره اینکه این مساله درسته یا غلطه به خود شخص بستگی داره ولی من فکر میکنم درست نیست.
- مشکل سوم و از همه مهمتر: اون بیتکوین که گرو گذاشتم باهاش چیکار قراره بکنن ببینید این سیستمهای قرض دادن در ازای گرو گذاشتن بیتکوین از پارسال توی دنیا خیلی زیاد شدن و روش کارشون هم متنوعه درستترین مورد به نظر من مدلیه که میگه ببین تو گرو میذاری. من در ازاش به تو قرض میدم. یک نهاد سومی هم باید باشه که نه به من ارتباط بیزنسی داره نه به تو. پس بیایم یک قرارداد ۲ از ۳ امضایی بیتکوین درست کنیم. بیتکوین میره به اون حساب و یک کلید میرسه به هر کدوم از ما. اگر بین من که به تو پول قرض دادم و تو که بیتکوین گرو گذاشتی مشکلی پیش اومد اون نهاد سوم به عنوان به قول معروف حَکَم میاد وسط و تصمیم میگیره. اگر همه چیز خوب پیش رفت که هیچ ما ۲ کلید از ۳ کلید رو داریم و اصلا کاری هم به اون نهاد نداریم. شما این رو در نظر بگیرید یک مسئله دیگه هم که به نظر من مهمه توی قرارداد مطرح میشه. اینکه اون بیتکوین که گرو گذاشتین توی اون آدرس میمونه و تکون نمیخوره. شما هروقت خواستی میری توی یه اکسپلورر بیتکوین و مطمئن میشی اون بیتکوین رو برنداشتن باهاش مثلا ترید کنن.
این ۳ مشکل باعث میشه که مردم بیشتر تمایل داشته باشن به دیفای که اتفاقا توی بیتکوین ۲-۳ هفتهاس بخش قرض دادنش راه افتاده. حتما به زودی درباره اون هم مینویسم.
قرار بود درباره روش غیرمتمرکز قرض دادن برپایه بیتکوینی صحبت کنیم که واقعا ساده و موثره. ببینیم دیفای بیتکوین چطور کار میکنه؟ فرض کنیم شما بیتکوین دارید و میخواید در قبال گرو گذاشتن اون از یک نفر بدون اینکه نیاز به اعتماد کردن به کسی باشه وام بگیرید.
اینجا یک نهادی بعنوان واسط بین شما که وامگیرنده و گرو گذار هستید و اون فردی که وام دهنده هست عمل میکنه و به این ترتیب فرآیند وام دهی انجام میشه:
۱- وامگیرنده و وام دهنده هرکدوم یک حساب کاربری در نهاد واسط باز میکنند و شرایط قرارداد رو قبول میکنند شرایط قرارداد یعنی:
- وام گیرنده چه مقدار بیتکوین گرو میگذاره
- وام دهنده چه مقدار وام و با چه درصد سودی به وامگیرنده پرداخت میکنه
- مدت قرارداد چقدره
- نسبت وام به سپرده چه مقداره
وقتی این موارد تایید شد، وام دهنده و وام گیرنده یک آدرس استیبل کوین شخصی توی قرارداد وارد میکنند.
۲- نهاد واسط یک حساب مولتیسیگ ۲ از ۳ امضایی میسازه و هرکدوم از اونها یک کلید از اون ۳ کلید رو در اختیار خواهند داشت.
۳- وامگیرنده برابر مقداری که توی قرارداد مشخص شده رو به اون آدرس واریز میکنه. پس بعد از ۳ کانفرم شبکه فرد وام دهنده مطمئن میشه که بیتکوین گرو گذاشته شده.
۴- وام دهنده استیبلکوین مورد قبول وام گیرنده که در قرارداد مشخص شده رو به آدرسی که توی قراردادشون ثبت شده واریز میکنه و آیدی اون تراکنش رو در صفحه آنلاین قرارداد ثبت میکنه و این دو نفر دیگه تا روز اتمام قرارداد با هم کاری ندارند.
۵- روزی که قرارداد به پایان رسید. وام گیرنده مقدار اصل پول بعلاوه سود رو به آدرسی که توی قرارداد ذکر شده واریز میکنه و آیدی اون تراکنش رو توی صفحه آنلاین قرارداد ثبت میکنه. نهاد واسط همه مسائل رو چک میکنه و اگر همهچی همونطور که باید باشه کارمزد خودش رو کم میکنه و گرو که بیتکوین باشه و استیبلکوین که وام بوده رو به حساب اون افراد برمیگردونه.
تا اینجا سناریویی رو بررسی کردیم که همه چی خوب پیش میره ولی تا همینجا هم نسبت به مدل برپایه اعتماد خیلی بهبود دادیم روش کار رو و در واقع تونستیم «اعتماد کردن» رو به کلی از روال کار حذف کنیم. ممکنه شما سوال بپرسین که «آیا ما نباید به اون نهاد واسط اعتماد کنیم؟» و جواب خیر هستش. اگر به هر دلیل اون نهاد واسط از بین بره وام دهنده و وام گیرنده میتونن با توجه به اینکه کلیدهای لازم برای بازیابی اون بیتکوین گرو گذاشته شده رو در اختیار دارند، با هم تسویه کنند و بیتکوین گرو گذاشته شده رو هم بیرون بکشن. این سیستم با توجه به اینکه از استیبل کوین ها استفاده میکنه میتونه توی حفظ حریم خصوصی کاربران هم موثر باشه. چرا که افراد میتونن در این پلتفرم بصورت ناشناس با هم معامله کنند و نیازی به احراز هویت نیست چون پول فیات در میان نیست.
نسخه اولیه این روش غیرمتمرکز حدود ۲ هفته است که بر روی سایت مجموعه هودل هودل راهاندازی شده و شما میتونید با رفتن به سایت اونها وام بدید یا بیتکوین گرو بگذارید و وام بگیرید. http://lend.hodlhodl.com
مهدی صالحی:
دوست خوبم فی اولر یه توضیحی در مورد سیستم وام گیری جدیدhodl hodl داده. خواستم یه چیزایی بهش اضافه کنم.
خب به نظرم اگر به این روش بگیم روش توزیع شده یا Distributed فکر کنم بهتر باشه چون خب یه نهاد متمرکز داره و یه نقطه ی Trust جا گذاشتیم. اگر این نهاد بخواد خیلی راحت می تونه با وام دهنده دست به یکی کنه و همه ی وثیقه های وام گیرنده ها رو بکشن بالا و برن. یا اصلا بگن ببخشید هک شدیم.
مثل خیلی از این حرکاتی که صرافی های متمرکز زدن و اسمشو گذاشتن هک. مشکل اصلی در وام دهی به شکل غیر متمرکز واقعی همینطور که به افشین گفتی اینه که اگر ارزش وثیقه ای که وام گیرنده گذاشته بیاد پایین. وام گیرنده وام رو بیخیال میشه و پیش خودش میگه چرا وام رو برگردونم؟!
این مشکل به طور کلی همه جا وجود داره و خب مربوط به کریپتو نیست فقط. فرق اینجا با Traditional finance اینه که اونجا شما هویتت مشخصه و اگر خطایی کنی و پول رو برنگردونی مشکلاتی پیش میاد واست. مثلا Bad Credit میشی و یا اگر میزان پولی که بردی زیاد باشه که میبرنت دادگاه و ...
ولی اینجا که کسی هویتش مشخص نیست. پس طراح سیستم وام دهی باید مطمئن باشه که هیچ وقت ارزش وثیقه ی کسی پایین تر از میزان وامی که گرفته نیاد. خب چه کار می کنن؟ در اولین حرکت که بهت می گن باید وثیقه ای که میذاری بیشتر از وامت باشه که بهش میگن Over-Collateration.
ولی این کافی نیست چرا؟ چون وثیقه از جنس بیت کوین هست و خود بیت به شدت قیمتش Volatile هست و تغییر می کنه. پس ممکنه قیمت بیت اینقدر بیاد پایین که وثیقه ها وام های گرفته شده رو پوشش ندن و خب در این صورت وام گیرنده ها میرن واسه خودشون و وام دهنده ها ضرر می کنن
پس به یه مکانیزم دیگه نیاز داریم که قبل از اینکه قیمت بیت کوین برسه به حدی که وثیقه وام رو پوشش نده یه کاری کنه. یعنی سریع بره وثیقه رو بفروشه و پولش رو بده به وام دهنده. که به این میگن Liquidation.
خیلی از اینا رو گفته بودی ولی گفتم کامل توضیح بدم که اگر کسی تو این فضا وارد نبود بخونه کامل منظورتو بفهمه.
حالا برگردیم باز سر سیستمی که گفتی. این سیستم با یه سیستم کامل متمرکز فرقی نداره خب خیلی. چون همونطور که گفتم داریم یه نقطه به عنوان نفر سوم میذاریم که همه ی اعتمادمون به این نقطه هست و اگر اون fail کنه کل سیستم خرابه.
راه حل چیه؟
اینه که سعی کنیم این اتفاق Liquidation رو غیرمتمرکز کنیم. مشکل بلاکچین بیت کوین برای طراحی این مکانیزمها هم از جنس اینه که ما زبون تورینگ کامل میخوایم که بشه این کد رو روش پیاده کرد که بیت نداره و ...
حالا چن تا راه حل هست واسه این. یکیش Layer 2 هست. الان که لایتنینگ از HTLC استفاده می کنه و تنها لایه ۲ هست که دیدم واسه بیت (یه سری چیزای مزخرف مثل RSK دیدم که چَرت و پَرته) و لایتنینگ هم نمیشه این کدی که می خوایم رو زد روش.
دومین راه حل این پروژه هایی هستن که بهشون میگن Bridge و یا راه حل های Cross chain ای که مثل یه پل بیت بلاک چین ها ارتباط برقرار می کنن. چنتاشون رو شنیدم مثل COSMOS یا Polkadot که چون اصلا در موردشون نخوندم هیچ نظری نمیدم در موردشون.
در این cross chain ها مشکل اصلی ما atomicity هست. یعنی چون داریم با بلاکچین های متفاوت کار می کنیم و Transaction finality متفاوت دارن نمیشه با هم رو هر دو بلاکچین همزمان کار کرد و ....
راه حل سادهتر استفاده از بلاکچین هایی هست که قرارداد هوشمند میشه روشون تعریف کرد که تورینگ کامل هستن مثل اتریوم. مشکل ولی اینه که ما بیت کوین روی اتریوم نداریم.
راه حل خیلی زشتی که واسه این کار دارن انجام میدن اینه که یه نهادی بیت شما رو می گیره و رو اتریوم بهت ERC20 توکن معادلش رو میده. این آخری با اون پروژه که تو گفتی به لحاظ اعتماد مثل هم هستن. مثل WBTC اگه شنیده باشی.
وقتی همهی موارد رو با هم بررسی میکنم میبینم همه یه جاشون میلنگه. ولی تو اتریوم یه پروژه هست به اسم Compound که واسه وام دهی هست و خیلی جالب داره کار می کنه. لاقل واسه وثیقه و وامهای ERC20 به نسبت غیرمتمرکزه. الیته اگر اتریوم رو غیر متمرکز بدونیم.
مطلبی دیگر از این انتشارات
تحلیل و بررسی پروتکل Reef Finance و توکن REEF
مطلبی دیگر از این انتشارات
نقطه عطفی دیگر برای بیتکوین؛ تعداد کل آدرسهای بیتکوین از یک میلیارد عدد فراتر رفت!
مطلبی دیگر از این انتشارات
مقایسه اتریوم کلاسیک و اتریوم