RingCT مونرو: راهنمای تراکنشهای محرمانه
تراکنشهای محرمانه RingCT مونرو: توضیح کامل
هر بلاک اکسپلورر بیتکوین را که باز کنید، میتوانید مبلغ دقیق هر تراکنشی را که تا به حال انجام شده ببینید — تا آخرین واحد ساتوشی. کافی است یک آدرس را وارد کنید تا موجودیاش را تماشا کنید، ردِ این را بگیرید که سکهها از کجا آمدهاند و دنبال کنید که به کجا رفتهاند. این شفافیت عمدی است، و دقیقاً همین شفافیت است که باعث میشود یک فیش حقوقی، یک کمک مالی یا یک واریز بیاحتیاطانه بتواند هویت کل یک کیف پول را لو بدهد. مونرو موضع کاملاً معکوسی دارد: روی زنجیرهٔ آن، خودِ مبلغ پنهان است. فناوریای که این کار را ممکن میکند RingCT نام دارد، مخفف Ring Confidential Transactions یا «تراکنشهای محرمانهٔ حلقهای».
RingCT همان دلیلی است که چرا یک تراکنش مونرو روی دفترکل عمومی بهجای یک عدد خوانا، به شکل یک تعهد رمزنگاریشده ظاهر میشود. این فناوری در ژانویهٔ ۲۰۱۷ فعال شد و اواخر همان سال برای همهٔ تراکنشها اجباری گردید. هر XMR که از طریق یک کیف پول میفرستید — یا از طریق سرویسی بدون حساب کاربری مانند MoneroSwapper تهیه میکنید — توسط همین فناوری محافظت میشود. این مقاله باز میکند که RingCT چه میکند، چه ریاضیاتی به شبکه اجازه میدهد بدون دیدن مبالغ یک تراکنش را تأیید کند، چگونه از مسیر Bulletproofs و Bulletproofs+ تکامل یافته، و در ادامه با FCMP++ به کجا میرود.
چرا پنهان کردن مبلغ اهمیت دارد
حریم خصوصی روی یک بلاکچین یک ویژگی واحد نیست؛ سه مسئله است که باید همزمان حل شوند. اگر فقط یکی از آنها در معرض دید بماند، دو تای دیگر هم از همان شکاف بیرون میزنند. مونرو به هر سه حمله میکند، و RingCT مسئولیت سومی را بر عهده دارد.
- چه کسی فرستاده: با امضاهای حلقهای (ring signatures) حل میشود، که یک تراکنش را از طرف گروهی از خرجکنندگان احتمالی امضا میکنند تا ناظر نتواند تشخیص دهد کدام ورودی واقعی است.
- چه کسی دریافت کرده: با فناوری آدرسهای پنهان (stealth address) حل میشود، که برای هر پرداخت یک آدرس یکبارمصرفِ منحصربهفرد میسازد تا وجوه هرگز روی یک آدرس عمومیِ قابلاستفادهٔ مجدد ننشینند.
- چه مقدار فرستاده شده: با RingCT حل میشود، که مبلغ را در یک تعهد پدرسن (Pedersen commitment) رمزگذاری میکند و در عین حال به هر نود اجازه میدهد تراز بودن حسابها را تأیید کند.
پیش از آنکه RingCT وجود داشته باشد، مونرو فرستنده و گیرنده را پنهان میکرد اما مبالغ را بهصورت متن ساده باقی میگذاشت. برای رسیدن به هر مقداری از حریم خصوصیِ مبلغ، پروتکل تراکنشها را مجبور میکرد در مبالغ ثابت و از پیشتعیینشده انجام شوند — چیزی شبیه ۰٫۰۱، ۰٫۱، ۱، ۱۰ — درست مثل وقتی که میخواهید چیزی را با اسکناسهای دقیق بپردازید. همین رویکرد مقدار شگفتآوری اطلاعات لو میداد. مجموعهٔ طعمههای (decoy) محتمل برای یک خروجی ۷٫۳ XMR بسیار کوچکتر از مجموعهٔ یک خروجی پنهان است، چون طعمهها باید با همان واحد ثابت همخوانی میداشتند. مبالغ قابلمشاهده همچنین به تحلیلگران اجازه میداد تراکنشها را با ردگیری ارزشهای برابر در سراسر زنجیره به هم پیوند بزنند.
مبالغ محرمانه این شکاف را میبندند. وقتی ارزش رمزگذاری شد، هر خروجی از نظر ساختاری دقیقاً شبیه هر خروجی دیگری به نظر میرسد، و این بنیادِ همارزی (fungibility) است — این ویژگی که هر واحد XMR با هر واحد دیگری قابل تعویض است و هیچ تاریخچهٔ «آلوده»ای ندارد که یک فروشنده یا صرافی بتواند آن را رد کند. این موضوع هر سال مهمتر میشود. پس از آنکه Binance در اوایل ۲۰۲۴ مونرو را از بازارهای معاملاتیاش حذف کرد و چند صرافی اروپایی هم همین مسیر را رفتند، استدلال به نفع سکهای که واحدهای جداگانهاش قابل غربال یا فهرستسیاهشدن نیستند فقط قویتر شد.
RingCT دقیقاً چیست و چگونه کار میکند
نیمهٔ «CT» در RingCT — یعنی Confidential Transactions — همان بخشی است که مبالغ را پنهان میکند و بر یک تکه رمزنگاری به نام تعهد پدرسن استوار است. نیمهٔ «Ring» این پنهانسازیِ مبلغ را به طرح امضای حلقهای موجود مونرو گره میزند تا فرستنده هم ناشناس بماند. بهتر است این دو ایده را جداگانه بررسی کنیم.
تعهدهای پدرسن: رمزگذاری عددی که هنوز میتوان رویش حساب کرد
یک تعهد (commitment) راهی است برای قفل کردن یک مقدار، طوری که نتوانید بعداً آن را تغییر دهید، بدون آنکه فاش کنید چه مقداری است. یک تعهد پدرسن به یک مبلغ به این شکل دیده میشود: C = xG + aH، که در آن a مبلغ واقعی است، x یک عدد تصادفیِ محرمانه به نام عامل کورکننده (blinding factor) است، و G و H نقاط ثابتی روی یک خم بیضوی (elliptic curve) هستند. همین عامل کورکننده است که تعهد را مات و غیرقابلنفوذ میکند: بدون آن، دو خروجی با ارزش یکسان، تعهدهایی کاملاً متفاوت تولید میکنند، پس نمیتوان تشخیص داد که برابرند.
ویژگی جادویی این است که این تعهدها جمعپذیر یا همریخت (homomorphic) هستند. تعهدهای همهٔ ورودیهای یک تراکنش را با هم جمع کنید، تعهدهای همهٔ خروجیها بهعلاوهٔ کارمزد را هم با هم جمع کنید؛ اگر مبالغ واقعی تراز باشند، این دو حاصلجمع، تعهدهایی به یک مجموع یکسان خواهند بود. فرستنده عاملهای کورکننده را طوری تنظیم میکند که «ورودیها منهای خروجیها» برابر با یک تعهد به صفر شود. هر نودِ شبکه میتواند این معادله را بررسی کند — و تأیید کند که هیچ سکهای ساخته یا نابود نشده — بیآنکه حتی یک مبلغ از کل تراکنش را بداند.
تمام ترفند RingCT در این است که شبکه میتواند تا آخرین واحد ساتوشی اثبات کند که حسابها تراز است، در حالی که از نظر ریاضی قادر نیست هیچیک از ردیفهای جداگانه را بخواند.
اثباتهای بازهای: جلوگیری از خلق سکه از هیچ
تراز همریخت یک حفرهٔ خطرناک دارد. چون مبالغ پنهاناند، یک فرستندهٔ بدخواه میتواند تلاش کند به یک مبلغ منفی تعهد دهد، که به لطف حساب پیمانهای (modular arithmetic) دور میزند و به یک عدد مثبتِ عظیم تبدیل میشود و به او اجازه میدهد XMR را از هوا بیرون بکشد. برای جلوگیری از این کار، هر خروجی محرمانه همراه با یک اثبات بازهای (range proof) ارسال میشود: یک تضمین رمزنگاریشده که مبلغ متعهدشده درون یک بازهٔ معتبر — میان صفر و ۲⁶⁴ — قرار دارد، بدون آنکه فاش شود کجای آن بازه است.
اثباتهای بازهای همان جایی است که بیشترِ حجم و هزینهٔ RingCT در آن بوده، و همان جایی که بزرگترین بهبودها رخ داده است. پیادهسازی اولیهٔ سال ۲۰۱۷ از امضاهای حلقهای بورومئی (Borromean) استفاده میکرد که درست بودند اما حجیم: یک تراکنش معمولیِ دوخروجی حدود ۱۳ کیلوبایت دادهٔ اثبات بازهای حمل میکرد، و همین تراکنشهای مونرو را بزرگ و کارمزدها را نسبتاً بالا میکرد. جایگزین کردن این ماشینِ سنگین، از همان زمان داستان اصلی بهینهسازی پروتکل بوده است.
تکامل RingCT: Bulletproofs و Bulletproofs+ و CLSAG
RingCT یک چیز ثابت نیست — چندین بار از طریق هارد فورکهای تقریباً ششماهانهٔ مونرو دوباره مهندسی شده، و هر بار کوچکتر و سریعتر شده بدون آنکه همان تضمینهای حریم خصوصی را از دست بدهد. ارتقاهای سرتیتر اینها هستند:
| ارتقا | زمان فعالسازی | چه چیزی را تغییر داد |
|---|---|---|
| RingCT (بورومئی) | ژانویهٔ ۲۰۱۷، اجباری از سپتامبر ۲۰۱۷ | مبالغ پنهان را از طریق تعهدهای پدرسن و اثباتهای بازهای بورومئی معرفی کرد. |
| Bulletproofs | اکتبر ۲۰۱۸ | جایگزین اثباتهای بورومئی شد؛ اثبات بازهای یک تراکنش دوخروجی را از حدود ۱۳ کیلوبایت به حدود ۲٫۵ کیلوبایت رساند، حجم کل تراکنش را حدود ۸۰٪ و کارمزدها را بیش از ۹۵٪ کاهش داد. |
| CLSAG | اکتبر ۲۰۲۰ | جایگزین امضاهای حلقهای MLSAG شد؛ امضاها حدود ۲۵٪ کوچکتر و تأیید آنها بهطور محسوسی سریعتر شد. |
| Bulletproofs+ | اوت ۲۰۲۲ | Bulletproofs را برای کاهش بیشتر حجم و تأیید سریعتر بهبود داد؛ همان فورک اندازهٔ حلقه را به ۱۶ رساند و برچسبهای دید (view tags) را اضافه کرد. |
Bulletproofs که در هارد فورک اکتبر ۲۰۱۸ مستقر شد، نقطهٔ عطف بود. با تغییر به یک اثبات بازهایِ لگاریتمی-اندازه، دادههای پیوستشده به هر تراکنش فروریخت و کارمزد میانه از چند دلار به کسری از یک سنت سقوط کرد. این یگانه تغییری است که بیش از هر چیز دیگر مسئول ارزان بودن استفاده از مونرو امروز است. Bulletproofs+ در اوت ۲۰۲۲ حاشیهٔ دیگری را هم بیرون کشید و تأیید را سریعتر کرد — موضوعی که اهمیت دارد، چون هر نود باید هر اثبات را بررسی کند.
سمت امضای حلقهای هم بهموازات تکامل یافت. CLSAG (مخفف Concise Linkable Spontaneous Anonymous Group signatures) در اکتبر ۲۰۲۰ جایگزین ساختار قدیمیتر MLSAG شد و مؤلفهٔ پنهانکنندهٔ فرستنده را حدود یکچهارم کوچکتر و برای تأیید سریعتر کرد. همان فورک اوت ۲۰۲۲ که Bulletproofs+ را آورد، اندازهٔ اجباری حلقه را هم از ۱۱ به ۱۶ رساند — یعنی اکنون هر خروجیِ خرجشده میان ۱۵ طعمه پنهان است نه ۱۰ — و برچسبهای دید را معرفی کرد، یک بهینهسازی کوچک که به کیف پولها اجازه میدهد هنگام پویش زنجیره برای وجوه ورودی، بیشتر کار را رد کنند.
چگونه یک تراکنش RingCT گامبهگام ساخته میشود
دیدن اینکه قطعات چطور هنگام ارسال XMR توسط کیف پولتان کنار هم مینشینند کمککننده است. هیچکدام از این کارها نیازی به اقدام شما ندارد — کیف پول همه را در یکی دو ثانیه انجام میدهد — اما درک این توالی، رمزِ آنچه واقعاً روی زنجیره است را میگشاید.
- انتخاب ورودی واقعی و طعمهها. کیف پول خروجیای را که واقعاً خرج میکنید برمیدارد و ۱۵ خروجی واقعیِ دیگر از زنجیره را بهعنوان طعمه بیرون میکشد و حلقهای از ۱۶ منبع محتمل میسازد.
- تولید تصویر کلید (key image). یک تصویر کلیدِ منحصربهفرد از خروجی واقعی مشتق میشود. همین چیزی است که به شبکه اجازه میدهد خرج مضاعف (double-spend) را تشخیص دهد، اما نمیتوان آن را به این پیوند زد که از کدام عضو حلقه آمده است.
- ساخت خروجیهای پنهان. کیف پول برای هر گیرنده یک آدرس پنهانِ یکبارمصرف محاسبه میکند تا پرداخت به آدرس عمومی گیرنده گره نخورد.
- تعهد مبالغ. هر مبلغ خروجی در یک تعهد پدرسن با یک عامل کورکنندهٔ تصادفی پیچیده میشود، و عاملهای کورکننده طوری متوازن میشوند که «ورودیها منهای خروجیها منهای کارمزد» به صفر تعهد دهد.
- پیوست اثباتهای بازهای. برای هر خروجی یک اثبات بازهای Bulletproofs+ تولید میشود که ثابت میکند مبلغ پنهان نامنفی است و در بازه قرار دارد.
- امضا با CLSAG و پخش. امضای حلقهای CLSAG خرج را از طرف کل حلقه مجاز میکند، و تراکنش پخش میشود — از طریق Dandelion++ منتشر میشود تا پیش از رسیدن به ممپولِ عمومی، IP مبدأ را مبهم کند.
نتیجهای که روی بلاکچین مینشیند نه فرستندهٔ خوانا دارد، نه گیرندهٔ خوانا و نه مبلغ خوانا — تنها تعهدها، اثباتها و حلقهای از احتمالات — و با این حال توسط هر نود کاملاً قابل تأیید است.
تراکنشهای محرمانه در عمل برای شما چه معنایی دارند
پاداش عملی RingCT، همارزی و مقاومت در برابر نظارت است، و این در موقعیتهای مشخص خودش را نشان میدهد. یک فریلنسر را در نظر بگیرید که دستمزدش را بهصورت کریپتو میگیرد. روی یک زنجیرهٔ شفاف، هر کارفرما میتواند کل موجودی کیف پول و هر پرداخت دیگری را که تا به حال دریافت کرده ببیند؛ یک آدرسِ لورفته همهچیز را افشا میکند. روی مونرو، پرداخت ورودی یک خروجی پنهان با مبلغی مخفی است — کارفرما چیزی فراتر از همان تراکنشی که خودش فرستاده نمیفهمد.
این موضوع طرز کارِ «تحلیل زنجیره» علیه شما را هم تغییر میدهد. شرکتهایی که فارنزیک بلاکچین میفروشند، کسبوکارشان را روی خوشهبندی آدرسها و دنبال کردن مبالغ بنا کردهاند. RingCT سیگنال مبلغ را بهطور کامل حذف میکند، امضاهای حلقهای منبع را گلآلود میکنند و آدرسهای پنهان پیوند مقصد را میشکنند. نه موجودیای برای جستوجو هست و نه ردِ پول تمیزی برای دنبال کردن، و دقیقاً به همین دلیل است که ردگیری ارزهای حریمخصوصیمحور هنوز یک مسئلهٔ حلنشده است نه یک ویژگیِ محصول.
به همین خاطر است که نحوهٔ تهیه هم مهم است. اگر XMR را در یک محل بهشدت تحتنظارت بخرید که هویت شما را به یک خروجیِ مشخص روی زنجیره گره میزند، یک نقطهٔ شروعِ شناختهشده ساختهاید، حتی اگر خودِ زنجیره خصوصی باشد. استفاده از یک سرویس تبدیل مانند MoneroSwapper که نه حسابی نگه میدارد و نه مدارک هویتی میطلبد، این اولین گام را تمیز نگه میدارد، تا محرمانگیای که RingCT روی زنجیره فراهم میکند با یک ردِ کاغذیِ خارج از زنجیره تضعیف نشود. هیچیک از اینها مشاورهٔ مالیاتی نیست — در ایران چارچوب مالیات و مقرراتِ داراییهای دیجیتال هنوز در دست شکلگیری است و سازمان امور مالیاتی و بانک مرکزی هر یک رویکرد خودشان را دارند، فارغ از اینکه زنجیره چقدر خصوصی باشد — اما این به آن معناست که خودِ شبکه وضعیت مالی شما را برای هر کسی که یک بلاک اکسپلورر دارد جار نمیزند.
RingCT بعد از این به کجا میرود: FCMP++
پنهانسازی مبلغ در RingCT محکم و خدشهناپذیر است، اما ناشناسی فرستندهٔ آن یک سقف نظری دارد: حلقهای از ۱۶ یعنی خرج واقعی یکی از ۱۶ نامزد است، و تحلیل آماری گاهی میتواند این احتمالها را اندکی بتراشد. پاسخ مونرو، که سراسر ۲۰۲۵ و ۲۰۲۶ در دست توسعهٔ فعال است، FCMP++ نام دارد — اثباتهای عضویت در کل زنجیره (full-chain membership proofs). بهجای پنهان کردن یک خرج میان ۱۵ طعمه، FCMP++ آن را میان هر خروجی واجد شرایطی که تا به حال روی زنجیره وجود داشته پنهان میکند و مجموعهٔ ناشناسی را از ۱۶ به دهها میلیون گسترش میدهد.
نکتهٔ مهم این است که FCMP++ مؤلفهٔ امضای حلقهای را جایگزین میکند، نه مؤلفهٔ تراکنش محرمانه را. تعهدهای پدرسن و اثباتهای بازهای Bulletproofs+ که مبالغ را پنهان میکنند سر جای خود میمانند؛ آنچه تغییر میکند نحوهٔ اثباتِ عضویت در مجموعهٔ قابلخرج است. کمی دورتر، پروتکل تراکنش Seraphis و طرح آدرسدهی Jamtis طراحی شدهاند تا بر همین پایه بنا شوند. درس برای کاربران ساده است: حریم خصوصی مبلغ از طریق RingCT بخشی جاافتاده و بالغ از مونرو است، و پروتکل پیوسته بخشهای اطراف آن را تقویت میکند.
پرسشهای پرتکرار
RingCT دقیقاً چه چیزی را پنهان میکند؟
RingCT مبلغ یک تراکنش مونرو را پنهان میکند. هر ارزش را در یک تعهد پدرسن رمزگذاری میکند تا آن عدد هرگز بهصورت متن ساده روی بلاکچین نوشته نشود، و در عین حال به هر نود اجازه میدهد تأیید کند که ورودیها برابر با خروجیها بهعلاوهٔ کارمزد است. فرستنده و گیرنده توسط سازوکارهای جداگانه پنهان میشوند — امضاهای حلقهای و آدرسهای پنهان — که RingCT در کنار آنها کار میکند.
اگر مبالغ پنهاناند، شبکه چطور جلوی سکههای تقلبی را میگیرد؟
دو محافظ. ویژگی همریخت تعهدهای پدرسن به نودها اجازه میدهد تأیید کنند که ورودیها و خروجیهای پنهان به صفر تراز میشوند، پس هیچ ارزشی ساخته یا نابود نمیشود. و یک اثبات بازهای که به هر خروجی پیوست میشود تضمین میکند که مبلغ متعهدشده نامنفی و درون یک بازهٔ معتبر است، و همان ترفند سرریزی را که مبالغ منفیِ پنهان در غیر این صورت اجازه میدادند مسدود میکند.
تفاوت RingCT با امضاهای حلقهای چیست؟
این دو مسائل متفاوتی را حل میکنند و بهخاطر همپوشانی نامها اغلب با هم اشتباه گرفته میشوند. امضاهای حلقهای پنهان میکنند که چه کسی یک تراکنش را فرستاده، با امضا کردن از طرف گروهی از خرجکنندگان احتمالی. RingCT با استفاده از تعهدهای محرمانه پنهان میکند که چه مقدار فرستاده شده است. RingCT این دو را یکپارچه میکند تا هر دو محافظت روی یک تراکنش اعمال شوند.
آیا Bulletproofs جایگزین RingCT شد؟
نه. Bulletproofs و Bulletproofs+ ارتقاهایی درونِ RingCT هستند — بهطور مشخص روی مؤلفهٔ اثبات بازهای. آنها جایگزین اثباتهای بازهای بورومئیِ قدیمیتر و حجیمتر شدند و حجم تراکنش را حدود ۸۰٪ و کارمزدها را بهخوبی بیش از ۹۰٪ کاهش دادند، اما چارچوب کلی RingCT و مبالغ پنهان آن همان ماند.
آیا با عرضهٔ FCMP++، RingCT حذف میشود؟
نه. قرار است FCMP++ جایگزین امضاهای حلقهای مونرو با اثباتهای عضویت در کل زنجیره شود و مجموعهٔ ناشناسی فرستنده را بهشدت بزرگ کند. انتظار میرود ماشینِ مبلغِ محرمانه — تعهدهای پدرسن و اثباتهای بازهای Bulletproofs+ — باقی بماند. به بیان دیگر، FCMP++ حریم خصوصی فرستنده را تقویت میکند بدون آنکه حریم خصوصی مبلغی را که RingCT فراهم میکند برهم بزند.
جمعبندی
RingCT اسب کاریِ خاموش حریم خصوصی مونرو است: هر مبلغ روی زنجیره را به تعهدی تبدیل میکند که شبکه میتواند تأیید کند اما هیچکس نمیتواند بخواند، و این کار را در حالی انجام میدهد که اثباتهای بازهای عرضه را صادق نگه میدارند. در ترکیب با امضاهای حلقهای که فرستنده را پنهان میکنند و آدرسهای پنهان که گیرنده را، همین است که چرا یک خروجی مونرو شبیه هر خروجی دیگری به نظر میرسد و نمیتوان آن را غربال، فهرستسیاه یا بر اساس ارزش ردگیری کرد. از مسیر Bulletproofs، Bulletproofs+ و CLSAG، این فناوری فقط ارزانتر و سریعتر شده، و با FCMP++ در افق، حریم خصوصیِ پیرامون آن همچنان عمیقتر میشود. اگر سکههایی میخواهید که این محافظت را از همان لحظهای که به دستتان میرسند با خود حمل کنند، میتوانید از طریق MoneroSwapper مونرو را بهصورت ناشناس بخرید و بگذارید RingCT همان لحظه که تراکنش میکنید بقیهٔ کار را انجام دهد.
🌍 خواندن به زبان