خروجیهای خرج نشده تراکنش (UTXO) چیست؟
خروجیهای خرج نشده تراکنش (Unspent Transaction Output) یا به اختصار UTXO به مقدار رمزارزی که پس از هر تراکنش باقی میماند، اشاره دارد. در این مقاله، برای توضیح بیشتر، ابتدا نحوه عملکرد یک تراکنش معمولی رمزارز را بررسی کرده و بیت کوین شناختهشدهترین رمزارزی که از UTXO استفاده میکند را به عنوان مثال توضیح میدهیم.
نمونهای از خروجیهای خرج نشده تراکنش
هنگامی که به کیف پول ارز دیجیتال (wallet) بیت کوینتان نگاه میکنید، تنها یک موجودی مشاهده میکنید، در حالی که، موجودی شما شامل خروجیهای خرج نشده تراکنش (UTXO) میباشد. به طور مثال، تصور کنید موجودی کیف پولتان 100 بیت کوین است. اما کیف پول شما ممکن است حاوی چهار تراکنش خرج نشده به ارزش 25 بیت کوین، یا دو تراکنش خرج نشده هر کدام به ارزش 50 بیت کوین و یا مجموعهای از تراکنشهای خرج نشده به ارزش 37، 18، 40 و 5 بیت کوین باشد. مقادیر هر کدام اهمیتی ندارند، بلکه باید با کل موجودی کیف پولتان که در این مثال 100 واحد بیت کوین است مطابقت داشته باشد.
به عنوان مثال، فرض کنید در حال خرید یک ماشین جدید هستید. بنابراین، برای خرید آن سخت کار میکنید و سراغ ماشینهای مختلف میروید. با لامبورگینی (Lambo) مخالفید، بنابراین به سراغ پورشه (Porche) که قیمت آن 35 بیت کوین است، میروید. خب، کیف پول شما تنها حاوی تراکنشهای خرج نشده معادل 15، 17، 28 و 40 بیت کوین است و دقیقاً تراکنش خرج نشده به ارزش 35 بیت کوین در کیف پولتان ندارید.(اگر هنوز 35 بیت کوین را تهیه نکردید توصیه میکنیم به صفحه خرید بیت کوین سر بزنید.😁 )
شکستن تراکنشهای خرج نشده امکانپذیر نیست، و از طرفی هیچ راهی برای پرداخت دقیق 35 بیت کوین وجود ندارد.
بنابراین، در این موقعیت باید تراکنش خرج نشده 40 بیت کوینی را پرداخت نمایید. در عوض، شبکه دو خروجی جدید از تراکنش خرج نشده تولید خواهد کرد: یکی به ارزش 35 بیت کوین و دیگری به ارزش 5 بیت کوین. نمایندگی اتومبیل، تراکنش 35 بیت کوینی را دریافت میکند و 5 بیت کوین از تراکنش خرج نشده به عنوان مابه التفاوت به شما تعلق میگیرد.
همچنین، ممکن است تراکنشهای خرج نشدهی 17 و 28 بیت کوینی را پرداخت نمایید و 10 بیت کوین پس بگیرید. یک تراکنش ممکن است از ترکیبهای مختلفی از خروجیهای تراکنشهای خرج نشده استفاده کند. با این حال، شما کنترلی روی آن ندارید.
همانطور که میتوانید خروجی خرج نشده تراکنش را به تراکنشهای مجزا تقسیم کنید، امکان ترکیب آنها در تراکنشهای بزرگتر نیز وجود داشته و میتوانید تعداد کمتری از آنها را در شبکه ایجاد کنید.
کارمزد تراکنش (Transaction Fee) چیست؟
کارمزد هر تراکنش نیز در تراکنشها لحاظ شده و از خروجیهای خرج نشده تراکنش هنگام دریافت مابه التفاوت کسر میشود. این معادله از قرار زیر خواهد بود:
(کارمزد تراکنش) – (مبلغ تراکنش) – (مجموع UTXOهای تراکنش) = خروجی خرج نشده تراکنش جدید
و چنانچه کارمزد تراکنش یک بیت کوین باشد:
بیت کوین 9 = (1) – (35) – (17 + 28) = خروجی خرج نشده تراکنش جدید
[مطالب مرتبط: گس فی اتریوم چیست؟ در این مقاله ما به بررسی گس در پلتفرم اتریوم رفتهایم.]
اهمیت و مشکلات احتمالی خروجی خرج نشده تراکنش
اجرای UTXO روشهای حسابداری بلاک چین را بسیار ساده میکند. به جای ردیابی و ذخیرهی تک تک تراکنشها، کافی است تنها کوینهای خرج نشدهای که با نام UTXO نیز شناخته میشوند را ردیابی کنیم.
همان طور که میدانید، هر کوین در اکوسیستم بیت کوین میتواند تنها یک بار خرج شود. بنابراین، تمام بیت کوینهای موجود در کیف پول، خرج نشدهاند، زیرا:
- یا یک ماینر آن را به عنوان پاداش استخراج دریافت کرده است،
- یا در حین تراکنش عرضه شدهاند. (مثال ابتدای مقاله)
خروجی خرج نشدهی تراکنش در جلوگیری از حملات دوبار خرج کردن بیت کوین (double-spend) بسیار اهمیت داشته و از خرج کردن کوینهایی که وجود ندارند، جلوگیری میشود. نودهای شبکه، از یک پایگاه داده نگهداری میکنند که شامل خروجیهای خرج نشده تراکنش (یعنی کوینهای خرج نشده) موجود برای خرج کردن است. اگر بخواهید یک تراکنش را با کوینی که در آن پایگاه داده نیست، انجام دهید، نودها آن را رد میکنند.
مشکلات احتمالی ذخیره سازی
نودها، پایگاه داده خروجی خرج نشده تراکنش را در رم (RAM) ذخیره میکنند. بنابراین، بایستی اندازه مجموعه داده قابل کنترل باشد. هزینه اجرای یک نود کامل، با افزایش حجم اطلاعات بیشتر میشود. چنانچه هزینهی اجرای یک نود کامل بیش از حد افزایش یابد، میتوانیم شاهد تمرکز بیشتر شبکه بیت کوین در میان ثروتمندانی باشیم که توانایی اجرای آنها را دارند.
خطر تمرکز، یکی از دلایل اصلی افزایش اندازه بلاک بیت کوین است. گاوین آندرسن (Gavin Andresen)، توسعهدهندهی بیت کوین، این موضوع را به خوبی در مقالهی خود (UTXO uh-oh) توضیح میدهد:
یک بلاک یک مگابایتی، فضایی برای ذخیره 100 میلیون تراکنش 500 بایتی در هر سال است. چنانچه در هر یک از آنها، خروجیهای خرج نشده تراکنش تا 500 بایت افزایش یابد، مجموع خروجیهای خرج نشده تراکنش در سال 50 گیگا بایت رشد میکند.
اندازه بلاک یک مگابایتی، سقف افزایش سالانه پایگاه داده خروجیهای خرج نشده تراکنش را تعیین میکند. وی ادامه میدهد:
افزایش تعداد تراکنشها بدون هیچگونه تغییر، احتمالاً رشد مجموعه خروجیهای خرج نشده تراکنش UTXO را تسریع میبخشد. بنابراین، اجرای نود کامل اعتبارسنج (a fully validating node) پرهزینهتر و سریعتر میشود.
آندرسن در مقالهی خود طرفدار افزایش اندازهی بلاک است. به عقیدهی وی، تأثیرگذاری بر اندازه مجموع خروجیهای خرج نشده تراکنش آنچنان که دیگران تصور میکنند شدید نیست. با توجه به پیچیدگی راه حلهای مقیاسپذیری لایه دوم، میبایست در آیندهای نزدیک و پیش از اجرای این راه حلها در بلند مدت، بلاکهای بزرگتری را پیادهسازی کنیم.
- راه حلها
خوشبختانه، چند راه حل برای مشکلات احتمالی ذخیرهسازی وجود دارد. اولاً، لازم نیست نودها کل پایگاه داده خروجیهای خرج نشده تراکنش را در رم ذخیره کنند. آنها میتوانند بخشی از آن را در درایو اساسدی (solid-statedisk /SSD) و یا هارد دیسک چرخان (spinning hard disk) که ارزانتر بوده، ذخیره کنند. اگرچه این نوع ذخیرهسازی منجر به کاهش زمان اعتبارسنجی برای هر نود میشود، اما تا زمانی که کمتر از میانگین زمان بلاک 10 دقیقهای باشد، مشکلی پیش نخواهد آمد.
علاوه بر این، توسعهدهندگان بیت کوین به طور مداوم در حال بهبود مکانیسمهای تراکنش برای بهینهسازی پایگاه داده خروجیهای خرج نشده تراکنش هستند.
سرانجام، شاهد تفکیک شده یا سگویت (Segwit) و راهحلهای مقیاسپذیری مشابه، رشد پایگاه داده خروجیهای خرج نشده تراکنش را بطور غیر مستقیم کاهش میدهند. براساس اسناد بیت کوین کور ( Bitcoin Core):
سگویت (Segwit) با ایجاد دادههای امضا که بر اندازهی مجموعه UTXO تأثیر نمیگذارد، وضعیت را بهبود میبخشد؛ زیرا تاثیر آن 75 درصد کمتر از دادههایی است که روی اندازه UTXO تأثیر میگذارند. پیش بینی میشود که این امر کاربران را ترغیب به استفاده از تراکنشهایی نماید که تأثیرگذاری کمتری بر روی مجموعهی UTXO دارند و کاهش کارمزدها را به حداقل میرسانند. همچنین سگویت توسعهدهندگان را تشویق کرده تا قراردادهای هوشمند و ویژگیهای جدید را به گونهای طراحی نمایند که تأثیرات مجموعهی خروجیهای خرج نشده تراکنش را به حداقل برسانند.
- نتیجه گیری: جایگزینهای UTXO
در این مقاله، برای توضیح این مطلب از همان ابتدا بیت کوین را مثال زدیم، اما رمزارزهای دیگری نیز وجود داشته که خروجیهای خرج نشده تراکنش را اجرا میکنند، از جمله میتوان به بیت کوین کش (BCH)، لایت کوین (LTC) و کومودو (Komodo) و بسیاری دیگر اشاره کرد.
همچنین ارزهای دیجیتال دیگری نیز وجود دارند که از سایر مکانیزمهای حسابداری استفاده میکنند. به عنوان مثال، اتریوم (ETH) دارای یک مدل تراکنش مبتنی بر حساب است. به طور کلی، این مکانیزم فضای ذخیرهسازی بهتر و کد سادهتری را برای اجرا ارائه میدهد، هر چند که کاربر یک سطح از حریم خصوصی تراکنش را از دست داده و در آینده با مشکلات بالقوه مقیاسپذیری روبرو میشود.
چنانچه از ده نفر از توسعهدهندگان رمزارزی بخواهید که بهترین روشهای حسابداری را به شما معرفی کنند، احتمالاً ده پاسخ متفاوت دریافت خواهید کرد. این موضوع یکی از موضوعات داغ این حوزه بوده که هنوز هم یک راهحل بدون نقص ندارد و احتمالاً به دلیل پیچیدگی موضوع، در آینده نیز پاسخی برای آن یافت نخواهد شد.
مطالب مرتبط
- تراکنش ارز دیجیتال چیست و چگونه ارزهای دیجیتال خود را انتقال دهیم؟ این مقاله تراکنشهای ارز دیجیتال و روشهای امن انتقال داراییهای دیجیتالی را آموزش میدهد.
- در زمینه تراکنشها آموزش نحوه رهگیری تراکنش ترون در بلاکچین به شما امکان میدهد تا با جزئیات دنیای تراکنشهای دیجیتال آشنا شوید.
- اگر به دنبال فهمیدن نقش حیاتی گرهها در شبکه بیت کوین و نحوه تاثیر آنها بر امنیت و شفافیت تراکنشها هستید، گره بیت کوین چیست؟ را مطالعه کنید.
- مطالعه لایت کوین یا بیت کوین؟ به شما اطلاعات کلیدی را ارائه میدهد تا بتوانید تفاوتها، قدرتها و نقاط ضعف هر کدام را درک کرده و تصمیم گیری آگاهانهای داشته باشید.
کارمزدهای تراکنش در شبکه بلاکچین چیست؟