MoneroSwapper MoneroSwapper

امضای حلقه‌ای Monero چگونه کار می‌کند؟

MoneroSwapper · · · 1 min read · 13 views

امضای حلقه‌ای Monero چگونه کار می‌کند؟

هر بار که یک تراکنش Bitcoin تأیید می‌شود، آدرس فرستنده، آدرس گیرنده و مبلغ دقیق آن روی یک دفترکل عمومی حک می‌شود که هر کسی می‌تواند تا ابد آن را بخواند. Monero دقیقاً برای شکستن همین مدل ساخته شد، و امضای حلقه‌ای (Ring Signature) همان قطعه‌ای است که بیشترین بار سنگین را در سمت فرستنده به دوش می‌کشد. بر اساس قوانین شبکه در سال ۲۰۲۵، هر تراکنش Monero فرستندهٔ واقعی را میان ۱۶ خرج‌کنندهٔ محتمل پنهان می‌کند؛ اندازهٔ حلقه‌ای ثابت که از زمان هارد فورک آگوست ۲۰۲۲ برای همهٔ کاربران اجباری شده است. این یکدستی یک جزئیات بی‌اهمیت نیست؛ خودِ اصل ماجراست. وقتی شما XMR را از طریق سرویسی بدون نگهداری لاگ مثل MoneroSwapper تهیه می‌کنید، سکه‌ها این محافظت را به‌صورت خودکار به ارث می‌برند، بی‌آنکه لازم باشد گزینه‌ای را روشن کنید.

در این راهنما گام‌به‌گام می‌بینیم که امضای حلقه‌ای واقعاً چیست، Monero چطور برای هر خرج یکی از آن‌ها می‌سازد، چرا «تصویر کلید» (key image) جلوی خرج مضاعف را می‌گیرد بدون آنکه هویت شما را لو بدهد، و ارتقای پیشِ‌رو یعنی FCMP++ چطور قصد دارد مجموعهٔ ناشناسی را از ۱۶ نفر به کل بلاک‌چین برساند. هیچ پیش‌زمینهٔ رمزنگاری فرض نشده است — فقط کمی حوصله برای دنبال کردن اینکه قطعه‌ها چطور کنار هم جفت می‌شوند.

چرا حریم خصوصی فرستنده مسئلهٔ سخت ماجراست

پنهان کردن مبلغ یک تراکنش با ریاضیات امروزی نسبتاً آسان است. اما پنهان کردن اینکه چه کسی به چه کسی پول می‌دهد به‌مراتب دشوارتر است، چون یک بلاک‌چین باید به همه اجازه دهد تأیید کنند سکه‌هایی که خرج می‌شوند واقعی‌اند و پیش‌تر خرج نشده‌اند — آن هم بدون هیچ داور مورد اعتمادی. Monero این مسئله را با سه لایهٔ مستقل که دست‌به‌دست هم می‌دهند حل می‌کند:

  • آدرس‌های پنهان (Stealth Addresses) گیرنده را مخفی می‌کنند. هر پرداخت به یک آدرس یک‌بارمصرفِ تازه می‌رود که روی زنجیره مشتق می‌شود، پس آدرس عمومی گیرنده هرگز در دفترکل ظاهر نمی‌شود.
  • RingCT مبلغ را پنهان می‌کند. تراکنش‌های محرمانه ارزش را در یک تعهد رمزنگاشتی می‌پیچند که با اثبات‌های بازه (range proofs) معتبر شناخته می‌شود، نه با یک عدد خوانا.
  • امضاهای حلقه‌ای (Ring Signatures) فرستنده را پنهان می‌کنند. این همان لایه‌ای است که مشخص نبودنِ اینکه واقعاً کدام خروجی پیشین دارد خرج می‌شود را ممکن می‌سازد.

اگر هر کدام از این سه لایه را بردارید، دو لایهٔ دیگر نشت می‌کنند. اگر فرستنده دیده می‌شد، دانستن آدرس پنهانِ گیرنده برای بازسازی گرافِ پرداخت کافی بود. به همین دلیل Monero هر سهٔ این لایه‌ها را اجباری می‌داند نه ویژگی‌های اختیاری — و نتیجه قابلیت تعویض‌پذیری (fungibility) است؛ این خاصیت که هر واحد XMR با هر واحد دیگر XMR قابل تعویض است، چون هیچ‌کدام تاریخچهٔ قابل‌ردیابی با خود حمل نمی‌کند.

