جیب | Jeeb
جیب | Jeeb
خواندن ۷ دقیقه·۶ سال پیش

داستان شکل‌گیری رمزارزها به زبان ساده؛ قسمت سوم: Hashcash

یک روز در اوایل دهه‌ی 90 میلادی، خانم دوارک از مسافرت کوتاه‌مدت‌اش برمی‌گرده؛ کامپیوترش رو باز می‌کنه و با 241 ایمیل مواجه می‌شه! بله؛ به روزهای اول اینترنت و پیش از سیستم‌های anti-spamming خوش آمدید.
عمل اسپمینگ پروسه‌ی راحتی داشت؛ یک ایمیل با کم‌ترین هزینه و زمان به تعداد زیادی از افراد فرستاده می‌شد و این مشکل‌ساز بود. خانم دوارک و آقای نائور که از دانشمندان حوزه‌ی کامپیوتر هستند،‌ تصمیم گرفتن راه‌حلی برای این مساله پیدا کنند. اون‌ها در مقاله‌ای پیشنهاد کردند که 1 . قوانینی وضع بشه و 2 . افراد برای استفاده از ایمیل هزینه صرف کنند؛
البته باید توجه داشته باشیم که منظور از صرف هزینه همیشه پرداخت مستقیم پول نیست؛ ما برای یادگیری زمان صرف می‌کنیم و این هزینه‌ی آموختن‌ه؛ یا برای سلامتی ورزش می‌کنیم و این هزینه‌ی سالم بودن‌ه و تقریبا برای هر کاری که انجام می‌دیم، هزینه‌ای پرداخت می‌کنیم؛ در دنیای کامپیوتر صرف هزینه می‌تونه حل یک معادله باشه. به این شکل که با استفاده از قدرت کامپیوتر (مثل CPU) و برق، به حل مساله‌ای بپردازیم که هزینه‌ی انجام یک کار مشخص،‌ مثل فرستادن ایمیل، هست. به این ترتیب انجام اسپمینگ به علت هزینه‌بر بودن‌، مقرون به صرفه نخواهد بود.

دوارک و نائور همین ایده‌ی ساده رو با استفاده از سه ابزار ایجاد کردند: یک تابع ریاضی (Pricing function)، یه میان‌بر (Shortcut) و یک تابع دیگه به نام Hash.

اول هزینه توسط یک سری افراد مورداعتمادِ جمع، تعیین می‌شه (که میتونیم به تعیین قیمت تمبر توسط اداره‌ی پست تشبیه‌اش کنیم.) بعد از اون، تابع Pricing که همون معادله برای حل باشه، روی سیستم ایمیل اعمال می‌شه. البته Pricing Function به‌خاطر طولانی بودن، توسط یک تابع رمزنگاری به اسم Hash، کوتاه و بعد به پیام متصل می‌شه. حالا وقتی آدما برای هم ایمیل می‌فرستن، کامپیوترهاشون باید یک معادله ریاضی بر حسب زمان، مقصد و محتوای پیام رو حل بکنه؛ و تنها در این صورت‌ ایمیل ارسال و دریافت می‌شه؛ و خب به خاطر هزینه‌ای که اسپمرها باید پرداخت کنند، تعدادشون کم می‌شه. اما از طرفی فرض کنیم قراره یک کنفرانس راجع‌به کریپتوکارنسی (رمزارزها) برگزار بشه و دعوت‌‌نامه‌ها از طریق ایمیل ارسال بشه. علی‌رغم نیاز به ارسال پیام به تعداد زیادی از آدم‌ها، اسپمینگ نیست ولی برای فرستنده هزینه‌بره. این‌جاست که میان‌بر کاربرد پیدا می‌کنه. میان‌بر مثل یک تسهیل‌کننده می‌مونه که سختی معادله رو کاهش می‌ده. درنتیجه CPU و برق کم‌تری مصرف می‌شه. این میان‌بر رو فقط اون مرکز (افراد معتمد)‌ و یک سری ارائه‌دهنده‌ی سرویس (مثلا بگیم Gmail) دارند؛ برای مثال اگر درحالت عادی برای حل معادله 10ثانیه CPU استفاده بشه، با میان‌بر این زمان به 0.01 ثانیه می‌رسه. پس وجود میان‌بر هم به این علت‌ه؛ و کار دیگه‌ای هم که کاربر می‌تونه انجام بده، تشکیل یک لیست از خانواده، دوست، آشنا و کمپانی‌های شناخته‌شده‌ و … هست که دریافت ایمیل از این افراد نیازی به تاییدشدن با صرف هزینه، نباشه.

درست مثل همون کاری که 3جوون زودبازنشسته‌شده یعنی Eric Hughes ، Tim May، John Gilmore تو سال 1992 تصمیم به انجام‌ا‌ش گرفتند و این تصمیم به جنبش سایفرپانک‌ها ختم شد. شاید بتونیم قاطعانه ادعا کنیم که این لیست از تاثیرگذارترین لیست‌های ایمیلی در دنیای ما بوده. ایمیل‌های این لیست به‌صورت رمزنگاری‌شده انجام می‌گرفت و هویت افراد در اون مشخص نبود؛ برای همین هر کسی بدون ترس از عواقب صحبت‌ها و عقاید خودش می‌تونست اون‌هارو آزادانه بیان کنه.

