آیا CoinJoins برای حریم خصوصی واقعاً به مبادلات معادل مساوی نیاز دارد؟ قسمت اول: CashFusion

اگرچه Satoshi Nakamoto’s کاغذ سفید نشان می دهد که حریم خصوصی هدف طراحی پروتکل بیت کوین بوده است ، تجزیه و تحلیل بلاکچین اغلب می تواند حریم خصوصی کاربران را بشکند. این یک مشکل است. کاربران بیت کوین ممکن است لزوماً نخواهند که جهان بداند که پولشان را کجا خرج می کنند ، چه چیزی بدست می آورند یا چه مقدار از آنها را در اختیار دارند ، در حالی که ممکن است مشاغل نخواهند جزئیات معامله را به رقبا فاش کنند – به عنوان مثال.

اما راه حل هایی برای بازیابی حریم خصوصی مانند CoinJoin وجود دارد. برخی از محبوب ترین راه حل های اختلاط موجود امروزه از این ترفند استفاده می کنند ، از جمله Wasabi Wallet (که از ZeroLink استفاده می کند) و Samourai Wallet (که از Whirlpool استفاده می کند). در هر دو مورد ، کاربران سکه های خود را به مقدار مساوی خرد می کنند تا آنها را با یکدیگر مخلوط کنند. استفاده از مقادیر مساوی یک گام مهم برای تأثیرگذاری در نظر گرفته شده است.

با این حال ، یک پروتکل جدید مخلوط کردن نامیده می شود CashFusion, در حال توسعه برای شبکه Bitcoin Cash ، این فرض را به چالش می کشد. توسعه دهندگان این پروتکل ادعا می کنند که CashFusion حریم خصوصی را از طریق CoinJoins بدون نیاز به مخلوط کردن مقادیر مساوی ارائه می دهد. اگر درست باشد ، این ممکن است به شدت تغییر دهد که ما در مورد حریم خصوصی در بیت کوین نیز فکر می کنیم.

اگر درست باشد

CoinJoin

بیایید از ابتدا شروع کنیم. (یا اگر می دانید CoinJoin چیست از این قسمت صرف نظر کنید)

یک معامله معمولی بیت کوین دارای یک یا چند ورودی است (اساساً آدرس هایی که سکه از آنها ارسال می شود) و یک یا چند خروجی (در اصل آدرس هایی که سکه ها به آنها ارسال می شود). اگر یک تراکنش بیش از یک ورودی داشته باشد ، معمولاً به این دلیل است که فرستنده از چندین قطعه سکه (UTXO) خود استفاده کرده است تا به مقدار مورد نیاز برسد. اگر یک معامله بیش از یک خروجی داشته باشد ، معمولاً به این دلیل است که چندین نفر به طور هم زمان پرداخت می شوند (یک معامله دسته ای) و / یا پرداخت کننده در صورت تغییر پول را به یکی از آدرس های خود ارسال می کند (زیرا بخشها جمع نمی شوند) به مقدار دقیق دقیق ؛ این اغلب موارد است).

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

ابتدا یک راه حل بالقوه برای این مشکل است پیشنهاد شده توسط گرگوری مکسول ، همکار Bitcoin Core ، در سال 2013 ، CoinJoin نامیده می شود. ایده پشت CoinJoin ساده است: چندین معامله مستقل در یک معامله بزرگ ادغام می شوند. بنابراین اگر دو معامله هر کدام دو ورودی و دو خروجی داشته باشند ، این امر در یک معامله واحد که دارای چهار ورودی و چهار خروجی است ، ترکیب می شود. این حداقل این فرض را که کلیه آدرسهای ورودی متعلق به یک شخص هستند را می شکند و همچنین می تواند به شکستن سکه کمک کند..

چرا مبالغ برابر

معمولاً فرض بر این است که امتیازات حریم خصوصی CoinJoin که در بالا توضیح داده شد محدود خواهد بود. در بسیاری از موارد ، مقادیر ارسالی در ورودی ها و مبالغ دریافتی در خروجی ها می توانند با هم متحیر شوند و کشف کنند که کدام معاملات منفرد به معامله CoinJoin ترکیبی وارد شده اند.

