تامبلبیت چیست ؟ - تامبل بیت - کوین ایران
محمد بنی اسد | 2017.08.20

تامبلبیت چیست ؟ یک روش انتقال غیر قابل ردیابی

 پروژه های توسعه زیادی در فضای بیتکوین وجود دارد. یکی از آن ها شاید به قابلیت تبدیل ارزهای رمزنگاری شده کمک کند. یک اثبات-مفهوم (proof-of-concept) به نام تامبل بیت Tumblebit جامعه بیتکوین را تهییج کرده است زیرا می‌تواند یک درگاه پرداخت بی نام و بدون اعتماد را مهیا نماید. در این مقاله که عنوان تامبلبیت چیست را دارد به معرفی این پروژه و همچنین چگونگی عملکرد آن خواهیم پرداخت!

تامبلبیت چیست ؟ به سوی دارایی‌های قابل معاوضه دیجیتالی

 

تامبلبیت چیست ؟ - کوین ایران

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

هم اکنون همه تراکنش‌های موجود در بلاکچین بیتکوین می‌توانند ردیابی شوند، مگر اینکه کاربران از ابزارهایی برای مبهم نمودن این فرآیند استفاده نمایند. استفاده از Tor و میکسرهای بیتکوین روشی شناخته شده برای مبهم کردن عملیات نظارت هستند. اما میکسرهای در دسترس سیستم‌های متمرکز به حساب می‌ایند، و به شخص ثالثی برای کمک در بهم زدن پول‌ها نیازمند هستند. اپلیکیشن‌های موجود که سکه‌ها را بدین ترتیب مخلوط می‌کنند عبارتند از Coinjoin، Joinmarket و Coinshuffle. اخیراً ایده جدیدی به نام تامبلبیت که ادعا دارد می‌تواند سکه‌ها را به صورت بی‌نام به هم بزند، به موارد بالا اضافه شده است. اما تامبلبیت چیست و از کجا پیدایش شد؟

تامبلبیت در 29 آگوست هنگام پیشنهاد نقشه راه برای آینده جایگاه تامبلبیت معرفی شد. گروه پژوهشگران از سه دانشگاه بوستون، جورج میسون و کارولینای شمالی شامل Heilman، Leen AlShenibr، Foteini Baldimtsi، Alessandra Scafuro و Sharon Goldberg که ایده اثبات مفهوم را ارائه کردند، در وایت پیپر پروژه (سندی که بیان می‌کند تامبلبیت چیست) David Chaum’s ecash را به عنوان کسی که الهام بخش این ایده بوده است، معرفی کردند.

تامبلبیت چیست به زبان ساده!

 

تامبلبیت چیست ؟ - کوین ایران

تامبلبیت در واقع یک میکسر غیرمتمرکز بدون نیاز به اعتماد به شخص ثالث است که به عنوان یک درگاه پرداخت پیوندناپذیر که قابلیت بی‌نام بودن و تراکنش خارج از چرخه لحظه ای را دارد با پروتکل بیتکوین کار می کند. این سیستم فرضیات RSA و استانداردهای امنیتی ECDSA – قابلیت بی‌نام ماندن و عدم معاوضه شدن در هنگام تراکنش‌ها – را در خود دارد. علاوه بر این، با روش‌های خارج از چرخه تامبلبیت این پروتکل ادعا می‌کند که می‌تواند کارایی را بالا برد.

« تامبلبیت همچنین برای بالا بردن حجم و سرعت پرداخت‌های بازگشتی بیتکوین به کار می رود ». « امروزه تراکنش‌های بیتکوین در بلاکچین با تاخیر ده دقیقه‌ای انجام می‌شوند. در حالی‌که پرداخت‌های تامبل بیت به وسیله تامبلر و خارج از بلاکچین انجام می‌شوند و در چند ثانیه خاتمه می‌یابند. (در پیاده‌سازی ما یک پرداخت به طور متوسط در 1.2 ثانیه کامل شد، زمانی که T در نیویورک بود و A و B در بوستون بودند.)»

بیان این نکته حائز اهمیت است که تامبلبیت آماده ارايه عمومی نیست و در فاز‌های اولیه توسعه خود قرار دارد. تیم تحقیقاتی بر کد Github تاکید دارند که مورد آزمایش قرار گرفته ولی هنوز برای تولید آماده نیست. جزئیات نقشه راه فعلی در حال حاضر شامل امنیت و آزمایش کد، ویژگی‌های سرور، سازگاری کیف پول، دغدغه‌های بهره‌برداری، پایش و در نهایت انتشار نسخه آلفا می‌شود.

فلسفه جایگزین پذیری