امضای حلقه‌ای دقیقاً چیست

این مفهوم قدیمی‌تر از خود Monero است. امضای حلقه‌ای که نخستین‌بار در سال ۲۰۰۱ توسط ریوست، شامیر و تاومن (Rivest, Shamir, Tauman) صورت‌بندی شد، به یکی از اعضای یک گروه اجازه می‌دهد پیامی را امضا کند، طوری که هر تأییدکننده‌ای بتواند مطمئن شود «کسی در این گروه آن را امضا کرده» اما چیزی دربارهٔ اینکه کدام عضو دستگیرش نشود. نه رهبری برای گروه وجود دارد، نه مراسم راه‌اندازی، و نه راهی برای ابطال این ابهام در آینده — امضاکننده «به‌صورت خودجوش» از کلیدهای عمومیِ موجود یک گروه موقت می‌سازد.

Monero این ایده را برای خرج کردن سازگار می‌کند. وقتی شما یک خروجی (تکه‌ای از XMR که پیش‌تر دریافت کرده‌اید) را خرج می‌کنید، کیف پولتان مستقیماً به آن اشاره نمی‌کند. بلکه یک حلقه می‌چیند: خروجی واقعی شما به‌علاوهٔ ۱۵ طعمه (decoy) که از خروجی‌های گذشتهٔ دیگران روی بلاک‌چین برداشته می‌شوند. امضا ثابت می‌کند که یکی از این ۱۶ خروجی واقعاً مال شماست تا خرجش کنید، اما ناظر نمی‌تواند تشخیص دهد کدام‌یک.

طعمه‌ها و نحوهٔ انتخاب آن‌ها

آن ۱۵ طعمه تصادفی نیستند. اگر به‌صورت یکنواخت از کل تاریخچهٔ زنجیره برداشته می‌شدند، خروجی واقعی — که تقریباً همیشه یک خروجی تازه است — از نظر آماری انگشت‌نما می‌شد. به‌جای آن، کیف پول Monero طعمه‌ها را از یک توزیع گاما (gamma distribution) نمونه‌برداری می‌کند که برای تقلید از رفتار واقعی خرج تنظیم شده، یعنی به همان نسبتی که مردم خروجی‌های تازه را خرج می‌کنند به آن‌ها وزن بیشتری می‌دهد. پژوهشگران بارها این الگوریتم انتخاب را زیر فشار آزموده‌اند و Monero Research Lab چند بار آن را بازآرایی کرده تا روزنه‌های مبتنی بر زمان‌بندی را ببندد.

چون هر کیف پول از همان الگوریتم و همان اندازهٔ حلقهٔ ۱۶ استفاده می‌کند، تراکنش شما از نظر ساختاری دقیقاً شبیه تراکنش هر کس دیگری به نظر می‌رسد. یکدستی خودش یک ویژگیِ حریم خصوصی است: یک عضو پرت به‌راحتی ردیابی می‌شود، اما عضوی از یک جمعیتِ کاملاً یکدست نه.

تصویر کلید: توقف خرج مضاعف بدون افشای خرج‌کننده

اینجا بخش هوشمندانهٔ ماجراست. اگر تأییدکننده نتواند تشخیص دهد شما کدام خروجی را خرج می‌کنید، شبکه چطور جلوی شما را می‌گیرد که همان خروجی را دو بار خرج نکنید؟ پاسخْ تصویر کلید است — یک برچسب رمزنگاشتیِ یکتا که به‌صورت قطعی (deterministic) از کلید خصوصیِ یک‌بارمصرفِ خروجی شما مشتق می‌شود.

هر خروجی می‌تواند دقیقاً یک تصویر کلیدِ معتبر تولید کند، و این تصویر هیچ چیزی دربارهٔ اینکه کدام عضو حلقه آن را ساخته فاش نمی‌کند. وقتی تراکنش شما منتشر می‌شود، هر گره (node) تصویر کلید را ثبت می‌کند. اگر همان تصویر کلید روزی دوباره ظاهر شود، شبکه تراکنش دوم را به‌عنوان خرج مضاعف رد می‌کند. بنابراین سیستم ضمانتِ یکپارچگیِ یک دفترکلِ UTXO را به دست می‌آورد و در عین حال ابهام فرستنده را حفظ می‌کند — تصویر کلید فقط به خودش قابل‌اتصال است، نه به هویت شما.

