آنچه در این مقاله خواهید خواند
خروجی خرج نشده تراکنش (Unspent Transaction Output) یا UTXO خروجی از یک تراکنش است که میتوان از آن بهعنوان ورودی در یک تراکنش جدید استفاده کرد. در واقع، UTXOها آغاز و پایان هر تراکنش در بلاک چین را مشخص میکنند. مدل UTXO عنصری بنیادین برای بیت کوین و بسیاری دیگر از رمز ارزها است. در ادامه بیشتر درباره مفهوم خروجی خرج نشده تراکنش صحبت میکنیم.
اصطلاح UTXO به چه معناست؟
بیت کوین و دیگر ارزهای دیجیتال همیشه به صورت یک کوین کامل معامله نمیشوند و معمولا تریدرها کسری از این رمز ارزها را خرید و فروش میکنند. با این وجود، شکست بیت کوین به واحدهای کوچکتر یک کار ساده نیست. انجام این کار بهصورت دستی کارمزد ماینینگ ایجاد میکند که باعث عدم مقرونبهصرفگی تراکنشها میشود.
خروجی خرج نشده همان بخش استفادهنشده یک تراکنش است. به عبارت دیگر، تراکنشهای رمز ارزی از ورودیها و خروجیها ساخته شدهاند که با هر بار انجام آنها، ورودیهای فعلی پاک شده و خروجیهای جدید ساخته میشوند. در واقع کاربر برای تایید مالکیت این ورودیها، آنها را امضا میکند که نتیجه آن، تولید خروجیهای جدید خواهد بود. بنابراین، این خروجیها «خرج شده» در نظر گرفته میشوند و دیگر امکان استفاده از آنها وجود ندارد. حالا هر خروجی که سریعا استفاده نشود، به یک UTXO تبدیل میشود که امکان استفاده از آن در یک تراکنش دیگر وجود دارد.
مدل UTXO چگونه کار میکند؟
برای درک نحوه تولید خروجی خرج نشده، ابتدا باید با ساختار بلوکهای بلاک چین و اجزای تشکیلدهنده تراکنشها آشنا شویم.
ساختار بلاک در بلاک چین
بلاک چین یک دفتر کل دیجیتال، غیر متمرکز و توزیعشده است. این فناوری از یک شبکه همتابههمتا استفاده میکند که در آن زنجیرهای از بلوکها ساخته و دادههای مربوط به تراکنشها روی آن ذخیره میشود. مهمترین ویژگی یک بلاک چین، ارتباط رمزنگارانه بلاکهای آن است که دو قابلیت زیر را دارد:
- هر بلوک بهغیر از بلوک اول (معروف به جنسیس بلاک)، حاوی بخشی بهنام «هش بلاک قبلی» است. این اتصال هشهای بلاکها به یکدیگر باعث ایجاد امنیت در شبکه میشود.
- در صورت تلاش یک مهاجم به تغییر دادههای بلاک، هش آن تغییر میکند که به دلیل این اتصال رمزنگارانه، هش بلوکهای بعدی نیز باید تغییر یابد. کار بعدی برای انجام چنین تغییری، ماین کردن مجدد بلوکهاست. این اتفاقات در یک حمله 51 درصد محتمل هستند.
حال این بلاکها تراکنشها را در خود ذخیره میکنند که مثلا در بیت کوین، دارای ویژگیهای زیر هستند:
- بلوکها بهطور متوسط هر 10 دقیقه یکبار به شبکه افزوده میشوند که بسته به پیچیدگی هش بلاک هدف، این زمان میتواند بیشتر یا کمتر شود.
- حال با ماین شدن موفق یک بلاک، به بلاکچین افزوده شده و وضعیت تمام تراکنشهای داخل آن نیز از تاییدنشده به تاییدشده تغییر مییابد.
- تعداد تراکنشهای قابل قرارگیری داخل هر بلاک ثابت نیست، اما اندازه ماکزیمم هر بلاک تقریبا معادل 1 مگابایت است.
رابطه UTXO و تراکنش در بلاک چین
هر تراکنش در بلاک چین که عموما با عنوان هش یا شناسه تراکنش یا TxID شناخته میشود، دارای اجزاء ساختاری زیر است:
- شماره نسخه تراکنش (Transaction Version Number): این شماره نسخه رقمی است که نوع تراکنش در شبکه را مشخص میکند. از طریق شماره تراکنش، یک نود قادر به تعیین مجموعه قواعد قابل استفاده جهت اعتبارسنجی یک تراکنش خاص است.
- خروجی (Output): خروجی تراکنش شامل یک زمان و قفل رمزنگاری است.
- ورودی (Input): ورودی تراکنش شامل یک نشانگر و یک کلید بازکننده قفل است. این نشانگر، خروجی تراکنش قبلی را مشخص میکند و از این کلید نیز برای باز کردن قفل خروجی پیشینی که ورودی مشخصکننده آن است، استفاده میشود. با هر بار باز شدن قفل خروجی توسط یک ورودی، بهعنوان «خرج شده» در بلاک چین علامتگذاری میشود.
- زمان قفل: این زمان اینکه تراکنش میتواند سریعا در بلاک چین قرار بگیرد یا باید مدت مشخصی از آن بگذرد را تعیین میکند.
حالا تمام این خروجیها که قفلشان باید توسط یک ورودی باز شود، یک UTXO هستند. به محض باز شدن قفل یک UTXO، از عرضه در گردش حذف شده و خروجیهای جدید جای آنها را میگیرند. بنابراین، مجموع این خروجیهای بازشده همیشه برابر با مجموع مقدار خروجیهای ساختهشده جدید خواهد بود.
بنابراین خروجی خرج نشده تراکنش دارای دو ویژگی زیر است:
- مقدار ارز دیجیتالی است که پس از اجرای یک تراکنش باقی میماند.
- با تکمیل تراکنش، این خروجی خرجنشده بهعنوان یک ورودی مجددا به پایگاه داده بازمیگردد که بعدا در یک تراکنش دیگر قابل استفاده خواهد بود.
خروجیهای UTXO چگونه ساخته و کجا استفاده میشوند؟
خروجیهای خرجنشده تراکنش با مصرف UTXOهای فعلی ساخته میشوند. هر تراکنش بیت کوین از یک سری ورودی و خروجی تشکیل شده است. بنابراین ورودیها یک UTXO موجود را مصرف کرده و یک UTXO جدید میسازند.
مدل خروجی خرج نشده تراکنش در سطح پروتکل شبکه کیف پول ارز دیجیتال کاربران را درگیر نمیکند. این مدل مبتنی بر تراکنشهای منفرد است که بهصورت گروهی در بلاکها قرار گرفتهاند و یک طراحی رایج برای بسیاری از رمز ارزها، بهویژه بیت کوین، محسوب میشود.
برای درک بهتر، اجازه دهید مثالی بزنیم:
1. فرض کنید مقداری رمز ارز BTC از سوی 3 نفر برای شما ارسال شده است. هر کدام از این تراکنشها یک UTXO هستند:
2. حالا شما خواهان خرید یک اتومبیل به مبلغ 0.5 بیت کوین هستید. حال برای انتقال 0.5 بیت کوین، یک یا چند تراکنش باید بهعنوان ورودی انتخاب شود. علت تفاوت تراکنشهای بیت کوین با یک تراکنش بانکی نیز همین امر است. در یک بانک کافی است مقدار 0.5 BTC را وارد کرده و دکمه ارسال را فشار دهید تا پول مورد نظر به فروشنده ارسال شود. اما در بیت کوین، نیاز به انتخاب یک یا چند خروجی خرج نشده بهعنوان ورودی تراکنش وجود دارد و اساسا چیزی بهنام «موجودی حساب» مطرح نیست.
3. اکنون مثلا 0.7 BTC از سارا را بهعنوان ورودی برای خرید اتومبیل 0.5 بیت کوینی در نظر میگیریم.
4. در خصوص UTXO، مقدار ورودی نمیتواند خرجنشده باقی بماند و نمیتوان 0.2 BTC باقیمانده را به حال خود رها کرد. این 0.2 بیت کوین باید به یکی از 3 حالت زیر استفاده شود:
- مقدار باقیمانده به حساب شما بازگردانده شود (همین کاری که در این مثال انجام دادیم).
- استفاده از مقدار باقیمانده بهعنوان کارمزد تراکنش. به یاد داشته باشید که به مقداری فی تراکنش نیاز است، در غیر این صورت هیچ ماینری آن را به بلاک اضافه نکرده و تاییدنشده باقی میماند.
- ارسال مقدار باقیمانده به شخص دیگر.
5. اکنون با ارسال 0.5 BTC به فروشنده و عدم شمول کارمزد، تراکنش تایید نشده است و پس از گذشت 72 ساعت، 0.7 بیت کوین به شما بازگردانده میشود.
6. حال برای ارسال پول به فروشنده، این 0.2 BTC را بهعنوان فی تراکنش قرار میدهیم. برای این کار هیچ اقدام اضافهای نیاز است. با عدم ارسال مقدار باقیمانده به دیگران، این مقدار بهعنوان کارمزد تراکنش در نظر گرفته خواهد شد.
7. اکنون با اضافه شدن فی، یکی از ماینرها تراکنش شما را در بلاک قرار داده و 0.2 BTC را دریافت میکند. UTXO اصلی ما به شکل زیر تغییر خواهد کرد:
8. خروجی خرج نشده تراکنش سارا دیگر وجود ندارد و در یک تراکنش دیگر (برای خرید اتومبیل) استفاده شده است.
مجموعه UTXO چیست؟
کل UTXOهای داخل یک بلاک چین نماینده یک مجموعه بوده و تمام نودهای شبکه همیشه از آنها اطلاع دارند. این مجموعه به صورت زیر است:
- هر تراکنش عناصر حاصل از این مجموعه را مصرف کرده و عناصر جدیدی که به آن اضافه میشوند را میسازند.
- این مجموعه نمایانگر تمام کوینهای یک سیستم رمز ارزی مشخص است.
- مجموعه خروجی خرج نشده تراکنش با تایید و اضافه شدن هر بلاک به بلاک چین بهروزرسانی میشود.
- هر نود شبکه دقیقا یک کپی مشابه از مجموعه UTXO را در حافظه ذخیرهسازی محلی خود دارد.
- کل مجموعه UTXO را میتوان برای محاسبه کل عرضه یک رمز ارز در یک زمان خاص با هم جمع کرد.
- در خصوص یک تراکنش معتبر بلاک چین، تنها از خروجیهای خرجنشده میتوان برای تراکنشهای آتی استفاده کرد.
- برای جلوگیری از دابل اسپندینگ و تقلب، شرط استفاده از خروجیهای خرجنشده در تراکنشهای بعدی ضروری است.
مزایای UTXO چیست؟
مدل خروجی خرج نشده تراکنش مزایای بسیاری دارد. اول از همه، این مدل نوعی اعتبارسنجی مهم است، یعنی امکان تبادل هیچ خروجی خرجنشدهای بدون تایید مالک رمز ارز مربوطه وجود ندارد. بنابراین، کاربران کمتر در معرض کلاهبرداریها قرار میگیرند. مدل UTXO مکان کوینها در بلاک چین را در هر زمانی پیگیری میکند تا احتمال گم شدن یا ارسال آن به فرد اشتباه از بین برود.
این مدل همچنین بهخاطر فراهمآوری امکان استفاده از خروجیهای خرجنشده در تراکنشهای بعدی، به کاهش تقلب کمک میکند. این امر راهی ارزشمند برای جلوگیری از دابل اسپندینگ و خرج دوباره یک رمز ارز است. در این حالت، هیچ کس قادر به خرج کردن یک ارز یکسان در چندین تراکنش بهصورت همزمان نیست. از آنجایی که هر UTXO برای ساخت خروجیهای جدید مصرف میشود، مقادیر کریپتویی ثابت باقی میماند.
برای بهبود بیشتر امنیت مالی، مدل خروجی خرج نشده تا حدودی باعث شفافتر شدن تراکنشها میشود. این مدل هویت خصوصی کاربر را افشا نمیکند، اما به تولید فهرستی از کلیدهای عمومی (Public Key) مربوط به هر ارز دیجیتال میپردازد. این امر امکان ساخت زنجیرهای از امضاهای دیجیتال برای تمام مقادیر رمز ارزی را فراهم میکند. بنابراین در صورت وجود اختلاف نظر، این فهرست واضح از مالکیتها تا حدی به شفاف شدن موضوع کمک میکند.
کدام ارزهای دیجیتال از مدل UTXO استفاده میکنند؟
ارزهای دیجیتال استفادهکننده از مدل خروجی خرج نشده تراکنش از مدل اکانتینگ یا حسابداری بهره نمیبرند و در عوض، UTXOها بیشتر شبیه یه یک پول فیزیکی بین کاربران جابهجا میشوند. هر تراکنش در مدل خروجی خرجنشده قادر به تحول سیستم به یک وضعیت و حالت جدید است، اما این امر با انجام هر یک تراکنش جدید غیر ممکن است. به همین خاطر، فعالان شبکه باید خودشان را با وضعیت فعلی همگام سازند.
طرح UTXO بهقدری خوب بوده است که بهغیر از بیت کوین، بسیاری از رمز ارزها نیز به استفاده از آن در سیستم خود پرداختهاند. البته که هر بلاک چین قادر به تعدیل این مفهوم به دلخواه خود است و قابلیت تطبیقپذیری مدل خروجی خرجنشده با دیگر عملکردها وجود دارد. با این وجود، عملیات پایهای در همه شبکهها یکسان است. به همین خاطر، حتی مونرو (XMR) و زی کش (ZCash) هم از این طرح در پروتکل خود استفاده میکنند. کاردانو اما شبکهای است که به استفاده از مدل ترکیبی UTXO و حسابداری بهنام EUTXO میپردازد.
از دیگر رمز ارزهای استفادهکننده از مدل UTXO میتوان موارد زیر را نام برد:
مقایسه مدل خروجی خرج نشده با مدل حسابداری
یکی از جنبههای جالبتوجه خروجی خرج نشده تراکنش، تفاوت فاحش آن با دیگر مدلهای مدیریت تراکنش هاست. برخلاف امور مالی سنتی، مدل UTXO با ارزها بهصورت یک شیء رفتار میکند؛ هر شیء دارای تاریخچهای ذخیرهشده روی خود است که هنگام ارسال، تنها نیازمند دسترسی به مالکیت آن هستید.
در طرف مقابل، مدل حسابداری (Accounting) که بیشتر شبیه به نحوه مدیریت اکانتها در یک بانک سنتی است، سابقه مجزایی برای هر کاربر میسازد و نسبت به مدل خروجی خرجنشده سادهتر است. در واقع این مدل نیازمند ردیابی همیشگی هر حساب و موجودی داخل آن است. حال برای تکمیل هر تراکنش، موجودی حساب باید بررسی و قبل و بعد از آن تعدیل شود.
مدل اکانتینگ بیشتر در بلاک چینهای مبتنی بر قرارداد هوشمند نظیر اتریوم، ایاس، ترون، سولانا و اتریوم کلاسیک دیده میشود. علاوه بر این، در این مدل امکان ارسال مستقیم کسری از ارز به حساب طرف مقابل وجود دارد. مثلا اگر دارایی شما 100 اتر باشد، شما میتوانید 37.5 واحد آن را مستقیما برای گیرنده ارسال کرده و نتیجه آن، باقی ماندن 62.5 اتر در حساب شماست. بنابراین برخلاف اتفاقی که در مدل UTXO میافتد، نیازی به ارسال 100 واحد کامل و بازپسگیری 62.5 واحد در ازای آن نیست.
سخن پایانی
خروجی خرج نشده تراکنش (Unspent Transaction Output) یا بهطور خلاصه UTXO، بخشی از یک ارز دیجیتال است که اجازه ارسال آن توسط مالک به یک کاربر دیگر صادر شده است. UTXOها از رمزنگاری کلید عمومی (Public Key) برای شناسایی و انتقال مالکیت بین هولدرهای جفت کلید خصوصی و عمومی استفاده میکنند.
تهیه شده در بیت 24