تراکنشهای بیتکوین پیامهایی هستند که انتقال بیتکوین از فرستندگان به گیرندگان را ممکن میکنند. این تراکنشها با استفاده از رمزنگاری به صورت دیجیتالی امضا شده و برای تأیید به کل شبکه بیتکوین ارسال میشوند. اطلاعات تراکنش عمومی است و میتواند در دفتر کل دیجیتالی به نام ‘بلاکچین’ یافت شود. تاریخچه هر تراکنش بیتکوین به نقطهای باز میگردد که بیتکوینها برای اولین بار تولید یا ‘استخراج’ شدند.
اگر میخواهید مقداری پول برای دوست خود بفرستید، در سیستم بانکداری سنتی، احتمالاً از یک اپلیکیشن بانکی یا وبسایت برای انتقال وجوه استفاده میکنید و بانک همه چیز را پشت صحنه مدیریت میکند. با این حال، بیتکوین را میتوانید بدون نیاز به یک مرجع مرکزی مانند بانک ارسال کنید. فرآیند تراکنش بیتکوین اطمینان حاصل میکند که تراکنشها مشروع، امن و شفاف هستند.
در ادامه، نمای کلی از یک تراکنش بیتکوین ارائه خواهد شد:
۱. ایجاد تراکنش: وقتی بیتکوین ارسال میکنید، یک تراکنش از کیف پول دیجیتال خود ایجاد میکنید. این تراکنش شامل آدرس فرستنده (کلید عمومی)، آدرس گیرنده (کلید عمومی)، مقدار بیتکوینی که باید ارسال شود و کارمزد تراکنشی است که مایلید به استخراجکنندگان پرداخت کنید.
۲. امضاهای دیجیتال: برای اثبات اینکه شما مالک بیتکوینی هستید که میخواهید ارسال کنید، تراکنش باید با استفاده از کلید خصوصی شما از طریق یک فرآیند رمزنگاری امضا شود. این به عنوان امضای دیجیتال شناخته میشود. حفظ محرمانگی کلید خصوصی شما ضروری است زیرا مانند رمز عبور دیجیتال شماست.
۳. انتشار و تأییدیهها: پس از امضا، تراکنش به شبکه بیتکوین ارسال میشود و وارد مخزن تراکنشها (mempool) میشود که مانند یک اتاق انتظار برای تراکنشهایی است که منتظر تأیید هستند. استخراجکنندگان میتوانند تراکنشها را از مخزن تراکنشها انتخاب کنند تا بلوکهای جدید را تشکیل دهند. اولین استخراجکنندهای که یک مسئله ریاضی دشوار را حل کند، اجازه ساخت بلوک بعدی را مییابد. استخراجکننده برنده، بلوک جدید خود را پخش میکند که توسط بقیه شبکه تأیید میشود.
۴. نهایی شدن تراکنش: پس از تأیید، بلوک جدید به نسخه بلاکچین هر یک از شرکتکنندگان شبکه اضافه میشود. تراکنشهای موجود در بلوک جدید، تأیید شده در نظر گرفته میشوند. با این حال، معمول است که حداقل شش تأییدیه (شش بلوک دیگر پس از بلوک حاوی تراکنش شما اضافه شود) منتظر بمانیم تا تراکنش را کاملا تایید شده در نظر بگیریم. این کار برای اطمینان از این است که تراکنش در صورت وقوع یک انشعاب موقت در بلاکچین، برگشت داده نشود یا دوباره خرج نشود.
بیتکوینها به شکل فیزیکی وجود ندارند، بلکه در قالب اطلاعات و سوابق مربوط به تراکنشهایی که در شبکه بیتکوین انجام میشود، موجودیت پیدا میکنند.
“ما یک بیتکوین را به عنوان یک زنجیره از امضاهای دیجیتال تعریف میکنیم. هر مالک، بیتکوین را به نفر بعدی با امضای دیجیتال یک هش از تراکنش قبلی و کلید عمومی مالک بعدی منتقل میکند و اینها را به انتهای سکه اضافه میکند. یک گیرنده میتواند امضاها را برای تأیید زنجیره مالکیت بررسی کند.”
— ساتوشی ناکاموتو، وایتپیپر بیتکوین
بیتکوینها به خودی خود “وجود” ندارند. هیچ بیتکوین فیزیکی وجود ندارد و مالکان بیتکوین نیز “حساب” ندارند. در عوض، یک ‘بلاکچین’ وجود دارد که میتوانید آن را به عنوان یک دفتر کل یا سابقهای از تمام تراکنشهایی که تا به حال بین آدرسهای بیتکوین انجام شده است، در نظر بگیرید. این سوابق تراکنش توسط شرکتکنندگان شبکه بیتکوین (گرهها) بهروزرسانی میشوند و همزمان با افزایش و کاهش موجودیها در هر یک از گرههای آن به اشتراک گذاشته میشوند. اگر میخواهید تاریخچه و همچنین موجودی فعلی هر آدرس بیتکوین را ببینید، میتوانید از یک ‘بلاک اکسپولورر’ استفاده کنید.
کلیدهای عمومی و خصوصی
برای ارسال بیتکوین، باید به کلیدهای عمومی و خصوصی مرتبط با مقدار بیتکوینی که میخواهید ارسال کنید، دسترسی داشته باشید. وقتی از “مالکیت” بیتکوین توسط شخصی صحبت میکنیم، منظور این است که آن شخص به یک ‘جفت کلید’ دسترسی دارد که شامل:
۱. یک کلید عمومی (یک آدرس) که قبلاً مقداری بیتکوین به آن ارسال شده است
۲. کلید خصوصی منحصر به فرد مربوطه (یک رمز عبور) که اجازه میدهد بیتکوینی که قبلاً به کلید عمومی فوق (آدرس) ارسال شده، به جای دیگری فرستاده شود.
کلیدهای عمومی، که آدرسهای بیتکوین نیز نامیده میشوند، توالیهای تصادفی از حروف و اعداد هستند که عملکردی مشابه یک آدرس ایمیل یا نام کاربری در یک سایت شبکه اجتماعی دارند. همانطور که از نامشان پیداست، آنها عمومی هستند، بنابراین میتوانید با خیال راحت آنها را با دیگران به اشتراک بگذارید. در واقع، وقتی میخواهید دیگران برای شما بیتکوین بفرستند، باید آدرس بیتکوین خود را به آنها بدهید. کلید خصوصی توالی دیگری از حروف و اعداد است که آن هم به صورت تصادفی تولید میشود. با این حال، کلیدهای خصوصی، مانند رمزهای عبور ایمیل یا سایر حسابها، باید محرمانه نگه داشته شوند. هرگز کلید خصوصی خود را با کسی که ۱۰۰٪ به او اعتماد ندارید که از شما دزدی نکند، به اشتراک نگذارید.
میتوانید آدرس بیتکوین خود را مانند یک گاوصندوق شفاف تصور کنید. دیگران میتوانند داخل آن را ببینند، اما فقط کسانی که کلید خصوصی را دارند میتوانند گاوصندوق را باز کرده و به وجوه داخل آن دسترسی پیدا کنند.
ورودیها و خروجیهای تراکنش
“اگرچه امکان پردازش سکهها به صورت جداگانه وجود دارد، اما ایجاد یک تراکنش جداگانه برای هر سنت در یک انتقال، دشوار خواهد بود. برای اجازه دادن به تقسیم و ترکیب ارزش، تراکنشها شامل چندین ورودی و خروجی هستند. معمولاً یا یک ورودی منفرد از یک تراکنش بزرگتر قبلی وجود خواهد داشت یا چندین ورودی که مبالغ کوچکتر را ترکیب میکنند، و حداکثر دو خروجی: یکی برای پرداخت و دیگری برای بازگرداندن باقیمانده به فرستنده، اگر مبلغی وجود داشته باشد، .”
— ساتوشی ناکاموتو، وایتپیپر بیتکوین
بیایید این بخش از وایتپیپر بیتکوین را با نگاهی به یک تراکنش نمونه در عمل بررسی کنیم:
مارک میخواهد ۱ بیتکوین به جسیکا بفرستد. برای انجام این کار، او از کلید خصوصی خود برای ‘امضای’ پیامی با جزئیات خاص تراکنش استفاده میکند. این پیام، که باید به شبکه ارسال شود، شامل موارد زیر خواهد بود:
۱. ورودیها: شامل اطلاعاتی درباره بیتکوینهایی است که قبلاً به آدرس مارک ارسال شده است. به عنوان مثال، تصور کنید مارک قبلاً ۰.۶ بیتکوین از آلیس و ۰.۶ بیتکوین از باب دریافت کرده است. حالا، برای ارسال ۱ بیتکوین به جسیکا، ممکن است دو ورودی وجود داشته باشد: یک ورودی ۰.۶ بیتکوین که قبلاً از آلیس دریافت شده و یک ورودی ۰.۶ بیتکوین که قبلاً از باب دریافت شده است.
۲. مقدار: در این مورد، مقداری که مارک میخواهد ارسال کند ۱ بیتکوین است.
۳. خروجیها: دو خروجی وجود دارد. اولی ۱ بیتکوین به آدرس جسیکا است. دومی ۰.۲ بیتکوین است که به عنوان ‘باقیمانده’ به مارک برگردانده میشود. این خروجی دوم به عنوان مجموع ورودیها [۰.۶ + ۰.۶ = ۱.۲] منهای مقداری که مارک میخواهد ارسال کند [۱ بیتکوین] محاسبه میشود.
این ممکن است گیجکننده به نظر برسد، اما برای بهبود کارایی انجام میشود و خبر خوب این است که دانستن جزئیات پشت صحنه تراکنشهای بیتکوین برای ارسال یا دریافت بیتکوین ضروری نیست. کیف پول بیتکوین شما این کار را انجام میدهد!
انتشار و تأییدیهها
در مثال بالا، مارک (از طریق نرمافزار کیف پول خود) تراکنش پیشنهادی خود را به شبکه بیتکوین ارسال خواهد کرد. گروه خاصی از شرکتکنندگان در شبکه به نام ‘ماینرها’ تأیید میکنند که کلیدهای مارک میتوانند به ورودیها (یعنی آدرسهایی) که قبلاً بیتکوینهایی را که ادعا میکند کنترل میکند، دریافت کرده است، دسترسی داشته باشند. ماینرها همچنین لیستی از سایر تراکنشهایی را که تقریباً همزمان با تراکنش مارک به شبکه ارسال شدهاند، جمعآوری کرده و آنها را در یک بلوک قرار میدهند. هر ماینری که ‘اثبات کار’ را تکمیل کرده باشد، مجاز است یک بلوک جدید را پیشنهاد دهد که به زنجیره اضافه یا ‘متصل’ خواهد شد و با ارجاع به آخرین بلوک. سپس آن بلوک جدید به شبکه ارسال میشود. اگر سایر شرکتکنندگان شبکه (گرهها) موافقت کنند که این یک بلوک معتبر است (یعنی تراکنشهایی که در آن وجود دارد از تمام قوانین پروتکل پیروی میکند و به درستی به بلوک قبلی ارجاع میدهد)، آن را منتقل خواهند کرد. در نهایت، ماینر دیگری با ارجاع به آن به عنوان بلوک قبلی هنگام پیشنهاد بلوک بعدی، روی آن ساخت و ساز خواهد کرد. هر تراکنشی که در بلوک قبلی بود، اکنون توسط ماینر بعدی ‘تأیید’ شده است. با اضافه شدن بلوکها به زنجیره، تعداد تأییدیههای تراکنش مارک افزایش مییابد.
چرا برخی از تأییدیههای تراکنش بیتکوین زمان زیادی میبرند؟
هر بلوک فقط میتواند تعداد مشخصی تراکنش را در خود جای دهد، و آن تعداد عمدتاً توسط فضای موجود در هر بلوک یا ‘اندازه بلوک’ که ۱ مگابایت است، تعیین میشود. فضای محدود باعث ایجاد بازار کارمزد میشود، جایی که ماینرها، که کارمزدها را جمعآوری میکنند، تصمیم میگیرند فقط آن تراکنشهایی را در بلوک بعدی قرار دهند که کارمزد کافی بالایی را شامل شدهاند. بنابراین، کارمزدهای بالاتر به عنوان انگیزهای برای ماینرها عمل میکنند تا به تراکنشهای شما اولویت دهند.
توجه داشته باشید که اندازه بلوک یک محدودیت اختیاری است، اما جامعه بیتکوین تصمیم گرفته است اندازه بلوک را تا حد ممکن کوچک نگه دارد تا افراد بتوانند راحتتر گرههای بیتکوین را اجرا کنند. بیتکوین کش، که یک انشعاب از بیتکوین است، اندازه بلوک بزرگتری دارد و بنابراین به کارمزدهای بسیار کمتری برای تراکنشها نیاز دارد.
کارمزد تراکنشهای بیتکوین چقدر است؟
کارمزد ارسال بیتکوین میتواند از چند سنت تا ۱۰۰ دلار متغیر باشد. دلیل این تغییر بزرگ این است که کارمزدهای بیتکوین به عرضه و تقاضا (یعنی میزان شلوغی شبکه در یک زمان خاص) و “اندازه” تراکنش شما بستگی دارد. اندازه عمدتاً تحت تأثیر ورودیها قرار میگیرد، بنابراین اگر تراکنش شما ورودیهای زیادی داشته باشد، فضای بیشتری از بلوک را اشغال میکند و کارمزد بالاتری را طلب میکند. به عنوان مثال، اگر میخواهید ۱۰ بیتکوین ارسال کنید، احتمال زیادی وجود دارد که تراکنش شما به ورودیهای بیشتری نسبت به ارسال ۱ بیتکوین نیاز داشته باشد. تراکنش ۱۰ بیتکوینی ممکن است شامل ۵+۲+۱+۱+۱ (در مجموع ۵ ورودی) باشد در حالی که تراکنش ۱ بیتکوینی ممکن است فقط دو ورودی داشته باشد، مانند مثال مارک/جسیکا که در بالا ذکر شد.
بسیاری از کیف پولها، به کاربران اجازه میدهند تا کارمزد تراکنش را به صورت دستی تنظیم کنند که به شما کمک میکند تا از پرداخت بیش از حد کارمزد جلوگیری کنید. به عنوان مثال، اگر عجلهای ندارید، میتوانید کارمزد را پایینتر تنظیم کنید تا زمانی که شبکه کمتر شلوغ است، توسط یک ماینر انتخاب شود. همچنین میتوانید با افزایش کارمزد خود، اطمینان حاصل کنید که تراکنشهای شما فوراً پردازش میشوند.