مفهوم CoinJoin برای اولین بار توسط گرگوری مکسول (Gregory Maxwell) پیشنهاد داده شد. CoinJoin روشی برای ناشناس ماندن افرادی است که تراکنشهای ارز دیجیتال انجام میدهند. این روش برای ناشناس ماندن تراکنشهای کاربران در شبکه بیت کوین طراحی شد.
ماهیت تراکنشهای بیت کوین به این شکل است که همه چیز شفاف است و بر روی بلاک چین جای دارد. افراد به راحتی میتوانند بر روی بلاک چین آدرسهای تراکنش و مقادیر ارسالی و یا دریافتی را مشاهده کنند. در اینجا آدرسها جایگزین نام افراد شدهاند و میتوان گفت که افراد به جای نام واقعی خود از نام مستعار استفاده میکنند. اما در مورد کوینهایی مانند زی کش (Zcash) و مونرو (Monero) اوضاع فرق میکند و حریم خصوصی بیشتری برای کاربران فراهم میآید.
محدودیتهای موجود در حریم خصوصی بیت کوین، پیامدهایی برای تعویضپذیری این ارز دیجیتال خواهد داشت. یعنی افراد در معاوضه یک بیت کوین با بیت کوین دیگر، به دلیل همین ویژگیهای اولیه حریم خصوصی بیت کوین با مشکل مواجه میشوند. به این ترتیب کوینهای خوب و کوینهای بد یعنی کوینهایی که در تراکنشهای غیرقانونی مورد استفاده قرار گرفتهاند، قابل شناسایی خواهند بود و ممکن است تجار و کسب و کارها از پذیرش کوینهای مربوط به فعالیتهای غیرقانونی خوددداری کنند. این کوینها که زمانی برای تراکنشی غیرقانونی مورد استفاده قرار گرفتهاند عملا از چرخه خارج خواهند شد.
CoinJoin و مدل UTXO

برای درک CoinJoin لازم است که ابتدا توضیحاتی در مورد نحوه اجرای تراکنشها در شبکه بیت کوین داده شود. تراکنشهای بیت کوین با استفاده از مدل UTXO (خروجی تراکنشی خرج نشده) انجام میگیرند. با استفاده از این مدل، نودها (node) به جستجوی همه خروجیهای تراکنشی قابل خرج بر روی شبکه بیت کوین میپردازند. بعد از شناسایی این خروجیها، از آنها برای ایجاد تراکنشهای جدید استفاده میشود.
هر تراکنش دارای یک ورودی و یک خروجی است که این ورودی از خروجی تراکنش قبل مشتق شده است. این خروجی که شبکه آن را به عنوان UTXO میشناسد، در مجموعه UTXO قرار میگیرد تا زمانی که توسط ورودی بعدی خرج میشود.
CoinJoin تمام ورودی و خروجیهای تراکنشهای جداگانه را ترکیب میکند و یک تراکنش واحد تشکیل میدهد. بدین ترتیب حتی دریافتکننده وجوه هم تشخیص نمیدهد که وجوه را از کدام آدرس دریافت کرده است. ممکن است دو نفر بخواهند که از یک سرویس CoinJoin استفاده کنند و ورودیها و خروجیهای خود را با هم ترکیب کنند؛ این کار شدنی است اما اگر تعداد افراد شرکتکننده بیشتر باشد، حریم خصوصی بهتری برای افراد ایجاد خواهد شد.

