بررسی جامع وایت پیپر بیت کوین

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

ثبت نام در صرافی غیر تحریم کوینکس CoinEX جایگزین بایننس

پروژه‌های زیادی برای بهبود بلاکچین بیت کوین راه اندازی شده و حتی رقبای جدی و قوی در بازار شروع به رشد کردند. اما سوال اینجاست که اولین شخصی که این ایده به ذهنش رسید چه نقشه و برنامه‌ای برای هدف خود داشته است؟

در این مقاله، وایت پیپر بیت کوین که شامل اهداف و نقشه راه این ارز است و سال ۲۰۰۸ توسط فرد ناشناسی به نام ساتوشی ناکاموتو به دنیا معرفی شد. مطالعه این مقاله و بررسی بیت کوین می‌تواند به تمام دوستداران این کوین مسیر روشن‌تری برای ادامه راه نشان دهد.

چکیده وایت پیپر

بیت کوین (Bitcoin) یک نسخه کاملا همتا به همتا (P2P) از پول نقد الکترونیک است که سبب انجام پرداخت‌های آنلاین می‌شود؛ به طوری که مستقیما از یک طرف به طرف دیگر فرستاده می‌شود و نیازی به گذر از یک موسسه مالی (نهاد مرکزی واسطه) نیست.

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

این شبکه، تراکنش‌ها را با تبدیل آنها به یک زنجیره مستمر بر پایه الگوریتم گواه اثبات کار (POW) هش محور برچسب زمانی می‌زند و سابقه‌ای را ایجاد می‌کند که بدون انجام دوباره گواه اثبات کار قابل تغییر نیست.

طولانی‌ترین زنجیره بیت کوین نه تنها به عنوان گواه توالی رویدادهای مشاهده شده عمل می‌کند، بلکه ثابت می‌کند که از بزرگ‌ترین استخر قدرت پردازشی CPU تشکیل شده است. تا زمانی که اکثریت قدرت CPU توسط نودهایی کنترل شود که در حمله به شبکه همکاری نمی‌کنند، بلندترین زنجیره ایجاد خواهد شد و مهاجمان را عقب می‌گذارند.

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

مقدمه

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

تراکنش‌های کاملا غیر قابل برگشت در این مدل امکان پذیر نیست؛ زیرا موسسات مالی این قدرت را دارند تا تراکنشی را به اختیار خود برگشت بزنند. هزینه این میانجی‌گری به افزایش هزینه تراکنش‌ها ختم می‌شود و امکان تراکنش‌های غیر رسمی کوچک را از میان بر می‌دارد و همچنین هزینه بیشتری برای فقدان توانایی پرداخت‌های غیر قابل برگشت موجود خواهد بود.

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

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

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

تراکنش‌ها

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

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

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

اما ما به روشی نیاز داریم که دریافت کننده وجه بداند که مالکین قبلی، پیش‌تر هیچ تراکنشی را امضا نکرده‌اند. در اینجا منظور از اولین تراکنش، آن تراکنشی است که شمرده می‌شود و بنابراین به تلاش‌های بعدی برای خرج کردن دوباره اهمیت داده نمی‌شود.

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

سرور برچسب زمانی (Timestamp Server)

راه حل پیشنهاد شده در بالا با یک سرور برچسب زمانی شروع می‌شود و این سرور با برداشتن هش یک بلاک برای برچسب زمانی زدن و انتشار گسترده هش کار می‌کند و این شبیه کار یک روزنامه است.

برچسب زمانی ثابت می‌کند که داده‌ها در آن زمان به منظور کنترل هش وجود داشته‌اند. هر برچسب زمانی شامل برچسب زمانی قبلی در هش خود است که یک زنجیره را شکل می‌دهد و هر برچسب زمانی اضافه شده برچسب‌های پیشین را تقویت می‌کند.

گواه اثبات کار (Proof of Work)