شما یک چک از یک فرد معتبر را با یک چک از فردی غیر معتبر با همان مبلغ عوض نمی‌کنید. یک خودرو پراید را با یک خودرو پراید دیگر به راحتی عوض نمی‌کنید. اما یک ۱۰۰۰ تومانی را با یک هزارتومانی دیگر عوض می‌کنید هر چند که یکی قدیمی و یکی جدید و حتی با شماره سریال‌های متفاوتند.

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

وقتی در باره بیتکوین و دفتر کل حرف می‌زنیم، می‌دانیم که همه می‌توانند رد هر یک ساتوشی را تا روز اول بگیرند. این موضوع سه خطر ایجاد می‌کند.

  1. جایگزین‌پذیری را به خطر می اندزد.
  2. امکان سانسور را فراهم می‌کند. یعنی دولت‌ها می‌توانند هر کس را که می‌خواهند از معامله منع کنند و افراد مختلفی را تحریم کنند.
  3. امکان انجام معاملات ناشناس ممکن نیست.

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

اینجاست که ما نیاز داریم بیتکوین به سمت ناشناسی نزدیک شود. پس صورت مسئله روشن است. چطور فردی به فرد دیگر پولی بدهد بدون اینکه هیچکس به جز خودشان آگاه به این پرداخت نباشد. اگر آذر A بخواهد از طریق شخص ثالث C برای بابک B پول بفرستد چه می‌کند؟ در دنیای متمرکز با فرض اعتماد؛ آذر به بانکی که در آن حساب دارد پول می‌دهد و بانک نیز آن پول را به بابک رداخت می کند.

پیاده‌سازی این روش در بلاکچین کنونی به این صورت است:

  1. آذر یک تراکنش سپرده دو امضایی برای ارسال به سپرده‌ی ۱ می‌سازد، با باز پرداخت یک ماهه به آذر.
  2. گرداننده یک تراکنش سپرده دو امضایی برای ارسال به سپرده‌ی ۲ می‌سازد، با بازپرداخت یک ماهه به گرداننده.
  3. گرداننده یک تراکنش دو امضایی برداشت از سپرده‌ی 1 برای خودش می‌سازد.
  4. بابک یک تراکنش دو امضایی برداشت از سپرده‌ی 2 برای خودش می‌سازد.
  5.  آذر تراکنش برداشت ۱ را امضا می‌کند. (با امضای گرداننده یک سکه به گرداننده می‌رسد.)
  6. گرداننده تراکنش برداشت ۲ را امضا می‌کند (با امضای بابک یک سکه به بابک میرسد.)

اما مشکل این روش کجاست؟

گرداننده بعد از گام ۵ گام ۶ را انجام نمی‌دهد و سکه را برای خود نگه می‌دارد. راه حل؟ برداشت ۱ و ۲ را همزمان کنیم طوری که یا هر دو اتفاق بیفتند یا هر دو اتفاق نیفتند.

اگر تراکنش برداشت ۲ و 1 به جز امضای B و C نیازمند یک رمز با مقدار X باشد به گونه ای که H(x)=y باشد بنابراین حتی اگر گرداننده برداشت دو را امضا هم کرده باشد بابک نمی‌تواند پول را برداشت کند آذر دقیقا از همین فرمول رمز برای ایجاد تراکنش برداشت ۱ استفاده می‌کند و آن را امضا می کند.

حالا اگر گرداننده بخواهد برداشت ۱ را نقد کند باید رمز X را در آن وارد کند. آذر رمز را به بابک می‌گوید و بابک رمز را در تراکنش برداشت ۲ وارد می‌کند و جابجایی اتفاق می‌افتد بدون اینکه امکان دزدی توسط گرداننده وجود داشته باشد.

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

معمای RSA و نقش مفهومی تامبلبیت چیست ؟

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

برای روشن تر شدن این مفهوم به جدول سودوکو فکر کنید. اگر بگوییم که به جای ۱ ها در جدول ۵ می‌گذاریم و به جای ۲ ها ۷ و غیره، و جدول را با مقادیر از پیش روشن شده‌اش به کسی بدهیم تا او آن را حل کند می‌توانیم با برگداندن ۵ ها به ۱ و ۷ ها به ۲ جواب مسله خودمان را نیز پیدا کنیم بدون اینکه مسله اصلی را به او داده باشیم.