به عنوان مثال ، بیایید دو معامله انجام دهیم ، یکی از آلیس به کارول و دیگری از باب به دیو. آلیس دو قطعه سکه به ارزش 2.3 و 1.4 بیت کوین دارد و می خواهد به کارول 3.2 بیت کوین پرداخت کند. باب دارای قطعات 3 و 2 بیت کوین است و می خواهد به دیو 4 بیت کوین پرداخت کند.

ساده تر ، این معاملات به نظر می رسد به شرح زیر است:

2.3 + 1.4 = 3.2 + 0.5

و

3 + 2 = 4 + 1

(خروجی های 0.5 BTC و 1 BTC تغییر می کند.)

با هم ادغام شده ، معامله CoinJoin به این شکل است:

3 + 2.3 + 2 + 1.4 = 4 + 3.2 + 1 + 0.5

اگرچه تراکنش ها ادغام شده اند ، اما کشف اینکه چه ورودی هایی کدام خروجی ها را پرداخت می کنند ، و همچنین بنابراین ، ورودی هایی که می توانند متعلق به یک فرستنده باشند ، بی اهمیت است. با فرض اینکه می دانید دو پرداخت کننده وجود دارد ، می توان مبالغ را فقط با یک پیکربندی بالقوه متحیر کرد: معاملات اصلی.

به همین دلیل ، راه حل های محبوب مخلوط کردن مانند ZeroLink و Whirlpool محدود به مخلوط کردن مقادیر مساوی هستند. مهم نیست که چه مقدار به عنوان ورودی در مخلوط قرار می گیرد ، خروجی های مخلوط از یکدیگر قابل تشخیص نیستند ، این بدان معنی است که هر شرکت کننده می توانست هر قطعه سکه با اندازه ثابت را دریافت کند.

اگر مبالغ ثابت روی 1 BTC تنظیم شود ، آلیس ، باب ، کارول و دیو کوین جوین به این شکل است:

3 + 2.3 + 2 + 1.4 = 1 + 1 + 1 + 1 +1 + 1 + 1 + 1 + 0.5 + 0.2

این یک پیشرفت بزرگ است ، زیرا هر یک از بخشهای 1 می تواند در هر دو معامله اصلی با هم متحیر شود. مشخص نیست که کدام یک از 1 BTC متعلق به آلیس ، باب ، کارول یا دیو یا حتی به کدام جفت است.

با این حال ، هنوز هم عالی نیست ، زیرا خروجی های نابرابر باقی مانده است. این خروجی ها ، دقیقاً به دلیل نداشتن مقادیر مساوی ، هنوز هم می توانند به ورودی های خاصی مرتبط شوند: Alice’s. این همچنین به این معنی است که ورودی های آلیس می توانند به یکدیگر مرتبط شوند. و اگر پس از چندین مخلوط ، کسی خروجی های نابرابر را در یک معامله بعدی ترکیب کند ، این امر به حریم خصوصی نیز لطمه می زند: این بخشهای مختلف را به یک شخص پیوند می دهد. علاوه بر این ، اگر بعداً از خروجی های نابرابر در ترکیب با میزان خروجی با مقدار ثابت استفاده شود ، این نشت ها می توانند روند اولیه اختلاط را خراب کنند..

CashFusion

CashFusion ، یک پروژه توسط توسعه دهندگان Bitcoin Cash ، مارک لوندبرگ و جونالد فیوک بال ، برای مقابله با مشکل “بازمانده” خروجی است. آنها در ابتدا این را به عنوان الحاقی به وجود آوردند CashShuffle, که یک اجرای CoinShuffle برای بیت کوین کش است و مقادیر مساوی را با هم مخلوط می کند. پتانسیل تا حدودی شگفت آور CashFusion همچنین می تواند به معنای تبدیل شدن آن به پروتکل مخلوط کردن مستقل خود باشد.

برای درک این پتانسیل ، بیایید مجموعه دیگری از معاملات را بررسی کنیم. بگذارید بگوییم آلیس می خواهد 4 سکه به کارول بپردازد ، و او دارای دو UTXO به ارزش 2 و 3 سکه است. در همین حال ، باب می خواهد 9 سکه به دیو بپردازد و او دو UTXO به ارزش 7 و 8 سکه دارد.

ساده تر ، این معاملات به نظر می رسد به شرح زیر است:

3 + 2 = 4 + 1

و

8 + 7 = 9 + 6

با هم ادغام شده ، معامله CoinJoin به این شکل است:

8 + 7 + 3 + 2 = 9 + 6 + 4 + 1