CLSAG: طرح امضایی که Monero امروز به کار می‌برد

الگوریتم خاصی که Monero اجرا می‌کند CLSAG است — مخفف Concise Linkable Spontaneous Anonymous Group، یعنی امضاهای گروهیِ ناشناسِ خودجوشِ موجزِ قابل‌اتصال. این طرح در هارد فورک اکتبر ۲۰۲۰ جایگزین ساختار قدیمی‌ترِ MLSAG شد. این ارتقا فقط آرایشی نبود: CLSAG اندازهٔ امضا را حدود ۲۵٪ کم کرد و زمان تأیید را حدود ۱۰ تا ۲۰٪ کاهش داد، که یعنی تراکنش‌های کوچک‌تر، کارمزد کمتر و فشار سبک‌تر روی هر گره‌ای که زنجیره را اعتبارسنجی می‌کند.

واژهٔ «قابل‌اتصال» (Linkable) به همان رفتار تصویر کلید که بالا توضیح داده شد اشاره دارد؛ «خودجوش» (Spontaneous) و «گروه ناشناس» (Anonymous Group) هم آن حلقهٔ موقتِ بی‌رهبر را توصیف می‌کنند. CLSAG در کنار RingCT برای مبالغ و Bulletproofs+ برای اثبات‌های بازهٔ فشرده (که در همان فورک آگوست ۲۰۲۲ فعال شد و اندازهٔ حلقه را روی ۱۶ تثبیت کرد)، همان چیزی است که یک تراکنش مدرن Monero را هم خصوصی و هم کوچک می‌کند.

ساختن یک امضای حلقه‌ای، گام به گام

دیدنِ توالی‌ای که کیف پولتان وقتی دکمهٔ «ارسال» را می‌زنید طی می‌کند، کمک‌کننده است. رمزنگاری‌اش پیچیده است، اما گردش کار سرراست است:

  1. انتخاب خروجی واقعی. کیف پولتان خروجی‌ای را شناسایی می‌کند که کنترل آن و کلید خرجش را در اختیار دارید و آن‌قدر بزرگ هست که پرداخت به‌علاوهٔ کارمزد را پوشش دهد.
  2. جمع‌آوری ۱۵ طعمه. کیف پول با استفاده از نمونه‌بردارِ توزیع گاما، ۱۵ خروجیِ دیگر را از بلاک‌چین برمی‌گزیند تا کنار خروجی شما در حلقه بنشینند.
  3. محاسبهٔ تصویر کلید. این برچسب که از کلید خصوصی خروجی واقعی مشتق می‌شود، به شبکه اجازه می‌دهد هر خرج مضاعفِ آیندهٔ همان خروجی را تشخیص دهد.
  4. ساختن امضای CLSAG. کیف پول یک امضای واحد روی کل حلقه می‌سازد که فقط به این دلیل معتبر است که شما کلید یکی از اعضا را در اختیار دارید — بدون آنکه مشخص شود کدام عضو.
  5. پیوست تعهدات RingCT و اثبات‌های بازه. Bulletproofs+ ثابت می‌کند که مبالغ پنهان نامنفی‌اند و درست تراز می‌شوند، آن هم بدون افشای ارزش‌ها.
  6. انتشار از طریق Dandelion++. تراکنش با یک الگوی بازپخشِ حافظِ حریم خصوصی منتشر می‌شود که پنهان می‌کند کدام گره نخستین‌بار آن را آغاز کرده و حملات ناشناسی‌زداییِ سطح IP در لایهٔ mempool را ناکام می‌گذارد.
امضای حلقه‌ای تراکنش شما را رمزگذاری نمی‌کند — بلکه تراکنش شما را از ۱۵ گزینهٔ جایگزینِ موجه غیرقابل‌تمایز می‌کند. حریم خصوصی اینجا از ابهام می‌آید، نه از پنهان کردن داده‌ها.

مقایسهٔ امضای حلقه‌ای با دیگر رویکردهای حریم خصوصی

Monero تنها پروژه‌ای نیست که سراغ حریم خصوصی روی زنجیره رفته، اما رویکردش در برابر گزینه‌های اصلی، موازنه‌های متمایز خودش را دارد. جدول زیر خلاصه می‌کند که امضای حلقه‌ای در مقایسه چه جایگاهی دارد.