حریم خصوصی در دنیای آنلاین

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

حریم خصوصی در عصر الکترونیک لازمه‌ی یک اجتماع آزاد است. حریم خصوصی پنهان‌کاری نیست…

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

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

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

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

اثبات کار یا Proof-of-Work

یکی دیگه از افراد تاثیرگذار این لیست، Adam Back یک کریپتوگرافر26 ساله‌ و از اعضای فعال سایفرپانک‌هاست؛ که درسال 1997 (یعنی یک سال قبل از ورشکستگی دیجی‌کش) نوعی سیستم رو تو این جمع مطرح کرد که ظاهرن ضعف‌های DigiCash رو می‌تونست برطرف کنه. آقای بک مستقلا به نتایج مشابه‌ای با کارهای دوارک و نائور رسیده بود: پرداخت هزینه برای انجام کاری. اون در طرح خودش توضیح می‌ده برای اینکه بتونیم سریعا از صحیح یا نادرست بودن یک عمل (مثل اسپمینگ ایمیل یا تراکنش‌های مالی) مطمئن بشیم، می‌تونیم شرطی بذاریم؛ چه طوری؟
بگیم خروجیِ معادله‌ای که کامپیوتر باید محاسبه‌ بکنه، عددی متشکل از مثلا 25 تا صفرویک (bit) باشه؛ این شرطِ ماست. اگر صادق بود، اون عمل انجام می‌گیره؛ در غیر این صورت رد می‌شه. یعنی کاری انجام می‌گیره تا اثبات کنه برای اون هزینه صرف شده که به اون اثبات کار یا Proof-of-Work گفته می‌شه. این سیستم می‌تونه کاربردهای زیادی تو حوزه‌های مختلف داشته باشه؛ برای مثال فکر کنید که شما یک سلبریتی مشهور هستید و در طول روز تعداد زیادی ایمیل دریافت می‌کنید. با این سیستم می‌شه فیلتری ایجاد کرد که شما فقط ایمیل‌هایی که می‌خواید رو دریافت کنید. یا اگه یادتون باشه تو سال 2016 به چند سایت مشهور مثل توییتر و اسپاتیفای حمله شد و برای مدتی از دسترس خارج شدن؛ حمله‌ای که به DoS شناخته می‌شه. استفاده از این سیستم می‌تونه جلوی این نوع حملات رو هم بگیره.

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

تابع ریاضی هش

اما چرا تابع هش؟
آقای بک یک کریپتوگرافر و نگران حریم خصوصی افراد بود. و وقتی صحبت از امنیت میشه، متخصصای ما به یک تابع خاص علاقه زیادی نشون میدن: تابع Hash !
تابع هش درواقع یک تابع رمزنگاری هست که هر داده‌ای اعم از یک کلمه یا کلمات یک کتاب رو می‌تونه بگیره و اون(ها) رو به یک سری اعداد تصادفی با طولی مشخص تبدیل کنه. مثلا اگر به یکی از انواع معروف و محبوب hash به‌نام SHA-256 جمله‌ی :‌”امروز هوا خوبه” رو بدیم، تابع هش جمله رو به‌ شکل:

3E51EC9B95477798A0DF3266DB45F357A2EAB2385C0CA65548DA45BA58036DF6 بر مبنای 16، رمزنگاری می‌کنه. که می‌تونه به:

216 167 217 133 216 177 217 136 216 178 32 217 135 217 136 216 167 32 216 174 217 136 216 168 217 135 بر مبنای 10، ترجمه بشه

و یا

به‌صورت 0 و 1 های کامپیوتری (باینری) دربیاد:

11011000 10100111 11011001 10000101 11011000 10110001 11011001 10001000 11011000 10110010 00100000 11011001 10000111 11011001 10001000 11011000 10100111 00100000 11011000 10101110 11011001 10001000 11011000 10101000 11011001 10000111

بدیهی‌ه که با نگاه کردن به خروجی جمله‌ی هش‌شده جمله‌ی اول قابل تشخیص نیست. و همین امر باعث امنیت hashcash می‌شه. جالبه نه؟

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

خب به‌نظر میاد با هش‌کش تکه‌های پازلی که سال‌ها درحال تکمیل شدن بوده، کافی باشه. چرا؟
بیاین دوره کنیم:
برای داشتن یک سیستم پرداختی ایده‌آل و تحت کنترل خود فرد نیاز به:

1 . بستر داریم ←  شبکه‌ای غیرمتمرکز که با اینترنت به هم متصل‌اند و اسم‌اش رو گذاشتیم بلاکچین  

2 .حساب‌های ناشناس برای حفظ حریم خصوصی

3 . حذف واسطه‌ها ← تایید تراکنش‌ها با صرف هزینه  ✓

دیگه به چی نیاز داریم؟
به کسی که این‌هارو کنار هم قرار بده؛ نه؟ :)

این مقاله قسمت سوم از مجموعه داستان شکل‌گیری رمزارزهاست؛

اگر قسمت‌های قبلی رو  هنوز نخوندین، می‌تونین همین‌‌جا پیداشون کنین:

قسمت اول: DigiCash

قسمت دوم : b-money

آدام بکهش کشhashcashadam backتابع هش
https://jeeb.io ارائه دهنده درگاه پرداخت ارزهای دیجیتال
شاید از این پست‌ها خوشتان بیاید