تراکنش‌ در بیتکوین

تراکنش‌ در بیتکوین
تراکنش‌ در بیتکوین

در بررسی نحوه‌ی کارکرد سیستم بیتکوین، یکی از مهمترین مباحثی که باید درک شود، موضوع تراکنش‌ در بیتکوین و نحوه‌ی کار این تراکنش‌ها هستش. در مورد این تراکنش‌ها ۲ مورد قابل توجه هستش:

1. صحت‌سنجی و تایید تراکنش‌ها توسط ماینر‌ها انجام می‌گردد. آن‌ها در عوض ارائه چنین خدماتی پاداش بلاک و کارمزد تراکنش دریافت می‌کنند.

2. هنگامی که بحث در رابطه با ارز فیات(پول کاغذی) است، شما دقیقا به خاطر ندارید که چگونه و از کجا آن را به دست آورده‌اید. کیف پول خود را باز کنید. حالا آیا دقیقا می‌توانید بگویید که منشا این پول‌‌ها از کجا بوده است؟ احتمالا نمی‌توانید. اما در ارزهای دیجیتال با بلاکچین عمومی این‌گونه نیست؛ تاریخچه و منشا تمام تراکنش‌ها برای شما مشخص خواهد بود.

در هر تراکنش بیت‌کوین، ما ۳ داده داریم، ورودی، خروجی و قوانین تراکنش. فرض کنید نفر A می‌خواهد مبلغی را برای نفر B ارسال کند.

ورودی تراکنش در بیتکوین (Input)

برای این‌که چنین تراکنشی انجام شود، نفر A باید بیتکوین‌هایی که از تراکنش‌های قبلی دریافت کرده است را در اختیار داشته باشد. در بخش قبل گفتیم که در بیت کوین، به دلیل داشتن تاریخچه تراکنش، حساب تک تک موجودی خود را خواهید داشت.