رویکردنقاط قوتمحدودیت‌ها
امضای حلقه‌ای Monero (CLSAG + RingCT)به‌صورت پیش‌فرض برای هر تراکنش خصوصی؛ بدون نیاز به راه‌اندازی مورد اعتماد؛ بالغ و آزموده در میدان از سال ۲۰۱۷مجموعهٔ ناشناسی محدود به اندازهٔ حلقه (۱۶)؛ تراکنش‌های بزرگ‌تر از زنجیره‌های شفاف
zk-SNARKs (مثلاً استخرهای محافظت‌شدهٔ Zcash)مجموعهٔ ناشناسیِ بسیار بزرگ در حالت محافظت‌شده؛ اثبات‌های کوچکحریم خصوصی اختیاری است، پس بیشتر تراکنش‌ها شفاف می‌مانند؛ برخی طرح‌ها به راه‌اندازی مورد اعتماد نیاز داشتند
CoinJoin / میکس کردن (لایه‌های روی Bitcoin)روی یک زنجیرهٔ شفافِ موجود کار می‌کند؛ نیازی به تغییر پروتکل نیستاختیاری و نیازمند هماهنگی؛ شرکت‌های تحلیل زنجیره فعالانه شرکت‌کنندگان را خوشه‌بندی و از حالت میکس خارج می‌کنند
دفترکل‌های شفاف (Bitcoin، Ethereum)کاملاً قابل‌حسابرسی؛ تأیید سادهبدون هیچ حریم خصوصی برای فرستنده، گیرنده یا مبلغ؛ گرافِ پرداختِ عمومیِ دائمی

تفاوتِ تعیین‌کننده در همان واژهٔ پیش‌فرض است. در CoinJoin یا استخرهای محافظت‌شده، حریم خصوصی چیزی است که کاربر باید فعالانه انتخابش کند، و همان اقلیتی که انتخابش می‌کنند انگشت‌نما می‌شوند. در Monero هیچ حالت شفافی وجود ندارد که بشود به آن پناه برد — هر خرج از یک امضای حلقه‌ای استفاده می‌کند، پس آن جمعیتِ جویای حریم خصوصی، کلِ پایگاه کاربری است. همین چیزی است که زیربنای تعویض‌پذیری را می‌سازد.

ضعفِ صادقانهٔ ماجرا همان مجموعهٔ ناشناسی است. شانزده عضو به‌طرز چشمگیری بهتر از صفر است، اما متناهی است. یک حریفِ به‌قدر کافی پرامکانات که بتواند از طریق اطلاعات بیرونی طعمه‌ها را رد کند، میدان را تنگ‌تر می‌کند. دقیقاً همین محدودیت است که ارتقای بعدیِ پروتکل برای پاک کردنش طراحی شده است.

راه پیشِ‌رو: FCMP++ و مجموعهٔ ناشناسی به اندازهٔ کل زنجیره

مهم‌ترین تغییری که به حریم خصوصیِ فرستندهٔ Monero می‌آید FCMP++ است — مخفف Full-Chain Membership Proofs، یعنی اثبات‌های عضویت در کل زنجیره. به‌جای اثبات اینکه «خروجی من یکی از این ۱۶ تاست»، خرج‌کننده ثابت می‌کند که «خروجی من یکی از هر خروجی‌ای است که تا به حال روی زنجیره وجود داشته». با بیش از ۱۰۰ میلیون خروجیِ ثبت‌شده تا امروز، این کار یک مجموعهٔ ناشناسیِ ۱۶تایی را به مجموعه‌ای به اندازهٔ کل بلاک‌چین تبدیل می‌کند.

FCMP++ از یک ساختار رمزنگاشتیِ متفاوت استفاده می‌کند — سازهٔ Curve Trees که به اثبات‌کننده اجازه می‌دهد عضویت در یک مجموعهٔ عظیم را با اثباتی فشرده و کارآمد برای تأیید نشان دهد. مهم‌تر اینکه، مثل ابزارهای فعلی Monero، از هرگونه راه‌اندازی مورد اعتماد پرهیز می‌کند؛ نکته‌ای که از نظر تاریخی برای طرح‌های مبتنی بر SNARK یک گلوگاه بوده است.