با استفاده از معماهای مخفی شده نحوه انجام تراکنش بالا به این شکل تغییر می‌کند:

  1. گرداننده به بابک می‌گوید در ازای حل یک معما به او یک واحد پول می‌دهد.
  2. گرداننده به آذر می‌گوید در ازای یک واحد پول و هزینه جابجایی حاضر است برای او یک معما را حل کند.
  3. بابک معما را مخفی کرده و از آذر می‌خواهد که جواب را برای او بگیرد.
  4. آذر معمای مخفی شده را به گرداننده می‌دهد و با پرداخت پول و هزینه جواب را (به صورت منصفانه) از گرداننده می‌گیرد.
  5. آذر معما را به بابک می‌دهد. بابک معما را آشکار کرده و از آن جواب نهایی را به دست می‌آورد و با گذاشتن جواب در تراکنش، یک واحد پول به دست می‌آورد بدون اینکه قابل ردیابی باشد.

پروتکل منصفانه برای دریافت یک پاسخ صحیح برای یک معما

آذر یک معما دارد که پاسخ آن را می‌خواهد. چون آذر کلید عمومی گرداننده را می‌داند می‌تواند معماهایی با استفاده از آن بسازد که حلشان فقط برای گرداننده ممکن است. آذر تعدادی معما می‌سازد.

معماهای راستین: نسخه‌های مخفی شده متفاوت از معمای اصلی (چون بابک این معما را مخفی کرده بود معما دوبار مخفی شده است.)

معماهای دروغین: معماهایی که خود آذر با استفاده از کلید عمومی گرداننده ساخته است آذر این معماها را به گرداننده می‌فرستد. گرداننده نمی‌داند کدام معما راستین یا دروغین هستند اما می‌تواند همه را حل کند. پس همه را حل می‌کند.

حالا اگر گرداننده جواب‌ها را برای آذر بفرستد آذر می‌تواند جواب را به بابک بدهد تا بابک پول را بردارد. برای اینکه آذر نتواند با جواب گرفته شده و بدون پرداخت پول از تراکنش خارج شود، گرداننده جواب‌هایی که دارد را قبل از دادن به آذر با کلیدهایی رمزگذاری می‌کند. آذر تعدادی جواب رمزگذاری شده دارد و می‌داند که بعضی از این جواب‌ها، جواب معماهای دروغینی هستند که خودش ساخته است، پس از گرداننده می‌خواهد که جواب‌های معماهای دروغین را به او بدهد. گرداننده کلیدهای جواب‌های این معماها را برای آذر می‌فرستد.

آذر با استفاده از این کلیدها می‌تواند مطمئن شود که جواب‌های ارسال شده برای معماها جواب‌های درستی هستند و اگر کلید جواب‌های دیگر را به دست آورد، جواب معماهای راستین را خواهد داشت. او اکنون باید جواب معمای راستین را از گرداننده بخواهد.

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

حالا آذر یک تراکنش برداشت از سپرده دو امضایی با یک رمز که رمز معمای راستین است می‌سازد. گرداننده تراکنش را امضا کرده و رمز را در آن قرار می‌دهد و پول را برداشت می‌کند. آذر رمز را دیده و با استفاده از آن معمای مخفی خود را حل کرده و جواب را به بابک می‌دهد. بابک رمز را دیده و با استفاده از آن معمای مخفی خود را حل کرده و پاسخ را آشکار می‌کند و رمز به دست آمده را در مکان تراکنش بعدی قرار می‌دهد و پول را برداشت می‌کند. حالا با این مثال باید بهتر درک کرده باشید که نقش تامبلبیت چیست و چطور می‌تواند به ناشناس ماندن کمک کند!

برنامه‌ی توسعه‌ای تامبلبیت چیست ؟

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

« ما سیستم تامبلبیت خود را در C++ و پایتون با استفاده از LibreSSL به عنوان کتابخانه رمزنگاری خود پیاده‌سازی کرده‌ایم.” توسعه‌دهنده تامبلبیت با ارائه جزئیات بیان می‌:ند «ما کار 800 پرداخت‌کننده و 800 دریافت‌کننده را به صورتی انجام می‌دهیم که تمامی تراکنش‌ها در بلاکچین قابل رویت باشند.»

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

تا زمانی که پروتکل تامبل بیت توسعه می‌یابد، کاربران باید بر تامبلرها و میکسرهای موجود و نسبتا متمرکز تکیه کنند. بسیاری از پروتکل‌های بیتکوین خصوصی محور مانند رمزنگاری همتا به همتا، امضای Schnorr و سایر ابزارهای گمراه کننده در این جامعه به عنوان موضوعات تحت پوشش مطرح می‌شوند.

در این مقاله با بررسی پروژه تامبل بیت سعی کردیم نشان دهیم تامبلبیت چیست و چطور قرار است به پنهان کردن نام ما در زمان انجام تراکنش‌‌ها کمک کند! شما فکر می‌کنید چنین قابلیتی چه کاربردهایی در آینده‌ی نزدیک خواهد داشت؟ آیا کاربران واقعا به چنین امکانی نیاز دارند؟