بیتکوین، این واحد پول دیجیتالی که یک شیوه نوین در نظام پرداخت پول در سراسر جهان پدید آورده، شعارش این است: ما به رمزنگاری اعتماد داریم! (In cryptography we trust). بیتکوین آمده است تا افرادی که ما به آنها اعتماد داشتیم، یعنی بانکداران، را از چرخه تبادلات مالی کنار بزند و رمزنگاری و کد را جایگزین سازد. در سیستم بانکداری سنتی، بانک بر هر تومان پولی که از حساب شما خارج میشود یا به آن افزوده میشود، اِشراف دارد. برای مثال، پولی که شما به یک فروشنده با کارتخوان پرداخت میکنید، پس از انجام یک سری تراکنش جابهجا میشود. بیتکوین (و نمونههای مشابه آن) با یک پایگاه داده توزیع شده و امن، بانک را از چرخه تبادلات مالی خارج میسازند. این پایگاه داده، زنجیره بلوکی (blockchain) نام دارد. نخستین ارمغان زنجیره بلوکی، حفظ حریم شخصی کاربران در حوزه تبادلات مالی است. در واقع، دیگر ترسی ناشی از سوء استفاده از اطلاعات شخصی از سوی بانکداران وجود ندارد.
نگاهی تازه به فناوری
امروزه، هشت سال پس از ساخته شدن اولین زنجیره بلوکی، مردم میپرسند که آیا میتوان این فناوری را برای کاربردی فراتر از جابهجایی پول به کار برد؟ به بیان دیگر، چه کارهای دیگری را با زنجیره بلوکی میتوان بهصورت خودکار درآورد و افراد دیگری را علاوه بر بانکداران از چرخه تبادلات حذف کرد؟ برای مثال، آیا زنجیره بلوکی میتواند ارتباطی را بین افرادی که بهدنبال یک خودروی سواری هستند و صاحبان خودرو برقرار سازد تا همسفر شوند؟ آیا میتواند یک منبع پخش برنامههای تلویزیونی با حفظ حق پخش سازندگان اثر باشد؟ آیا یک برنامه مبتنی بر زنجیره بلوکی میتواند وضعیت پروازها را چک کند و اگر تأخیری رخ داد مبلغ خسارت تعیین شده را به مردم بازگرداند؟
موارد بالا یک سری مثال دور از ذهن نیستند، بلکه تا همین حالا تعدادی محصول بر پایه این فناوری ساخته شده یا در حال ساخت است. برای مثال، یک سازمان غیرانتفاعی در سوئیس بهنام اتریوم (Ethereum) سکویی به همین نام طراحی کرده است که بر روی یک مجموعه سیستم پردازشی توزیع شده اجرا میشود. در بخشهای بعدی از این فناوری بیشتر خواهیم گفت. بازیگران بزرگ صنعت فناوری اطلاعات نیز بیکار ننشستهاند و راهکارهای خود را عرضه میکنند. مایکروسافت ابزاری را ارائه کرده است تا کاربران Azure cloud بتوانند زنجیره بلوکی را اجرا کنند. IBM، اینتل و چند شرکت دیگر پروژهای موسوم به Hyperledger را طراحی کردهاند. البته هیچکدام از این فناوریها انقلابی در صنعت ایجاد نکردهاند. همین بیتکوین کمتر از 400 هزار کاربر در سراسر جهان دارد. با این حال، رقابتی که بین محصولات مختلف در جریان است، برخی از آنها را به حاشیه خواهد راند و برخی دیگر را دارای سهمی از بازار خواهد کرد. برای به دست آوردن قدرت تحلیل، لازم است با نحوه کار زنجیره بلوکی آشنا شویم. بنابراین در بخش بعدی بهنحوه کار بیتکوین بهعنوان یک مثال شناخته شده از سیستمهای مبتنی بر زنجیره بلوکی خواهیم پرداخت.
بیتکوین چگونه کار میکند؟
برای شروع بحث، بهاجزای نام زنجیره بلوکی میپردازیم: اینکه چرا زنجیر نام گرفته است؟ در واقع به این دلیل به آن زنجیر اطلاق میشود که اطلاعات تنها به انتهای فهرست اضافه میشود، درست مثل یک زنجیر که حلقههای جدید را میتوان به یکی از دو انتهای آن اضافه کرد. هر بلوک، شامل اطلاعات تعدادی تراکنش، به تراکنشهای قبلی در زنجیر ارجاع میدهد. برای مثال، اگر سیاوش به کامران یک واحد پول پرداخت کند، این تراکنش به تراکنشهایی ارجاع میدهد که آن واحد پول را به سیاوش منتقل کردهاند.
گروهی از کاربران موسوم به جویندگان (miners) وظیفه دارند درخواست تراکنشهای جدید را شناسایی، آنها را تجمیع، صحتسنجی و بهصورت یک بلوک به انتهای فهرست اضافه کنند. صحتسنجی بهمعنای آن است که بررسی شود پرداختکننده واقعاً صاحب پول است و نیز اینکه پول در جای دیگر خرج نشده باشد. قبل از پرداختن به روش انجام کار، لازم است کمی به اصول رمزنگاری نامتقارن اشاره کنیم. در رمزنگاری نامتقارن، هر فرد یک کلید خصوصی (private key) و یک کلید عمومی (public key) دارد. (شکل 1)
شکل -1
این دو کلید با یک رابطه ریاضی بههم مربوط هستند و یکی را از روی دیگری بهسادگی نمیتوان به دست آورد. کلید خصوصی را تنها صاحب کلید دارد، اما کلید عمومی هر فرد در اختیار همه قرار میگیرد. من اگر یک متن را با کلید عمومی شما رمز کنم، تنها شما که کلید خصوصی را دارید قادر به رمزگشایی آن هستید. همچنین، اگر شما یک متن را با کلید خصوصی خودتان رمز کنید، هر فردی میتواند با کلید عمومی شما آن را رمزگشایی کند تا مطمئن شود این متن را شما فرستادهاید (زیرا فرد دیگری کلید خصوصی شما را ندارد).
این شیوه رمزنگاری برای احراز اصالت در بیتکوین مورد استفاده قرار میگیرد. در واقع، صاحب پول اطلاعات تراکنش را با کلید خصوصی خودش رمز کرده و یکسری محاسبات انجام میدهد تا درنهایت یک رشته عددی طولانی به دست آید. هر فرد دیگری که محاسبات مشابه را با کلید عمومی فرد مورد نظر روی عدد حاصل انجام دهد، میتواند بررسی کند که فرد مدعی پول واقعاً صاحب آن است یا خیر.
اما موضوع دیگری که در کنار احراز اصالت صاحب پول اهمیت دارد، این است که تراکنشها برگشتناپذیر و تکرارنشدنی باشند. به هر حال، بیتکوین مجموعهای از جویندگان را در سراسر جهان دارد که قابل نظارت نیستند. پس باید یک مکانیسم طراحی شود که صحت تراکنشها را بسنجد. در بیتکوین، مکانیسمی بدین منظور ارائه شده که در بخش بعدی بیان خواهد شد.
بیتکوین چگونه «درست» کار میکند؟
در ابتدا بد نیست کمی در ارتباط با مشکلی که قرار است حل شود، بحث کنیم. در یک شبکه نظیر به نظیر (P2P) و باز (open) مثل بیتکوین، جویندگان بابت ایجاد بلوکهای جدید پاداش دریافت میکنند، پس رقابتی بین آنها در جریان است. این سؤال پیش میآید که چهچیز آنها را از حذف تراکنشهای قبلی و استفاده مجدد از آنها بازمیدارد؟ در بخش قبلی نشان دادیم که چرا دزدی در بیتکوین غیرممکن است، اما مشکل اینجا است که یک واحد پول میتواند چندین بار خرج شود. بنابراین، مکانیسمی لازم است که با اجرای آن تمامی جویندگان یک نسخه مشترک از پایگاه داده را داشته باشند، و اینکه تراکنشها برگشتناپذیر باشند. مکانیسم اثبات انجام کار در بیتکوین بدین منظور طراحی شده که در ادامه توضیح داده میشود.
در بیتکوین، برای ایجاد قابلیت برگشتناپذیری، سازنده هر بلوک باید چند بار روی آن تابع هش (Hash) را اعمال کند. تابع هش تابعی است که از یک سری اطلاعات، خلاصهای بهصورت یک رشته با طول معین تهیه میکند. (شکل 2) اگر حتی یک بیت از اطلاعات اولیه تغییر کند، خروجی تابع هش تغییر خواهد کرد. سازندگان بلوک هش متناظر با بلوک جدید را به سایرین اعلام میکنند و در صورت تأیید به زنجیره افزوده میشود. پس از اضافه شدن یک بلوک جدید به زنجیره، تراکنشهای داخل آن در بلوکهای جدید استفاده نخواهد شد و بنابراین هر تراکنش تنها یک بار در زنجیره بلوکی گنجانده میشود. همچنین، چون بلوکها را نمیتوان حذف کرد، تراکنشهای انجام شده غیرقابل برگشت خواهند بود.
شکل - 2
لازم به ذکر است تولید بلوکهای جدید کاری دشوار است، زیرا باید تعداد مشخصی صفر در ابتدای خروجی تابع هش وجود داشته باشد. این ویژگی احتمال ساخته شدن هشهای تصادفی قابل قبول را کاهش میدهد. برای این منظور، یک عدد تصادفی به اطلاعات ورودی تابع هش افزوده میشود و اگر خروجی خاصیت مورد نظر را نداشت، مجدد هش گرفته میشود. این روند تا زمانی ادامه مییابد که هش تولید شده قابل قبول باشد. شکل 3 هش تولید شده برای بلوک فرضی X را نشان میدهد که چهار عدد صفر در ابتدای آن وجود دارد.
شکل - 3
کاربردهای جدید زنجیره بلوکی
حال که با عملکرد بیتکوین و پشتوانه آن یعنی زنجیره بلوکی آشنا شدیم، به همان بحثی که در ابتدای متن مطرح شد بازمیگردیم: این واقعیت که یک سیستم مبتنی بر زنجیره بلوکی میتواند کاربردهای مختلفی داشته باشد. در واقع، بیتکوین نهتنها توانسته تبادلات مالی مستقل از نظارت بانکداران و دولتها پدید آورد، بلکه یک مشکل دیرپا در علوم کامپیوتر را حل کرده است: اجماع. اینکه یک سیستم توزیع شده بر بستر ناامن شبکه فعال باشد و همه روی وضعیت فعلی آن اجماع داشته باشد، ارمغانی است که بیتکوین به ما هدیه کرده و رویکرد آن میتواند در سایر امور نیز به کار گرفته شود.
در سال 2013، یک دانشجوی 19 ساله در تورنتو بهنام ویتالیک بوترین یک فناوری مبتنی بر زنجیره بلوکی بهنام اتریوم معرفی کرد که همانند بیتکوین از یک واحد پول مجازی استفاده میکند. این واحد پول اِتِر (Ether) نام دارد. برخلاف بیتکوین، تراکنشها در اتریوم یک سری برنامه موسوم به قرارداد هوشمند (smart contracts) است که با هر میزان پیچیدگی میتواند نوشته شود و دیگر محدود به تراکنشهای مالی نیست. یک مثال ـ پرداخت خسارت به مسافرانی است که پرواز آنها تأخیر داشته است ـ نحوه کار این فناوری را بهسادگی بیان میکند:
کاربر درخواست خسارت خود را با پرداخت اِتِر به قرارداد هوشمند (برنامهای که روی زنجیره بلوکی اتریوم فعال است) و ثبت اطلاعات پرواز خود انجام میدهد. علت اینکه به نرمافزار اتر پرداخت میشود این است که از ایجاد درخواستهای بیهوده جلوگیری شود. در مرحله بعدی، قرارداد هوشمند درخواست را به یک سرویس خارج از زنجیره بلوکی میفرستند تا صحت اطلاعات مسافر و اطلاعات پرواز را تأیید کند. اگر صحت اطلاعات از سوی سرویس مذکور تأیید شد، قرارداد هوشمند به مسافر پول پرداخت میکند. در غیر این صورت، به خودش پول پرداخت میکند. (شکل 4) همچنین، چون اطلاعات در زنجیره بلوکی ثبت میشود، هیچ فردی نمیتواند دوبار خسارت دریافت کند.
شکل - 4
فناوریهای مبتنی بر زنجیره بلوکی چالشهایی نیز دارند. یک چالش این است که نمیتوان اطلاعات زیادی را در زنجیره بلوکی ذخیره کرد. بهعنوان نمونه، هر تراکنش در بیتکوین حداکثر 40 بایت فضا میخواهد. اما یک کاربرد برای ارتباطات چندرسانهای حجم بسیار بیشتری نیاز دارد. مشکل دیگر این است که زنجیره بلوکی اطلاعی از جهان خارج ندارد و در کاربردهایی ممکن است به یک نهاد خارجی رجوع کند تا اطلاعات کسب کند. برای مثال در کاربرد پرداخت حق خسارت به مسافران، اطلاعات مسافر و پرواز را یک سرور خارجی تأیید میکند. شاید با پیشرفت فناوری برخی از چالشها یا همه آنها رفع شوند یا اینکه بهصورت یک مانع در راه گسترش فناوری باقی بمانند.
فارغ از چالشهای موجود، برنامههای زیادی برای اتریوم نوشته شده یا در حال آمادهسازی است. یکی از برنامهها، AnonymousVoting بهمعنای رأیگیری ناشناس، یک مکانیسم رأیگیری بر اساس اتریوم است. در این برنامه اطلاعات رأیها در زنجیره بلوکی ثبت میشود. برنامه دیگری بهنام EtherTweet که از نام آن میتوان فهمید به ارسال توییت اشاره دارد، برخلاف توییتر سرور مرکزی ندارد و در واقع توییتها را در زنجیره ثبت میکند. برنامههای فراوان دیگری نیز نوشته شده است که همگی از مزایای زنجیره بلوکی بهره میبرند.
سخن آخر
در این نوشتار نحوه کارکرد زنجیره بلوکی بهصورت اجمالی بررسی شد تا مشخص شود چگونه با آن یک سیستم پردازش توزیع شده و بدون دخالت یک نهاد مرکزی میتوان ساخت.
البته که بیتکوین بهعنوان یک ارز مجازی بر پایه زنجیره بلوکی هماکنون مورد توجه فراوان است، اما فناوریهای جدید پردازشهایی فراتر از انتقال پول را مد نظر قرار دادهاند که در این متن چند نمونه را نام بردیم. انتظار میرود که در سالیان آینده کاربردهای جدید نیز برای زنجیره بلوکی تعریف شود و اقبال عمومی به این شیوه پردازشی روزافزون باشد.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