یک تراکنش بیتکوین به معنای انتقال مقداری بیتکوین از یک آدرس به آدرس دیگری است که در بلاکچین ثبت میشود.
فرآیند انتقال چگونه انجام میشود؟
در این درس، میخواهیم به شما نشان دهیم که نحوه کار یک تراکنش بیتکوین را که چگونه از ابتدا تا انتها کار میکند.ابتدا نحوه عملکرد یک تراکنش بیتکوین را از دیدگاه یک کاربر بررسی میکنیم. سپس، به بررسی این فرآیند از دیدگاه کلان میپردازیم.این کمک میکند تا تمام مفاهیم جدیدی را که در دروس قبلی آموختهاید، به خاطر بسپارید.
شروع تراکنش بیتکوین
فرض کنید که رضا یک بیتکوین دارد و میخواهد آن را به حمید ارسال کند.
از دیدگاه رضا
اولین کاری که رضا انجام میدهد این است که کیف پول بیتکوین خود را باز کند.این میتواند هر نوع کیف پولی باشد، اما در این مثال، او از یک کیف پول نرمافزاری که روی لپتاپش نصب کرده استفاده میکند. رضا تراکنش بیتکوین را آغاز میکند.
سپس از حمید میخواهد که آدرس بیتکوین خود را به او بدهد.
حمید آدرس بیتکوین خود را به رضا ایمیل میکند و رضا آن را کپی میکند. رضا مقدار بیتکوینی را که میخواهد به حمید بفرستد وارد میکند.
چون انگشتان بزرگ او مستعد خطاهای تایپی هستند، دوباره چک میکند که عدد درست را وارد کرده باشدو دکمه ارسال را فشار میدهد.
نرمافزار کیف پول سپس از او رمز عبور را برای تأیید تراکنش میخواهد.برای ارسال بیتکوین، رضا باید به شبکه بیتکوین اثبات کند که واقعاً اوست که پول را میفرستد و مالک بیتکوین است.اینجاست که کلید خصوصی او وارد عمل میشود (که در کیف پول ذخیره شده است).
پس از وارد کردن رمز عبور صحیح، نرمافزار کیف پول تراکنش را با استفاده از کلید خصوصی رضا امضا میکند و یک داده جداگانه به نام “امضای دیجیتال” ایجاد میکند (همه اینها در پشت صحنه انجام میشود).
پشت صحنه و نحوه کار یک تراکنش بیتکوین
از اینجا به بعد، دخالت رضا تمام میشود.نرمافزار کیف پول به یک نود بیتکوین متصل میشود و پیام تراکنش را همراه با “امضای دیجیتال” و کلید عمومی ارسال میکند.نود بررسی میکند که آیا تراکنش معتبر است یا خیر:
آیا فرستنده به اندازه کافی بیتکوین در آدرس خود دارد که بتواند تراکنش را انجام دهد؟
آیا فرستنده مجاز به ارسال بیتکوین است؟
به عنوان مثال، بررسی میکند که آیا رضا واقعاً یک بیتکوین برای ارسال دارد. اگر تراکنش تمام بررسیها را پاس کند، نود تراکنش را به نودهای دیگر ارسال میکند.به صورت پیشفرض، نودها به یکدیگر اعتماد نمیکنند، بنابراین آنها دوباره تراکنش را برای خودشان تأیید میکنند.
و فقط در صورتی که تراکنش معتبر باشد، آن را با نودهای متصل به خود به اشتراک میگذارند.اگر تراکنش معتبر تشخیص داده شود، در یک منطقه ذخیره موقت به نام “استخر حافظه” یا “ممپول” ذخیره میشود.در این مرحله، یک تراکنش به عنوان “تأیید نشده” یا “در حال انتظار” در نظر گرفته میشود.
نودهای خاصی به نام “ماینرها” این تراکنش را به همراه دیگر تراکنشهای معتبر از ممپول خود در یک “بلاک” بستهبندی میکنند. ماینرها سپس برای اولین بار “ماین” کردن بلاک خود رقابت میکنند. این شامل تلاش برای یافتن عددی است که با تعداد مشخصی از صفرها شروع میشود.
تنها راه برای یافتن این عدد، حدس زدن و خطا است. به عبارت دیگر، هر چه بیشتر حدس بزنند، احتمال بیشتری برای یافتن عدد صحیح دارند.
اولین ماینری که عدد صحیح را حدس بزند به این معناست که اولین کسی است که بلاک خود را ماین کرده است.لحظهای که ماینر عدد صحیح را حدس بزند، بلاک خود را به همراه “عدد برنده” به سایر نودهای شبکه بیتکوین به اشتراک میگذارد.
نودها در شبکه بیتکوین بررسی میکنند که آیا ماینر عدد صحیح را حدس زده است و اگر درست باشد، بلاک ماینر برنده را به نسخه خود از بلاکچین اضافه میکنند. و این بلاک را به نودهای دیگر نیز ارسال میکنند.
از آنجا که بلاک (که تراکنش را در بر دارد) به نسخه “رسمی” بلاکچین اضافه شده است، تراکنش اکنون به عنوان “تأیید شده” در نظر گرفته میشود.پس از ایجاد بلاک و تأیید تراکنش و گنجاندن آن در آن بلاک، تراکنش به عنوان “یک تأیید” در نظر گرفته میشود.
از دیدگاه حمید
حمید میبیند که تراکنش تأیید شده و کیف پول بیتکوین خود را چک میکند تا ببیند آیا بیتکوین انتقال یافته است. هر چه بلاکهای بیشتری بر روی بلاکی که تراکنش رضا در آن قرار دارد ساخته شود، تراکنش بر روی بلاکچین بیشتر “تأیید شده” در نظر گرفته میشود.
در واقع، هر بلاک اضافه شده به عنوان یک “تأیید اضافی” در نظر گرفته میشود. انتظار برای شش تأیید، استاندارد فعلی برای اکثر تراکنشها به منظور اطمینان از امنیت است. و اینک، یک بیتکوین از آدرس رضا به آدرسی که متعلق به حمید است انتقال یافته است.
و مگر اینکه رضا یا حمید آدرس کیف پول بیتکوین خود را به صورت عمومی به اشتراک بگذارند، هیچکس نمیداند که دو ابرقهرمان معروف در یک تراکنش بیتکوین دخیل بودهاند.
همه فقط میبینند که یک بیتکوین از یک آدرس به آدرس دیگری ارسال شده است، اما نمیدانند که چه کسی پشت این آدرسها است.همانطور که میبینید، بسیاری از مراحل در یک تراکنش بیتکوین در پشت صحنه انجام میشود.
وقتی حمید آدرس خود را به رضا داد و رضا تراکنش را با استفاده از کیف پول بیتکوین خود آغاز کرد، بقیه کارها توسط کامپیوترها و کدهای نرمافزاری انجام شد.
دیدگاه کلان از یک تراکنش بیتکوین
حال بیایید به صورت کلان ببینیم که یک تراکنش بیتکوین چگونه کار میکند.فرض کنید که رضا آدرس حمید و مقدار بیتکوینی که میخواهد ارسال کند را وارد کرده است.
رضا کیف پول خود را به یک نود متصل میکند که پیامی به تمام کامپیوترهایی که نسخه بهروز شده پایگاه داده (بلاکچین بیتکوین) را اجرا میکنند ارسال میکند که به طور موثر میگوید: “من میخواهم 1 بیتکوین به حمید ارسال کنم.”
رضا یک رشته منحصربهفرد از حروف و اعداد به نام “کلید خصوصی” دارد. با این کلید خصوصی، نرمافزار کیف پول حمید یک “امضای دیجیتال” تولید میکند که اطمینان میدهد پیام از طرف اوست و نه از طرف کسی دیگر.
کامپیوترهای موجود در شبکه بیتکوین میتوانند به راحتی تأیید کنند که رضا واقعاً پیام را ارسال کرده است با استفاده از یک رشته متفاوت از حروف و اعداد که رضا ارائه میدهد، به نام “کلید عمومی” برای تأیید این “امضای دیجیتال”.
آنها همچنین میتوانند به راحتی تأیید کنند که رضا 1 بیتکوین برای ارسال دارد زیرا همه آنها نسخهای از پایگاه داده فعلی را دارند.همه نودها به طور مداوم اطلاعات جدید (تراکنشها) را که به شبکه بیتکوین اضافه میشود، با یکدیگر بهروزرسانی میکنند.تراکنشها به صورت جداگانه در بلاکچین ثبت نمیشوند، بلکه ابتدا در بلاکها گروهبندی میشوند.
تراکنشها ابتدا در چیزی که شبیه به یک اتاق انتظار است (“ممپول”) قرار میگیرند، جایی که منتظر تأیید میمانند.ممپول یک پایگاه داده کوچکتر از تراکنشهای تأیید نشده (در حال انتظار) است که هر نود نگهداری میکند. همه تراکنشهای موجود در ممپول در حال انتظار هستند و نباید تا زمانی که در یک بلاک گنجانده شوند، اعتماد شوند.
از آنجا که تراکنش تنها پیشنهاد شده و تسویه نشده است، سیستم میتواند به سرعت پیام را منتقل کند تا اطمینان حاصل کند که همه شرکتکنندگان از آن مطلع هستند.
در نمودار زیر، رضا و حمید به عنوان کیف پولهای بنفش نشان داده شدهاند.
دایرههای خاکستری نشاندهنده کامپیوترهایی (“نودهای کامل”) هستند که بخشی از شبکه همتا به همتا (P2P) بیتکوین هستند.
مربعهای سیاه نشاندهنده “بلاکچین”، نسخههای بهروزرسانی شده متوالی از دفتر کل هستند، در زمانی که رضا تراکنش خود را به شبکه پیشنهاد میکند.
همانطور که میبینید، نسخههای یکسانی از بلاکچین بر روی کامپیوترهایی در سراسر جهان (“نودهای کامل”) که نرمافزار بیتکوین را اجرا میکنند، ذخیره شدهاند. این طراحی اطمینان میدهد که هیچ نهاد واحدی کنترل دفتر کل را در دست ندارد و بیتکوین در برابر کنترل (یا تعطیلی) توسط هر دولت یا مقام مرکزی مقاوم است.
تمام نودهایی که نسخه کامل بلاکچین را نگهداری میکنند، به عنوان “نودهای کامل” شناخته میشوند و برای پاک کردن دفتر کل باید همه آنها از بین بروند. تا زمانی که کل دفتر کل در حداقل یک نود کامل وجود داشته باشد، رکورد تمام تراکنشهای بیتکوین در طول تاریخ وجود خواهد داشت.
البته، رضا تنها کسی نیست که تراکنش ایجاد میکند. اعضای دیگر انتقامجویان نیز بیتکوینهای خود را به گیرندگان دیگر ارسال میکنند. به عنوان مثال، کاپیتان آمریکا میتواند برخی بیتکوینها را به سرباز زمستان ارسال کند.
اینجاست که یک شرکتکننده ویژه در شبکه وارد میشود: “ماینرها.”
ماینرها کامپیوترهایی هستند که در سراسر جهان پخش شدهاند و بخشی حیاتی از شبکه بیتکوین را تشکیل میدهند. وظیفه آنها جمعآوری یا گروهبندی تراکنشهای معتبر جدید مانند تراکنش رضا و پیشنهاد آنها برای تسویه است.این گروههای تراکنشها به نام “بلاک” شناخته میشوند که از آنجا “بلاک” در “بلاکچین” میآید.
در هر زمان، هزاران کامپیوتر در حال رقابت با یکدیگر برای حق ایجاد بلاک بعدی هستند. این رقابت شامل حل یک “پازل” است و ماینرها میتوانند یک بلاک جدید را تنها در صورتی پیشنهاد دهند که پازل فعلی را حل کنند.
این “پازل” به طور اساسی به حدس زدن یک عدد صحیح میپردازد. احتمال حدس زدن عدد صحیح حدود 1 به 6 تریلیون است. بنابراین، ترفند برای اولین نفری که “عدد برنده” را پیدا میکند این است که تا حد ممکن تعداد بیشتری عدد را حدس بزند. این کار نیاز به قدرت محاسباتی زیادی دارد که نیازمند انرژی زیادی است. هرکس اولین نفری باشد که راهحل را پیدا کند، به جایزهای به نام “جایزه بلاک” دست مییابد.
جایزه بلاک به منظور تشویق نودها برای مشارکت در ماینینگ طراحی شده است. در غیر این صورت، ماینری وجود نخواهد داشت زیرا آنها نمیتوانستند هزینه بالای کامپیوترها و هزینه برق را جبران کنند.
جایزه بلاک شامل دو جزء است:
بیتکوینهای تازه تولید شده کارمزدهای تراکنش (که توسط کسی که تراکنش را آغاز میکند مانند رضا پرداخت میشود)
بیتکوینهای تازه تولید شده که توسط ماینر به دست میآید به عنوان “یارانه بلاک” شناخته میشوند و بخش بزرگی از جایزه را تشکیل میدهند. هر بلاک جدید در حال حاضر با جایزهای معادل 6.25 بیتکوین تازه تولید شده همراه است.هر بلاک شامل چندین تراکنش است و تمام تراکنشها شامل کارمزد هستند که ماینرها جمعآوری میکنند.
به طور خلاصه:
جایزه بلاک = یارانه بلاک + کارمزدهای تراکنش
جایزه بلاک چیزی است که ماینرها را برای انجام کار لازم برای تأیید تراکنشها و نگهداری پایگاه داده تشویق میکند.
هر 210,000 بلاک، یا تقریباً هر چهار سال یک بار، یارانه بلاک به نصف کاهش مییابد در رویدادی به نام “نصف شدن”. این فرآیند ادامه خواهد داشت تا زمانی که یارانه بلاک به صفر برسد. در آن زمان، ماینرها تنها کارمزدهای تراکنش را جمعآوری خواهند کرد.
بلاکهای جدید تقریباً هر 10 دقیقه در شبکه بیتکوین تسویه میشوند، هر چند زمان دقیق بستگی به سرعت حل شدن پازل دارد.
امروزه بیشتر ماینینگ توسط “استخرهای ماینینگ” انجام میشود، گروههایی از ماینرها که قدرت پردازشی خود را ترکیب میکنند و جایزه بلاک را بین خودشان تقسیم میکنند.
این فرآیند در نمودار زیر نشان داده شده است.
نودهای ماینر در شبکه بیتکوین
ماینرها اکنون به عنوان دایرههای نارنجی نشان داده شدهاند.مربع آبی نشاندهنده دفتر کل بهروزرسانی شده است که شامل تعدادی تراکنش جدید از جمله تراکنش رضا است.
در حال حاضر، تنها یک شرکتکننده در شبکه (ماینری که بلاک جدید تراکنشها را پیشنهاد کرده است) میتواند دفتر کل کامل بهروزرسانی شده را ببیند.
تمامی شرکتکنندگان دیگر هنوز تنها بلاکهای قدیمیتر را میبینند که به صورت سیاه نشان داده شدهاند.از آنجا که جایزه بسیار قابل توجه است، بسیاری از ماینرها برای تسویه هر بلاک تراکنشها رقابت میکنند.
بهطور طراحی، حل کردن پازل یک کار پرهزینه است زیرا نیاز به قدرت محاسباتی قابل توجهی دارد و نیازمند انرژی زیادی است. و دانستن این که کدام یک از هزاران ماینر ابتدا پازل را حل میکند، غیرممکن است.
وقتی یک ماینر پازل را حل میکند (عدد صحیح را حدس میزند)، میتواند راهحل را ارسال کند و بلاک تراکنشهای خود را به شبکه پیشنهاد دهد.
آنچه در این رویکرد جالب است این است که اگرچه حل کردن پازل دشوار و پرهزینه است، بررسی نتیجه بسیار آسان است. و وقتی یک ماینر راهحل و بلاک تراکنشهای خود را ارسال میکند، سایر اعضای شبکه کار را بررسی میکنند.
اگر تراکنشها معتبر باشند و راهحل پازل صحیح باشد، شرکتکنندگان شبکه نسخه خود از پایگاه داده را بهروزرسانی میکنند تا تراکنشهای جدید را منعکس کنند.
در این نقطه، تراکنش رضا به عنوان تسویه یا “تأیید شده” در نظر گرفته میشود. 1 بیتکوین از آدرس رضا به آدرس حمید منتقل شده و به صورت رسمی در بلاکچین ثبت شده است.
این “مکانیزم اجماع” برای تعیین این که چه تراکنشهایی به صورت دائم ثبت و “تأیید شده” در نظر گرفته میشوند، هسته طراحی بلاکچین بیتکوین است.
همگامسازی بلاکچین در شبکه بیتکوین
همه شرکتکنندگان شبکه اکنون بلاک جدید تراکنشهای پیشنهاد شده (مربع آبی) را پذیرفتهاند. در نتیجه، دفتر کل آنها بهروزرسانی و همگامسازی شده است.
بهطور مهمی، رقابت برای تسویه بلاک بعدی تراکنشها بستگی به گنجاندن اطلاعات از بلاک قبلی دارد، که باعث میشود ماینرها به سرعت نسخه خود از پایگاه داده را بهروزرسانی کنند و تضمین میکند که دستکاری در یک بلاک تسویه شده بسیار دشوار است. بلاکچین بیتکوین شامل هر بلاک از زمان پیدایش آن است، تا به اولین بلاک که به عنوان “بلاک جنسیس” شناخته میشود.
چه میشود اگر ماینر ناشناس بیتکوین که یک بلاک را ارائه میدهد یک بازیگر بد باشد و یک بلاک نامعتبر از تراکنشها را که به نوعی به نفع خود است، پیشنهاد دهد؟
یا چه میشود اگر رضا بدخواهانه باشد و بخواهد همان 1 بیتکوین را همزمان به اسپایدرمن و واندر وومن ارسال کند بدون این که کسی متوجه شود؟
شرکتکنندگان شبکه هر تراکنش را در هر بلاک پیشنهادی بررسی میکنند و بلاکهای با تراکنشهای نامعتبر را رد میکنند. امروز، بیش از 100,000 نود مستقل هر تراکنش بیتکوین را به طور مستقل تأیید میکنند!
از آنجا که کار تأیید تراکنشها و اطمینان از این که تنها تراکنشهای معتبر تسویه میشوند برای شرکتکنندگان شبکه به طرز عجیبی آسان است اما تلاش برای تسویه تراکنشها پرهزینه است، انگیزه برای حتی تلاش برای تقلب در سیستم به حداقل میرسد.
خلاصه
بیایید تمام تعاملات در شبکه بیتکوین را خلاصه کنیم:اگر میخواهید بیتکوینها را به شخص دیگری ارسال کنید، آدرس بیتکوین گیرنده را ارائه میدهید و کیف پول شما به یک نود متصل میشود تا تراکنش را آغاز کند.
نود تراکنش را تأیید میکند، آن را اعتبارسنجی میکند و سپس تراکنش معتبر را به نودها و ماینرهای دیگر ارسال و منتقل میکند. اگر تراکنش یکی از قوانین بیتکوین را نقض کند، نودها آن را به طور خودکار رد میکنند.
ماینرها این تراکنشها را در یک “بلاک کاندید” (بلاک موقت) دستهبندی میکنند و برای این که اولین نفری باشند که بتواند بلاک خود را در بلاکچین منتشر کند، با حدس زدن صحیح یک حل یک “پازل ریاضی” رقابت میکنند.
ماینر “برنده” میتواند این بلاک موقت را به عنوان یک بلاک دائمی به بلاکچین پیشنهاد دهد و تراکنش (و دیگر تراکنشهای دسته) را تأیید کند.
نودها این بلاک را دریافت میکنند و تأیید میکنند که ماینر قوانین شبکه را رعایت کرده است. (اگر بلاک یکی از قوانین بیتکوین را نقض کند، نودها آن را به طور خودکار رد میکنند.)
هرگاه نودی یک بلاک جدید دریافت کند و آن را معتبر بداند، آن را به نودهای دیگر منتقل میکند تا همه نودها (شامل ماینرها) همگام بمانند و بلاکچینهای یکسانی را نگه دارند.
همه ماینرهای دیگر بلاک موقت خود را حذف کرده و با یک “بلاک کاندید” جدید با یک پازل ریاضی جدید شروع میکنند.
هنگامی که نودی که کیف پول گیرنده به آن متصل است بلاک جدید را دریافت کند، کیف پول گیرنده با بیتکوینهای جدید دریافتی، موجودی خود را نشان خواهد داد.