پایگاه خبری راه پرداخت دارای مجوز به شماره ۷۴۵۷۲ از وزارت فرهنگ و ارشاد اسلامی و بخشی از «شبکه عصر تراکنش» است. راه پرداخت فعالیت خود را از دوم اردیبهشتماه ۱۳۹۰ شروع کرده و اکنون پرمخاطبترین رسانه ایران در زمینه فناوریهای مالی، بانکداری و پرداخت و استارتآپهای فینتک است.
نگاهی عمیق به آنچه در بیتکوین اتفاق میافتد / بیتکوین با چه مکانیسمی در فناوری انقلاب به پا کرد؟
محمدکاظم کاظمیراد؛ کارشناس ارشد نظامهای پرداخت الکترونیک / چرا ارزرمز بیتکوین انقلابی در فناوری به پا کرد؟ برای درک اهمیت این موضوع باید بدانیم که تا پیش از این معمولا سرورهای متمرکز مانند شکل یک امکان همه کارها و عملیاتی را که بهصورت اینترنتی انجام میدهیم، فراهم میکردند.
ما تقریبا برای هر چیزی به این سرورها وابسته هستیم؛ سرورها در پرداختهای ما دخیل هستند و رد سبدهای خریدمان را میگیرند، ایمیلهایمان را ارسال و ذخیره کرده و هویت ما را برای وبسایتها و برنامههای گوشیهای هوشمند تایید میکنند. بسیاری از موسسات دولتی و شرکتهای سهامی (اشخاص حقوقی که بهصورت مجزا از صاحبان خود فعالیت میکنند) بهصورت گسترده از این سرورها در مراکز دادههای خود استفاده میکنند. این بدان معناست که ما حقیقتا صاحب دادههای خود نیستیم، بلکه گهگداری سری به آنها میزنیم.
برای دسترسی و استفاده درست از دادهها نیازمند دستگاهی هستیم که ما را از یک فضای دیجیتالی به فضای دیجیتالی دیگری ببرد. این دستگاهها به گونهای طراحی شدهاند که توسط یک فرد یا سازمان سلسلهمراتبی از افرادی که مورد اعتماد یکدیگر هستند، قابل کنترل باشند. همه این موارد سبب آسیبپذیری ما میشود. همچنین، امروزه در خصوص تجارت اینترنتی نیز برای پرداختهای الکترونیکی تقریبا تنها به موسسات مالی وابسته هستیم.
تراکنشهای برگشتناپذیر (تبادل کالا میان خریدار و فروشنده) همچنان بهدلیل سیاستهای سازمانی در خصوص کنترل هزینه تراکنشها و محدود بودن حداقل اندازه تراکنش عملی بهطور کامل امکانپذیر نیست.
بهدلیل احتمال بازگشت مبالغ فرستادهشده، عملگران (فروشندگان) باید در رابطه با خریداران خود بسیار محتاطانه عمل کنند و از آنها اطلاعات بیشتری از آنچه نیاز دارند بخواهند، با این وجود در چنین مواقعی نیز همچنان امکان کلاهبرداری وجود دارد.
از این رو نیاز به ارزرمز (نوعی ابزار مبادلهای که جهت برقراری امنیت تراکنشها از رمزنگاری استفاده میکند) وجود دارد. به بیان دیگر، نوعی سیستم پرداخت الکترونیکی که به جای اعتماد، بر شواهد رمزنگاری مبتنی است و به هر یک از طرفین توافق این امکان را میدهد تا مستقیما و بدون نیاز به شخص ثالث قابل اعتماد، از طریق تراکنشهای برگشتناپذیر با یکدیگر روابط متقابل داشته باشند. این کاری است که بیتکوین انجام میدهد، فناوری بیتکوین در سال 2009 (یعنی از زمان عرضه آن بهصورت نرمافزار متنباز) به نخستین ارزرمز غیرمتمرکز تبدیل شد. افزون بر این، همچنین میتوان جهت حمایت از خریداران برخی مکانیسمهای سند تضمینی (اسکرو) را نیز انجام داد.
در این نوشته به معرفی کارکرد بیتکوین خواهیم پرداخت و سازوکار بیتکوینهایی را که زنجیره بلوکی نیز نامیده میشوند، مطالعه و بررسی خواهیم کرد.
سازوکار بیتکوین
بیتکوین نوعی سیستم پرداخت الکترونیک همتا به همتاست که امکان پرداخت اینترنتی را بدون نیاز به موسسات مالی فراهم میآورد. در این بخش به توضیح کارکرد این سیستم خواهیم پرداخت. منظور از گره (نود) هر کامپیوتری است که نرمافزار سرویسگیرنده بیتکوین را اجرا کرده و با انتشار تراکنشها در شبکه همتا به همتا شرکت میکند. نسخه همتا به همتا همانطور که در شکل ۳ نشان داده شده است به هر یک از گرهها (نود) این امکان را میدهد تا بهصورت همزمان هم بهصورت سرویسدهنده (سرور) و هم بهصورت سرویسگیرنده عمل کنند.
تراکنش چگونه انجام میشود؟
ارز الکترونیکی زنجیرهای از امضاهای دیجیتالی است. صاحب ارز از طریق انتقال مقداری از بیتکوینهای خویش به کاربری دیگر عمل تراکنش را انجام میدهد. تراکنشها به روش زیر ذخیره میشوند:
1) هش (درهمسازی) تراکنش قبلی ارز و کلید عمومی صاحب بعدی محاسبه میشود.
2) صاحب ارز با کلید شخصی خود برونداد هش را امضا میکند.
3) برونداد هش را با مقدار نهایی ارز جمع میکنیم.
مساله: دریافتکننده پول قادر نیست اثبات کند که آیا یکی از مالکان، ارز را دو بار خرج کرده است یا خیر.
راهحل: از یک سازمان مرکزی مورد اعتماد یا ضرابخانه برای بررسی هر یک از تراکنشها کمک بگیرید و اطمینان حاصل کنید که ارزها دو بار خرج نشده باشند. پس از انجام هر یک از تراکنشها، ارز برای تولید ارز دیگری به ضرابخانه بازگردانده میشود و تنها ارزهایی که از ضرابخانه صدور میشوند، امن و قابل اطمینان هستند.
نکته: چنین راهحلی موثر واقع میشود، اما در این مورد خاص ضرابخانه نقشی حیاتی ایفا میکند و شرکت گرداننده آن دقیقا همانند بانک بر کل سیستم مالی نظارت دارد، به این علت که هر یک از تراکنشها باید از نظر شرکت، مورد بررسی قرار گیرد. قطعا ما خواهان چنین چیزی نیستیم و بهدنبال راهحل بهتری هستیم که به دریافتکننده پول اطمینان دهد مالک دو بار پول را خرج نکرده است. این راهحل بهصورت زیر است:
راهحل: بهدلیل آنکه تنها راه تایید نبود یک تراکنش آگاهی از همه تراکنشهاست، ضروری است همه تراکنشها بهطور علنی اعلام شوند. سیستمی را برای مشارکان ایجاد میکنیم که طی آن مشارکان باید در مورد تاریخ و ترتیب دریافت ارز توافق کنند. در چنین شرایطی نخستین تراکنش را به حساب میآوریم و به همین دلیل اقدام برای دو بار خرج کردن ارز را در نظر نمیگیریم.
با استفاده از این راهحل دریافتکننده وجه نیازمند شاهد زمانی (time proof) است، منظور از شاهد زمانی این است که طی آن، زمان گزارششده در اکثر گرهها نخستین تاریخ دریافت وجه برای هر تراکنش یکسان است، در چنین مواردی از سرور زمانمهر (timestamp server) استفاده میکنیم.
سرور زمانمهر
اگر کیف پول بیتکوین را دانلود کنید، یک کلید شخصی (نوعی امضای دیجیتالی نصفه که مالکیت شما را اثبات میکند) و یک کلید عمومی (که نیمه متناظر امضای دیجیتالیتان است) به شما داده خواهد شد. زنجیره بلوکی زنجیرهای از بلوکهاست که در آن بلوکها کاملا به یکدیگر مرتبط هستند و در هر بلوک تعدادی از امضاهای عمومی و در واقع تعدادی از تراکنشها ثبت میشوند. اندازه بلوک به یک مگابایت محدود است.
سرور زمانمهر به هش بلوک مهر زمان میزند و آن را صدور میکند. از این رو هر هشی که به آن مهر زمان زده شده است، در واقع دربردارنده مهر زمان قبلی نیز هست و این اثبات میکند که باید دادهها را در آن مقطع زمانی خاص یافته باشیم. همه اینها با هم زنجیرهای را تشکیل میدهند و هر گاه یک مهر زمان را به زنجیره اضافه میکنیم، مهر زمانهای قبلی تقویت میشوند.
اثبات کار
برای ایجاد بلوک در بیتکوین از اثبات کار هشکش (Hashcash) استفاده میکنیم. هشکش دادهای (برونداد تابع هش (درهمسازی)) است که برخی مقتضیات را برآورده میکند. دیگران برای تایید این نوع داده از نظر صحت و دقت به آن دسترسی دارند، هرچند هزینه تولید آن بسیار بالاست و به بیانی دیگر بازسازی آن امری دشوار است.
درباره کارکرد هشکش باید بدانیم که اثبات کار مقدار دقیقی را جستوجو میکند که به هنگام هش شدن (درهمسازی) این مقدار (با 256SHA-، الگوریتم درهمسازی ایمن (the Secure Hash Algorithm) سازمان امنیت ملی (the National Security Agency)، که تابع درهمسازی (هش) را با برونداد طول 256 بیت به وجود میآورد) برونداد هش با تعداد بیتهای صفر مورد نیاز شروع شود.
در شبکه زمانمهر با افزایش نانس در بلوک (تعدادی عدد دلخواه که تنها یک بار برای امضای یک ارتباط استفاده میشود) عمل اثبات کار را انجام میدهیم تا زمانی که مقداری را که درهمسازی بلوک میدهد با بیتهای صفر مورد نیاز بیابیم. دشواری این کار در یافتن تعداد بیتهای صفر مورد نیاز است، اما مقدار یافتهشده را بهراحتی میتوان با انجام یک درهمسازی واحد تایید کرد.
بهعنوان مثال، فرض کنیم که داده معینی رشتهپایه در برنامه Hello,world. است و ما بهدنبال تغییری هستیم که به موجب آن برونداد 256SHA- با «000» شروع شود. ما با افزودن یک مقدار صحیح (نانس) این رشته را تا پایان تغییر داده و هر بار آن را افزایش میدهیم. یافتن مطابق مناسب در این مثال به 4251 بار امتحان نیاز داشت. همانگونه که در شکل ۶ میبینید.
هنگامی که تلاش واحد پردازش مرکزی (سیپییو) جهت تحقق اثبات کار توسعه داده شود، بدون انجام مجدد اثبات کار (که هزینه آن بالاست) نمیتوان بلوک را تغییر داد. افزون بر این، بلوکهای بعدی در پی آن زنجیرهبندی میشوند، این بدان معناست که برای تغییر یک بلوک باید همه چیزهایی را که در پی آن میآیند، بهصورت مجدد انجام داد. شکل ۷ را ببینید.
شبکه
نحوه اجرای شبکه به این صورت است:
1. تراکنشهای جدید به همه گرهها انتقال داده میشود.
2. هر یک از گرهها تراکنشهای جدید را گردآوری کرده و آنها را در یک بلوک قرار میدهد.
3. هر یک از گرهها برای بلوک خود اثبات کار دشواری را جستوجو میکند.
4. هنگامی که یکی از گرهها یک اثبات کار را یافت، بلوک را به سایر گرهها انتقال میدهد.
5. گرهها بلوک، اثبات کار آن و درستی و اعتبار همه تراکنشهای موجود در آن (به این معنا که در هیچ تراکنشی پول دو بار خرج نشده باشد) را بررسی میکنند.
6. چنانچه گرهها بلوک را تایید کنند، برای ایجاد بلوک بعدی در زنجیره به همراه هش بلوک تاییدشده بهعنوان بلوک قبلی شروع به کار میکنند.
گرهها همواره بلندترین زنجیره (اثبات کاری که بیشترین میزان تلاش صرف آن شده است) را بهعنوان زنجیره صحیح در نظر میگیرند و برای توسعه آن به کار روی آن میپردازند، چنانچه در شکل زیر زنجیره صحیح با رنگ آبی نشان داده شده است. شکل ۸ را ببینید.
چنانچه دو گره (یا بیشتر) گزارش متفاوتی از بلوک بعدی را بهطور همزمان منتشر کنند، برخی گرهها ممکن است یکی از گزارشها را زودتر دریافت کنند و در نتیجه روی گزارشی کار کنند که ابتدا دریافت کردهاند و گزارش دیگر را برای طولانیتر شدن زنجیره نگهداری کنند. در نهایت، هنگام یافتن اثبات کار بعدی و طولانیتر شدن، زنجیره این رشته گسسته خواهد شد و گرههایی که بر زنجیره بعدی کار میکردند به زنجیره طولانیتر تغییر جهت خواهند داد.
چنانچه تراکنشهای جدید به همه گرهها دست نیابند، مشکلی پیش نخواهد آمد. هنگامی که تراکنشهای جدید به تعداد بیشتری از گرهها دست یافتند، به یک بلوک خواهند رسید. چنانچه گرهی بلوکی را دریافت نکند، هنگامی که بلوک بعدی را دریافت میکند، مشخص میشود که یکی از بلوکها را از دست داده است، در چنین شرایطی همواره میتواند از گرههای دیگر بلوک غایب را درخواست کند.
کارمزد
در این بخش به توضیح این مساله خواهیم پرداخت که چگونه میتوان به گرهها صحت و اعتبار بخشید.
1. نخستین تراکنش در هر بلوک، تراکنشی ویژه و پاداشی است برای پدیدآورنده آن بلوک. همین موضوع سبب پشتیبانی گرهها از شبکه میشود و از آغاز روشی را برای توزیع و به جریان انداختن بیتکوینها فراهم میآورد (به این علت که برای صدور بیتکوین هیچگونه سازمان مرکزی حضور ندارد).
2. کارمزد تراکنش: کاربران باید برای هر یک از تراکنشها مبلغ ناچیزی را بهعنوان کارمزد بپردازند.
کارمزد معیار = 00001 بیتکوین.
(وبسایت bitcoinfees.21.co ارائهکننده سریعترین و ارزانترین کارمزد تراکنش است و میتواند تاخیری را که تعداد بلوکهای تاییدکننده تراکنش دارند، پیشبینی کند. بهطور مثال، چنانچه پیشبینی شود که تراکنشها بین یک تا سه بلوک تاخیر دارند، به احتمال 90 درصد تراکنشها در این مورد ظرف حدودا 10 تا 30 دقیقه (زمان تخمینی) تایید خواهند شد.)
پس از هر 210 هزار بلوک جدید پاداش نصف میشود. نخست در سال 2009 این میزان 50 بیتکوین بود، سپس در سال 2012 به 25 بیتکوین و در سال 2016 به 5/12 بیتکوین رسید. در نتیجه، تعداد بیتکوینها محدود است و ما پیشتر 75 درصد از آنها را ایجاد کردهایم. هنگامی که تعداد مورد نیازی از بیتکوینها به جریان افتاد، انگیزهای برای ایجاد تورم وجود نخواهد داشت.
درهمسازی ریشه/ درخت مرکل
درخت درهمسازی امکان بررسی صحت و دقت محتویات و مقادیر ساختار دادههای بزرگ را به گونهای موثر و مطمئن فراهم میآورد. فرض کنید یک تاپهش مطمئن (گره ریشه درخت درهمسازی) را در نظر بگیریم، میتوان از منابع غیرمطمئن نیز به درخت درهمسازی دست یافت (زیرا درخت درهمسازی نوعی شبکه همتا به همتاست)، آنگاه میتوان درخت درهمسازی را که به آن دست یافتهایم، با استفاده از تاپهش مطمئن از نظر صحت و دقت بررسی کرد. چنانچه درخت درهمسازی که به آن دست یافتهایم، جعلی بوده یا دچار آسیب شود، منبع دیگری بررسی خواهد شد تا آنکه برنامه، درخت درهمسازی متناسب با تاپهش را بیابد.
هنگامی که مرحله انتقال زیر بلوکها پنهان میشود، میتوان تراکنشهای پیشتر انجامشده را برای افزایش فضای ذخیرهسازی دیسک نادیده گرفت، اما چگونه میتوان فضای ذخیرهسازی دیسک را بازیابی و اصلاح کرد؟
برای سهولت افزایش فضای ذخیرهسازی دیسک بدون نیاز به درهم شکستن هش بلوک، تراکنشها را بهصورت درخت مرکل درهمسازی کرده و بهطور ویژه، تنها ریشهها را (که ریشه مرکل یا ریشه هش نامیده میشوند) در درهمسازی بلوک منظور میکنیم.
از آنجا که هشهای داخلی نیازی به ذخیرهسازی ندارند، با درآوردن شاخههای درخت، بلوکهای قبلی را کمحجم میکنیم.
نکته: یک روش مهم برای تشخیص یک بلوک در زنجیره بلوکی این است که بلوک را از طریق درهمسازی سرآیند (اطلاعاتی در ابتدای یک بلوک از دادهها) آن که با دو بار اجرای سرآیند بلوک و به وسیله SHA256 محاسبه میشود، تشخیص دهیم.
سرآیند بلوکی که هیچ نوع تراکنشی در آن صورت نگرفته است، حدودا به 80 بایت نیاز دارد. چنانچه سرآیندهای بلوک در هر 10 دقیقه تولید شوند، آنگاه در هر ساعت شش سرآیند بلوک خواهیم داشت و تعداد سرآیندهای بلوک در هر سال بهصورت زیر خواهد بود. شکلهای ۱۱ و ۱۲ را ببینید.
دو نیم کردن مقادیر درونداد/ برونداد
میتوان ارزها را بهطور جداگانه بررسی کرد، اما ایجاد یک تراکنش مجزا برای هر یک سنت در فرایند نقلوانتقال وجه کاری بینتیجه و بیاثر است. برای آنکه مقادیر دروندادها و بروندادها قابلیت تقسیم و ترکیب را داشته باشند، تراکنش شامل چندین درونداد و برونداد خواهد شد.
معمولا از تراکنش قبلی بزرگتر یک درونداد واحد یا چند درونداد باقی میماند که مقادیر کوچکتری را با یکدیگر ترکیب میکند. از این رهگذر حداکثر دو برونداد باقی میماند؛ یکی برای پرداختها و دیگر آنکه در صورت ایجاد تغییر، برونداد دیگری وجود خواهد داشت که پول را به فرستنده بازمیگرداند. در شکل ۱۳ مثالی از دو تراکنشی آوردهایم که درونداد و بروندادهای متفاوتی دارند.
حریم خصوصی
در مدل سنتی معاملات بانکی بهدلیل محدود کردن دسترسی طرفین درگیر، از جمله شخص ثالث مورد اعتماد و اجازه ورود ندادن به عموم افراد، سطحی از امنیت خاطر وجود دارد.
در مقابل مدل سنتی معاملات بانکی، سیستم همتا به همتا وجود دارد؛ سیستمی که در آن با انتشار همه تراکنشها دیگر نیازی به شخص ثالث مورد اعتماد نیست و حریم شخصی افراد با ناشناس بودن کلیدهای عمومی حفظ میشود. بدین سان عموم افراد قادرند ببینند که فردی برای شخص دیگری مقداری پول ارسال کرده است، اما نمیتوانند این تراکنش را به هیچکس نسبت دهند، بدین معنا که نمیتوانند فرستنده یا دریافتکننده را شناسایی کنند. گفتنی است برای آنکه تراکنشها با مالکان عمومی ارتباط نیابند، برای هر تراکنش از جفت کلید جدیدی استفاده میکنیم.
مساله: در تراکنشهایی که دارای چندین درونداد هستند، همچنان نمیتوان از ارتباط تراکنشها با مالکان عمومی اجتناب کرد؛ زیرا این تراکنشها ضرورتا نشان میدهند که دروندادشان به همان مالک تعلق دارد. چنانچه صاحب یکی از کلیدها در معرض خطر قرار گیرد، آنگاه با اتصال کلید به تراکنشها، ممکن است همه تراکنشهایی که متعلق به اوست در معرض خطر قرار گیرند.
راهحل: یکی از جدیدترین راهحلها برای حل این مساله Coinparty است.
تایید پرداخت آسان
برای تایید پرداختها بدون نیاز به اجرای یک گره، کاربران تنها به کپیای از سرآیند بلوک طولانیترین زنجیره اثبات کار نیاز دارند. کاربران با ربط دادن تراکنش به بلوکی که مهر زمان به آن زده شده است، شاخه مرکل را به دست میآورند. کاربران خود قادر به بررسی تراکنش نیستند، اما هنگامی که تراکنش را به جایی در زنجیره ربط دادند، میتوانند ببینند که آیا گرهها آن را پذیرفتهاند و یا خیر (هنگامی که بلوکها بعدا به آن اضافه شوند).
مساله: این تایید تا زمانی قابل اعتماد است که گرههای راستگو شبکه را کنترل کنند. چنانچه مهاجمی بر شبکه بیتکوین غلبه کند، میتواند با تراکنشهای ساختگی در گرهها دخل و تصرف کند.
راهکار موجود برای حفاظت در برابر این امر ایجاد کادر هشدار از گرههای شبکه برای یافتن بلوکهای فاقد اعتبار است، ما کاربران را تشویق میکنیم که بلوک کامل و تراکنشهای هشدار دادهشده را دانلود کنند.
مشاغلی که همیشه وجه دریافت میکنند احتمالا ترجیح میدهند برای امنیت مستقل، خود گرههایشان را اجرا کنند.
تحلیل احتمال حمله
سناریوی زیر را در نظر بگیرید: مهاجمی در تلاش است زنجیرهای «ساختگی» را سریعتر از زنجیره راستگو ایجاد کند. حتی در بدترین شرایط هنگامی که مهاجمی درصدد انجام چنین کاری باشد، این کار سیستم را در معرض تغییرات دلبخواهی قرار میدهد؛ نظیر به دست آوردن پول از منبعی نامشخص یا برداشت پولی که متعلق به مهاجم نیست.
از آنجا که گرهها، تراکنشهای فاقد اعتبار را (بهعنوان پرداخت) تایید نمیکنند و گرههای راستگو بلوکی را که دربردارنده تراکنشهای فاقد اعتبار باشند، تصدیق نمیکنند، مهاجمان تنها میتوانند تراکنشهای خود را برای پس گرفتن پولی که بهتازگی خرج شده است، اصلاح کرده و تغییر دهند.
میتوان رقابت میان زنجیره راستگو و مهاجم را بهعنوان گام تصادفی دوجملهای در نظر گرفت.
در این مثال صورتمساله به شرح زیر است:
(1+): رویداد موفقیت، هنگامی که بلوکی زنجیرهای راستگو را گسترش دهد.
(1-): رویداد شکست، هنگامی که بلوکی زنجیره مهاجم را گسترش دهد.
میتوان احتمال پیشی گرفتن زنجیره متناوب ایجادشده (زنجیره مهاجم) را از زنجیره راستگو بهصورت زیر محاسبه کرد:
p = احتمال اینکه گرههای راستگو بلوک بعدی را بیابند.
q = احتمال اینکه مهاجمی بلوک بعدی را بیابد.
= احتمال اینکه مهاجمی از بلوک z عقبی پیش بیفتد.
با فرض اینکه q<p (از منظر توزیع واحد پردازش مرکزی (سیپییو)) است، هنگامی که تعداد بلوکهای z که مهاجم باید از آن پیشی بگیرد، افزایش یابد، این احتمال وجود دارد که بهطور نمایی، یعنی بهصورت خیلی سریع کاهش یابد.
پرسشی که در اینجا مطرح میشود این است: پس از انجام یک تراکنش، برای اطمینان از امنیت آن، یعنی اطمینان از اینکه فرستنده دیگر قادر به تغییر تراکنش نیست، چه مقدار باید به بلوکها اضافه شود؟
مهاجمی را با گرههایی که در مقابل او وجود دارد، در نظر بگیرید، چنانچه مهاجم خوششانس نباشد و حرکتی را بهموقع انجام ندهد و در نتیجه شود، شانس وی نیز با عقب افتادنش از بین خواهد رفت.
اکنون فرض کنید که فرستنده تراکنشی مهاجم باشد و بخواهد دریافتکننده (فردی که از او توقع پول دارد) داشته باشد و مدتی به او پول پرداخت کرده باشد و پس از مدتی پول را از او پس بگیرد. در چنین شرایطی به گیرنده (ابزاری که پول را دریافت میکند) هشدار داده خواهد شد، اما مهاجم امیدوار است که برای دادن هشدار دیر شده باشد.
برای آنکه فرستنده، زمانی برای از پیش مهیا کردن زنجیره متناوبی از بلوکها نداشته باشد و با کار پیوسته روی زنجیره با تعدادی کافی از بلوکها پیش بیفتد و شود، گیرنده جفت کلیدی جدیدی را خواهد ساخت و کلید عمومی را فقط پیش از ورود به برنامه برای فرستنده قابل دستیابی خواهد کرد.
هنگامی که تراکنش ارسال شود، مهاجم بهطور مخفیانه شروع به تهیه زنجیره موازی از ورژن اصلاحشده دیگری از تراکنش خویش میکند. از این رو، دریافتکننده تا زمان اضافهشدن تراکنش به بلوک و به هم پیوستن بلوکهای z به آن منتظر میماند.
دریافتکننده دقیقا نمیداند مهاجم تا چه حد پیشرفت کرده است، اما فرض میکنیم که بلوکهای راستگو نشانگر میانگین زمان مورد انتظار برای هر بلوک هستند.
با در نظر گرفتن فرضیههای جدید پیشرفت احتمالی مهاجم توزیع پواسون به همراه پارامتر خواهد بود، در نتیجه احتمال آنکه مهاجم همچنان بتواند پیش بیفتد، هنگامی که بلوکهای z پیش از قرار داشته باشند به صورت زیر است:
در اینجا نشانگر احتمال آن است که مهاجم همچنان بتواند در نقطه k، یعنی پس از ایجاد بلوکهای k پیش بیفتد.
با تغییر فرمول بالا برابر خواهد بود با:
مثال: برای به کار بردن یافتههای بالا بر مثالهای مختلف از کد C شکل ۱۶ استفاده میکنیم.
از تصاویر درمییابیم حتی اگر مهاجم به احتمال زیاد بتواند بلوک بعدی را بیابد، کاهش احتمال آنکه مهاجم همچنان بتواند تا کمتر از پیش بیفتد شش ماکزیمال (بیشینه نسبی) بالا طول میکشد. در نتیجه چنانچه بخواهیم از معتبر بودن تراکنشی کاملا اطمینان حاصل کنیم، حداکثر باید شش بلوک منتظر بمانیم.
تحلیل بیتکوین
گره
بیتکوین سرویسگیرنده (کلاینت)های متفاوتی دارد که عبارتند از:
۱. فول کلاینت: فول کلاینت که گره کامل نیز خوانده میشود، گرهی است که کل زنجیره (همه بلوکها و همه تراکنشها) را در خود نگه میدارد و آنها را از نظر قواعد توافق عمومی هسته بیتکوین بررسی میکند.
برخی از این قواعد به شرح زیر است:
- در زنجیره بلوک نباید هیچ تراکنشی که طی آن دو بار پول خرج شده باشد، وجود داشته باشد.
- هر بلوک تنها میتواند 5/12 بیتکوین ایجاد کند.
- برای دریافت و خرج کردن بیتکوین، تراکنشها باید دربردارنده امضاهای صحیح باشند.
- بلوکها و تراکنشها باید دربردارنده فرمت صحیح دادهها باشند.
توجه داشته باشید که اجرای یک گره کامل تنها راه استفاده از بیتکوین به گونهای غیرقابل اعتماد، یعنی بدون اطمینان از سرور و یا شخص ثالث است.
۲. وب کلاینت: صرفا کلاینتی (سرویسگیرندهای) است که برای دسترسی به شبکه بیتکوین مرورگر وب را به کار میبرد و برای در خود نگه داشتن کیف پول اشخاص ثالث مورد اعتماد از سرورهایی که به این اشخاص بدهکار هستند، استفاده میکند.
۳. کلاینت سبکوزن: سرویسگیرندهای است که کیف پول را در خود نگه میدارد، اما همچنان برای دسترسی به تراکنشها و شبکه به سرورهای بدهکار به اشخاص ثالث مورد اعتماد وابسته است.
تفاوت گره کامل و ماینر از این قرار است:
اجرای یک گره تنها به معنای برقراری ارتباط میان سایر گرهها و تبادل دادههاست و نیز بررسی اینکه آیا دادهها معتبر هستند یا خیر و در صورت معتبر بودن دادهها گذر کردن از همه گرهها تا زمانی که اطمینان حاصل آید که دادهها به دست افرادی که ممکن است هنوز آنها را دریافت نکردهاند، برسند. به مثال زیر توجه کنید:
بلوک 442194 است
سرآیند درهمسازی آن است.
ارتفاع = 442194
و دربردارنده 2381 تراکنش است
نانس آن 73626 است و درهم سازی آن است.
از سوی دیگر ماینینگ یا استخراج ارزهای دیجیتال به معنای دریافت تراکنشها، گردآوری آنها به صورت بلوک و افزودن دادههای لازم (مانند بلوک والد (منشأ)، درهمسازی ریشه و…) به آنهاست؛ یافتن اثبات کار دشوار با افزودن تصادفی میلیونها نانس ممکن است تا زمانی که هش مناسبی که به قواعد شبکه بیتکوین اعتبار میبخشد، یافت شود (گرهی که هش مناسب را بیابد، پاداشی دریافت میکند که در حال حاضر برابر است با 25 بیتکوین برای هر بلوک) و سپس انتقال آن به سایر گرهها برای توزیع بیشتر در شبکه است. گره کامل کل زنجیره بلوک را دربر گرفته و از آن استفاده میکند. این گره قادر به بررسی این مساله است که آیا تراکنشهای جدید صحیح هستند و نیز این گره میتواند به تعداد بیتکوینهایی که در حال حاضر برای هر آدرسی موجود هستند، پی ببرد. ماینرها اساسا بهدنبال اثبات کار معتبر هستند و گره کامل به بررسی آن هش میپردازد.
در شکل ۱۷، بهصورت تصویری دشواری اثبات کار را از نظر انرژی که ماینرها برای درهمسازی صرف میکنند، بیان کردهایم. این انرژی پیوسته در حال افزایش است؛ به این دلیل که دشواری کار متناسب با کل تلاشی است که در شبکه صورت میگیرد. این تطابق به این صورت است که هر 10 دقیقه تنها یک بلوک استخراج میشود (یعنی شش بلوک در هر ساعت). این بدین معناست که چنانچه تعداد ماینرها دوبرابر شود، میزان دشواری کار نیز دوچندان خواهد شد.
توزیع گرهها
تعداد برآوردشده از کاربران بیتکوین بیش از 10 میلیون است. میانگین تعداد واقعی گرههای کامل تقریبا شش هزار گره است که بهطور غیریکنواخت در جهان توزیع شدهاند (نک. به شکل 2.2). از ماه مارس 2014 تا ژوئن 2015 تعداد گرههای کامل از 10 هزار تا 13 هزار به حدود شش هزار کاهش یافته است، به این علت که سرویسگیرندهها (کلاینتها) قادر به استفاده از کیف پولهای بیتکوین هستند؛ بدون آنکه گره کامل را اجرا کنند یا بدون ایجاد mining pool که طی آن گروهی از گرههای کامل بهصورت ماینر فعالیت میکنند.
اصولا بزرگترین تعداد گرهها در آمریکا و اروپا قرار دارد. چین تنها حدود 200 گره کامل دارد (به شکل ۲۰ نگاه کنید) و میتوان گفت که دولت این کشور محدودیتهای سنگینی را بر سیستمهای مالی اعمال کرده و از سروکار داشتن آنها با بیتکوین جلوگیری کرده است. احزاب غیردولتی این کشور امکان استفاده از بیتکوین را دارند، اما از سال 2014 استفاده از آن برای موسسات مالی مانند بانکها ممنوع شده است.
قیمت بیتکوین
قیمت بیتکوین نیز همانند قیمت سایر کالاها با توجه به تقاضای خریداران و کارپردازان تعیین میشود. هنگامی که تقاضا برای بیتکوین زیاد باشد، قیمت آن افزایش مییابد، در مقابل، با کاهش تقاضا و استفاده از بیتکوین، قیمت آن نیز طبعا کاهش مییابد.
برای ثابت نگه داشتن قیمت بیتکوین، بیتکوینهای جدید با نرخ قابل پیشبینی تولید میشوند، به این معنا که تقاضا باید سطح تورم را درنظر گیرد، اما بهدلیل آنکه بیتکوین همچنان بازاری کوچک به حساب میآید، مبالغ زیادی برای بالا و پایین کردن قیمت بازار در اختیار ندارد. از این رو، قیمت بیتکوین همچنان بیثبات است. شکل 2.6 نوسان قیمت بیتکوین را از ژانویه 2009 تا دسامبر 2016 نشان میدهد.
کیف پول بیتکوین
کلید شخصی در فرمت (قالب) WIF متداولترین شیوه نمایش کلیدهای شخصی در بیتکوین است. برای کلیدهای شخصی که مربوط به کلیدهای عمومی غیرفشرده هستند، 51 نشانه وجود دارد؛ این نوع کلیدها همواره با عدد 5 یا 9 شروع میشوند. کلیدهای شخصی که به کلیدهای عمومی فشرده مربوط هستند، 52 نشانه دارند و همواره با حروف بزرگ K، L یا حرف c آغاز میشوند، بهصورت زیر:
کیف پول یک سرویسگیرنده، نرمافزاری است که دربردارنده همه آدرسهای بیتکوین و کلیدهای مخفی WIF آن است که برای ارسال، دریافت و ذخیره بیتکوینهای سرویسگیرنده مورد استفاده قرار میگیرد.
بیتکوین کیف پول (والت)های بسیار زیادی دارد؛ در اینجا به معرفی سه مورد از معروفترین کیف پولهای موبایل میپردازیم:
نکته: از 11 نوامبر 2016 میتوانید بیتکوین را از دستگاههای فروش بلیت در ایستگاههای قطار SBB خریداری کنید.
کیف پول موبایل مایسلیوم
مایسلیوم محبوبترین کیف پول بیتکوین روی گوشیهای اندروید است. شرکت مایسلیوم در سال 2008 تاسیس شد، محل استقرار این شرکت بیتکوینی که دارای 35 کارمند است، اروپا، آمریکا و آسیاست. این شرکت امکان استفاده از کیف پولهای موبایلی را برای دارندگان گوشیهای اندروید و آیفون فراهم آورده است.
کیف پول موبایل گرینادرس
Green Adress نوعی کیف پول بیتکوین است که دارای امکان چندامضایی است و بهصورت اینترنتی و نیز روی دسکتاپ، گوشیهای اندروید و آیاواس (یک سیستمعامل همراه ساخت شرکت اپل) قابل استفاده است. در مثال بعدی اپلیکیشن اندروید Schildbach را بهطور ویژه معرفی خواهیم کرد.
مثال کیف پول Schildbach / کیف پول بیتکوین
کیف پول Schildbachکه تحت نام کیف پول بیتکوین شناخته شده است، نخستین کیف پول بیتکوین برای موبایل و یکی از مطمئنترین اپلیکیشنها است؛ به این دلیل که از طریق SPV (تایید پرداخت آسان) بهطور مستقیم به شبکه بیتکوین وصل میشود. این کیف پول را میتوان بهصورت رایگان از google store دانلود کرد. برای تمهیدات امنیتی گذرواژه و PIN را اضافه کرده و در جایی مخفی آن را ذخیره میکنیم. آنگاه به ما آدرسی عمومی داده میشود (شکل 2.8) که پس از هر بار ارسال یا دریافت پول تغییر مییابد. هنگامی که فرد «الف» قصد فرستادن بیتکوین را به فرد «ب» داشته باشد، ابتدا فرد «الف» آدرس عمومی «ب» را مینویسد یا کد QR (یک بارکد دوبعدی که میتوان آن را با پیوندهای QR، تلفن همراه دوربیندار و تلفن هوشمند بازخوانی کرد) آن را اسکن کرده و میزان کارمزد آن را برای تراکنش مورد نظر تعیین میکند. فرد «الف» باید اطمینان یابد که آدرس عمومی فرد «ب» صحیح است، در غیر این صورت بهدلیل برگشتناپذیر بودن تراکنشها بیتکوینها از دست میروند.
اکنون اگر بر دکمه run through کلیک کنید، مستقیما به آدرسhttps://www.blockexplorer.com/ خواهید رفت؛ جایی که در آن میتوانید تمام اطلاعات در مورد تراکنش انجامشده را بیابید. نک. به شکل 2.9 و 2.10.
در پایان باید گفت بیتکوین نخستین ارزرمز غیرمتمرکزی است که مکانیسم زنجیره بلوکی (بلاکچین) را به کار میبرد. بیتکوین یک فناوری نوظهور و در حال پیشرفت است. تصور نمیکنم بیتکوین قادر به تغییر سیستمهای مالی باشد، اما مکانیسم زنجیره بلوکی در بسیاری از عرصهها مانند حوزه مراقبتهای بهداشتی قابل استفاده و سودمند است. از این فناوری در سالهای بعد استفاده نخواهد شد؛ زیرا بهوضوح گواه آن است که آینده غیرمتمرکز خواهد بود.