در این پست، فصل دوم کتاب Mastering Bitcoin، از انتشارات معروف O'RILLY را که مورد بررسی قرار میدهیم. این فصل با عنوان How Bitcoin Works، به چگونگی کارکرد سیستم بیت کوین میپردازد.
در سیستم بیت کوین، بر خلاف سیستم های پرداختی و بانکی سنتی، مبنا بر اعتماد غیرمتمرکز (decentralized trust) است. این «اعتماد» از طریق تعدادی همکاری بین اعضای حاضر در شبکه حاصل میشود که در نتیجه منتهی به معتبر شناخته شدن یک تراکنش در این سیستم خواهد شد. همه تراکنشهای انجام شده در شبکه بیت کوین قابل رهگیری و بررسی هستند. مثلا یکی از راه های بررسی تراکنش، از طریق ابزاری به نام blockchain explorer می باشد که همانند یک موتور جستجوی بیت کوین عمل کرده و به کمک آن میتوان آدرسها، تراکنشها، بلوکها و نیز ارتباط بین آنها را مشاهده و بررسی نمود.
به عبارت ساده، یک تراکنش به شبکه اعلام میکند که صاحب یک حجمی از بیت کوین، انتقال آن مقدار به فرد دیگری را تایید کرده است و آن فرد میتواند با ایجاد کردن یک تراکنش جدید، آن مقدار را به فرد دیگری انتقال دهد. در سیستم بیت کوین، هر تراکنش دارای تعدادی ورودی (input) و تعدادی خروجی (output) می باشد. مجموع مقادیر ورودی ها و مقادیر خروجی ها لزوما برابر نیست و معمولا خروجی اندکی از مقدار ورودی کمتر میباشد که این مقدار را هزینه تراکنش (transaction fee) مینامیم که هزینه ایست که در ازای افزودن این تراکنش به ledger بیت کوین، به ماینر تعلق میگیرد. علاوه بر این، هر تراکنش شامل اطلاعاتی جهت اثبات مالکیت (ownership) مقدار بیت کوین ورودی که در حال انتقال است، می باشد؛ این اطلاعات، امضای دیجیتال (digital signature) نام دارد که میتواند توسط هر کسی به صورت مستقل، صحت سنجی (validate) شود.
ساختار تراکنشهای شبکه بیت کوین به صورت زنجیروار به یکدیگر اتصال دارد. همانطور که قبل تر گفته شد، هر تراکنش دارای ورودی و خروجی است؛ حال تراکنش بعدی از خروجی تراکنش قبلی به عنوان ورودی خودش استفاده میکند. مثلا نفر A مقداری بیت کوین در ازای مبلغ معادل نقدی آن به نفر B انتقال داده است؛ از این تراکنش مقداری بیت کوین به A رسیده که با کلید مخصوص A قفل (lock) شده است. حال A می خواهد تراکنش دیگری به فرد C انجام دهد؛ در این حالت این تراکنش جدید به تراکنش قبلی ارجاع دارد و خروجی آن را به عنوان ورودی خود می گیرد.
همان طور که بسیاری از تراکنشهای نقدی دنیای قبل از بیت کوین دقیقا معادل مبلغ پرداختی نبوده و بخشی از پول پرداخت شده تحت عنوان باقی مانده (change) باید به پرداخت کننده پس داده میشد؛ تراکنشهای بیت کوینی نیز به همین شکل اتفاق می افتند. ضمن این که به صورت کلی در این انتقالات، تمامی موجودی بیت کوین فرد در هر تراکنش به عنوان ورودی در نظر گرفته میشود. حال اگر این مقدار دقیقا معادل با مبلغ پرداختی مد نظر به علاوه ی هزینه تراکنش (fee) آن نباشد، منطقا مقداری باقی مانده خواهیم داشت که باید به پرداخت کننده باز گردد. به همین علت خروجی هر تراکنش هم شامل آدرس دریافت کننده (جهت پرداخت مبلغ مدنظر) و هم شامل آدرس پرداخت کننده (برای انتقال مبلغ باقی مانده) است.
برای توضیح بیشتر به تصویر زیر که از خود کتاب آورده شده است دقت کنید:
در ابتدا، در ازای معادل دلاری مبلغ 0.1005 بیت کوین از Joe به Alice انتقال داده شده است که ورودی آن این مبلغ موجود در آدرس Joe بوده و خروجی آن نیز آدرس کیف پول Alice به میزان 0.1 بیت کوین و نیز مقدار 0.0005 به عنوان هزینه تراکنش می باشد. در تراکنش بعدی، Alice این مقدار 0.1 بیت کوین را به Bob انتقال داده که 0.1 ورودی آن بوده و خروجی آن جدای از هزینه 0.0005 بیت کوینی آن، شامل دو بخش است؛ بخش اول مبلغ 0.015 بیت کوین که به آدرس Bob بوده و بخش دوم باقی مانده آن یعنی 0.0845 بیت کوین به آدرس خود Alice است. حال Bob میخواهد تراکنشی به میزان 0.01 بیت کوین به Gopesh داشته باشد. در این تراکنش، همان میزان 0.015 به عنوان ورودی بوده و خروجی شمال 0.01 به آدرس کیف پول Gopesh و 0.0045 نیز به آدرس Bob می باشد. مبلغ 0.0005 بیت کوین نیز به عنوان هزینه تراکنش کسر شده است.