بیت کوین به عنوان اولین ارز رمزنگاری شده و پرچمدار صنعت کریپتو، همچنان مورد توجه افراد زیادی در دنیا قرار دارد و جدا از علاقه مردم به خرید و فروش بیت کوین و کسب سود، توسعه دهندگان و کدنویسان زیادی در سرتاسر دنیا روی شبکه این ارز کار میکنند. پروژههای زیادی برای بهبود بلاکچین بیت کوین راه اندازی شده و حتی رقبای جدی و قوی در بازار شروع به رشد کردند. اما سوال اینجاست که اولین شخصی که این ایده به ذهنش رسید چه نقشه و برنامه ای برای هدف خود داشته است؟ در این مقاله، خلاصه وایت پیپر بیت کوین را که شامل اهداف و نقشهراه این ارز است را ترجمه کردیم و این وایت پیپر را در اختیار فارسیزبانان قرار دادهایم. با میهن بلاکچین همراه باشید.
وایت پیپر بیت کوین
یک نسخه کاملا همتا به همتا از پول نقد دیجیتال، به پرداختهای الکترونیکی و آنلاین امکان میدهد تا بدون آنکه از سازمانهای مالی عبور کنند، تراکنشها را مستقیما بین طرفین ارسال کنند. امضاهای دیجیتالی بخشی از این راهکار را فراهم میسازند؛ اما اگر همچنان به شخص ثالث مورد اعتماد نیاز باشد تا از حمله دوبار خرج کردن (Double Spending) جلوگیری شود، مزایای اصلی این راهکار نیز از بین میرود. ما راهکاری برای مشکل دوبار خرج کردن ارائه میدهیم که از یک شبکه همتا به همتا استفاده میکند. این شبکه، بر روی تراکنشها برچسب زمانی (TimeStamp) میگذارد؛ این امر با هشینگ تراکنشها در زنجیره فعال گواه اثبات کار و مبتنی بر هش صورت میپذیرد و سابقهای ایجاد میکند که بدون انجام مجدد گواه اثبات کار، غیرقابل تغییر است. طولانیترین زنجیره نه تنها به عنوان گواه توالی رویدادها عمل میکند، بلکه گواه و اثباتی از جانب بزرگترین مخزن CPU (بزرگترین قدرت محاسباتی) است. تا زمانی که بخش عمدهای از توان CPU تحت کنترل نودهایی (به کامپیوترهایی که به شبکه بلاکچینی متصل هستند نود گفته میشود) باشد که در حمله به شبکه مشارکت نمیکنند، این نودها میتوانند طولانیترین زنجیره را ایجاد کنند و از مهاجمان پیشی بگیرند. خودِ شبکه همتا به همتا به ساختار یکنواخت نیاز دارد. پیامها بر اساس بیشترین تلاش منتشر میشوند و نودها میتوانند به صلاحدید خود از شبکه خارج یا به آن ملحق شوند و طولانیترین زنجیره گواه اثبات کار را به عنوان گواه و اثبات اتفاقاتی که در غیاب آنها رخ داده، بپذیرند.
مقدمه
میتوان گفت که امور تجاری و مالی بر بستر اینترنت، منحصرا متکی بر سازمانهای مالی است که به عنوان نهادهای شخص ثالث مورد اطمینان برای پردازش پرداختهای الکترونیکی عمل میکنند. اگرچه این سیستم برای اکثر تراکنشها عملکرد خوبی دارد، اما همچنان دارای نقص و ضعفهای موجود در مدل مبتنی بر اعتماد است.
تراکنشهایی کاملا غیرقابل برگشت امکانپذیر نیستند؛ زیرا سازمانهای مالی نمیتوانند از دخالت واسطهها جلوگیری کنند. نتیجه وجود این واسطهها، افزایش هزینه تراکنشها، محدودسازی و از بین رفتن امکان انجام تراکنشهای کوچک و عدم توانایی انجام تراکنشهای غیرقابل برگشت برای سرویسهای برگشتناپذیر است. با توجه به برگشتپذیر بودن تراکنشها، نیاز به اعتماد افزایش مییابد. فروشندگان باید درباره مشتریان خود محتاط باشند و از آنها اطلاعات بیشتری را درخواست کنند که در شرایط دیگر، نیازی به این اطلاعات وجود ندارد. درصدی از کلاهبرداریها نیز اجتنابناپذیر است. با استفاده از ارزهای واقعی و فیزیکی میتوان از این هزینهها و شرایط نامطمئن پرداختها و تراکنشها اجتناب کرد؛ اما هیچگونه مکانیزم مشخصی وجود ندارد که بدون نهاد مورد اطمینان و معتبر بتوان به انجام تراکنش در یک کانال ارتباطی پرداخت.
در اینجا به چیزی که نیاز است، یک سیستم پرداخت الکترونیکی مبتنی بر گواه رمزنگاری به جای اعتماد است. این سیستم به دو طرف تراکنش امکان میدهد که بدون نیاز به نهاد شخص ثالث مورد اطمینان، مستقیما با یکدیگر تراکنش انجام دهند. تراکنشهایی که از لحاظ محاسباتی و پردازشی غیرقابل برگشت باشند، از فروشندگان در مقابل کلاهبرداریها محافظت میکنند و به راحتی میتوان مکانیزمهای رایج اسکرو (Escrow یا ضمانتنامهای) را برای محافظت از خریداران پیادهسازی کرد. در این مقاله، راهکاری برای مشکل دوبار خرج کردن ارائه میشود که از سرور برچسب زمانی توزیعشده و همتا به همتا استفاده میکند، تا گواه محاسباتی از ترتیب زمانی تراکنشها را ایجاد کند (تراکنشها به ترتیب قرار گیرند). تا زمانی که نودهای درستکار و سالم نسبت به نودهای بدکار، بخش بیشتری از توان CPU را تحت کنترل خود داشته باشند، این سیستم نیز ایمن باقی میماند.
تراکنشها
ما یک کوین الکترونیکی را به عنوان زنجیرهای از امضاهای دیجیتالی تعریف میکنیم. هر دارنده، کوین خود را با امضای دیجیتالی هش تراکنش قبلی و کلید عمومی دارنده بعدی و افزودن این موارد به انتهای کوین، کوین مدنظر را به فرد بعدی انتقال میدهد. دریافتکننده کوین میتواند امضاها را بررسی و تایید کند تا بدین ترتیب، زنجیره مالکیتها نیز تایید شود.
مشکلی که وجود دارد، این است که دریافتکننده نمیتواند این موضوع را تایید کند که آیا یکی از دارندگان کوین به دوبار خرج کردن کوین مدنظر پرداخته است یا خیر. راهکار رایج برای این موضوع، معرفی مسئول مرکزی مورد اطمینان (Trusted Central Authority) یا مینت (Mint) است (در شبکه بیت کوین، مسئول مرکزی مورد اعتماد با نام مینت شناخته میشود)، که به بررسی تمام تراکنشها و احتمال وجود دوبار خرج کردن کوین میپردازد. پس از هر تراکنش، کوین مذکور باید به مینت برگردد تا کوین جدیدی صادر شود و فقط میتوان به کوینهایی که مستقیما از جانب مینت صادر شدهاند اطمینان کرد که دوبار خرج نشدهاند. مشکل این راهکار این است که کنترل کل سیستم پولی در دستان شرکتی است که مینت را اداره میکند؛ زیرا تمام تراکنشها از طریق این شرکت انجام میشوند. در نتیجه، شرایطی کاملا مشابه با بانکها به وجود میآید.
ما به روشی برای دریافتکننده نیاز داریم، که متوجه شود دارندگان قبلی، هیچ تراکنش قبلی را امضا نکردهاند. در همین راستا، اولین تراکنش، تراکنشی است که به آن توجه میکنیم؛ بنابراین تلاشها و اقدامات پس از آن برای دوبار خرج کردن دیگر اهمیتی ندارد. تنها روش برای تایید عدم حضور تراکنش، این است که از تمام تراکنشها آگاه باشیم. در مدل مبتنی بر مینت، خودِ Mint از تمام تراکنشها است و تصمیم میگیرد که کدام تراکنش به عنوان تراکنش اول در نظر گرفته شود. به منظور دستیابی به این شرایط بدون حضور نهاد شخص ثالث قابل اعتماد، تراکنشها باید به طور عمومی اعلام شوند. همچنین به سیستمی نیاز داریم که در آن، شرکتکنندگان در خصوص سابقهای واحد از ترتیب انجام تراکنشها توافق کرده باشند. دریافتکننده به گواه و اثباتی نیاز دارد که بداند در زمان هر تراکنش، اکثر نودها توافق کرده باشند که آن تراکنش صورت گرفته است.
سرور برچسب زمانی
راهکاری که ارائه دادهایم با یک سرور برچسب زمانی (Timestamp Server) آغاز میشود. عملکرد سرور برچسب زمانی اینگونه است که هش بلاک متشکل از آیتمهایی که برچسب زمانی بر روی آنها قرار داده میشود را انتخاب کرده و آن هش را به طور عمومی منتشر میکند. تایم استمپ اثبات میکند که دادهها باید در زمان انجام تراکنش وجود داشته باشند تا وارد هش شوند. هر برچسب زمانی شامل برچسب زمانی قبلی در هش خود است. بدین ترتیب، زنجیرهای شکل میگیرد که هر برچسب زمانی از Timestamp قبل از خود حمایت میکند.
گواه اثبات کار
به منظور پیادهسازی یک سرور برچسب زمانی توزیعشده به صورت همتا به همتا، ما باید از سیستم گواه اثبات کاری مشابه با هشکش (Hashcash) آدام بک (Adam Back) استفاده کنیم. گواه اثبات کار شامل اسکن کردن مقداری است که پس از هش شدن (برای مثال با SHA-256)، هش موردنظر یا تعدادی از بیتهای صفر آغاز شود. میانگین کار موردنیاز به تعداد بیتهای صفر موردنیاز، تصاعدی است و میتوان با اجرای یک هش آن را بررسی و تایید کرد.
در شبکه تایم استمپ ما، گواه اثبات کار را با افزودن نانس (Nonce) به بلاک اجرا میکنیم. این عمل تا آنجایی ادامه مییابد که مقداری که شامل بیتهای صفر مورد نیاز برای هش بلاک باشد، به دست آید. به محض آنکه توان CPU تا حد مورد نیاز گواه اثبات کار افزایش یابد، بلاک مذکور غیرقابل تغییر میشود؛ مگر این که تمام این فرایند مجددا تکرار شود. از آنجایی که بلاکهای بعدی به بلاکهای قبلی متصل هستند، تغییر دادن بلاک شامل تغییر تمام بلاکها است.
گواه اثبات کار همچنین مشکل موجود در تصمیمگیری مبتنی بر اکثریت را برطرف کند. اگر اکثریت بر اساس مدل «هر آدرس IP دارای یک حق رای» باشد، ممکن است یک فرد با در اختیار داشتن چندین IP، از این موضوع به نفع خود بهره ببرد. گواه اثبات کار در اصل بر اساس “هر CPU دارای یک حق رای” است. تصمیم اکثریت توسط طولانیترین زنجیرهای تعیین میشود، که بیشترین اثبات کار را به خود اختصاص داده است. اگر اکثریت توان CPU تحت کنترل نودهای درستکار و سالم باشد، زنجیره سالم سریعتر رشد میکند و از زنجیرههای رقیب خود پیشی میگیرد. برای اصلاح و تغییر بلاک قبلی، مهاجم باید گواه اثبات کار بلاک مدنظر و تمام بلاکهای بعدی را تغییر دهد و سپس از کار نودهای درستکار پیشی بگیرد. در ادامه نشان خواهیم داد که با اضافه شدن هر بلاک بعدی، احتمال حمله مهاجم کندتر، به طور تصاعدی کاهش مییابد.
به منظور هماهنگی و جبران افزایش سرعت سختافزارها و علاقه مختلف نودها در طول زمان، سختی گواه اثبات کار توسط میانگین متحرکی کنترل میشود، که میانگین تعداد تولید بلاک در هر ساعت را هدف خود قرار میدهد؛ اگر بلاکها با سرعت بسیار زیادی ایجاد شوند، سختی گواه اثبات کار افزایش مییابد.
شبکه
مراحل اجرای شبکه همتا به همتا عبارتند از:
۱- تراکنشهای جدید به تمام نودها مخابره میشود.
۲- هر نود، تراکنشهای جدید را در یک بلاک جمعآوری میکند.
۳- هر نود روی یافتن اثبات کار دشوار برای بلاک خود کار میکند.
۴- پس از آنکه نود، گواه اثبات کار مدنظر خود را پیدا کرد، آن بلاک را به تمام نودها مخابره و منتشر میکند.
۵- نودها فقط در صورتی بلاک مذکور را میپذیرند، که تراکنشهای موجود در آن معتبر باشند و قبل از آن، خرج نشده باشند.
۶- نودها با تلاش برای ایجاد بلاک بعدی در زنجیره، موافقت خود در خصوص پذیرش بلاک را اعلام میکنند و از هش بلاک پذیرفتهشده به عنوان هش بلاک قبلی استفاده میکنند.
نودها همواره طولانیترین زنجیره را به عنوان زنجیره صحیح و پذیرفتهشده در نظر میگیرند و روی گسترش آن کار میکنند؛ اگر دو نود به طور همزمان نسخههای متفاوتی از بلاک بعدی را منتشر کنند، ممکن است بعضی از نودها یکی از این دو بلاک را انتخاب کنند و نودهای دیگر نیز بلاک دیگر را به عنوان بلاک صحیح در نظر بگیرند. در این حالت، نودها روی اولین بلاکی که دریافت کردهاند کار میکنند؛ اما برای احتیاط، زنجیره دیگر را نیز ذخیره میکنند تا در صورتی که زنجیره دیگر طولانیتر شد، از آن استفاده کنند. این شرایط هنگامی برطرف میشود که گواه اثبات کار بعدی پیدا شود و یکی از زنجیرهها طولانیتر شود. در این صورت، نودهایی که بر روی زنجیره دیگر کار میکردند، به زنجیره طولانیتر منتقل میشوند.
لزوما نیازی نیست که تراکنشهای جدیدی که منتشر میشوند، به دست تمام نودها برسند؛ تا زمانی که تراکنشهای جدید در اختیار اکثریت نودها قرار بگیرد، میتوان آنها را در بلاک قرار داد. همچنین بلاکهای منتشرشده میتوانند حاوی پیام نیز باشند. اگر یک نود بلاکی را دریافت نکند، هنگامی که بلاک بعدی را دریافت کرد، بلاک قبلی را درخواست میکند و متوجه میشود که یک بلاک را از دست داده است.
پاداش و مشوق
تراکنش اول در یک بلاک، تراکنش ویژهای است که آغازگر کوین جدیدی متعلق به سازنده بلاک است. این موضوع، مشوقی برای نودها محسوب میشود تا از شبکه حمایت کنند و روشی فراهم میسازد که توزیع کوینها به موجودی در گردش را امکانپذیر سازد؛ زیرا هیچگونه نهاد و مسئول مرکزی برای صدور کوینها وجود ندارد. افزودن مستمر و تدریجی مقدار ثابتی از کوینهای جدید، مشابه با استخراجکنندگان طلا است؛ زیرا معدنچیان در صدد گسترش منابع و معادن جدید هستند تا موجودی طلای در گردش را افزایش دهند. در این مورد، برق و زمان کارکرد CPU، منابعی محسوب میشوند که گسترش مییابند.
مشوقها میتوانند به صورت کارمزد تراکنشها نیز باشند. اگر مقدار خروجی تراکنش کمتر از مقدار ورودی باشد، اختلاف ورودی و خروجی در واقع کارمزد تراکنش است، که به مقدار پاداش بلاک شامل تراکنش افزوده میشود. پس از آنکه مقدار از پیش تعیینشدهای از کوینها به طور کل استخراج شوند و به موجودی در گردش وارد شوند، پاداش بلاکها کاملا به صورت کارمزد تراکنشها و بدون تورم خواهد شد.
این پاداش میتواند نودها را تشویق کند که بهعنوان نود درستکار و سالم به فعالیت خود ادامه دهند. اگر حملهکننده بتواند توان پردازشی بیشتری نسبت به تمام نودهای درستکار بهدست آورد، میتواند از توان پردازشی خود، برای کلاهبرداری از مردم از طریق سرقت و بازگرداندن پرداخت خود استفاده کند و یا از این توان پردازشی برای تولید کوینهای جدید بهره ببرد. این فرد سرانجام متوجه میشود که اگر طبق قوانین عمل کند، سود بیشتری کسب خواهد کرد؛ زیرا این قوانین به نفع او خواهند بود و بدین ترتیب، کوینهای بیشتری نسبت به مجموع کوینهای نودهای دیگر به دست میآورد.
اختصاص فضای ذخیرهسازی
پس از آن که تعداد بلاکهای کافی روی تراکنش آخر قرار گرفتند (تعداد تاییدیهها به حد کافی رسید)، میتوان تراکنشهای قبلی را در هارددیسک ذخیرهسازی کرد. به منظور تسهیل این موضوع بدون آنکه هش بلاک شکسته شود، تراکنشها در درخت مرکل (Merkle Tree) هش میشوند، به طوری که فقط ریشه درخت مرکل در هش بلاک وجود داشته باشد. با بریدن شاخههای درخت، میتوان بلاکهای قدیمی را فشردهسازی کرد. نیازی به ذخیرهسازی هشهای داخلی وجود ندارد.
حجم هدر بلاک بدون تراکنش تقریبا ۸۰ بایت است. اگر فرض کنیم که هر ۱۰ دقیقه یک بلاک تولید میشود، سالانه ۴.۲ مگابایت فضا برای ذخیرهسازی نیاز است.
۸۰ بایت * ۶ * ۲۴ * ۳۶۵ = ۴.۲ مگابایت
با توجه به اینکه سیستمهای رایانهای در سال ۲۰۰۸ معمولا دارای ۲ گیگابایت رم هستند و قانون مور (Moore’s Law) رشد کنونی ۱.۲ گیگابایت در سال را پیشبینی میکند، نباید مشکلی از بابت فضای ذخیرهسازی وجود داشته باشد. (قانون مور مفهومی برای “مشاهده” است که در سال ۱۹۶۵ توسط گوردن مور (Gordon Moore) بنیانگذار شرکت Intel ابداع شده است. این مفهوم به این معنی است که تعداد ترانزیستورهای داخل ICها، هر ۲ سال دو برابر میشوند؛ یعنی هر دو سال، تعداد قطعاتی که در تجهیزات الکترونیکی بهکار میروند، بیشتر میشوند. در این وایت پیپر، قانون مور به رشد و قدرتمندتر شدن قطعات کامپیوتری در مدت کوتاه اشاره میکند).
تاییدیه سادهسازی شده تراکنشها
تایید پرداختها و تراکنشها بدون اجرای یک نود کامل امکانپذیر است؛ یک کاربر فقط باید نسخهای از هدرهای بلاک طولانیترین زنجیره گواه اثبات کار را نزد خود نگه داشته باشد. کاربر مذکور میتواند با تحقیق از نودهای شبکه، مطمئن شود که طولانیترین زنجیره را در اختیار دارد و شاخه مرکلی را نزد خود نگه دارد که تراکنش را به بلاک دارای برچسب زمانی متصل میکند. خود این کاربر نمیتواند به بررسی تراکنشها بپردازد؛ بلکه با ارتباط دادن تراکنش با جایگاهی در زنجیره و سپس موافقت یا عدم موافقت نود شبکه با آن، میتواند تراکنش را بررسی و تایید کند.
بدین ترتیب، تا زمانی که نودهای درستکار و سالم شبکه را تحت کنترل داشته باشند، تایید تراکنش را میتوان معتبر در نظر گرفت؛ اما اگر شبکه تحت کنترل مهاجم باشد، تایید تراکنش به شدت آسیبپذیر میشود. اگرچه نودهای شبکه میتوانند به تایید تراکنشها بپردازند، اما تراکنش ساختگی حملهکننده میتواند این روش ساده سادهسازی شده را فریب دهد. یکی از استراتژیها برای محافظت از شبکه در مقابل این موضوع، پذیرش هشدارها از جانب نودهای شبکه هنگام شناسایی بلاک نامعتبری است، که از نرمافزار کاربر میخواهد تا بلاک کامل را دانلود کند و تراکنشهای هشدار داده شده را تایید کند.
ترکیب و جداسازی مقادیر
اگرچه مدیریت کوینها بهصورت جداگانه امکانپذیر است، اما ایجاد یک تراکنش جداگانه برای انتقال هر سِنت منطقی و مناسب نیست. به منظور امکانپذیر ساختن ترکیب و جداسازی مقادیر، تراکنشها شامل چندین ورودی و خروجی هستند؛ معمولا یک ورودی از تراکنش بزرگتر قبلی یا چندین ورودی ترکیب شده از چند مقدار کوچکتر و حداکثر دو خروجی وجود دارد، که یک خروجی برای پرداخت و دیگری برای بازگرداندن مقدار باقیمانده تراکنش (اگر باقیمانده وجود داشته باشد) به ارسالکننده به کار میروند.
این نکته قابل ذکر است که در شرایطی که یک تراکنش به چندین تراکنش دیگر و آن چند تراکنش دیگر نیز به تعداد بسیار زیادی از تراکنشهای دیگر وابستهاند، مشکلی وجود ندارد؛ هرگز به داشتن نسخه جداگانهای از سابقه تراکنشها نیازی نیست.
حریم خصوصی
مدل بانکداری سنتی، با محدودسازی دسترسی به اطلاعات برای طرفین تراکنش و اشخاص ثالث مورد اطمینان، سطحی از حریم خصوصی را امکانپذیر میسازد. ضرورت اعلام عمومی تمام تراکنشها، مانع از انجام این روش میشود؛ اما همچنان با شکستن جریان اطلاعات به روش دیگر میتوان حریم خصوصی را حفظ کرد. این روش، ناشناس نگه داشتن کلیدهای عمومی است. عموم افراد میتوانند ارسال تراکنش افراد به یکدیگر را مشاهده کنند، اما اطلاعاتی وجود ندارد که تراکنش موردنظر را به افراد مرتبط کند. این موضوع مشابه با سطح اطلاعات منتشر شده توسط بازار بورس است که در آن، زمان و حجم معاملات هر معامله به صورت عمومی اعلام میشود، اما طرفین معامله مشخص نمیشوند.
به عنوان یک لایه و دیوار امنیتی اضافی، باید از جفت کلید جدیدی برای هر تراکنش استفاده کرد، تا ارتباط تراکنش با ارسال کننده فاش نشود. فاش شدن بعضی از ارتباطات با تراکنشهایی که چند ورودی دارند اجتنابناپذیر است؛ در این تراکنشها باید مشخص شود که ورودیها متعلق به یک دارنده یکسان هستند. خطر موجود در اینجا این است که اگر هویت دارنده کلید مشخص شود، ارتباط موجود میتواند سایر تراکنشهای متعلق به این دارنده کلید را افشا کند.
محاسبات
ما شرایطی را در نظر میگیریم که در آن، مهاجم سعی میکند زنجیره جایگزین دیگری ایجاد کند که سریعتر از زنجیره سالم اصلی است. حتی در صورت محقق شدن این شرایط، باز هم ایجاد تغییرات دلخواه در سیستم امکانپذیر نیست؛ این تغییرات میتوانند شامل ایجاد ارزش از هیچ، یا برداشت پولی باشد که متعلق به حملهکننده نیست. نودها تراکنشهای نامعتبر را به عنوان پرداخت نمیپذیرند و نودهای درستکار هرگز بلاکهای شامل این تراکنشها را نمیپذیرند. مهاجم صرفا میتواند سعی کند یکی از تراکنشهای خود را تغییر دهد تا پولی که اخیرا خرج کرده است را برگرداند.
رقابت زنجیره سالم و زنجیره متعلق به حملهکننده را میتوان به عنوان گام تصادفی دوجملهای (Binomial Random Walk) در نظر گرفت (در ریاضیات یک گام تصادفی، فرآیند رندومی است که مسیری را توصیف می کند، که متشکل از مراحل متوالی تصادفی در فضای ریاضی است). موفقیت هنگامی رخ میدهد که زنجیره سالم توسط یک بلاک گسترش یابد؛ فاصله زنجیره سالم از زنجیره مهاجم، باید یک بلاک بیشتر باشد. شکست هنگامی رخ میدهد که زنجیره حملهکننده، یک بلاک نسبت به زنجیره سالم بیشتر باشد.
احتمال این که حملهکننده از زنجیره سالم پیشی بگیرد، همانند مشکل «پاکباختگی قمارباز» (Gambler’s Ruin) است. قماربازی با اعتبار نامحدود را در نظر بگیرید که از چند دست عقبتر بازی را شروع میکند و تعداد نامحدودی دست بازی میکند تا به شرایط برابر دست یابد. ما میتوانیم احتمال رسیدن به شرایط برابر را محاسبه کنیم، که همان احتمال رسیدن حملهکننده به زنجیره سالم است. فرمول محاسبه این موضوع به شرح زیر است:
- احتمال یافتن بلاک بعدی توسط نود درستکار برابر است با p
- احتمال یافتن بلاک بعدی توسط حملهکننده برابر است با q
- احتمال رسیدن مهاجم به نود درستکار از z بلاک قبل، برابر است با qz
با توجه به فرض ما که p>q است، با این که تعداد بلاکهای حملهکننده افزایش مییابد (تا به بلاکهای زنجیره سالم برسد)، احتمال حمله به صورت تصاعدی کاهش مییابد. با توجه به اینکه شرایط به ضرر مهاجم است، اگر او زودتر اقدام نکند، شانس او برای رسیدن به نود درستکار بسیار کم میشود و فاصله زیادی بین آنها ایجاد خواهد شد.
اکنون این شرایط را در نظر میگیریم که دریافتکننده تراکنش جدید، چه مقدار باید صبر کند تا مطمئن شود ارسالکننده نمیتواند تراکنش را تغییر دهد. فرض میکنیم که ارسالکننده در واقع حملهکنندهای است که میخواهد دریافتکننده باور کند مدتی است که به او پرداخت انجام شده و سپس، شرایط را به صورتی تغییر میدهد تا پرداختهای انجامشده به خود ارسالکننده بازپرداخت شود. هنگامی که این موضوع رخ میدهد، به دریافتکننده هشدار داده میشود؛ اما ارسالکننده امیدوار است که برای هشدار دادن دیر شده باشد.
دریافتکننده یک جفت کلید جدید ایجاد میکند و اندکی قبل از امضا کردن، کلید عمومی را به ارسالکننده میدهد. این موضوع، از آمادهسازی زودتر زنجیره بلاکها توسط ارسالکننده و جلو افتادن او جلوگیری میکند. پس از ارسال تراکنش، ارسالکننده ناسالم به طور مخفیانه روی زنجیره موازی، که شامل نسخه جایگزین تراکنش خود اوست، کار میکند.
دریافتکننده صبر میکند تا تراکنش به بلاک افزوده شود و به تعداد z بلاک پس از آن پیوند بخورد. دریافتکننده نمیداند که مهاجم تا چه حد پیشروی کرده است؛ اما با فرض بر اینکه همان میانگین زمان مورد انتظار نیاز است تا بلاکهای سالم و درستکار ایجاد شوند، پیشروی حملهکننده برابر با توزیع پواسون (Poisson distribution) با مقدار مورد انتظار است (در فرضیه آمار و احتمالات، توزیع پواسون یک توزیع احتمال گسسته است که احتمال وقوع تعداد معینی از رویدادها را در بازه زمانی یا مکانی ثابت (در صورتی که این رویدادها با یک نرخ میانگین ثابت شناخته شده و مستقل از زمان آخرین رویداد رخ دهد) بیان میکند).
برای به دست آوردن این احتمال که مهاجم هنوز میتواند به نود درستکار برسد، ما تراکم پواسون برای هر مقدار از پیشروی حملهکننده را، در احتمال رسیدن به نود درستکار از همان نقطه ضرب میکنیم:
فرمول را تغییر میدهیم تا از مجموع دنباله بینهایت توزیع اجتناب شود:
سپس به کد C تبدیل میکنیم:
با اجرای چند مورد از نتایج، میتوانیم مشاهده کنیم که احتمال مذکور با z به طور تصاعدی کاهش مییابد.
برای مقادیر P کمتر از ۰.۱٪ محاسبه میکنیم.
نتیجهگیری وایت پیپر بیت کوین
ما سیستمی برای تراکنشهای الکترونیکی بدون نیاز به اعتماد معرفی کردیم. در ابتدا، چارچوب معمول برای ایجاد کوین از امضاهای دیجیتالی را بیان کردیم، که کنترل مالکیت بسیار خوبی را فراهم میسازد؛ اما بدون داشتن روشی برای جلوگیری از دوبار خرج کردن، ناقص به نظر میرسد. به منظور برطرف کردن این موضوع، شبکهای همتا به همتا را معرفی کردیم که از گواه اثبات کار برای ثبت سابقه عمومی تراکنشها استفاده میکند؛ شبکهای که اگر نودهای درستکار بخش عمدهای از توان پردازشی را در اختیار داشته باشند، تغییر سوابق تراکنشها برای حملهکننده غیرممکن میشود.
این شبکه با وجود سادگی بدون ساختار خود، قدرتمند است. نودها همگی به صورت همزمان و با هماهنگی بسیار کم کار میکنند. از آنجایی که پیامها به مکان مشخصی هدایت نمیشوند و فقط بر اساس “انجام بیشترین تلاش” کار میکنند، نیازی به شناسایی شدن نودها وجود ندارد. نودها میتوانند با خواست خود از شبکه خارج شده و دوباره به آن ملحق شوند و زنجیره گواه اثبات کار را به عنوان اثباتی از اتفاقاتی که در غیاب آنها رخ داده است، بپذیرند. نودها با توان پردازشی خود رای میدهند و با تلاش برای گسترش بلاکها، پذیرش بلاکهای معتبر را اعلام میکنند و با عدم کار روی بلاکهای نامعتبر، این نوع بلاکها را رد میکنند؛ با این مکانیزم اجماع، میتوان هرگونه مشوق یا قانون ضروری را اعمال کرد.
پرسش و پاسخ (FAQ)
- وایت پیپر بیت کوین چیست؟
ساتوشی ناکاموتو خالق بیت کوین، در سال ۲۰۰۸ مقالهای را در فرومهای رمزنگاری منتشر کرد، که با نام وایت پیپر بیت کوین شناخته شد. در این وایت پیپر به معرفی بیت کوین، شبکه بلاکچین و توضیحات فنی درباره نحوه تولید کوینهای جدید و نقش ماینرها در حفظ امنیت شبکه بلاکچین بیت کوین پرداخته شده است.
- وایت پیپر بیت کوین فارسی را از کجا مطالعه کنم؟
ما در میهن بلاکچین، خلاصه وایت پیپر بیت کوین که در سال ۲۰۰۸ نوشته شده را به فارسی ترجمه کردهایم.
- وایت پیپر بیت کوین pdf را از کجا دانلود کنم؟
میتوانید در سایت Bitcoin.org گزینه دانلود وایت پیپر بیت کوین را ببینید و وایت پیپر بیت کوین زبان اصلی را دانلود کنید. البته خلاصه این نسخه را ما در میهن بلاکچین به فارسی برگرداندهایم.
جمعبندی
در این مقاله، تیم میهن بلاکچین خلاصه وایت پیپر بیت کوین را ترجمه کرده است. در این Whitepaper، با بلاکچین بیت کوین و نحوه عملکرد آن بهطور خلاصه اما جامع، آشنا شدید. در این وایت پیپر درباره معرفی شبکه همتا به همتای بیت کوین، نحوه انجام تراکنشها، برچسبهای زمانی یا Timestamp، گواه اثبات کار، شبکه بیتکوین و عملکرد نودها، مشوقها، ذخیره تراکنشها در فضای دیسک و درخت مرکل، سیستم تایید تراکنشهای سادهسازی شده، ترکیب و جداسازی ارزشها (ورودیها و خروجیهای تراکنشها) و حریم خصوصی صحبت شده است. نظر شما درباره بلاک چین و بیت کوین چیست؟ آیا این شبکه در تحول شبکههای بانکی سنتی موفق عمل کرده است یا خیر؟