UTXO چیست؟

در این مطلب به زبان ساده به شما می‌گوییم که UTXO چیست و چه اهمیتی دارد. علاوه بر این به مشکلات ناشی از تعامل با این روش می‌پردازیم و راهکارهای موجود برای این مشکلات را بررسی می‌کنیم.

0 118

UTXO مخفف عبارت Unspent Transaction (TX) Output به معنای «خروجی تراکنش پرداخت نشده» است. UTXO اساسا مبلغ باقی مانده رمز ارزی است که از هر دریافت به شما بر می‌گردد. اگر بخواهیم بیشتر در این مورد توضیح دهیم ابتدا باید بگوییم که تراکنش‌های کریپتویی به طور معمول چگونه عمل می‌کنند. بگذارید بیت کوین را به عنوان مثال انتخاب کنیم، چون این پروژه مشهورترین رمز ارز جهان است که از UTXO استفاده می‌کند.

مثال برای تراکنش‌های UTXO

وقتی به کیف پول بیت کوین خود نگاه می‌کنید، یک تراز می‌بینید. بیایید این تراز را ۱۰۰ بیت کوین در نظر بگیریم. اگرچه فقط یک تراز وجود دارد، اما سرمایه‌ی شما عملا از چند UTXO تشکیل شده است. شاید در مجموع چهار UTXO داشته باشید که هر کدام ۲۵ بیت کوین بیارزد، یا دو UTXO به ارزش ۵۰ بیت کوین داشته باشید یا UTXO-های شما هیچ تناسبی با یکدیگر نداشته باشد. مقدار دقیق آن‌ها اهمیتی ندارد، اما مجموع ارقام‌شان، در این مثال، باید به ۱۰۰ برسد.

حالا فرض کنید که می‌خواهید یک اتومبیل جدید بخرید که هزینه آن ۳۵ بیت کوین است. در این صورت اگر در کیف پول شما UTXO-های ۱۵ و ۱۷ و ۲۸ و ۴۰ بیت کوینی وجود داشته باشد، عملا نمی‌توانید ۳۵ بیت کوین بپردازید. امکان شکستن UTXO وجود ندارد، پس نمی‌توانید دقیقا ۳۵ بیت کوین پرداخت کنید.

در نتیجه باید ۴۰ بیت کوین بپردازید. در این حالت شبکه دو UTXO به وجود می‌آورد؛ یکی به ارزش ۳۵ بیت کوین و دیگری به ارزش ۵ بیت کوین. UTXO اول به مالک اتومبیل و UTXO دوم به عنوان باقی مانده پول به شما داده می‌شود.

اگر در این معامله از UTXO-های ۱۷ و ۲۸ بیت کوینی استفاده کنید، ۱۰ بیت کوین به عنوان باقی مانده پول خود پس می‌گیرید. در یک تراکنش ممکن است از ترکیب‌های مختلف UTXO استفاده کنید؛ با این حال شما کنترلی روی آن‌ها ندارید.

همان طور که می‌توانید یک UTXO را به نمونه‌های کوچک‌تر تقسیم کنید، می‌توانید آن‌ها را در تراکنش‌های بزرگ‌تر هم ترکیب کرده و تعداد کمتری از این UTXO-ها را در شبکه بسازید.

هزینه تراکنش

هزینه تراکنش هم در هر تراکنش در نظر گرفته شده و از UTXO دریافتیِ شما کم می‌شود. معادله‌ی این پروسه چیزی شبیه فرمول زیر است:

UTXO جدید = (مجموع UTXO-های موجود در تراکنش) منهای (مقدار تراکنش) منهای (هزینه‌ی تراکنش)

اگر مثال بالا را با این فرض ادامه دهیم که هزینه‌ی هر تراکنش ۱ بیت کوین است:

UTXO = (17+18) – (35) – (1) = 9

اهمیت UTXO و مشکلات احتمالی آن

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

همان طور که می‌دانید، هر کوین در اکوسیستم بیت کوین فقط می‌تواند یک بار خرج شود. پس هر بیت کوینی که در حال حاضر در کیف پول‌ها وجود دارد در وضعیت خرج‌نشده است چون:

۱. یک ماینر آن را به عنوان پاداش استخراج خود دریافت کرده یا

۲. در طول یک تراکنش به وجود آمده است (مثالی که بالاتر گفتیم را به یاد بیاورید)