البته ، از این معامله CoinJoin ، البته می توان دو معامله اصلی را با هم معما کرد. با این حال ، حتی اگر می دانید دو پرداخت کننده وجود دارد ، چندین ترکیب دیگر نیز امکان پذیر است.

مثلا:

8 + 2 = 9 + 1

و

7 + 3 = 6 + 4

یا:

8 + 2 = 6 + 4

و

7 + 3 = 9 + 1

یا:

7 + 2 = 9

و

8 + 3 = 6 + 4 + 1

یا:

7 = 6 + 1

و

8 + 3 + 2 = 9 + 4

برای مثال ، در این مثال فقط از اعداد گرد استفاده شده است. این تنظیمات بالقوه بیشتری را ممکن می کند اما در واقع اغلب واقعیت را منعکس نمی کند. در کنار صفحه ، این مثال ساده فقط از دو معامله اصلی استفاده کرده است. در حقیقت ، یک CoinJoin می تواند شامل ده ها یا حتی صدها معامله اصلی باشد. بنابراین در حالی که ساده شده است ، این پتانسیل ایجاد چندین پیکربندی کمک می کند و به آن آسیب می رساند.

CashFusion بر اساس این تئوری ساخته شده است ، از حوزه ترکیبی, که یک معامله CoinJoin به اندازه کافی بزرگ ، اغلب (اگر نه همیشه) چندین راه حل مختلف برای پازل ارائه دهد ، حتی در صورت استفاده از مبالغ واقع گرایانه. و این که ، با ورود و خروجی بیشتر ، پیکربندی های بالقوه بیشتری می توان از آن استخراج کرد. (این امر به ویژه اگر مقدار در یک پارکینگ باشد – مانند 1 BCH – که کاربران CashFusion به دلیل حفظ حریم شخصی خود ترغیب می شوند) باید درست باشد.

از آنجا که راه حل های بالقوه بیشتری برای این معما وجود دارد ، یک تحلیلگر بلاکچین دشوارتر می فهمد کدام راه حل اصلی است. این باید دنباله سکه ها را بشکند و پیوند ورودی ها با یکدیگر را دشوار کند. به همین ترتیب ، باید حریم خصوصی را ارائه دهد.

برای بهبود این پتانسیل ، CashFusion شامل یک ترفند اضافی برای دشوارتر کردن پیکربندی اصلی است: این به شما اجازه می دهد تا کاربران به طور تصادفی خروجی های خود را در چندین خروجی کوچکتر خرد کنند. بنابراین بجای اینکه آلیس یک خروجی 4 سکه به کارول پرداخت کند ، برای مثال ، آلیس می تواند 3 و 1 سکه از کارول ارسال کند. باب ، به جای پرداخت یک خروجی 9 سکه ، می تواند برای دیو خروجی 5 ، 3 و 1 سکه ارسال کند.

در همین حال ، کاربران تشویق می شوند که ورودی های مختلفی نیز ارائه دهند ، شاید از مخلوط های قبلی. این به آنها امکان می دهد تکه های کوچکتر خود را در یک تکه بزرگتر ادغام کنند ، بدون اینکه در بلاکچین آشکار باشد. (به عنوان مثال آلیس ورودی های 2 + 2 + 1 را ارائه می دهد ؛ باب ورودی های 6 + 5 + 4 را فراهم می کند.) در واقع ، ادغام قطعات باقی مانده نابرابر در خروجی های بزرگتر ایده اصلی بود و به عنوان منشا پروتکل عمل می کند نام: CashFusion.

اما آیا فرض تاخیر دارد?

برای ناامید کردن شما اگر این مقاله را می خوانید و به دنبال نتیجه گیری نهایی هستید: این مقاله پاسخی قطعی به این س whetherال نمی دهد که آیا مفروضات CashFusion طولانی است یا نه ، یا تا چه حد. به نظر می رسد هنوز پاسخ قطعی وجود ندارد. این پیشنهاد تاکنون از نظر همتایان نسبتاً کمی مورد بررسی قرار گرفته است ، و در حالی که توسعه دهندگان CashFusion معتقدند که راه حل آنها حریم خصوصی کافی را ارائه می دهد ، دیگران به نظر کمی شکاک ترند.