برای پیاده سازی یک سرور برچسب زمانی توزیع شده در یک مبنای همتا به همتا، لازم است که از یک سیستم گواه اثبات کار مشابه Hashcash که توسط Adam Back اختراع شده، استفاده کرد.

گواه اثبات کار (POW) شامل جستجوی ارزش در زمانی است که هش صورت می‌گیرد؛ مانند SHA-256 که در آن هش با عدد صفر بیت شروع می‌شود. متوسط کار مورد نیاز در تعداد صفر بیتی‌های مورد نیاز نمایانگر است و می‌تواند با اجرای یک هش مجزا تایید شود.

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

زمانی که تلاش CPU برای راضی کردن گواه اثبات کار گسترش یافت، بلاک بدون انجام دوباره کار، قابل تغییر نخواهد بود. از آنجا که بلاک‌های بعدی در زنجیره دنبال آن قرار می گیرند، کار تغییر بلاک شامل تغییر دوباره همه بلاک‌های بعد از آن است.

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

گواه اثبات کار اساسا دارای مدل یک رای برای هر CPU است. تصمیم اکثریت توسط طولانی‌ترین زنجیره ارائه می‌شود که عظیم‌ترین تلاش گواه اثبات کار در آن زنجیره سرمایه‌گذاری شده است.

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

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

شبکه

مراحل راه اندازی شبکه به شرح زیر می باشد:

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

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

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

انگیزه

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

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

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

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

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

احیای فضای دیسک

زمانی که آخرین تراکنش در یک بیت کوین در زیر بلاک‌های کافی پنهان شد، تراکنش‌های خرج شده قبلی را می‌توان رها کرد تا در فضای دیسک ذخیره شود. برای تسهیل این کار بدون شکستن هش بلاک، تراکنش‌ها به صورت درخت Merkle درخواهند آمد که تنها ریشه آن در هش بلاک داخل شده است. بلاک‌های قدیمی را می‌توان با بریدن شاخه‌های درخت فشرده کرد. هش‌های داخلی لازم نیست که ذخیره شوند.

یک هدر بلاک بدون تراکنش حدود ۸۰ بایت است. اگر فرض کنیم که بلاک‌ها هر ده دقیقه ایجاد شوند، این مقدار در سال ۴.۲ مگابایت خواهد شد. سیستم‌های کامپیوتری که در سال ۲۰۰۸ فروخته می‌شدند ۲ گیگ رم داشتند و بنابر قانون مور (Moore)، می‌توان پیش بینی کرد که رشد حال حاضر ۱.۲ گیگابایت در سال است؛ حتی اگر هدر بلاک‌ها هم در حافظه نگهداری شوند، مشکل ذخیره پیش نخواهد آمد.

تایید پرداخت تسهیل شده

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

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

در حالی که نودهای شبکه می‌توانند تراکنش‌ها را به تنهایی تایید کنند؛ این روش تسهیل شده می‌تواند توسط یک مهاجم مورد سوءاستفاده قرار بگیرد و تا زمانی که بر شبکه سیطره دارد، قادر به ایجاد تراکنش‌های جعلی خواهد بود.

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

ترکیب و تقسیم ارزش

اگرچه مدیریت کوین‌ها به صورت فردی ممکن است، اما انجام تراکنش جداگانه برای هر یک سنت (دلار) انتقالی دشوار است. با اجازه دادن به تقسیم و ترکیب ارزش، تراکنش‌ها شامل ورودی‌ها و خروجی‌های متعددی می‌شوند.

معمولا یا یک ورودی مجزا از تراکنش بزرگ‌تر قبلی موجود خواهد بود یا ورودی‌های متعددی مقادیر کوچک‌تر را ترکیب می‌کنند و حداکثر نیز دو خروجی موجود خواهد بود: یکی برای پرداختی و دیگری برای بازگرداندن تغییر به فرستنده در صورتی که چنین تغییری وجود داشته باشد.