در طول سال ۲۰۲۵، FCMP++ از بازبینی کد و حسابرسی‌های رمزنگاشتیِ مستقلِ تأمین‌مالی‌شده توسط جامعهٔ کاربری عبور کرد، و قرار است در کنار بازطراحیِ گسترده‌ترِ پروتکل تراکنش یعنی Seraphis و طرح آدرس‌دهیِ Jamtis از راه برسد. این‌ها روی‌هم‌رفته می‌خواهند حلقهٔ محدود را به‌کلی بازنشسته کنند. تا وقتی هارد فورک مربوطه روی شبکهٔ اصلی فعال نشده، همان حلقهٔ ۱۶عضوی که در این راهنما توصیف شد دقیقاً همان شیوه‌ای است که تراکنش‌های زنده کار می‌کنند — پس هیچ چیز دربارهٔ تهیه یا نگهداری XMR در امروز تغییری نمی‌کند.

برای درکی عملی از مقیاس ماجرا: یک مجموعهٔ ناشناسی به اندازهٔ کل زنجیره یعنی روش‌های اکتشافیِ انتخاب طعمه، توزیع‌های گاما و آن بحثِ دیرپا بر سرِ اندازهٔ «درست» حلقه، همگی بی‌موضوع می‌شوند. پرسشِ «کدام‌یک از این ۱۶ تا واقعی است؟» جایش را به «کدام‌یک از این صد میلیون و خرده‌ای واقعی است؟» می‌دهد — پرسشی که برای یک تحلیلگر هیچ پاسخ به‌دردبخوری ندارد.

پرسش‌های پرتکرار

آیا می‌توان یک امضای حلقه‌ای Monero را تا فرستندهٔ واقعی ردیابی کرد؟

نه از خودِ امضا. امضا ثابت می‌کند یکی از ۱۶ عضو حلقه خرج‌کنندهٔ واقعی است، بی‌آنکه مشخص کند کدام، و تصویر کلید را نمی‌توان به هویت شما گره زد. تلاش‌های ناشناسی‌زدایی معمولاً به فراداده‌های بیرونی تکیه می‌کنند — نشت IP، سوابق KYC صرافی‌ها، یا روش‌های اکتشافیِ ضعیفِ مربوط به دوره‌های قدیمیِ طعمه — نه به شکستن خودِ رمزنگاری. استفاده از مسیر تهیهٔ بدون KYC و یک گرهِ خوب‌نگه‌داری‌شده، بیشتر این کانال‌های جانبی را می‌بندد.

اندازهٔ حلقهٔ فعلی Monero چقدر است؟

شانزده. هر تراکنش شامل خروجی واقعی شما به‌علاوهٔ ۱۵ طعمه است، و این اندازه از زمان هارد فورک آگوست ۲۰۲۲ برای همهٔ کاربران ثابت و اجباری بوده است. اندازهٔ حلقهٔ یکدست خودش یک تدبیرِ حریم خصوصی است، چون اندازه‌های متغیر اجازه می‌دادند تراکنش‌ها از روی ساختارشان انگشت‌نگاری شوند.

امضای حلقه‌ای با RingCT چه فرقی دارد؟

این دو از چیزهای متفاوتی محافظت می‌کنند. امضای حلقه‌ای پنهان می‌کند که چه کسی خرج می‌کند، در حالی که RingCT (تراکنش‌های محرمانهٔ حلقه‌ای) پنهان می‌کند چقدر خرج می‌شود. این دو در هر تراکنش دست‌به‌دست هم کار می‌کنند، در کنار آدرس‌های پنهان که گیرنده را مخفی می‌کنند. هر سه لایه برای حریم خصوصیِ کامل لازم‌اند.

چرا نمی‌توانم یک خروجی Monero را مستقیماً و بدون طعمه خرج کنم؟

از نظر فنیِ پروتکل در تئوری می‌شد، اما این کار آشکارا فاش می‌کرد که دقیقاً کدام خروجی را خرج می‌کنید و آن را به تراکنش پیشینتان گره می‌زد، که حریم خصوصی را هم برای شما و هم برای هر کسی که خروجی‌اش پیش‌تر خروجی شما را به‌عنوان طعمه استفاده کرده بود نابود می‌کرد. به همین دلیل Monero حلقه را در سطح اجماع (consensus) اجباری می‌کند — هیچ راهی برای ارسال یک تراکنش «شفاف» در Monero وجود ندارد.

