وایت پیپر بیت کوین ; مقاله ساتوشی ناکاموتو
بیت کوین اولین ارز رمزنگاری شده و پرچمدار این صنعت است
فهرست مطالب
بیت کوین اولین ارز رمزنگاری شده و پرچمدار این صنعت است. بیت کوین در سال 2008 توسط فردی به نام ساتوشی ناکاموتو طراحی شد. در آن زمان یک مقاله وایت پیپر بیت کوین که هدف و نقشهراه این رمزارز را معرفی مینمود، توسط خالق آن منتشر شد. این مقاله در واقع ترجمه این وایت پیپر بیت کوین است. توجه داشته باشید که این مقاله تاحدی به ریاضیات و الگوریتم اصلی بلاکچین بیت کوین میپردازد و تا حد بسیار زیادی تخصصی است. در واقع برنامه نویسان بلاکچین براساس وایت پیپر بیت کوین ، کدهایی را طراحی و اجرا کردند که تقریبا هنوز هم بدون تغییر در حال اجراست و ضمانت کار صحیح این بلاکچین پیچیده ریاضی را برعهده دارد. بعد از این وایت پیپر بیت کوین ، مقالات دیگری برای بهبود عملکرد بلاکچین بیت کوین طراحی شده است و بلاکچینهای شبکههای بعد از بیت کوین، با الهام از آن، شبکههای قویتری طراحی کردهاند که خود رقبایی برای بیت کوین هستند. ادامه این مقاله در واقع ترجمه دقیق و تخصصی وایت پیپر بیت کوین است. پس با ما همراه باشید.
چکیده
بیت کوین نسخهای از پول نقد الکترونیک است که میتوان با آن پرداخت آنلاین انجام داد. در واقع نیازی به داشتن یک مرکز یا نهاد واسط وجود نداشته و به صورت مستقیم و رو در رو (نظیر به نظیر) میتوان خرید آنلاین با بیت کوین انجام داد. امضای دیجیتال راهحل محدودی برای کم کردن مشکل واسط در خرید و فروش آنلاین است ولی در زمانی که نیاز به شخص ثالث مطمئن برای جلوگیری از خرج شدن مجدد آن است، مزیت اصلی این سیستم از بین رفته و برای هدف اصلی ناکارآمد میشود. شبکه ارز دیجیتال، تراکنشها را به یک حلقه و زنجیره دائمی تبدیل کرده و بر اساس الگوریتم Proof of work (گواه اثبات کار) که هش محور بوده و به زمان بستگی داشته، برای آنها سابقهای میسازد که بدون انجام مجدد گواه اثبات کار، قابل تغییر نیست. زنجیره طولانی به عنوان یک شاهد برای وقایع پی در پی عمل کرده و اثبات میکند که از بزرگترین استخر قدرت پردازشی CPU به وجود آمده است. تا وقتی که بیشترین قدرت cpu به وسیله نودهایی که در حمله به شبکه همکاری نمیکنند، کنترل بشود، طولانیترین زنجیره ایجاد شده و هر مهاجمی را کنار میزند. پیامهای انتقالی بر اساس بهترین تلاش منتشر شده و همچنین هر نود توانایی این را دارد تا از شبکه خارج شده و یا به خواست خود دوباره به شبکه ملحق شود و طولانیترین زنجیره اثبات کار را بپذیرد.
مقدمه
خرید و فروش برفضای اینترنت مبنی بر موسسات مالیای شده است که به عنوان شخص سومی که مورد اعتماد طرفین است، در زمان پردازش پرداختهای الکترونیکی عمل میکند. این سیستم در بیشتر تراکنشها به درستی ظاهر میشود ولی نقطه ضعف عمدهای که در آن به صورت ذاتی وجود دارد، این است که وابسته به اعتماد است. تراکنشی که به صورت کامل غیرقابل برگشت باشد، در این حالت وجود ندارد چراکه همین موسسات واسط میتوانند به میل خود، تراکنشی را برگشت بزنند. از طرفی هزینهای که به خاطر این واسطهگری عایدشان میشود بسته به هزینه تراکنشها متفاوت است. از همین رو تراکنشهای غیر رسمی کوچک از بین میرود. در زمانی که احتمال برگشت هزینه وجود داشته باشد، بازرگانان و تاجران با احتیاط بیشتری وارد صحنه میشوند و از طرفی درصدی از کلاهبرداری طبیعی خواهد بود. تمام این هزینهها و بحث اعتمادسازی را میتوان در خرید و فروشهای حضوری رفع کرد ولی نکتهای که وجود دارد هیچ گونه راه ارتباطی برای خرید و فروشهای آنلاینی نیست که از این دست مشکلات را نداشته باشند.
پس نیاز امروزه ما این است که یک سیستم پرداخت الکترونیکی داشته باشیم که براساس تکنولوژی رمزنگاری شده، فعالیت کرده و افرادی که مایل هستند به صورت آنلاین و برخط با یکدیگر معامله کنند، بدون نیاز به واسط با یکدیگر پول رد و بدل کنند. در این نوع تراکنش، فروشنده از بحث تقلب خریدار در امان مانده و از طرفی برگشت هزینهای در کار نخواهد بود. در مقاله وایت پیپر بیت کوین چیست؟ قصد داریم تا راهحلی برای مشکل دوبار خرج کردن به کمک سرور برچسب زمانی نظیر به نظیر پیشنهاد کنیم تا با استفاده از آن ترتیب زمانی تراکنشها ایجاد شود. این سیستم پیشنهادی، تا زمانی امن خواهد بود که نودهای درست، کنترل بیشتر قدرت cpu را نسبت به نودهای مهاجم در دست داشته باشند.
تراکنشها
یک سکه دیجیتالی یا همان کوین را به عنوان زنجیرهای از امضاهای دیجیتال تعریف میکنیم. به این صورت که هر مالک به کمک امضای دیجیتال هش بلاک قبلی، کوین و کلید عمومی فرد بعدی را انتقال داده و در نهایت به انتهای تراکنش جدید میافزاید. حال نوبت به گیرنده وجه میرسد که امضاها را تایید کرده و زنجیره مالکیت را تایید نماید.
البته مشکلی که وجود دارد این است که گیرنده یا دریافت کننده نمیتواند تایید کند که یکی از مالکان، این کوین را دوبار خرج کرده است یا خیر. راه حل رایجی که برای این مشکل وجود دارد، این است که یک مقام مورد اعتماد متمرکز مشخص شود تا هر تراکنش را بررسی نماید. بعد از اینکه تراکنش تایید شد، کوین باید به جایی که تولید شده منتقل شود تا کوین جدیدی صادر شود. توجه کنید فقط کوینهایی که به صورت مستقیم از محل تولید اصلی (ضرابخانه) صادر میشوند، مورد اعتماد هستند. البته در کنار این موارد، مشکلی که در این راه حل وجود دارد، این است که سرنوشت کل سیستم، منوط به موسسه یا شرکتی است که کوین را ضرب یا تولید کرده و هر تراکنش باید از طریق آن انجام پذیرد. دقیقا کاری که در یک بانک اتفاق میافتد.
با این حال، به یک راه حل احتیاج داریم تا گیرنده وجه مطلع شود که مالکین قبلی، قبلا هیچ تراکنشی را امضا نکردهاند. لازم به ذکر است که منظور از اولین تراکنش، تراکنشی است که کوین در آن شمرده میشود. به تلاشهای بعدی برای دوباره خرج کردن، اهمیت داده نمیشود. تنها راه برای تایید نبودن یک تراکنش، این است که از همه تراکنشها مطلع بود. در مدل ضرابخانه، شرکت ضربکننده کوین از تمام تراکنشها با خبر بوده و میتواند بفهمد که کدام یک از آنها اول ضرب شده است. برای اینکه این کار بتواند به صورت کامل و درست انجام شود و نیاز به یک شخص مورد اعتماد نداشته باشد، تمام تراکنشها باید به صورت عمومی خبررسانی شود. پس در این زمان نیاز به یک سیستم است تا مشارکتکنندگان بر روی یک تاریخچه منحصر به فرد در مورد سفارش دریافتی توافق کنند. پس در این زمان گیرنده وجه، نیاز به یک مدرک دارد تا اثبات کند که در هنگام هر تراکنش، اکثر نودها موافق آن تراکنش بوده و آن را اولین تراکنش محسوب کردند.
سرور برچسب زمانی (Timestamp Server)
راه حلی که پیشتر بیان شد، با یک سرور برچسب زمانی شروع شده و با برداشتن هَش یک بلاک برای برچسب زمانی و گسترده منتشر شدن هش،کار میکند. این رویه دقیقا مشابه کار روزنامه است. وجود برچسب زمانی اثبات میکند که داده در آن بازه زمانی به منظور کنترل هش وجود داشته و همچنین هر برچسب زمانی، برچسب زمانی قبل را نیز در هش خود داراست که باعث به وجود آمدن یک زنجیره میشود که هر برچسب زمانی، باعث تقویت برچسبهای قبلی میشود.
گواه اثبات کار (Proof of Work)
اجرای یک سیستم برچسب زمانی توزیع شده نظیر به نظیر، نیاز به یک سیستم گواه اثبات کار مثل Hashcash که Adam Back اختراع کرده، دارد. گواه اثبات کار دربرگیرنده جستجوی ارزش در زمانی است که هش اتفاق میافتد مثل SHA-256 که هش با عدد صفر بیت (zero bit) شروع میشود. میانگین کاری که نیاز هست را در تعداد صفر بیتها مشخص میکند و با اجرای یک هش منحصر به فرد تایید میشود.
گواه اثبات کار با زیاد شدن یک عدد اختیاری در بلاک برای شبکه برچسب زمانی پیاده سازی شده و ادامه پیدا میکند تا زمانی که ارزشی پیدا شده که به هش بلاک، صفر بیت مورد نیاز را بدهد. وقتی cpu برای جلب رضایت گواه اثبات کار تلاش مضاعفی انجام میدهد، بلاک بدون اینکه دوباره کار را انجام دهد، قابل تغییر نبوده و از آنجایی که بلاکهای بعدی در زنجیره به دنبال آن قرار میگیرند، پس کار تغییر بلاک در واقع شامل تغییر همه بلاکهای بعد از آن نیز میشود.
مشکل دیگری که گواه اثبات کار برطرف میکند این است که در بیشتر تصمیمگیریها مشکل تعیین نماینده را برطرف مینماید. در واقع با توجه به اینکه معمولا گواه اثبات کار بر اساس مدل یک رای برای هر cpu است، اگر بر اساس مدل یک رای برای هر IP Address باشد، پس میتواند به وسیله هر فردی که قادر به تخصیص IPهای زیاد باشد، دستخوش تغییرات شود. طولانیترین زنجیره که بیشترین تلاش گواه اثبات کار در آن زنجیره سرمایهگذاری شده، تصمیم اکثریت را ارائه میکند. در این حال اگر قدرت اعظم cpu توسط نودهای صادق کنترل بشود، این زنجیره صادق سریعتر از هر زنجیرهای رشد کرده و زنجیرههای خرابکار و همچنین رقبا را کنار میزند. یک مهاجم برای اینکه بتواند بلاک قبلی را تغییر دهد باید گواه اثبات کار آن بلاک و تمام بلاکهای بعد از آن را مجددا انجام داده و پس از انجام این موارد بتواند از کار نودهای صادق پیشی گرفته و جلو برود. خواهید دید که هر چه تعداد بلاکها بیشتر باشد و زنجیره طولانیتر، احتمال اینکه یک مهاجم موفق شود، به شدت کاهش پیدا میکند.
سختی گواه اثبات کار که برای جبران کردن سرعت سخت افزاری که در حال زیاد شدن بوده و همچنین تغییر علاقهای که منجر به مدیریت کردن نودها به مرور زمان میشود، توسط یک عدد متوسطی از بلاکها که در ساعت مورد هدف قرار گرفته و با نام میانگین متحرک نامیده میشود.
شبکه
مراحل راه اندازی شبکه عبارت است از :
- فرستادن تراکنشهای جدید به تمام نودها
- هر نود تراکنش جدید را در یک بلاک قرار میدهد.
- صحت تراکنش هر نود با الگوریتم گواه اثبات کار سنجیده میشود.
- رسیدن به پاسخ درست توسط نودی سبب منتشر کردن بلاک برای سایر نودها میشود.
- پذیرش بلاک توسط نودهای دیگر تنها زمانی اتفاق میافتد که صحت تراکنش را پذیرفته باشند و نود قبلا خرج نشده باشد.
- زمانی مشخص میشود نود، بلاک را پذیرفته که بر روی بلاک بعدی شروع به کار نماید. البته در این حالت هش بلاک پذیرفته شده به نام هش قبلی یاد میشود.
طولانیترین زنجیره نزد نودها همیشه به عنوان زنجیره درست یاد شده و بر روی آن زنجیره کار کردن را ادامه میدهند تا منجر به گسترش بیشتر زنجیره شوند. حال اگر دو نود به صورت همزمان نسخههای متفاوت از بلاک بعدی را منتشر کنند، برخی از نودها یکی از این دو نسخه را زودتر دریافت میکنند. پس بر روی نسخهای که زودتر دریافت کردهاند شروع به کار میکنند ولی اگر آن نسخه دیگر طولانیتر باشد، آن نسخه طولانی را ذخیره میکنند. و هنگامی که گواه اثبات کار بعدی پیدا میشود منجر به برهم خوردن این رابطه شده و یکی از این شاخهها طولانیتر شده و نودهایی که بر روی آن شاخه دیگر کار کردهاند به شاخه طولانیتر منتقل خواهند شد.
نیازی نیست که منتشر شدن یک تراکنش جدید به تمام نودها برسد. وقتی که تراکنشها به تعداد کافی از نودها برسد، زمان زیادی نیاز نیست تا به یک بلاک تبدیل شوند. در این حال اگر نودی هیچ بلاکی را دریافت نکند، آن را در زمان بلاک بعدی تقاضا کرده و غیبت یک بلاک را تشخیص میدهد.
انگیزه
به طور معمول، تراکنش آغازین در یک بلاک، یک تراکنش خاص است که منجر به ایجاد کوین جدیدی میشود. خالق این بلاک همان مالک آن خواهد بود. همین دلیل سبب ایجاد یک انگیزه بالا در پشتیبانی نودها از شبکه را خلق کرده و همچنین راهی را به وجود آورده تا در ابتدا به توزیع کوینها در داخل حلقه پرداخته شود چرا که یک مقام واحد و مرکزی برای صادر کردن آنها وجود ندارد.
افزوده شدن یکنواخت مقدار ثابتی از کوینهای جدید را میتوان با استخراجگران طلا که از منابع برای اضافه کردن طلا به چرخه مصرف استفاده میکنند، مقایسه نمود. در این مثال زمان، الکتریسیته (برق) و cpu مورد استفاده قرار میگیرد.
همچنین این انگیزه را میتوان از راه کارمزدهایی که بابت تراکنش دریافت میشود، تامین کرد. زمانی که ارزش خروجی یک تراکنش از ارزش ورودی آن کمتر باشد، این اختلاف را به صورت کارمزد یک تراکنش به ارزش انگیزه بلاک که دارای تراکنش است، اضافه میگردد. زمانی که یک مقدار از پیش مشخص شده از کوینها به چرخه وارد میشود، تمام انگیزه را میتوان از کارمزد تراکنشها به دست آورده و از تورم رها شد.
این امکان وجود دارد که انگیزه به نودها کمک کند تا صادق باقی بمانند. فرض کنید یک مهاجم طمعکار بتواند قدرت cpu بیشتری از نودهای صادق را جمع کند، در این حال باید بین استفاده از این ظرفیت برای فریب مردم و یا پس گرفتن پرداختیهای خود و یا تولید کوینهای جدید یکی را انتخاب نماید. برای این شخص پیروی کردن از قوانین سود بیشتری دارد چرا که سرپیچی از قوانین و خلق کوینهای جدید برای آن فرد، سبب ضعیف شدن سیستم و از میان بردن اعتبار ثروت آن فرد میشود.
احیای فضای دیسک
وقتی آخرین تراکنش زیر بلاکهای کافی مخفی شود، تراکنشهای قبلی را میتوان آزاد کرد تا در فضای دیسک ذخیره شوند. برای آسانتر شدن این کار بدون شکستن هش بلاک، تراکنشها را به شکل درخت Merkle که فقط ریشه آن در هش بلاک قرار دارد، در خواهند آمد. بریدن شاخههای درخت باعث میشود که بلاکهای قدیمی فشرده شوند. همچنین نیازی به ذخیره هشهای داخلی نیست.
هدر یک بلاک که تراکنشی ندارد حدود 80 بایت است. با فرض اینکه بلاکها در هر ده دقیقه ایجاد میشوند، این مقدار در سال برابر 4.2MB خواهد بود. سیستمهای کامپیوتری معمولی که در سال 2008 به فروش میرسیدند 2 گیگ رم داشتند که بنا بر قانون Moore میتوان پیش بینی کرد که رشد حال حاضر 1.2GB در سال است، پس حتی در صورت ذخیره هدر بلاکها در حافظه هم مشکل ذخیره سازی وجود نخواهد داشت.
تایید پرداخت تسهیل شده
بدون راهاندازی یک نود کامل هم میتوان تایید پرداختیها را انجام داد. یک کاربر فقط نیاز دارد تا یک کپی از هدر بلاکهای طولانیترین زنجیره گواه اثبات کار را ذخیره نماید. در واقع تنها نیاز است که نودهای شبکه را بررسی نموده تا به این کپی دست پیدا کرده و قانع شود که طولانی ترین زنجیره را در اختیار دارد. کاربر باید شاخه مرکل (Merkle) تراکنش را به بلاکی که در آن برچسب زمانی شده مرتبط میسازد، حفظ نماید. کاربر نمیتواند تراکنشها را به تنهایی بررسی کند بلکه باید آن را به مکانی در زنجیره مرتبط کند تا بتواند آن را انجام دهد، همچنین کاربر میتواند بفهمد که یک نود شبکه که آن تراکنش را پذیرفته و یا بلاکهایی که بعد از آن با استقبال بیشتری در شبکه مواجه بودهاند، کداماند.
این تایید وقتی قابل اعتماد است که نودهای صادق، شبکه را کنترل کنند، اگر مهاجم در شبکه قدرتمندتر شود، میزان آسیب پذیری این تایید افزایش مییابد. چراکه نودهای شبکه میتوانند مستقلا تراکنشها را تایید کنند. پس این راه قابل سو استفاده از طریق مهاجم بوده و درصورت اشراف به شبکه توانایی خلق تراکنش جعلی را خواهد داشت. روشی که برای محفوظ ماندن شبکه از این تهدید میتوان ارائه داد، این است که زمانی که نودها، بلاک نامعتبری را شناسایی میکنند، به شبکه هشدار دهند. بلاک نامعتبر، نرم افزار کاربر را وادار میکند که فعالیتی انجام داده و تمامی بلاکها و تراکنشها را دانلود نموده و ناسازگاری را تایید نماید. کسب و کاری که به صورت مداوم پرداختی دریافت میکند به احتمال زیاد مایل است که نودهای خودش را برای استقلال امنیتی و تایید سریعتر به کار بیاندازد.
ترکیب و تقسیم ارزش
امکان مدیریت کردن کوینها به صورت فردی وجود دارد ولی انجام هر تراکنش به صورت مستقل برای هر یک سنت، یک انتقال دشوار خواهد بود. زمانی که به ترکیب و تقسیم ارزش، مجوز داده شود، هر تراکنش چندین ورودی و خروجی خواهد داشت که به صورت معمول ممکن است یک ورودی متفاوت از تراکنش قبلی که بزرگتر هم بوده، وجود داشته باشد و یا اینکه چندین ورودی، مقدارهای کمتر را ترکیب کرده و حداکثر تا دو خروجی نیز وجود خواهد داشت که اولی برای پرداخت و دومی برای زمانی کاربرد دارد که تغییری بخواهد به فرستنده بازگردانده شود.
اینکه یک خروجی به چه میزان گنجایش دارد، مهم است، چرا که ممکن است در آن یک تراکنش به چندین تراکنش قبلی و هر کدام از تراکنشهای قبلی به دیگر تراکنشها وابسته باشند که این مورد مشکلی ندارد، زیرا هیچ زمانی لازم نیست که یک کپی به صورت منحصر به فرد از سرگذشت تراکنش داشته باشیم.
حریم خصوصی
بانکداری سنتی که به شخص ثالث قابل اعتمادی با اعمال محدودیتهایی برای دسترسی به اطلاعات طرفین، سبب ایجاد حریم خصوصی شده است. این نیاز که تمام تراکنشها به صورت عمومی اعلام شوند را ناممکن کرده است ولی همچنان میتوان حریم خصوصی را با تجزیه کردن جریان اطلاعات در قسمت دیگر و ناشناس نگه داشتن کلیدهای عمومی حفظ کرد. در واقع افراد میتوانند بفهمند که اطلاعاتی از فردی به فرد دیگر در حال انتقال است ولی جزئیات این اطلاعات و تراکنش مخفی است. در واقع این همانند کاری است که صرافیهای سهام، زمان و اندازه تریدهای فردی(tape) را در معرض عموم قرار میدهند. اما اینکه طرفین تراکنش شامل چه کسانی میشوند، مشخص نیست.
محافظ اضافی هر تراکنش، یک جفت کلید جدید است که باعث میشود تراکنش به یک مالک مشترک مرتبط نشود. این کار در مورد تراکنشهایی که چندین ورودی با این ارتباط دارند همچنان پرهیزناپذیر بوده و مالکیت ورودیهایی که برای یک فرد خاص هست را آشکار مینماید. اما خطر بزرگتر در این است که اگر مالک یک کلید، مشخص بشود آنگاه ارتباط قادر خواهد بود تا تراکنشهای دیگری که مالکشان همان شخص است را نیز برملا نماید.
محاسبات
اگر فرض کنیم سناریوی سرعت ایجاد یک زنجیره توسط مهاجم بیشتر از سرعت ایجاد زنجیره اصلی باشد، سیستم را در معرض تغییراتی همچون ایجاد ارزش به صورت غیر منتظره یا برداشت پولی که هرگز متعلق به مهاجم نبوده، قرار نخواهیم داد. نودها هیچ وقت یک تراکنشی که نامعتبر باشد را به عنوان پرداختی قبول نمیکنند. از سوی دیگر نودهای صادق هم هیچ وقت بلاکی که حاوی این محتواست را قبول نمیکنند. در نتیجه یک مهاجم فقط میتواند سعی کند تا تراکنش خود را تغییر دهد و پولی که اخیرا خرج کرده، مجددا خرج نماید.
عبارت Binomial Random Walk را میتوان به رقابت بین زنجیره صادق و زنجیره مهاجم توصیف کرد. در واقع اگر زنجیره اصلی یک بلاک جدید پیدا کرده و میزان رهبری خود را یک واحد بیافزاید و در مقابل اگر زنجیره مهاجم به اندازه یک بلاک افزایش پیدا کند و کمبود ایجاد شده را به اندازه 1 واحد متحول کند، هک صورت گرفته و شکست رخ میدهد.
اما احتمال اینکه یک مهاجم بتواند خلا را جبران نماید مثل مسئله نابودی قمار باز (Gambler`s Ruin) است. حال فرض کنید یک قمارباز از یک کسری شروع به فعالیت کرده و با اعتبار نامحدود و به احتمال زیاد با تعداد دفعات نامحدود شروع به بازی میکند تا سربهسر شود. میتوان احتمال سربهسر شدن قمارباز را محاسبه کرد یا اگر به مثال خودمان برگردیم، میتوان این احتمال که یک مهاجم به زنجیره اصلی برسد را از راه زیر محاسبه کرد.
در واقع اگر فرض کنیم
p احتمال این باشد، که نود اصلی بلاک بعدی را پیدا نماید.
q احتمال این باشد، که مهاجم بلاک بعدی را پیدا نماید.
qZ احتمال این باشد، که مهاجم بتواند z بلاک جامانده را جبران نماید.
حال اگر p>q باشد، احتمال به صورت نمایی و در حد زیادی، کم میشود. چرا که تعداد بلاکهایی که مهاجم قصد جبران آنها را دارد، زیاد میشود. پس در این حالت احتمال برعلیه مهاجم بوده و اگر مهاجم در ابتدای مسیر یک جهش با خوششانسی رو به جلو نداشته باشد، شانس وی بسیار کم شده و از موفقیت جا میماند.
حال به بررسی بازه زمانی که یک گیرنده برای تراکنش جدید باید صبر کند تا مطمئن شود که فرستنده قادر به تغییر تراکنش نیست، میپردازیم. اگر فرض کنیم که فرستنده یک مهاجم است که خواهان فریب گیرنده است تا گیرنده برایش پرداختی را ارسال نماید، تا مهاجم بعد از مدت زمانی که سپری شد پرداختی را برای خود بردارد. در این زمان گیرنده هشداری برای این کار دریافت میکند، ولی فرستنده امید دارد که این هشدار دیر توسط گیرنده دریافت شود.
یک جفت کلید جدید توسط گیرنده ایجاد شده و کلید عمومی را قبل از امضا برای فرستنده، میفرستد. گیرنده با این کار مانع میشود تا فرستنده قبل از موعد زنجیره بلاک را آماده نماید. از طرفی فرستنده با کار کردن مداوم روی زنجیره این کار را تا زمانی که خوش شانس باشد و از گیرنده سبقت بگیرد، ادامه خواهد داد تا تراکنش را در آن لحظه انجام دهد. زمانی که یک تراکنش فرستاده میشود، فرستندهای که صادق نیست بر روی زنجیره موازی شروع به کار کردن سری میکند که دربرگیرنده نسخه دومی از تراکنش است.
اما گیرنده تا زمانی که تراکنش به بلاک افزوده شود، صبر کرده و z بلاک بعد از آن متصل میشود. نکتهای که وجود دارد این است که گیرنده مقدار پیشرفت دقیق مهاجم را نمیداند، اما فرض را بر این میگذارد که زمان مورد نظر برای هر بلاک، که بلاکهای صادق نیاز دارند، به طول میانجامد. احتمال پیشرفت مهاجم توزیع Poisson با ارزش مورد نظر برابر خواهد بود با
برای محاسبه این احتمال که مهاجم بتواند جاماندگی را جبران نماید، تراکم Poisson برای هر مقدار پیشرفتی که مهاجم می توانسته انجام بدهد در احتمال جبران از آن نقطه ضرب میشود:
برای اینکه از جمع کردن دنباله نامحدود توزیع دوری کنیم، فرمول را ساده میکنیم:
اگر فرمول بالا را در زبان C به کد تبدیل کنیم، کدی مانند زیر خواهیم داشت:
که اگر تعدادی از نتایج را اجرا کنیم، خواهیم دید که احتمال با افزایش z به طور نمایی کم میشود.
اگر P کوچکتر از %0.1 باشد.
نتیجه گیری
مقاله وایت پیپر بیت کوین یک طرح سیستمی برای تراکنشهای الکترونیکی که نیاز به اعتماد ندارد، پیشنهاد مینماید که از قالب معمولی کوینهای ساخته شده از امضاهای دیجیتال شروع میشود. این مدل کنترل قاطع مالکیت را فراهم مینماید. اما اگر روشی برای دوری از حمله دوبار خرج کردن، نباشد، این مدل ناقص است. برای رفع این مشکل یک شبکه نظیر به نظیر پیشنهاد داده میشود که از گواه اثبات کار، برای درج سرگذشت عمومی تراکنشها استفاده نماید. تغییر این تراکنشها به سرعت از جنبه محاسباتی برای مهاجم امکان پذیر نخواهد بود اگر که نودهای صادق بیشترین قدرت cpu را کنترل کنند. دلیل قدرت این شبکه، ساختار غیر متمرکز آن است. نودها همه با هماهنگی با هم کار کرده و نیازی به شناخته شدن ندارند، چرا که پیامها به مکان خاصی فرستاده نشده و تنها نیاز است که بر مبنای بهترین تلاش تحویل داده شوند. نودها این امکان را دارند تا هر زمانی که مایل بودند شبکهها را ترک کنند و مجددا در زمان دیگری به اختیار خود وارد شبکه شوند و زنجیره گواه اثبات کار را به عنوان یک شاهد و مدرکی که در زمان غیبت آنها انجام گرفته شده، بپذیرند. نودها با قدرت پردازشی خودشان رای داده و از سوی دیگر با کار بر روی بلاک و توسعه آن نشان میدهند که بلاکی را پذیرفته و برای توسعه آن تلاش میکنند. و اگر بر روی بلاکی کار نکنند، در واقع بلاک را نامعتبر میپندارند. لازم به ذکر است که هر گونه قانون و انگیزه را میتوان با الگوریتم اجماع اجرایی نمود.
سخن پایانی
چنانچه قبلا از شبکه بیت کوین استفاده کرده باشید، حتما با بسیاری از اصطلاحات این مقاله آشنا بودید. در وایت پیپر بیت کوین ، خالق ناشناس آن، ساتوشی ناکاموتو، سعی بر طراحی یک الگوریتم پیچیده ریاضی داشته که بتوان بدون وجود یک شخص ثالث مانند بانک، تراکنشهای یک ارز را با امنیت کامل انجام داد. در واقع مهمترین مشکل در انجام تراکنشها در اینگونه شبکه، مشکل دوبار خرج کردن پول است که ساتوشی ناکاموتو بخوبی این مشکل را حل کرده است. توجه داشته باشید که این مقاله، یک مقاله رفرنس یا منبع است و جنبه آموزشی ندارد. تمام برنامه نویسان بلاکچین نام وایت پیپر بیت کوین را شنیدهاند و با آن کاملا آشنایی دارند. نکته قابل تامل این است که بلاکچین شبکههایی همچون اتریوم بسیار پیشرفتهتر و دقیقتر از الگوریتمهای بیت کوین است ولی با این حال هنوز هم بیت کوین با اختلاف، محبوبترین رمزارز است.
دیدگاه خود را ثبت کنید