تراکنش در شبکه ارز بیت کوین ؛ قسمت 7 آموزش صفر تا صد Bitcoin

تراکنش در شبکه ارز بیت کوین – Bitcoin چگونه ایجاد و صادر میشود؟ در این قسمت از آموزش صفر تا صد، نحوه ساخت یک تراکنش از طریق کیف پول BTC ارائه شده است.
در قسمت قبلی با ساختار یک تراکنش در شبکه بیت کوین آشنا شدیم و دیدیم که هر تراکنش از چند مولفه تشکیل شده است. در این قسمت قصد داریم نحوه صدور تراکنش یک ارز دیجیتال را با داشتن اجزاء آن بررسی کنیم.
در قسمت سوم با شخصیت آلیس آشنا شدیم و در قسمت پنجم دیدیم که آلیس قصد خرید یک فنجان قهوه از کافه باب را با پرداخت از طریق ارز دیجیتال بیت کوین دارد. کیف پول آلیس تمام اجزاء لازم برای صدور یک تراکنش شامل ورودی – Input و خروجی – Output را دارد. اکنون برای ایجاد یک تراکنش، فقط آدرس مقصد و مقدار بیت کوین ارسالی مورد نیاز است. با وارد کردن این مقادیر، کیف پول با استفاده از دادههای موجود به صورت خودکار تراکنش را میسازد. ذکر این نکته ضروری است که در شرایط آفلاین نیز یک والت قادر به ساخت یک تراکنش است، زیرا تمام Output ها روی کیف پول ذخیره میشوند. در واقع در حالت آفلاین، صدور یک تراکنش را مانند صدور یک چک بانکی تصور کنید.
انتخاب مقادیر ورودی – Input مناسب
برای صدور تراکنش، اولین گام انتخاب ورودی – Input مناسب است. برای این منظور، کیف پول آلیس در ابتدا به دنبال ورودیهایی میگردد که بتواند تراکنش مورد نیاز برای خرید یک فنجان قهوه از کافه باب را بسازد. بنابراین والتها همواره باید یک نسخه از تمام تراکنشهای صاحب آن را ذخیره داشته باشند. اگر به یاد داشته باشید، آلیس مقدار 0.1 ارز دیجیتال بیت کوین را از دوستش هدیه گرفته بود. بنابراین یک نسخه از اجزاء این تراکنش روی کیف پول آلیس موجود است.
نکته: در کیف پول های فول نود – Full node که در قسمت چهارم در مورد آن بحث شد، نه تنها یک نسخه از تراکنشهای قبلی صاحب والت ذخیره شده است، بلکه اینگونه گرهها یک نسخه از خروجیهای خرج نشده – Unspent Output تراکنش ها در شبکه ارز دیجیتال بیت کوین از ابتدا تا انتها را در اختیار دارند. این ویژگی باعث میشود تا والتهای فول نود سرعت بیشتری در ساخت یک تراکنش و تایید تراکنشهای ورودی داشته باشند. اما به یاد داشته باشید که یک کیف پول فول نود نیاز به فضای ذخیره سازی کافی دارد. به همین دلیل است که بسیاری از کاربران والت های سبک یا لایت نود – Light Node که در آنها فقط خروجیهای خرج نشده مربوط به صاحب والت ذخیره میشود را، استفاده کنند.
اگر کیف پول یک نسخه از خروجیهای خرج نشده قبلی مربوط به آدرس مورد نظر را در اختیار نداشته باشد، دادههای مربوطه را میتواند از سایر گرههای فول نود شبکه دریافت کند. بدین منظور کافی است تا از طریق API از یک گره فول نود درخواست خود را صادر کند. به عنوان مثال، از طریق URL زیر میتوانید خروجیهای خرج نشده مربوط به آدرس والت آلیس را مشاهده و دریافت نمایید:
https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK
همانطور که گفته شد، آلیس خروجی مورد نیاز برای ورودی تراکنش جدید را در اختیار دارد. با عوض کردن آدرس کیف پول در URL بالا، خروجیهای خرج نشده آدرس والت خود را نیز میتوانید مشاهده کنید. این کار را امتحان کنید!
ساخت خروجی – Output
خروجیهای تراکنش امضا شده و فقط توسط دریافت کننده قابل استفاده است. به عبارتی، هنگامی که شما یک تراکنش برای آدرس کیف پول دوستتان میفرستید، خروجی تراکنش فقط برای کسی قابل استفاده است که دارای امضای دیجیتال مربوط به آن آدرس باشد. در این مورد در فصول بعدی به تفصیل صحبت خواهد شد.
از آنجا که باب تنها کسی است که دارای کلیدهای مربوط به خروجی امضا شده تراکنش ارسال شده از سمت آلیس است، فقط اوست که میتواند از این خروجی به عنوان ورودی تراکنشهای بعدی استفاده کند.
علاوه بر خروجی اصلی که ارسال هزینه یک فنجان قهوه برای کیف پول باب است، یک خروجی دوم نیز وجود دارد. خروجی بازگشتی – Change را از جلسه قبل به یاد بیاورید. آلیس از دوستش 0.1 ارز دیجیتال بیت کوین دریافت کرده بود، بنابراین اکنون والت او فقط یک خروجی موجود و خرج نشده آن هم به مقدار 0.1 بیت کوین دارد. ولی هزینه یک فنجان قهوه 0.015 بیت کوین است. بنابراین مقدار 0.085 بیت کوین باید از طریق یک تراکنش بازگشتی در شبکه به کیف پول آلیس برگردد. این مسئله همانند آن است که شما یک اسکناس 10,000 تومانی دارید و میخواهید یک کالای 1,500 تومانی بخرید. در این صورت فروشنده باید 8,500 تومان به شما بازگرداند.
بنابراین تراکنش پرداخت هزینه یک فنجان قهوه، دارای دو خروجی خواهد بود. یک خروجی به مقدار 0.015 برای کیف پول باب ارسال میشود و یک خروجی بازگشتی نیز به مقدار 0.085 به والت آلیس باز میگردد. ورودی تراکنش هم همان 0.1 بیت کوینی است که خروجی تراکنش هدیه دوست آلیس به او است.
اما یک مسئله دیگر نیز وجود دارد و آن کارمزد تراکنش – Transaction Fee است. کیف پول آلیس مقداری ارز دیجیتال بیت کوین را به عنوان کارمزد تراکنش در نظر میگیرد. این مقدار توسط آلیس قابل تغییر است. کارمزد تراکنش جزئی از ساختار تراکنش نیست و برابر با تفاوت مجموع مقادیر خروجی و مجموع مقادیر ورودی است. در این حالت، آلیس به جای آنکه 0.085 بیت کوین را در قالب تراکنش بازگشتی دریافت کند، 0.0845 بیت کوین را پس میگیرد. بنابراین 0.0005 بیت کوین به عنوان کارمزد تراکنش کسر شده است. کارمزد تراکنش به ماینرهای شبکه تعلق میگیرد.
در تصویر زیر، جزئیات تراکنش آلیس به باب را در کاوشگر بلاک Blockchain.com مشاهده مینمایید:

افزوده شدن تراکنش در شبکه ارز دیجیتال بیت کوین
تراکنش ساخته شده توسط کیف پول آلیس دارای طولی معادل 258 بایت است و تمام اجزاء مورد نیاز را برای تغییر مالکیت 0.015 بیت کوین شامل میشود. اکنون زمان آن رسیده که این تراکنش وارد شبکه Bitcoin شود و در بلاک چین آن ثبت گردد. در قسمت بعدی خواهیم دید که چگونه یک تراکنش درون یک بلاک قرار میگیرد و آن بلاک استخراج میشود. در نهایت متوجه خواهیم شد که چطور اضافه شدن تدریجی بلاکها به شبکه بیت کوین منجر به افزایش اعتماد و امنیت آن بلاک و تراکنشهای درون آن میشود.
ارسال تراکنش
از آنجا که تراکنش مدنظر تمام اطلاعات مورد نیاز برای پردازش شدن را در بر دارد، مستقیما قابل ارسال به شبکه است. شبکه بیت کوین یک شبکه همتا به همتا – Peer to Peer است که هر عضوی با تعدادی از اعضا در ارتباط است. هر عضو فول نود قادر به انتشار یک تراکنش از طریق این شبکه همتا به همتا به سایر گرههای متصل است.
انتشار تراکنش در شبکه ارز دیجیتال بیت کوین
هر سیستمی مانند یک سرور، رایانه و یا یک کیف پول موبایل که در شبکه ارز دیجیتال بیت کوین شرکت کند و از طریق پروتکل این شبکه با سایر شرکتکنندگان در تعامل باشد، گره – Node نام دارد. والت آلیس این تراکنش را میتواند به تک تک گرههایی که به آن متصل است، ارسال کند. اتصال کیف پول آلیس به این گرهها میتواند از طرق مختلف مانند اتصال سیمی یا بی سیم باشد. لزومی ندارد که والت آلیس مستقیما به کیف پول باب متصل باشد. هر گره که یک تراکنش معتبر را دریافت کند، بلافاصله این تراکنش را به سایر گرههایی که به آنها متصل است، ارسال میکند و آن گرهها نیز به همین ترتیب عمل میکنند. به این تکنیک گسترش یک تراکنش در شبکه فلادینگ – Flooding میگویند. بنابراین کافی است تا کیف پول شما یک تراکنش معتبر را به یک گره فول نود بفرستد. آن گره بلافاصله پس از تایید تراکنش، آن را در کل شبکه منتشر میکند. بنابراین بخش بزرگی از گرهها ظرف چند ثانیه تراکنش را دریافت میکنند.
دریافت تراکنش از نگاه باب
اگر کیف پول باب مستقیما به کیف پول آلیس متصل باشد، احتمالا اولین کسی خواهد بود که متوجه صدور تراکنش ارز دیجیتال از جانب والت آلیس خواهد شد. اما اگر چنین هم نباشد، همانطور که در قسمت قبلی گفته شد، فقط چند ثانیه طول میکشد تا کیف پول باب متوجه یک تراکنش ورودی از جانب والت آلیس شود. از آنجا که خروجی این تراکنش برای آدرس باب امضا شده است، والت وی متوجه میشود که این تراکنش برای اوست. باب نیز با اندکی ریسک قبول میکند که پرداخت در شبکه بیت کوین از سوی آلیس صورت گرفته است.
نکته مهم: یک باور اشتباه در میان افراد آشنا با ارز دیجیتال بیت کوین این است که تصور میکنند برای پرداخت از طریق بیت کوین، 10 دقیقه زمان لازم است تا تراکنش تایید شود و یا حتی 60 دقیقه لازم است بگذرد تا 6 تاییدیه بلاک کامل شود. اگرچه تاییدیهها منجر به آسوده خاطر شدن فرد دریافت کننده نسبت به قبول آن توسط کل شبکه میشود، اما برای مقادیر کوچکی مانند هزینه یک فنجان قهوه نیاز به این همه صبر نیست. برای چنین مبالغی، همان چند ثانیه اول که والت فروشنده متوجه یک تراکنش ورودی از سمت خریدار میشود، کافی است.
در قسمت بعدی به بررسی اجمالی فرآیند استخراج در شبکه بیت کوین میپردازیم.
نظرات کاربران (0 نظر)