آیا FCMP++ به‌صورت خودکار XMR موجود مرا خصوصی‌تر می‌کند؟

بله، به‌محض اینکه فعال شود. چون حریم خصوصی در Monero خاصیتی از پروتکل است نه از تک‌تک سکه‌ها، یک ارتقای آینده به اثبات‌های عضویت در کل زنجیره، مجموعهٔ ناشناسیِ بزرگ‌تر را به خرج‌هایی که پس از فورک انجام می‌شوند تسری می‌دهد، بی‌آنکه نیاز به اقدامی از سوی دارندگان باشد. سکه‌هایی که امروز نگه می‌دارید «نشان‌دار» نیستند — صرفاً تحت هر قانونی که در زمان تراکنش جاری باشد خرج می‌شوند.

نکتهٔ تکمیلی: حریم خصوصی فراتر از خودِ زنجیره

یک سوءتفاهم رایج میان کاربران فارسی‌زبان این است که چون رمزنگاریِ Monero قوی است، دیگر نیازی به مراقبت نیست. واقعیت ظریف‌تر است. امضای حلقه‌ای، آدرس پنهان و RingCT لایهٔ روی زنجیره را بی‌نقص می‌پوشانند، اما بیشترِ ناشناسی‌زدایی‌های موفقِ تاریخی از بیرونِ زنجیره آمده‌اند: نشت آدرس IP هنگام پخش تراکنش، گره مرکزیِ یک صرافی که فعالیت کیف پول را به یک حساب KYC‌شده گره می‌زند، یا حتی الگوی زمانیِ خرج‌ها. برای همین است که اجرای گره خودتان روی Tor، و تهیهٔ سکه از مسیری بدون لاگ، اهمیت دارد.

در منطقهٔ ما این نکته دوچندان مهم است. سیاست‌های نظارتیِ نهادهایی مانند بانک مرکزی و سامانه‌های احراز هویتِ صرافی‌های داخلی به این معناست که نقطهٔ ضعف معمولاً همان «درگاه ورود و خروج» است، نه خودِ پروتکل Monero. وقتی XMR را بدون حساب و بدون نگهداریِ سابقه به دست می‌آورید، آن پیوندِ هویت ـ سکه از همان ابتدا شکل نمی‌گیرد، و حلقهٔ ۱۶عضوی از همان لحظه‌ای که سکه به کیف پولتان می‌رسد دور آن بسته می‌شود.

جمع‌بندی

امضاهای حلقه‌ای همان دلیلی هستند که یک فرستندهٔ Monero می‌تواند ثابت کند حق خرج کردن را دارد، بی‌آنکه فاش کند کدام خروجی را خرج می‌کند — یک امضای واحد CLSAG روی حلقه‌ای از ۱۶ عضو، که با یک تصویر کلید لنگر انداخته و جلوی خرج مضاعف را می‌گیرد بدون اینکه ماسک از روی هیچ‌کس بردارد. این‌ها در کنار آدرس‌های پنهان و RingCT، حریم خصوصی را به حالتِ پیش‌فرض تبدیل می‌کنند نه ویژگی‌ای که باید انتخابش کنید، و همین پیش‌فرض است که به XMR تعویض‌پذیری‌اش را می‌بخشد. با FCMP++ در افق، مجموعهٔ ناشناسی آماده است تا از یک حلقهٔ ثابت به کل زنجیره رشد کند.

درک سازوکار قدم اول است؛ قدم دوم تهیهٔ XMR است بدون تسلیم کردنِ همان حریم خصوصی‌ای که تازه دربارهٔ آن آموختید. MoneroSwapper به شما امکان می‌دهد Monero را به‌صورت ناشناس بخرید، بدون حساب و بدون لاگ، طوری که سکه‌هایتان از پیش با هر لایه‌ای که اینجا توصیف شد محافظت‌شده می‌رسند — همان لحظه که در کیف پولتان فرود می‌آیند، حلقه دورشان بسته می‌شود.

اشتراک‌گذاری مقاله

مقالات مرتبط

صرافی Monero ناشناس

بدون KYC • بدون ثبت‌نام • تبدیل فوری

همین الآن مبادله کن