البته این گنجایش خروجی باید مورد توجه قرار بگیرد که در آن یک تراکنش به چندین تراکنش وابسته است و آن تراکنش‌ها نیز بر بسیاری دیگر وابسته هستند که البته این موضوع در اینجا مشکل نیست. هرگز نیاز به استخراج یک کپی کاملا مستقل از تاریخچه تراکنش نیست.

حریم خصوصی

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

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

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

محاسبات

ما این سناریو را مورد بررسی قرار می‌دهیم که یک مهاجم سعی کند زنجیره دیگری را سریع‌تر از زنجیره اصلی (درست) ایجاد کند. حتی اگر چنین کاری انجام شود، سیستم را در معرض تغییراتی مانند ایجاد ارزش به صورت غیر منتظره یا برداشت پولی که هرگز متعلق به مهاجم نبوده، قرار نخواهد داد.

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

رقابت بین زنجیره صادق و زنجیره مهاجم را می‌توان به عنوان Binomial Random Walk توصیف کرد. اگر زنجیره اصلی یک بلاک پیدا کند و رهبری خود را به اندازه ۱+ افزایش دهد و اگر زنجیره مهاجم به اندازه یک بلاک گسترش یابد و خلا را  به اندازه ۱- تغییر دهد، شکست حاصل خواهد شد و هک صورت می‌گیرد.

احتمال این که یک مهاجم بتواند کمبود ایجاد شده را جبران کند، مشابه مسئله Gambler`s Ruin (نابودی قمارباز) است.

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

خب فرض کنیم P احتمال این که نود اصلی بلاک بعدی را پیدا کند، q احتمال این که مهاجم بلاک بعدی را پیدا کند و qz احتمال این که مهاجم بتواند z بلاک عقب افتاده را جبران کند.

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

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

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

گیرنده تا زمانی که تراکنش به یک بلاک اضافه می‌شود، صبر می‌کند و z بلاک بعد از آن متصل می‌شود. گیرنده مقدار پیشرفت دقیق مهاجم را نمی‌داند؛ اما فرض می‌کند که بلاک‌های صادق زمان مورد انتظار متوسط برای هر بلاک به طول بیانجامند. پیشرفت احتمالی مهاجم توزیع Poisson با ارزش مورد انتظار خواهد بود:

برای محاسبه احتمال این که مهاجم هنوز بتواند به جبران برسد، تراکم Poisson برای هر مقدار پیشرفتی که مهاجم می‌توانسته انجام دهد در احتمال جبران از آن نقطه ضرب می‌کنیم:

برای اجتناب از جمع کردن دنباله نامحدود توزیع به تنظیم دوباره می‌پردازیم:

حال به فرمول های بالا را در زبان C تبدیل به کد می کنیم:

تعدادی از نتایج را اجرا می‌کنیم و می‌بینیم که احتمال با z به طور نمایی کاهش می‌یابد:

حل برای p کمتر از ۰.۰۰۱ درصد:

نتیجه‌گیری

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

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

این شبکه به دلیل ساختار غیرمتمرکز آن، قوی است. نودها همه با هم با هماهنگی کار می‌کنند. آنها نیازی به شناخته شدن ندارند؛ زیرا پیام‌ها به مکان خاصی فرستاده نمی‌شوند و تنها نیاز است که بر مبنای بهترین تلاش تحویل داده شوند.

نودها می‌توانند شبکه را ترک کنند و به میل خود دوباره به آن بپیوندند و زنجیره گواه اثبات کار را به عنوان مدرک آنچه که در غیاب آنها انجام گرفته بپذیرند. آنها با قدرت پردازشی خود رای می‌دهند و پذیرش بلاک‌های معتبر را با کار بر روی  توسعه آنها نشان می‌دهند. همچنین رد بلاک‌های نامعتبر با امتناع از کار بر روی آنها انجام می‌شود. هر گونه قانون و انگیزه مورد نیاز را می‌توان با استفاده از الگوریتم اجماع اعمال کرد.

منبع : Bitcoin.org