اگر فقط قیمت بیتکوین را دنبال کنیم، ممکن است مهمترین بخش ماجرا را از دست بدهیم: این شبکه بدون یک بانک یا شرکت مرکزی چگونه میتواند مالکیت و انتقال ارزش را مدیریت کند؟
پاسخ در یک فناوری واحد خلاصه نمیشود. کیف پولها کلیدها و تراکنشها را مدیریت میکنند، نودها قوانین شبکه را اجرا و دادهها را اعتبارسنجی میکنند، تراکنشها در شبکه منتشر میشوند، ماینرها بلاک پیشنهادی میسازند و با Proof of Work برای افزودن بلاک رقابت میکنند و بلاکچین تاریخچه پذیرفتهشده را سازماندهی میکند.
این مقاله همین مسیر را از لحظهای که کاربر قصد ارسال بیتکوین دارد تا زمانی که تراکنش در بلاکچین عمق پیدا میکند دنبال میکند.
تصویر کلی: بیتکوین یک سیستم واحد نیست
برای فهم بیتکوین بهتر است نقش اجزای اصلی را جدا کنیم:
- کیف پول: کلیدها را مدیریت میکند و تراکنش میسازد و امضا میکند.
- تراکنش: مشخص میکند کدام خروجیهای قبلی مصرف و چه خروجیهای جدیدی ایجاد شوند.
- نود: تراکنشها و بلاکها را با قوانین پروتکل بررسی میکند.
- ممپول: مجموعه تراکنشهای معتبر و هنوز در بلاک ثبتنشدهای است که هر نود نگهداری میکند.
- ماینر: تراکنشها را در یک بلاک پیشنهادی جمع میکند و Proof of Work انجام میدهد.
- بلاکچین: تاریخچه بلاکهای پذیرفتهشده شبکه را بهصورت مرتبشده نگهداری میکند.
هیچکدام بهتنهایی بیتکوین نیستند. امنیت و کارکرد شبکه از همکاری این اجزا و قواعد مشترک آنها حاصل میشود.
مرحله اول: کاربر میخواهد بیتکوین ارسال کند
فرض کنید علی میخواهد مقداری بیتکوین برای سارا بفرستد. علی در کیف پول خود مبلغ و آدرس مقصد را وارد میکند.
کیف پول ابتدا باید بداند چه مقدار دارایی قابل خرج در اختیار علی است. این کار با بررسی UTXOهای مرتبط با کلیدهای کیف پول انجام میشود. برای تفاوت میان کیف پول، کلید خصوصی و آدرس نیز میتوانید کیف پول و کلید خصوصی را بخوانید.
فرض کنید یک UTXO به ارزش ۰٫۸ بیتکوین وجود دارد و علی میخواهد ۰٫۳ بیتکوین بفرستد. کیف پول میتواند آن UTXO را انتخاب کند و تراکنشی بسازد که یک خروجی برای سارا و یک خروجی Change برای علی ایجاد کند. کارمزد نیز از تفاوت میان ارزش ورودیها و خروجیها تأمین میشود.
بنابراین تراکنش در بیتکوین بیشتر شبیه «مصرف خروجیهای قبلی و ایجاد خروجیهای جدید» است تا کاهش یک عدد از حساب بانکی.
مرحله دوم: تراکنش با کلید خصوصی امضا میشود
پس از ساخت تراکنش، کیف پول باید شرایط خرجکردن UTXOهای انتخابشده را برآورده کند. در بسیاری از تراکنشهای رایج، این کار با ایجاد امضای دیجیتال توسط کلید خصوصی انجام میشود.
کلید خصوصی برای شبکه ارسال نمیشود. کیف پول امضا را تولید میکند و نودها میتوانند با اطلاعات عمومی موجود بررسی کنند که امضا معتبر است.
این موضوع دلیل اهمیت کلید خصوصی است: داشتن آدرس به معنی داشتن اختیار خرجکردن نیست؛ داده محرمانهای که برای امضای معتبر لازم است باید تحت کنترل صاحب دارایی باقی بماند.
مرحله سوم: تراکنش به شبکه منتشر میشود
تراکنش امضاشده به یک یا چند نود ارسال میشود. نود دریافتکننده آن را با قواعد پروتکل بررسی میکند.
از جمله بررسیها میتوان به ساختار تراکنش، وجود ورودیها، خرجنشده بودن خروجیهای مورد استفاده، اعتبار امضاها و شرایط اسکریپت و منطقی بودن ارزش ورودیها و خروجیها اشاره کرد.
اگر تراکنش معتبر باشد و سیاستهای نود اجازه دهد، تراکنش میتواند وارد ممپول شود و به همتایان دیگر منتشر شود.
مرحله چهارم: تراکنش وارد ممپول میشود
ممپول را میتوان اتاق انتظار تراکنشها دانست. اما این اتاق انتظار یک دفتر مرکزی جهانی نیست.
هر نود ممپول خود را دارد و ممکن است به دلیل زمان دریافت، ظرفیت، سیاستهای محلی یا شرایط ارتباطی، دقیقاً همان تراکنشهایی را نداشته باشد که نود دیگری دارد.
در این مرحله تراکنش هنوز در بلاکچین ثبت نشده است. به همین دلیل عبارتهایی مانند «تراکنش ارسال شد» و «تراکنش تأیید شد» نباید به جای یکدیگر استفاده شوند.
مرحله پنجم: ماینر تراکنشها را برای یک بلاک انتخاب میکند
ماینر از میان تراکنشهای در دسترس خود، مجموعهای را برای بلاک پیشنهادی انتخاب میکند. کارمزد یکی از عوامل مهم در انتخاب است، زیرا فضای هر بلاک محدود است و ماینرها برای درآمد بیشتر معمولاً به کارمزد نیز توجه میکنند.
ماینر سپس ساختار بلاک را میسازد. جزئیات نقش ماینر و Proof of Work در فرایند استخراج را میتوانید جداگانه مطالعه کنید. بلاک علاوه بر تراکنشها، اطلاعات لازم برای ارتباط با بلاک قبلی و اجرای Proof of Work را دارد.
مرحله ششم: Proof of Work انجام میشود
ماینر باید برای بلاک پیشنهادی یک نتیجه معتبر از Proof of Work پیدا کند. این کار با تغییر مقادیر مناسب و محاسبه مکرر هش انجام میشود.
پیداکردن نتیجه مناسب قابل پیشبینی نیست. ماینرها تلاشهای زیادی انجام میدهند تا یکی از آنها شرایط دشواری شبکه را برآورده کند.
این هزینه محاسباتی بخشی از مدل امنیتی بیتکوین است. برای بازنویسی تاریخچه، مهاجم باید مقدار زیادی کار محاسباتی انجام دهد و با زنجیره معتبر رقابت کند.
مرحله هفتم: بلاک در شبکه منتشر و اعتبارسنجی میشود
وقتی یک ماینر بلاک معتبر پیدا کرد، آن را برای سایر نودها منتشر میکند. نودها بلاک را مستقل از ماینر بررسی میکنند.
آنها باید مطمئن شوند بلاک ساختار درست دارد، Proof of Work معتبر است، تراکنشهای آن قوانین را رعایت میکنند، پاداش ماینر بیش از مقدار مجاز نیست و بلاک به شکل صحیح به زنجیره متصل میشود.
اگر بلاک نامعتبر باشد، صرف اینکه ماینر برای تولید آن برق و قدرت محاسباتی مصرف کرده است باعث پذیرش آن نمیشود.
مرحله هشتم: بلاک به زنجیره پذیرفتهشده اضافه میشود
اگر بلاک معتبر باشد و در رقابت میان شاخههای معتبر، زنجیرهای با بیشترین کار تجمعی را شکل دهد، بخشی از تاریخچه مورد استفاده شبکه میشود.
تراکنشهای داخل بلاک در این مرحله در زنجیره ثبت شدهاند. با این حال، در شرایط خاص امکان بازسازماندهی کوتاهمدت زنجیره وجود دارد؛ به همین دلیل برای تراکنشهای مهم، عمق بیشتر اهمیت دارد.
تأیید تراکنش یعنی چه؟
قرارگرفتن تراکنش در یک بلاک معمولاً یک تأیید محسوب میشود. هر بلاک بعدی که روی آن ساخته شود، یک تأیید دیگر به عمق تراکنش اضافه میکند.
با افزایش این عمق، بازنویسی تاریخچه مربوط به تراکنش هزینه محاسباتی بیشتری میخواهد. این به معنی تضمین مطلق نیست، اما سطح اطمینان عملی را افزایش میدهد.
تعداد تأیید مورد نیاز به نوع کاربرد و سیاست سرویس مقصد بستگی دارد و یک عدد جهانی برای همه انتقالها وجود ندارد.
چرا ماینرها نمیتوانند هر قانونی را تغییر دهند؟
قدرت محاسباتی ماینرها با اختیار تغییر قواعد شبکه یکی نیست.
اگر ماینری تراکنش نامعتبر ایجاد کند یا پاداش بیشتری از مقدار مجاز برای خود بسازد، نودهای کامل میتوانند آن بلاک را رد کنند. نودها قواعد پروتکل را اجرا میکنند و برای پذیرفتن بلاک فقط به ادعای ماینر اعتماد نمیکنند.
به همین دلیل، برای فهم قدرت در شبکه باید میان تولید بلاک و اعتبارسنجی قواعد تفاوت گذاشت.
پس بیتکوین دقیقاً کجاست؟
بیتکوین یک فایل نیست که داخل کیف پول ذخیره شده باشد. چیزی که در شبکه ثبت شده، تاریخچه تراکنشها و وضعیت خروجیهای قابل خرج است.
کیف پول کلیدها را مدیریت میکند و از آنها برای ساخت و امضای تراکنش استفاده میکند. اگر نرمافزار کیف پول حذف شود اما کلیدها یا عبارت بازیابی امن باقی مانده باشند، معمولاً میتوان دسترسی را در نرمافزار سازگار دیگری بازیابی کرد.
این تفاوت برای درک خودحضانتی بسیار مهم است: نرمافزار ابزار دسترسی است؛ کلیدها بخش حیاتی اختیار خرجکردن هستند.
چرا تغییر تاریخچه دشوار است؟
بلاکها به بلاکهای قبلی ارجاع رمزنگاریشده دارند. اگر داده یک بلاک قدیمی تغییر کند، هش مربوط به آن نیز تغییر میکند و ارتباط آن با بلاکهای بعدی دچار مشکل میشود.
مهاجم برای ارائه تاریخچه جایگزین باید بلاک تغییرکرده و بلاکهای بعدی را بازسازی کند و با Proof of Work زنجیره معتبر رقابت کند. هرچه زنجیره جلوتر رفته باشد، این کار منابع بیشتری میخواهد.
این امنیت از یک «قفل جادویی» ناشی نمیشود؛ نتیجه ترکیب رمزنگاری، قواعد اجماع، Proof of Work و رقابت اقتصادی است.
اگر دو بلاک همزمان پیدا شوند چه میشود؟
گاهی دو ماینر در فاصله کوتاهی بلاکهای معتبر پیدا میکنند و بخشی از شبکه ابتدا یکی و بخشی دیگری را میبیند. برای مدتی کوتاه ممکن است دو شاخه رقیب وجود داشته باشد.
با ادامه استخراج و اضافهشدن بلاکهای بعدی، نودها طبق قواعد خود زنجیره با بیشترین کار تجمعی را دنبال میکنند و شاخه رقیب ممکن است کنار گذاشته شود.
این اتفاق یکی از دلایلی است که برای انتقالهای مهم، صرف دیدهشدن تراکنش در یک بلاک پایان تمام ملاحظات عملی نیست.
رابطه بیتکوین، بلاکچین و ماینینگ
این سه واژه را نباید مترادف دانست.
بیتکوین نام شبکه و دارایی بومی آن است. بلاکچین ساختار تاریخچه بلاکهای پذیرفتهشده است. ماینینگ فرایندی است که طی آن ماینرها با Proof of Work برای تولید و پیشنهاد بلاک رقابت میکنند.
در کنار آنها، نودها، تراکنشها، کلیدهای رمزنگاری و قواعد اجماع قرار دارند و بدون این اجزا تصویر کاملی از شبکه به دست نمیآید.
جمعبندی
مسیر یک تراکنش را میتوان اینگونه خلاصه کرد:
ساخت تراکنش - امضا - انتشار - ممپول - انتخاب توسط ماینر - Proof of Work - اعتبارسنجی بلاک - اضافهشدن به زنجیره - افزایش تأییدها
این فرایند نشان میدهد بیتکوین بدون یک دفترکل مرکزی چگونه میتواند مالکیت و انتقال ارزش را مدیریت کند. هر بخش مسئولیت مشخصی دارد و هیچ جزء واحدی بهتنهایی اختیار کامل شبکه را در دست ندارد.
اگر این مقاله را فهمیدید، مطالعه تراکنش بیتکوین چگونه انجام میشود؟، بلاکچین چیست؟، UTXO چیست؟ و ممپول چیست؟ جزئیات هر مرحله را عمیقتر میکند.
منابع و مراجع
- Bitcoin Developer Guide — Transactions
- Bitcoin Developer Guide — Block Chain
- Bitcoin Developer Guide — Mining
- Bitcoin Developer Guide — P2P Network
این مطلب با هدف آموزش و تحلیل تهیه شده است و نباید بهعنوان توصیه قطعی برای خرید، فروش یا شرطبندی تلقی شود.