به این ترتیب، فرض کنید که نفر A باید از تراکنش‌هایی که ما آن‌ها را با نام‌های (TX(1) ،TX(0 و (TX(2 مشخص کرده‌ایم، بیت کوین بردارد. این سه تراکنش با هم جمع خواهند شد و ورودی تراکنش جدید را که (TX(Input نام دارد، تشکیل می‌دهند.

ورودی تراکنش در بیتکوین (Input)
ورودی تراکنش در بیتکوین (Input)

خروجی تراکنش در بیتکوین (Output)

خروجی، به طور معمول، تعدادی بیت کوین‌های تراکنش جدید و تراکنش برگردان (Change) خواهد بود که به خود نفر A برگشت داده می‌شود. این تغییرات به مقادیر ورودی نفر A برای تراکنش‌های بعدی‌اش تبدیل می‌شود.

حالا، این یک تراکنش بسیار ساده است که جدای از تغییرات، تنها یک خروجی دارد. البته برخی تراکنش‌ها می‌توانند چندین خروجی داشته باشند. این همان چیدمان اصلی تراکنش است. برای این‌که تمام این اتفاقات دقیق و بدون نقص انجام شود، باید شرایط خاصی برآورده شود.

خروجی تراکنش در بیتکوین (Output)
خروجی تراکنش در بیتکوین (Output)

قوانین تراکنش‌ در بیتکوین

1. تراکنش‌ ورودی همیشه باید بزرگ‌تر از تراکنش خروجی باشد:

(TX(Input) > TX(Output

در هر تراکنش، تفاوت بین ورودی و خروجی (خروجی + برگردان) در واقع همان کارمزد تراکنشی است که نصیب ماینرها می‌شود. در نتیجه می‌توان این‌گونه نوشت:

( برگردان +TX(Input) – ( TX(Output) = کارمزد تراکنش

2. در سمت ورودی تراکنش:

(TX(0) + TX(1) + TX(2) = TX(Input

اگر نفر A پول لازم برای انجام تراکنش‌ در بیتکوین را نداشته باشد، ماینرها تراکنش را رد خواهند کرد.

3. نفر B باید نشان دهد که مدرک کافی برای اثبات این‌که می‌تواند این بیتکوین را دریافت کند، فراهم می‌کند. نفر A تراکنش را با آدرس عمومی نفر B قفل می‌کند. نفر B باید برای باز کردن قفل تراکنش‌ها و دسترسی به سرمایه‎هایش، کلید خصوصی خود را استفاده کند. (جهت مطالعه بیشتر می‌توانید موضوع مربوط به رمز‌نگاری را در این آدرس مطالعه کنید)

4. نفر A در گام اول باید مالکیت خود نسبت به این بیتکوین‌ها را تایید کند و نشان دهد که اجازه خرج کردن آن‌ها را دارد. روشی که او با استفاده از آن این فرآیند را انجام می‌دهد به این گونه است که او با امضای دیجیتال خود (یا همان کلید خصوصی‌اش) تراکنش را مورد تایید قرار دهد. هر کسی می‌تواند با استفاده از کلید عمومی نفر A این را رمزگشایی کند و تایید کند که آیا واقعا نفر A است که این داده‌ها را فرستاده یا خیر.

اگر بخواهیم مفاهیم بالا را به صورت ساده‌تری توضیح دهیم؛ در بیتکوین برای خرج کردن دارایی‌ها نیاز به یک نوع کلمه عبور است و این کلمه عبور، امضای دیجیتال نام دارد. مثل یک امضای دست‌نویس، امضای دیجیتال معتبر بودن یک پیام را تصدیق می‌کند. اما این کار با استفاده از یک الگوریتم ریاضی خاص انجام می‌شود و کپی و جعل آن را غیرممکن می‌کند.

امضای دیجیتال مانند یک کلمه عبور ساده و ثابت نیست بلکه برای هر تراکنش، باید امضایی کاملا متفاوت درج شود. یادتان باشد که در شبکه بیت کوین شما با افراد کاملا غریبه سر و کار دارید، بنابراین باید امنیت شما تامین شود و دارایی‌های شما امن بماند. یک امضای دیجیتال با استفاده از دو کلید جداگانه کار می‌کند. این دو کلید با وجود متفاوت بودن، مکمل یکدیگر هستند.

کلید خصوصی، یک امضا تولید می‌کند و با یک کلید عمومی بقیه می‌توانند معتبر بودن امضا را بررسی کنند. کلید خصوصی را به عنوان کلمه عبور واقعی در نظر بگیرید و امضای دیجیتال مدرکی است که نشان می‌دهد شما کلمه عبور را دارید. نام کل این تراکنش چه خواهد بود؟

ورودی که شامل داده امضا نیز می‌شود و اطلاعات خروجی با یکدیگر جمع می‌شوند و با استفاده از الگوریتم SHA256، این داده‌ها هش می‌شوند. «هش خروجی» نامی است که به تراکنش داده می‌شود.

کد جزئیات تراکنش‌ در بیتکوین

در تصویر زیر کد تراکنش را مشاهده می‌فرمایید. فرض کنید که نفر A می‌خواهد 0.0015 بیت کوین برای نفر B ارسال کند. برای انجام این کار او ورودی را می‌فرستد که ارزشی برابر با 0.0015770 بیت کوین دارد. جزئیات تراکنش به صورت زیر است.

کد جزئیات تراکنش‌ در بیتکوین
کد جزئیات تراکنش‌ در بیتکوین

اولین چیزی که مشاهده‌ می‌شود نام تراکنش است که در واقع همان هش مقادیر ورودی و خروجی است. در بخش بعدی Vin-sz نوشته شده است. این پارامتر همان تعداد داده‌های ورودی است. از آن‌جایی که نفر A تنها با استفاده از یکی از تراکنش‌های پیشینش این مبلغ را تامین می‌کند، در نتیجه این عدد در این‌جا 1 است. خروجی یا همان Vout-sz برابر 2 است. چرا که خروجی‌ها در این‌جا نفر B و خروجی برگردان هستند.

ابتدای بخش داده‌های خروجی نشان می‌دهد که نفر B مقدار 0.0015 BTC دریافت می‌کند. در قسمت دوم نشان می‌دهد که 0.0000512 BTC چیزی است که به عنوان تغییرات به نفر B برگشت داده می‌شود. پیش‌تر گفته بودیم که داده‌های ورودی 0.0015770 BTC است، و این عدد از جمع دو عدد 0.0015 و 0.00005120 بزرگتر است. تفاوت این دو عدد کارمزد تراکنشی است که کسر می‌شود.