در واقع این روش CashFusion گمراه به نظر می رسد ، زیرا طرح های مخلوط مقدار نابرابر قبلی مانند Blockchain’s SharedCoin شکسته شده سالها پیش. اما تفاوت اساسی ، لوندبرگ و فیوك بال در حال حاضر بر این باورند كه معامله CashFusion شامل ورودی و خروجی بیش از معامله SharedCoin است. مشابه سایر سوالات غیر ریاضی ریاضی مانند مشکل تولد, تعداد پیکربندیهای بالقوه برای هر ورودی و خروجی اضافه شده بصورت تصاعدی افزایش می یابد ، و مشکلی که SharedCoin با آن روبرو شده است – گرچه لوندبرگ موافقت می کند برای تأیید صحیح این امر ، اثبات ریاضیات بهتر لازم است.

توصیف CashFusion خود شامل مواردی است که لوندبرگ به اعتقاد خود آن را “ریاضیات دستمال” می داند ، که نسخه کمی پیشرفته تر آن نیز ارائه شده است منتشر شده توسط او در Reddit. این برآوردها حاکی از آن است که حتی با تنها 10 شرکت کننده ، هر یک از آنها 10 ورودی را در یک خروجی ادغام می کند (در کل 100 ورودی و 10 خروجی) ، تعداد پیکربندی های ممکن به طور متوسط ​​در محدوده 100 کوینتیلیون است. (این یکی با بیست صفر یا 10 ^ 20 است.) حتی محاسبه تمام این احتمالات نیز به زمان زیادی نیاز دارد – اما بازسازی صحیح معاملات اصلی.

در زمان نگارش این مقاله ، تحقیقات بیشتر ادامه دارد. فیوك بال اخیراً تحلیل خود را در این پست وبلاگ. در حال حاضر ، لوندبرگ ، فیوک بال و دیگران حداقل به اندازه کافی به پروتکل CashFusion متقاعد شده اند که می خواهند آن را به کار گیرند. مشتری آلفای نرم افزار CashFusion برای آزمایش در دسترس است. پیش بینی می شود طی چند ماه نسخه کامل آن ارائه شود.

اما دیگران آنقدر متقاعد نشده اند. انتقاد از این پیشنهاد این است که – حتی اگر عدد 10 ^ 20 (تقریباً) بالا باشد – به نظر نمی رسد که هر خروجی از CashFusion CoinJoin از هر ورودی بدست آمده باشد. به عبارت دیگر ، در حالی که برخی از شرکت کنندگان ممکن است به حریم خصوصی قابل توجهی دست یابند ، دیگران می توانند از همان ترکیب ، حریم خصوصی بسیار کمتری را کسب کنند. و برای هر کاربر فردی ، دشوار است تشخیص دهد که آیا آنها کسانی هستند که به حریم خصوصی زیادی دست می یابند یا نه. (این نقد و نقدهای دیگر را می توان در یافت این موضوع ایمیل اخیر Bitcoin-dev.)

در مقابل ، اختلاط با مقدار مساوی حریم خصوصی مشابهی را برای همه شرکت کنندگان ایجاد می کند و منجر به حداکثر تعداد پیکربندی های ممکن می شود. به نوعی ، مخلوط های برابر مقدار یک CashFusion CoinJoin “عالی” را به وجود می آورد و بنابراین ، اگر مشکل تغییر نابرابر نادیده گرفته شود ، کاملاً بهتر است..

هنوز هم ، حتی اگر CashFusion هرگز به طور کامل جایگزین مخلوط کردن با مقدار مساوی نشود ، ممکن است فقط به حل مسئله تغییر نابرابر کمک کند ، همانطور که در ابتدا در نظر گرفته شده بود …

یادداشت نویسنده: پیشنهاد CashFusion کمی بیشتر دارد ، مانند نحوه ساخت معامله CoinJoin. همچنین خطرات و تجارتهای نامحسوس دیگری نیز در رابطه با حریم خصوصی وجود دارد ، مانند نحوه استفاده کاربران از سکه های خود قبل و بعد از مخلوط کردن. برای سادگی و خوانایی ، این مقاله فقط به ایده اصلی و مسلماً جالب ترین CashFusion: مخلوط کردن با مقدار نابرابر تمرکز دارد..

با تشکر از مارک لوندبرگ برای اطلاعات و بازخورد شما.

بخش دوم این مقاله یکی دیگر از تکنیک های مخلوط کردن مقدار غیر مساوی دیگر به نام را پوشش می دهد کوله پشتی.