چکیده: یک نسخه همتا به همتا از پول نقد الکترونیکی، این امکان را برای افراد ایجاد میکند که پرداختهای خود را به صورت مستقیم و بدون نیاز به واسطهای مانند موسسات مالی انجام دهند. امضاهای دیجیتال تا حدی دستیابی به این هدف را میسر میکنند؛ اما اگر برای انجام پرداختها توسط امضاهای دیجیتال نیز نیاز به یک واسطه برای جلوگیری از خرج چندباره داراییها باشد، این یعنی هنوز به هدف اصلی خود دست نیافتهایم. ما با استفاده از یک شبکه همتا به همتا، راهکاری را برای جلوگیری از اتفاقاتی مانند خرج مجدد داراییها ارائه میکنیم. این شبکه، اطلاعات زمانی تراکنشها را ثبت کرده و آنها را با استفاده از توابع هش، رمزنگاری مینماید. این هش سپس در زنجیرهای از اطلاعات هش شده و به هم پیوسته قرار گرفته و به همین دلیل، تغییر اطلاعات ممکن نخواهد بود. در این شبکه، اولویت همیشه با زنجیره بلندتر است؛ چرا که زنجیره بلندتر اطلاعات تراکنشهای بیشتری را در خود جای داده و همچنین نشاندهنده این است که توان پردازشی بیشتری برای ساخت آن صرف شده است. هر چه توان پردازشی مصرف شده برای ساخت یک زنجیره بیشتر باشد، امنیت آن زنجیره نیز بالاتر است و حمله به آن سختتر خواهد بود. با فرض این که بیشترین توان پردازشی چنین شبکهای در دست نودها یا گرههای درستکار باشد، میتوانیم مطمئن باشیم که این نودها طولانیترین زنجیره را تشکیل داده و از شبکه در برابر حملات محافظت میکنند. با این وجود، ساختار خود این شبکه، ملزومات اندکی دارد. پیامها در این شبکه در صورت دسترسی به اینترنت به صورت عمومی ارسال شده و نودها میتوانند در هر زمان دلخواه، از شبکه جدا شوند و یا به آن بپیوندند. نودها میتوانند پس از پیوستن به شبکه، زنجیره طولانیتر را بهعنوان گواهی بر تراکنشهای انجام شده در زمان غیبت خود در نظر بگیرند.
امروزه تجارتها و داد و ستدهای اینترنتی به شکلی در آمدهاند که در همگی آنها، نیاز به یک شخص سوم معمتد برای انجام پرداختهای الکترونیکی احساس میشود. با این وجود که این سیستم برای اکثریت تراکنشها به خوبی عمل میکند؛ اما همچنان نیازمند اعتماد به یک واسطه بوده و این یک ضعف ذاتی تلقی میگردد. در چنین سیستمی، تراکنشهای کام ًلا برگشتناپذیر ممکن نیستند و وظیفه حل و فصل اختلافات پیش آمده در بین طرفین تراکنش، بر عهده مؤسسات مالی است. همین امر، کارمزد انجام تراکنشها را افزایش داده و باعث میشود انجام تراکنشها در مقیاس کوچکتر به صرفه نباشد. بهعلاوه،خسارات چنین سیستمی به سرویسهایی که برای ارائه خدمات غیرقابلبازگشت خود، به تراکنشهای برگشتناپذیر نیاز دارند نیز به طرز چشمگیری زیاد است. خاصیت برگشتپذیر تراکنشها، نیاز به اعتماد را افزایش داده و تاجران و صاحبان کسب و کارها را مجبور به کسب شناخت و آگاهی و جمعآوری اطلاعات هویتی زیادی از مشتریان خود خواهد کرد؛ اطلاعاتی که شاید در صورت استفاده از یک سیستم با تراکنشهای برگشتناپذیر، ارائه آنها توسط مشتریان به هیچ وجه ضروری نبود. همچنین با وجود تمامی این اقدامات احتیاطآمیز، درصد مشخصی از احتمال کلاهبرداری در چنین سیستمی اجتنابناپذیر است. البته هیچ یک از این هزینهها و عدم قطعیتها، در معاملاتی که به صورت حضوری و توسط پول فیزیکی انجام میشوند، تعریفشده نیستند؛ اما هنوز مکانیزمی برای انجام تراکنشهای الکترونیکی بدون نیاز به واسطه و از طریق یک کانال ارتباطی وجود ندارد.
چیزی که ما به آن احتیاج داریم، یک سیستم پرداخت الکترونیکی است که به جای اعتماد، از شواهد و مدارک رمزنگارانه برای اطمینان از صحت و درستی تراکنشهای آن استفاده شود؛ سیستمی که به هر دو شخصی این امکان را بدهد که بدون نیاز به یک واسطه، به انجام تراکنش و نقل و انتقال پول بپردازند. تراکنشهایی که از نظر محاسباتی غیرقابلبازگشت هستند، از فروشندگان در برابر اقدامات کلاهبردارانه محافظت میکنند و همچنین استفاده از حسابهای امانی معمول نیز میتواند به عنوان روشی برای محافظت از خریداران به کار بسته شود. در این مقاله، ما قصد داریم راهکاری را برای مشکل خرج مجدد داراییها ارائه کنیم. این راهکار در واقع استفاده از یک سرور همتا به همتا، توزیعشده و دارای برچسب زمانی است که به عنوان یک مدرک و گواه محاسباتی برای ترتیب انجام تراکنشها عمل میکند. تا زمانی که نودهای درستکار در این سیستم، قدرت CPU بیشتری را نسبت به اشخاص یا گروههای خرابکار و کلاهبردار داشته باشند، میتوان از امنیت آن اطمینان خاطر داشت. تراکنشها یک سکه یا کوین الکترونیک از دیدگاه ما، به زنجیرهای از امضاهای دیجیتال گفته میشود. هر شخصی که قصد ارسال پول الکترونیک (بیت کوین) خود به شخص دیگری را داشته باشد، باید ابتدا با استفاده از ایجاد شده از تراکنش قبلی به همراه کلید عمومی شخص دریافت کننده (صاحب 1 کلید خصوصی خود، هش جدید پول) را امضا کند. سپس تمامی این اطلاعات در نهایت به مقدار پول مورد نظر الحاق شده و برای این شخص فرستاده میشود. شخص دریافتکننده میتواند با اعتبارسنجی امضاها و اطمینان از صحت و درستی آنها، زنجیره مالکیت را بررسی کند و از دریافت پول مطمئن شود.
البته مسئلهای که همچنان وجود دارد این است که شخص دریافتکننده، نمیتواند متوجه شود که پول دریافت شده قب ًلا توسط فرستنده خرج شده است یا خیر؛ یا به عبارت دیگر، مشکل خرج دوباره 2 یا چندباره داراییها هنوز هم وجود دارد. راهحلی که به طور معمول برای این مشکل مورد استفاده قرار میگیرد، کمک گرفتن از یک موسسه مرکزی به عنوان واسطه معتمد برای نظارت بر تراکنشها و جلوگیری از خرج مجدد داراییهاست. با استفاده از این روش، پس از این که تراکنشی انجام شد، پولها باید به این موسسه بازگردانده شده و به اندازه و همارزش آنها، پول جدید تولید شود. در این روش، فقط و فقط پولهایی که به تازگی و به طور مستقیم توسط این مراکز تولید و توزیع میشوند دارای اعتبار خواهند بود. اما مسئلهای که وجود دارد این است که با وجود حل مشکل خرج مجدد داراییها، این روش از همان مشکل همیشگی و ذاتی سیستمهای مالی سنتی رنج میبرد. در چنین سیستمی، تعیین سرنوشت و جهتدهی کل سیستم مالی در اختیار یک نهاد واسطه قرار گرفته که نقش بانک در سیستم مالی سنتی را ایفا میکند و هر تراکنشی برای انجام شدن، باید از کانال این نهاد عبور کند. بنابراین، ما باید راه دیگری پیدا کنیم تا از این طریق، شخص دریافتکننده اطمینان یابد که پول فرستاده شده قب ًلا خرج نشده است. عملکرد سیستم ما به این شکل است که در آن، فقط و فقط اولین تراکنش انجام شده توسط یک دارایی، از اهمیت برخوردار است و هرگونه تلاش بعدی برای خرج مجدد یک دارایی بیهوده است. اما برای انجام این کار، باید از سابقه همه تراکنشها (از ابتدا تا یک تراکنش مشخص) آگاهی داشته باشیم. در سیستمهای سنتی واسطه محور، تاریخچه تمامی تراکنشها و اطلاعات زمانی آنها نزد این واسطه موجود است؛ اما اگر ما نخواهیم چنین روشی را به کار گیریم، تنها راه موجود، انتشار تاریخچه تراکنشها به صورت عمومی است [1 .[برای انجام این کار، به سیستمی نیاز خواهیم داشت تا توسط آن، تمامی شرکتکنندگان بتوانند در مورد درستی اطلاعات و ترتیب زمانی تراکنشها با یکدیگر به توافق برسند. شخص دریافتکننده پول (یا در واقع طرف دوم تراکنش) به مدرکی احتیاج خواهد داشت که به او ثابت کند دارایی خرج شده در این تراکنش، اولین بار برای خود او فرستاده شده و اکثریت نودهای شبکه بر روی عدم خرج مجدد یک دارایی از پیش خرج شده توسط طرف اول (فرستنده) توافق دارند. سرور برچسب زمانی یا timestamp . عملکرد سرور برچسب زمانی به این 3 است اولین مرحله از راهکار ما، استفاده از یک سرور برچسب زمانی شکل است که ابتدا هش یک بلاک را گرفته و سپس با الحاق برچسب زمانی، آن را مانند یک روزنامه یا یک پست در شبکه Usenet به صورت عمومی منتشر میکند [5-2 .[این برچسب زمانی به ما ثابت میکند که اطلاعات مورد نظر، در یک برهه زمانی خاص موجود بوده که هش آن گرفته شده است. از طرفی، هر برچسب زمانی، برچسب زمانی تراکنش قبلی را نیز در هش خود جای میدهد و به این شکل، زنجیرهای را تشکیل میدهد که در آن اضافه شدن هر برچسب زمانی جدید، امنیت کل شبکه را ارتقا میبخشد.
گواه اثبات کار یا (PoW (work of Proof برای به کار گیری یک سرور برچسب زمانی توزیعشده و همتا به همتا، ما به جای استفاده از روزنامه یا «شبیه به طرح هش ش پستهای شبکه Usenet ،به یک سیستم «گواه اثبات کار احتیاج آدام بک خواهیم داشت .منطق سیستم گواه اثبات کار، جستجو برای مقداری (عددی) است که وقتی توسط الگوریتمهایی مانند الگوریتم 256-SHA از آن هش گرفته میشود، مقدار عددی به دست آمده با یک یا چند صفر شروع شود. میزان توانی که برای انجام این محاسبات لازم است، به تعداد صفرهایی بستگی دارد که در ابتدای این مقدار وجود دارد و هر چقدر تعداد این صفرها بیشتر باشد، توان پردازشی بیشتری برای رسیدن به آن لازم است. خلاصه میشود. این گواه اثبات کار در شبکه بیت کوین، در پیدا کردن متغیری به نام عدد نانس متغیر، عددی است که در کنار سایر اطلاعات بلاک قرار گرفته و از آنها هش گرفته میشود. این کار به دفعات مکرر تکرار میشود تا در نهایت هش به دست آمده، تعداد صفرهای مورد نظر ما را در ابتدای خود داشته باشد. وقتی که توان پردازشی یک CPU برای حل یک معادله این چنینی صرف شد و گواه اثبات کار به درستی انجام گرفت، تغییر اطلاعات این بلاک بدون صرف همان اندازه از توان پردازشی ممکن نخواهد بود. البته از آن جایی که در سیستم ما، بلاکها به یکدیگر متصل هستند، تغییر اطلاعات یک بلاک به منزله تغییر اطلاعات تمامی بلاکهای پس از آن است و بنابراین توان پردازشی مورد نیاز برای تغییر یک بلاک نیز، به اندازه توان پردازشی صرف شده برای ساخت خود بلاک و تمامی بلاکهای پس از آن خواهد بود.
استفاده از گواه اثبات کار همچنین مشکل چگونگی تعیین نودها و تشخیص اکثریت آنها در تصمیمگیریهای دسته جمعی را برطرف میکند. اگر شبکه ما بر مبنای تئوری هر IP یک حق رأی کار میکرد، در این صورت هر کسی میتوانست با ساخت IPهای جعلی متعدد، کنترل شبکه را در دست بگیرد؛ اما شبکه گواه اثبات کار ما به جای هر IP یک حق رأی، از ایده هر CPU یک حق رأی استفاده میکند. همینطور تصمیمات گرفته شده توسط اکثریت اعضا نیز توسط بلندترین زنجیره نمایش داده میشود؛ و این یعنی زنجیرهای که بیشترین توان پردازشی صرف آن شده و در نتیجه بیشترین گواه اثبات کار را دارد. در صورتی که اکثریت توان پردازشی شبکه در دست نودهای درستکار باشد، زنجیره سالم و طولانی نیز به سرعت شکل گرفته و سایر زنجیرهها را پشت سر میگذارد. در این شبکه، هکرها برای تغییر اطلاعات ثبت شده برروی یک بلاک، باید با صرف توان پردازشی بسیار زیاد و همچنین با سرعت بسیار بالا، خود بلاک و تمامی بلاکهای پس از آن را تغییر داده و به آخرین بلاک برسند؛ سپس از توان پردازشی اکثریت نودهای شبکه نیز پیشی گرفته و زنجیره طولانیتری را تشکیل دهند که میتواند به عنوان زنجیره صحیح شناخته شود. در ادامه نشان خواهیم داد که چطور شانس یک هکر برای حمله به شبکه، با افزایش بلاکها و اضافه شدن بلاکهای جدید کم و کمتر میشود. با گذشت زمان، نودهای استخراجکننده بیشتری به این شبکه (شبکه بیت کوین) پیوسته و توان پردازشی شبکه افزایش مییابد. برای متعادل کردن شبکه، ما از یک ویژگی به نام سختی شبکه استفاده میکنیم که تعداد بلاکهای ساخته شده در یک زمان مشخص (برای مثال، یک ساعت) را در حد ثابتی باقی نگاه میدارد. بنابراین با افزایش توان پردازشی شبکه، سختی شبکه نیز افزایش مییابد. شبکه عملکرد شبکه بیت کوین از مراحل زیر پیروی میکند: 1 .تراکنشهای جدید به کلیه نودها اعلام میشوند. 2 .هر نودی تراکنشهای جدید را انتخاب کرده و آنها را در یک بلاک قرار میدهد. 3 .هر نودی تلاش میکند تا با صرف توان پردازشی و پیروی از الگوریتم گواه اثبات کار، پاسخ معادله بلاک مورد نظر خود را پیدا کند (که این پاسخ در واقع همان عدد نانس مورد نظر است). 4 .وقتی که نودی به این پاسخ دست پیدا کرد، این مسئله را به کل شبکه اعلام میکند. 5 .سایر نودها تنها در صورتی این بلاک را تأیید میکنند که تمامی تراکنشهای موجود در آن معتبر بوده و قب ًلا خرج نشده باشند. 6 .نودها با حرکت به سمت ساخت بلاک بعدی، تأیید خود برای ساخت بلاک پیشین را اعلام کرده و از هش آن به عنوان هش بلاک قبلی استفاده میکنند. نودها همیشه طولانیترین زنجیره را به عنوان زنجیره صحیح در نظر میگیرند و به تلاش برای ساخت سایر بلاکها بر روی آن میپردازند. اگر دو نود به طور همزمان، دو بلاک متفاوت را به عنوان بلاک بعدی زنجیره معرفی کنند، سایر نودها یکی از این دو بلاک را زودتر دریافت خواهند کرد. در چنین شرایطی، آنها کار خود را بر روی بلاکی که زودتر دریافت کردهاند ادامه میدهند؛ اما زنجیره دیگر را نیز به دلیل امکان طولانیتر شدن آن، در حافظه خود ذخیره میکنند. در نهایت وقتی که یکی از این دو زنجیر توسط نودهای بیشتری مورد تأیید قرار گرفت و بلاکهای بیشتری بر روی آن ساخته شد، زنجیره دیگر حذف شده و نودهای فعال در آن نیز به زنجیره طولانیتر میپیوندند.
تراکنشهای جدید لزومًا به همه نودها اعلام نخواهند شد. همین که این تراکنشها به تعداد کافی از نودها اعلام شوند، توسط آنها اعتبارسنجی شده و بر روی بلاکها قرار میگیرند. همچنین ممکن است که پیام عمومی برای اعلام ساخت بلاکها به دلیل مشکلاتی، به برخی از نودها نرسد. اگر نودی بلاکی را دریافت نکند، در زمان دریافت بلاک بعدی متوجه این مسئله شده و تقاضای ارسال بلاک دریافت نشده را به نودهای دیگر شبکه ارسال خواهد کرد. انگیزه اولین تراکنش موجود در هر بلاک، تراکنش منحصر بفردی است. این تراکنش، بیت کوینی را ایجاد میکند که (به عنوان پاداش) به سازنده بلاک تعلق میگیرد. این امر از دو مزیت برخوردار است: اول این که چنین مشوقی نودهای بیشتری را به شبکه جذب کرده و از این طریق امنیت شبکه را افزایش میدهد، و دوم این که به عنوان منبعی برای توزیع بیت کوینها در بازار و به گردش درآوردن آنها در بین مردم عمل میکند. از آن جایی که شبکه بیت کوین یک قدرت مرکزی برای تولید و توزیع بیت کوینها ندارد، باید راهی برای توزیع آنها وجود داشته باشد؛ و این روش برای انجام این کار، گزینه بسیار مناسبیست. فرآیند استخراج بیت کوین از بسیاری جهات شبیه به فرآیند استخراج طلاست. همانطور که برای استخراج طلا، افراد زیادی با پیدا کردن منابع طلا در قسمتهای مختلف جهان و صرف زمان و انرژی زیاد، آنها را وارد چرخه بازار میکنند، در شبکه بیت کوین نیز نودها با صرف مقدار مشخص و زیادی از توان پردازشی، زمان و الکتریسیته، به استخراج بیت کوین میپردازند (به همین دلیل است که به این پروسه ماین کردن 8 و یا استخراج بیت کوین میگوییم). این انگیزه همچنین با اضافه کردن کارمزد تراکنشها، دوچندان میشود. اگر شخصی در تراکنشی، مقداری بیت کوین را به عنوان کارمزد انجام تراکنش در نظر بگیرد (یعنی میزان بیت کوین ارسال شده از طرف او از میزان بیت کوینی که قصد انتقال آن را دارد بیشتر باشد)، این کارمزد نیز پس از استخراج بلاک به نود استخراجکننده تعلق خواهد گرفت. وقتی که کل بیت کوینهای موجود (که تعداد آنها از پیش تعیین شده است) استخراج شد و به چرخه بازار وارد گردید، پاداش استخراج بلاک به طور کلی جای خود را به کارمزد تراکنشها داده و هیچگونه تورم احتمالی که از تولید (بیرویه) بیت کوین ناشی شود، به وقوع نخواهد پیوست. این پاداشها، در نودها انگیزه کافی را برای درستکاری در شبکه ایجاد کرده و آنها را ترغیب به حفظ امنیت آن مینماید. در چنین شرایطی، حتی اگر یک هکر از هر طریقی به اکثریت توان پردازشی شبکه دست یافته و بتواند کنترل آن را در دست بگیرد، دو راه در پیش رو خواهد داشت: این که از این توان برایکلاهبرداری، تغییر اطلاعات سایر بلاکها و خرج چندباره داراییهای خود استفاده کند؛ و این که این توان را در راستای ایجاد بلاکهای جدید بر روی طولانیترین زنجیره و دریافت پاداش استخراج بلاک و کارمزد تراکنشها به کار بگیرد. حتی در این شرایط نیز، پایبندی به قوانین شبکه و دریافت بیت کوینهای بیشتر از این طریق، برای این هکر بهصرفهتر خواهد بود تا حمله به کل شبکه و از بین بردن اعتبار داراییهای خود و دیگران. بازیابی فضای ذخیرهسازی اطلاعات روشی که این سیستم برای آزادسازی فضای ذخیره اطلاعات در نظر گرفته است این است که پس از این که بلاکی استخراج شد و بلاکهای کافی نیز بر روی آن ساخته شدند (امنیت آن تضمین شد)، اطلاعات این بلاک توسط روشی به نام درخت مرکل 9 [5][2][7 [هش شده و چکیده این اطلاعات در قالب هشی به نام ریشه درخت مرکل ذخیره میشود. به این ترتیب، بلاکهای قدیمی فشرده شده و شاخههای آنها از 10 زنجیره بلوکی حذف میشوند. تنها چیزی که در این زنجیره ذخیره میشود، ریشه درخت مرکل است که در حقیقت هش تمامی تراکنشهای موجود در یک بلاک است.
حجم هدر یا سربرگ بلاکی که هیچگونه تراکنشی را در خود ندارد، 80 بایت است. با این فرض که بلاکها هر 10 دقیقه ساخته میشوند، حجم هدر بلاکها در هر سال، چیزی معادل 2.4 مگابایت میشود (2.4مگابایت = 365*24*6*80 بایت). با سیستمهای کامپیوتری که در سال 2008 با رم 2 گیگابایت بهفروش میرسند، و با در نظر گرفتن قانون مور مقدار اضافه شود، شبکه بیت کوین با مشکل حافظه مواجه نخواهد شد؛ حتی اگر هدرهای بلاکها بر روی رم کامپیوترها ذخیره شوند. 12 اعتبارسنجی پرداختها به روش بهینه و تسهیلشده (SPV) برای اطمینان از صحت و اعتبار پرداختها و تراکنشها در شبکه بیت کوین، لزومًا احتیاجی به تبدیل شدن به یک نود کامل 13 نیست. برای انجام این کار، فقط کافیست که یک کپی از هدرهای بلاکهای موجود در طولانیترین زنجیره را بر روی سیستم خود داشته باشید. سپس برای اطمینان از درستی یک تراکنش مشخص، میتوانید با استفاده از شاخه مرکل، به بلاکی که این تراکنش در آن ثبت شده دسترسی پیدا کرده و آن را بررسی کنید. کاربران این امکان را نخواهند داشت که جزئیات یک تراکنش را به طور مجزا مورد بررسی قرار دهند؛ اما با استفاده از درخت مرکل و پیدا کردن محل قرار گیری تراکنش در زنجیره بلوک، میتوانند از تأیید شدن یا نشدن تراکنش توسط نودها و بلاکهای ساخته شده بر روی آن اطمینان حاصل کنند.
با این اوصاف، اعتبارسنجیهای صورت گرفته بر طبق این روش، تا زمانی که کنترل شبکه در دست نودهای قابل اعتماد باشد، معتبر است؛ اما در صورت کنترل شبکه توسط هکرها و نودهای خرابکار، این اعتبارسنجیها نیز آسیبپذیر خواهند بود. با این حال که نودها نیز در این فرآیند اعتبارسنجی سهیم هستند؛ اما روش اعتبارسنجی تسهیل شده این امکان را به مهاجمانی که اکثریت توان شبکه را در دست دارند میدهد تا شبکه را با تراکنشهای ساختگی و غیرواقعی خود، دچار مشکل نمایند. یک راهکار برایمقابله با این مشکل، دریافت پیام هشدار از سایر نودهای شبکه است که بلاک نامعتبر یا مشکوکی را شناسایی کردهاند. در صورت مشاهده یک بلاک نامعتبر، نودها این امکان را خواهند داشت که پیامی را برای سایر نودهای شبکه فرستاده و آنها را از این موضوع مطلع کنند. سایر نودها سپس به جای استفاده از روش اعتبارسنجی تسهیلشده، کل بلاک و تراکنشهای موجود در آن را دانلود کرده و به بررسی تراکنشهای مشکوک میپردازند. کسب و کارهایی که فعالیتهای مالی و تراکنشهای زیادی داشته و مقادیر زیادی بیت کوین دریافت میکنند، ممکن است ترجیح دهند که نود خود را اجرا کرده و از این طریق امنیت، استقلال و سرعت شبکه خود را افزایش دهند. ترکیب و تقسیم مقادیر بیت کوین در تراکنشها ساز و کار شبکه بیت کوین به این شکل نیست که در آن، برای دریافت یا ارسال هر یک سنت، از یک تراکنش جداگانه استفاده کنیم (با این حال که این کار ممکن است؛ اما منطقی و بهصرفه نیست). برای این که امکان ترکیب و یا تقسیم مقادیر مختلف بیت کوین را داشته باشیم، تراکنشهای بیت کوین از ورودیها و خروجیهای مختلف تشکیل میشوند. ورودی یک تراکنش به طور معمول، از یک ورودی با مبلغ زیاد (یک تراکنش قبلی خرج نشده با مبلغ زیاد) و یا چند ورودی با مبالغ کوچکتر تشکیل میشود. خروجی یک تراکنش بیت کوین نیز غالبًا شامل دو بخش است: یکی پرداختی است که کاربر قصد انجام آن را داشته و دیگری، باقیمانده تراکنش است که (درصورت وجود) باید به حساب شخص فرستنده بازگردانده شود.
بیان این نکته ضروری است که وابستگی تراکنشها به یکدیگر در بیت کوین، مشکلی را برای این شبکه ایجاد نخواهد کرد؛ کاربران برای انجام یک تراکنش، هیچگاه مجبور به بررسی تاریخچه کامل تراکنشها نیستند.
حریم خصوصی سیستم بانکداری سنتی، با اعمال محدودیت برای دسترسی به اطلاعات شخصی کابران، از یک سطح نسبی حریم خصوصی برخوردار است؛ اما اگر قرار باشد که ما برای دستیابی به اهدافمان، از یک دفترکل عمومی استفاده کنیم که در آن اطلاعات تمامی تراکنشها به صورت عمومی منتشر میشوند، در این صورت حریم خصوصی کاربران با مشکل مواجه خواهد شد. راهکار ما برای حل این مشکل، استفاده از روشهای رمزنگارانه و تولید کلیدهایی با نام کلید عمومی و کلید خصوصی برای ناشناس ماندن طرفین تراکنش است. در این صورت، تمامی کسانی که به شبکه بیت کوین دسترسی دارند، خواهند توانست تراکنشهای انجام شده توسط کلیدهای عمومی مختلف را مشاهده کنند؛ اما نمیتوانند به هویت طرفین تراکنش پی ببرند. عملکرد بیت کوین از این جهت شبیه به بازارهای بورس است که در آنها، کالا یا سهام معامله شده، زمان و حجم معامله به صورت عمومی منتشر میشود؛ اما اطلاعاتی از هویت طرفین معامله در دسترس عموم مردم قرار نمیگیرد.
به عنوان یک لایه امنیتی و محافظتی دیگر، بهتر است که برای هر تراکنشی، از یک جفت کلید عمومی و خصوصی جدید برای اشخاص استفاده کنیم تا در صورت مشخص شدن هویت واقعی صاحب یک کلید عمومی، تراکنشهای بعدی وی قابل ردیابی نباشد. البته احتمال فاش شدن هویت صاحب یک کلید عمومی در تراکنشهایی که از چندین ورودی تشکیل میشوند، اجتنابناپذیر است و در صورت وقوع این اتفاق، این خطر وجود دارد که تمامی تراکنشهای مربوط به این شخص ردیابی شوند. محاسبات میخواهیم سناریوی حمله یک هکر برای در دست گرفتن توان پردازشی شبکه و ساخت یک زنجیره طولانیتر از زنجیره صحیح را بررسی کنیم. اولین چیزی که باید بدانیم این است که حتی اگر چنین اتفاقی به وقوع بپیوندد، این هکر نمیتواند کارهایی خارج از چارچوب کلی شبکه انجام داده و دست به هر کار دلخواهی بزند. برای مثال، چنین شخصی نخواهد توانست بدون طی کردن مراحل استخراج یک بلاک، برای خود بیت کوینی را تولید کند و یا یک مقدار مشخصی از بیت کوین که هرگز به او تعلق نداشته را از آنخود کند. نودهای شبکه (حتی اگر خود نیز نیات خرابکارانه در سر داشته باشند)، پرداختهای فاقد اعتبار را به عنوان یک تراکنش تأیید نکرده و نودهای درستکار نیز به هیچ وجه اجازه نخواهند داد بلاکی که دربرگیرنده چنین تراکنشهایی است به زنجیره اضافه شود. تنها کاری که این هکر میتواند انجام دهد، تغییر یکی از تراکنشهای خود برای باز پس گرفتن یک مقدار بیت کوین خرج شده است. رقابت بین یک زنجیره سالم و یک زنجیره ساختگی، به پدیدهای در ریاضیات به نام گام تصادفی یا گشت تصادفی دوگانه شباهت دارد. موفقیت در این رقابت، به پیشی گرفتن زنجیره سالم از زنجیره 14 ساختگی (به اندازه یک بلاک) و کسب یک امتیاز اشاره دارد؛ در حالی که شکست، به معنای عقب افتادن زنجیره سالم از زنجیره خرابکار و از دست دادن یک امتیاز است. میزان احتمال موفقیت یک هکر برای دستیابی به طولانیترین زنجیره، مسئلهای است که میتواند توسط روش ریاضی موسوم به پاکباختگی قمارباز 15 محاسبه شود. برای درک روش کار این مسئله، تصور کنید که قماربازی چند دست از بازی را واگذار کرده و در شرایط خوبی به سر نمیبرد. این قمارباز، بینهایت نوبت دارد تا خسارت از دست رفته را جبران کند و به مرحله کسب سود وارد شود. شرایط این قمارباز، دقیقًا مانند شرایط هکری است که با در اختیار داشتن یک زنجیره کوتاهتر، قصد رقابت با زنجیره بلندتر و پیشی گرفتن از آن را دارد. برای محاسبه میزان احتمال وقوع این اتفاق، میتوان از فرمول زیر استفاده کرد
[8 :[ احتمال استخراج بلاک بعدی توسط نود درستکار = p
احتمال استخراج بلاک بعدی توسط نود خرابکار = q
احتمال این که نود خرابکار بتواند در صورت عقب بودن z بلاک از نود درستکار، از آن پیشی بگیرد = qz
با این فرض که احتمال استخراج بلاک بعدی توسط نود درستکار از نود خرابکار بیشتر است (q>p،( هرچه فاصله تعداد بلاکهای هکر با تعداد بلاکهای زنجیره سالم بیشتر باشد، امکان این که این هکر بتواند به این هدف دست پیدا کند نیز به طور تصاعدی کاهش مییابد. با همه این اوصاف، اگر این هکر در همان ابتدای کار با یک بدشانسی نیز روبهرو شود، این احتمال باز هم کمتر شده و عم ًلا به صفر میگراید.
مسئلهای که اکنون میتوانیم به بررسی آن بپردازیم، مدت زمانی است که شخص دریافتکننده بیتکوین باید منتظر بماند تا پس از آن، بتواند تراکنش را با اطمینان خاطر، غیرقابل بازگشت در نظر بگیرد. همینطور در این نقطه فرض میکنیم که شخص فرستنده، هکری است که قصد دارد با کلاهبرداری، این ذهنیت را در گیرنده ایجاد کند که تراکنش انجام شده و سپس، مقدار فرستاده شده را به حساب خود بازگرداند. در صورت وقوع چنین اتفاقی، به شخص دریافتکننده هشدار داده خواهد شد؛ اما فرستنده با این ذهنیت پیش میرود که این اتفاق به اندازه کافی دیر به وقوع خواهد پیوست که گیرنده نتواند کاری از پیش ببرد. شخص دریافتکننده برای انجام تراکنش، یک جفت کلید عمومی و خصوصی تولید کرده و کلید عمومی را لحظاتی پیش از امضای تراکنش، برای فرستنده ارسال میکند. این امر باعث میشود تا فرستنده نتواند از مدتی پیش از انجام تراکنش، برای ساخت یک زنجیره از بلاکها آماده شود و از این طریق بتواند در صورت خوششانسی، تراکنش را بر روی بلاک ساختگی خود به اجرا در آورد. هنگامی که تراکنش انجام شد، فرستنده خرابکار به طور مخفیانه به ساخت یک زنجیره جدید در کنار زنجیره اصلی پرداخته و تراکنش بازگشت مورد نظر خود را در آن جای میدهد. شخص گیرنده، برای استخراج بلاک حاوی تراکنش مورد نظر خود صبر کرده و همینطور منتظر میماند تا تعدادی بلاک دیگر (به اندازه z یا اختلاف تعداد بلاکهای نود خرابکار و زنجیره سالم) نیز بر روی بلاک مورد نظر او ساخته شود. البته شخص گیرنده نمیتواند به طور دقیق متوجه شود که هکر تا چه حدی پیش رفته است؛ اما با فرض این که نودهای سالم نیز با سرعت متوسط خود پیش رفته و تعداد بلاکهای قابل انتظار در واحد زمان را استخراج کردهاند، میزان پیشرفت 16 احتمالی هکر بر طبق مدل توزیع پوآسون به شرح زیر میباشد.
برای به دست آوردن احتمال این که این هکر هنوز هم بتواند به زنجیره سالم برسد، تراکم پوآسون حداکثر امکان پیشرفت او را در احتمال کلی رسیدن او به زنجیره سالم در یک نقطه زمانی خاص ضرب میکنیم.
حال برای جلوگیری از جمع دنبالههای بینهایت، این معادله را به این صورت مرتب میکنیم.
نتیجهگیری در این مقاله، ما سیستمی را برای انجام تراکنشهای الکترونیک بدون نیاز به اعتماد به یک واسطه ارائه کردیم. برای این کار، ابتدا به چارچوب کلی داراییهای الکترونیکی که توسط امضاهای دیجیتال ساخته شدهاند پرداختیم و گفتیم که این داراییها با وجود تمامی مزیتهای خود در حوزه حریم خصوصی و مالکیت، از یک مشکل بزرگ به نام عدم توانایی جلوگیری از «خرج مجدد» رنج میبرند. برای حل این مشکل، ما استفاده از یک شبکه همتا به همتا و متکی بر «گواه اثبات کار» را پیشنهاد کردیم که در آن، یک تاریخچه عمومی از تمامی تراکنشهای انجام شده نگهداری میشود و در صورت تعلق اکثریت توان پردازشی شبکه به نودهای درستکار، انجام هرگونه حمله توسط هکرها و در راستای تغییر اطلاعات تراکنشها، از نظر محاسباتی بهصرفه نخواهد بود. همین امر، امنیت شبکه را تضمین میکند و از آن در برابر هک و حملات خرابکارانه محافظت مینماید. این شبکه، در عین سادگی ساختار خود، منحصر بفرد است. تمامی نودهای این شبکه به طور همزمان با یکدیگر همکاری میکنند؛ در حالی که کمترین ارتباط ممکن را با یکدیگر دارند. این نودها نیازی به شناخته شدن ندارند؛ چرا که پیامها در این شبکه به مقصد و آدرس خاصی فرستاده نمیشوند و در کل شبکه انتشار مییابند. نودها این امکان را خواهند داشت که در هر زمان دلخواه، از شبکه جدا شده و یا به آن بپیوندند. نودها میتوانند در زمان پیوستن به شبکه، زنجیره طولانیتر را به عنوان زنجیره سالم در نظر گرفته و آن را گواهی بر تراکنشهایی بدانند که در زمان غیبت آنها به ثبت رسیدهاند. آنها با استفاده از توان پردازشی خود، به رأیدهی پرداخته و موافقت خود با یک بلاک را با اقدام برای ساخت بلاکهای جدید بر روی آن نشان میدهند. همچنین مخالفت نودها با یک بلاک خاص، با پرهیز آنها از ادامه ساخت زنجیره بر روی آن بلاک نمایش داده میشود. هر قانون و یا انگیزه جدیدی که برای ادامه کار این شبکه نیاز باشد نیز توسط مکانیزم اجماع شبکه به رأی گذاشته شده و در صورت موافقت اکثریت اعضا، به اجرا گذاشته خواهد شد.