UTXO برای جلوگیری از وقوع حملات خرج دوباره (Double Spending) اهمیت زیادی دارد و مانع از خرج کوین‌هایی می‌شود که وجود خارجی ندارند. گره‌های شبکه از پایگاه داده‌ای نگهداری می‌کنند که شامل تمامی UTXO-های موجود و آماده‌ی خرج شدن است. اگر بخواهید با استفاده از کوینی تراکنش انجام دهید که در آن پایگاه داده وجود نداشته باشد، گره‌ها آن تراکنش را رد می‌کنند.

مشکلات احتمالی فضای ذخیره سازی

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

راهنمای مبتدیان: UTXO چیست؟

افزایش حجم پایگاه داده‌ UTXO بیت کوین در طول زمان

ریسک متمرکز شدن یکی از اصلی‌ترین بحث‌هایی است که در خصوص افزایش اندازه‌ی بلاک‌های بیت کوین وجود دارد. توسعه‌دهنده بیت کوین، گوین اندرسن، در مقاله‌ای به نام UTXO uh-oh این مشکل را به زیبایی توصیف کرده است:

یک بلاکِ یک مگابایتی محلی برای ذخیره‌سازی ۱۰۰ میلیون تراکنش ۵۰۰ بایتی در هر سال است. اگر هر کدام از این تراکنش‌ها UTXO خود را ۵۰۰ بایت بزرگ‌تر کنند، این UTXO در عرض یک سال ۵۰ گیگابایت بزرگ‌تر می‌شود

اندازه‌ی بلاک یک مگابایتی حد بالایی برای افزایش اندازه‌ی سالانه‌ پایگاه داده‌ی UTXO تعیین می‌کند. او می‌گوید:

فراهم‌سازی امکان افزایش تعداد تراکنش‌ها بدون هیچ تغییر خاصی باعث می‌شود رشد UTXO شتاب بالایی پیدا کرده و در نتیجه اجرای گره‌های کاملِ اعتبارسنج گران‌تر شود.

البته آندرسن در مقاله خود طرفدار افزایش اندازه بلاک است. او می‌گوید اثر اندازه‌ی UTXO آن قدرها که بقیه می‌گویند شگرف نیست. و با توجه به پیچیدگی راهکارهای مقیاس پذیری لایه‌ دوم، باید در آینده‌ی نزدیک، یعنی پیش از آن که راهکارهای جدید در طولانی مدت اجرا شوند، بلاک‌های بزرگ‌تر را پیاده‌سازی کنیم.

راهکارها

خوشبختانه در رابطه با مشکلات احتمالی فضای ذخیره‌سازی چند راهکار وجود دارد. اولا لازم نیست گره‌ها تمام پایگاه داده‌ی UTXO را در فضای رم ذخیره کنند. آن‌ها می‌توانند بخشی از این پایگاه داده را در فضایی ارزان‌تر مثل SSD نگهداری کنند. اگرچه با این کار زمان لازم برای فرآیند تایید افزایش پیدا می‌کند، اما تا زمانی که این زمان به طور متوسط کمتر از ۱۰ دقیقه باشد، مشکلی به وجود نمی‌آید.

علاوه بر این، توسعه‌دهندگان بیت کوین دائما در حال بهینه‌سازی مکانیزم‌های تراکنش هستند تا بتوانند وضعیت پایگاه داده UTXO را بهبود ببخشند.

در نهایت، راهکارهای بحث مقیاس پذیری مثل SegWit ، به طور غیرمستقیم می‌توانند سرعت افزایش اندازه‌ی پایگاه داده‌ی UTXO را کاهش دهند. به نقل از مستندات رسمی Bitcoin Core:

«SegWit در این‌جا کاری می‌کند که هزینه‌ اطلاعات امضا، که تاثیری روی اندازه‌ی ثابت UTXO نمی‌گذارد، نسبت به اطلاعاتی که روی اندازه‌ی UTXO تاثیر می‌گذارد، ۷۵ درصد ارزان‌تر شده و در نتیجه شرایط بهبود یابد. انتظار می‌رود این کار منجر به تشویق کاربران برای استفاده از تراکنش‌هایی شود که به منظور کاهش هزینه‌ها اثرگذاری روی UTXO را به حداقل رسانده، و توسعه‌دهندگان را تشویق می‌کند تا قراردادهای هوشمند و قابلیت‌های جدید را طوری طراحی کنند که اثرگذاری بر UTXO به حداقل برسد.

 

منبع

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.