پیشنهاد مکسول به شیوههای مختلفی پیادهسازی شده است اما محبوبترین پیادهسازی CoinJoin در ارز دیجیتال دش (Dash) قابل مشاهده است. دش از پیشنهاد مکسول استفاده کرده و در آن نوآوری به خرج داده است و رویکرد زنجیرهای و پولی را به آن اضافه کرده است. در این فرآیندی که توسط دش انجام میگیرد، ورودیها در چندین جلسه با هم ترکیب میشوند و ناشناسی کاربر افزایش پیدا میکند.
سوالات متداول پیرامون CoinJoin
مکسول در سال ۲۰۱۳ به پارهای سوالات متداول در مورد CoinJoin پاسخ داد که در اینجا این سوالات و پاسخها آورده شده است:
۱- آیا برای جلوگیری از دیدن آی پی افراد نیازی به تور (Tor) یا ابزار دیگری است؟
هرگونه سیستم حریم خصوصی تراکنش که آدرس یک کاربر را پنهان میکند، میتواند مورد استفاده قرار بگیرد. خوشبختانه امروزه شبکههایی مانند تور، I2P و غیره برای این کار وجود دارند. البته در نظر داشته باشید که تراکنشها در این حالت آهستهتر انجام میگیرند. در نظر داشته باشید که بدون استفاده از چنین ابزارهایی هم باز این فرآیند انجام میگیرد و حریم خصوصی پدید میآید.
۲- آیا کاربران متوجه نمیشوند که فلان ورودی با فلان خروجی تطابق دارد؟
در سادهترین پیادهسازی که کاربران از ابزارهایی مانند تور استفاده میکنند، بله چنین چیزی قابل تشخیص است. در پیادهسازی دیگری که در آن کاربران اقدام به ارسال اطلاعات ورودی و خروجی به یک سرور مورد توافق میکنند، تنها سرور میتواند از نقشه راه مطلع شود اما باز نمیتواند اقدام به دزدیدن کوینها کند. روشهای پیچیدهتری وجود دارد که حتی سرور هم متوجه نقشه راه نمیشود؛ که از جمله این روشها میتوان استفاده از امضاهای chaum blind را نام برد.
۳- آیا نسخه حریم خصوصی کامل اصلا نیاز به سرور دارد؟ اگر سرور متوقف شود، چه اتفاقی میافتد؟
خیر، همان حریم خصوصی را میتوان به شیوهای غیرمتمرکز کسب کرد و همه کاربران میتوانند به عنوان سرورهای blind-signing عمل کنند. این به نیاز به n^2 امضا ختم میشود و معمولا ایجاد سیستمهای توزیعشده خیلی سختتر است. من نمیدانم که آیا ممکن است دلیلی برای به دردسر افتادن یک نسخه کاملا توزیعشده با حریم خصوصی کامل وجود داشته باشد، اما قطعا چنین چیزی امکان دارد.
۴- حملات DOS چطور؟ آیا افراد نمیتوانند از امضای یک تراکنش حتی در صورت معتبر بودن آن خودداری کنند؟
بله، این حمله میتواند به دو صورت انجام گیرد. اول اینکه افرادی میتوانند از امضای یک تراکنش مشترک معتبر خودداری کنند و دوم اینکه افراد میتوانند ورودی خود را قبل از اتمام تراکنش مشترک خرج کنند. اما اگر همه امضاها در یک محدوده زمانی وارد نشوند و یا یک تراکنش متناقض ایجاد شود، میتوان عاملهای بد را کنار زد و دوباره امتحان کرد. با یک فرآیند خودکار، هر گونه امتحان مجددی برای کاربر غیر قابل مشاهده خواهد بود. پس تنها ریسک واقعی حمله DOS مداوم است.
در حالت متمرکز، مقابله با حمله DOS آسان است و کافی است که فردی که ورودی را تایید نکرده است، مسدود نماییم. در سیستمهای غیرمتمرکز این امر دشوارتر است زیرا نمیدانیم که کدام کاربر قوانین را نقض کرده است. یک راهحل برای سیستمهای غیرمتمرکز استفاده از سیستم اثبات دانش صفر (zero-knowledge proof system) است.
به نظر من باید با این حملات خود را وفق داد زیرا نمیتوان یک مکانیسم امنیتی واحد را پیشاپیش برای همه کاربران فراهم کرد. من همچنین بر این باورم که اخراج ورودی بد میتواند حفاظت کافی را فراهم آورد.
۵- آیا محدودیتی در تعداد طرفین شرکتکننده در یک تراکنش خاص وجود دارد؟
از طرفی واضح است که ناشناسی یک تراکنش محدود به تعداد طرفین شرکتکننده در آن است و از طرف دیگر اگر ریسک شکست تراکنش و انجام مجدد آن را در نظر بگیریم، تراکنشهای مشترک خیلی بزرگ عاقلانه نیستند. البته از آنجا که این تراکنشها ارزان هستند، محدودیتی برای تعداد تراکنشهایی که میتوانید سازمان دهید، موجود نیست.
در عمل، من انتظار دارم که اکثر کاربران تنها بخواهند از تجسس افراد کنجکاو ودزدها در زندگی مالی خود جلوگیری کنند و اینکه مقداری از حریم خصوصی از دست رفته خود را به دلیل اعمال بدی مانند استفاده مجدد از آدرسها احیا کنند.
۶- این فرآیندی که در CoinJoin انجام میشود را چگونه میتوان با Zerocoin مقایسه کرد؟
من به عنوان یک متخصص کامپیوتر خیلی در مورد Zerocoin هیجانزده هستم و بر این باورم که فناوری پشت این کوین بسیار مهیج و مهم است. اما از طرفی Zerocoin با محدودیتهایی جدی مواجه است. آن از یک فناوری رمزنگاری استفاده میکند که ممکن است ایمن نباشد و تنها افراد معدودی نیز از این فناوری اطلاع دارند. Zerocoin امضاهای بزرگی ایجاد میکند که باعث پر شدن حافظه بلاک چین میشود و عیبهای دیگری را نیز میتوان در مورد آن بیان کرد.
مهمتر از همه موارد بیان شده این نکته است که Zerocoin نیازمند تغییر سافت فورک (soft fork) به نسبت پروتکل بیت کوین است که همه نودهای کامل باید این را بپذیرند و قطعا پیادهسازی این نسخه در مورد بیت کوین بسیار طول میکشد و با مشاجرات بسیاری همراه خواهد بود.
تراکنشهای CoinJoin امروزه کار میکنند و از روز اول هم کار کردهاند. آنها را نمیتوان از تراکنشهای عادی بیت کوین تشخیص داد و بنابراین نمیتوان آنها را مسدود کرد و یا از آنها ممانعت کرد. ناشناسی حاصل از CoinJoin برای کاربران عادی کافی است و برای آنها جالبتر هم هست.
۷- چگونه پروژه خود را با CoinWitness مقایسه میکنید؟
CoinWitness حتی از Zerocoin هم پیچیدهتر است و ضعفهای زیادی دارد که از جمله آنها میتوان به هزینه محاسباتی و نیاز به سافت فورک اشاره کرد. این پروژه دارای مزیتهایی در زمینه مقیاسپذیری است اما به عنوان یک ابزار حریم خصوصی چندان مفید نیست.
۸- پس CoinJoin عالی است! وضعیت این پروژه در حال حاضر چگونه است؟
مشکل در اینجاست که هنوز نرم افزاری برای استفاده آسان از CoinJoin در دست نیست و همه چیز را باید به صورت دستی انجام داد. ما نیاز به خودکارسازی و آسان کردن امور داریم. راهحلهایی برای این مشکلات پیشنهاد شده که در دست بررسی هستند. مشکل دیگر این است که بسیاری از کاربران به حریم خصوصی و امنیت توجه نمیکنند و میبینیم که حتی از کیف پولهای آنلاین استفاده میکنند و این یعنی که تعداد کاربران پروژههایی مانند CoinJoin بسیار کم است. من تا به حال از ظرفیت کدگذاری خودم برای کار کردن بر روی چیزهایی استفاده کردهام که برایم خیلی مهم بودهاند اما اگر روزی بر روی چیزی مانند کیف پول و غیره کار کنم، حریم خصوصی کوینها را بسیار بیشتر خواهم کرد.
البته هر کسی که دست به چنین اقداماتی بزند با تهمتهایی در زمینه فراهم کردن زمینه برای فعالیتهای مجرمانه و غیره مواجه میشود. برای من مهم نیست که آیا مجرمان از این اختراع استفاده میکنند یا نه. فردی که توسعهدهنده بیت کوین باشد، همواره با اتهاماتی روبرو است.
در واقعیت، مجرمان نیازی به CoinJoin ندارند و آنها توان خرید حریم خصوصی را دارند. آنها میتوانند از سرویسهایی از کار افتاده بهرهبرداری کنند و یا اصلا سراغ پول نقد بروند که نوعی حریم خصوصی ارزان و کارآمد را برای آنها فراهم میآورد. من میدانم که درست کردن چنین ابزاری مانند دیگر کسب و کارهای بیت کوین نیست که سریعا آدم را ثروتمند کند اما اهمیت چنین ابزارهایی واضح است و این ابزارها نیاز به افسونگری فنی چندانی ندارند.
از منظر سیاسی نیز افزایش حریم خصوصی افراد چیزی است که همواره باید به ریسک آن توجه کرد. من امروزه میبینم که افراد به سمت چیزهای خیلی پرخطری رفتهاند که من امیدوارم که شاهد اقدامات جامعه کریپتو دراین زمینه باشیم.
نظر شما چیست؟ آیا سرویسهایی مانند CoinJoin تبدیل به بهشت جنایتکاران خواهند شد؟ نظرات خود را با ما در میان بگذارید.