UTXO چیست و چه مفهومی دارد؟ آیا فقط در بیتکوین به کار میرود؟ دلیل استفاده از آن چیست؟ همه کسانی که به فناوری بلاکچین و بخصوص ارزهای دیجیتالی نظیر بیتکوین علاقهمندند این سؤالات را در ذهنشان دارند. شاید این مفهوم کمی مبهم به نظر برسد اما وقتی یک بیتکوین ارسال یا دریافت میکنید، عبارت خروجی خرج نشده تراکنش یا UTXO را میبینید. ممکن است معنای آن را ندانید. آیا این رسید تراکنش است؟ نه اینطور نیست. در ادامه مقاله توضیحات مفصلی در ارتباط با UTXO و نحوه عملکرد آن دادهایم.
UTXO چیست؟
با گذشت سالها از معرفی و بهکارگیری بلاکچینها و بخصوص بیتکوین هنوز افراد زیادی نمیدانند UTXO چیست و چه مفهومی دارد. کلماتی مثل UTXO از اصطلاحات سیستم بیتکوین هستند که به دلیل نبود جایگزین بهتر، این کلمات نسبتاً فنی به همان شکل باقیماندهاند. UTXO یک مفهوم در حوزه بلاکچین و بخصوص بیتکوین و اساساً باقیمانده یا خروجی یک تراکنش است که کاربر میتواند در آینده آن را بهعنوان ورودی یک تراکنش جدید خرج کند. آنها خروجیهای خرج نشده تراکنش هستند و کاربر تنها یکبار میتواند آن را خرج کند. مدل UTXO مؤلفه بنیادین بیتکوین و بسیاری از رمزارزهای دیگر است.
تراکنشهای ارز دیجیتال از ورودی و خروجی تشکیلشدهاند. هر بار تراکنشی ایجاد شود، کاربر یک یا چند UTXO را میگیرد تا بهعنوان ورودی به کار ببرد. سپس کاربر امضای دیجیتال خود را وارد و مالکیت ورودیها را تائید میکند. حالا UTXO های بکار رفته، خرج شده در نظر گرفته میشوند و دیگر قابلاستفاده نیستند. درعینحال، خروجیهای تراکنش تبدیل به UTXO های جدید میشوند که میتوانند بعداً در تراکنشهای دیگر بکار روند.
میتوانید UTXO را پول خردی در نظر بگیرید که بعد از خرید یک آیتم دریافت میکنید. مقدار آن در پایگاه داده شبکه باقی میماند و امکان انجام تراکنشهای خرد را فراهم میکند.
آن قسمت از کل ارز دیجیتال که در تراکنشها خرج نمیشود بهعنوان معیار حسابداری به کار میرود. هر تراکنشی، همانند حسابهای دوطرفه ، یک ورودی و یک خروجی دارد.
یک بیتکوین را سطلی پر از سکه در نظر بگیرید که هر سکه یک UTXO است. اگر از علی چیزی به قیمت نیم بیتکوین بخرید شبکه نیز به علی کل سطل سکه را میدهد و او نیم بیتکوین پس میفرستد. حالا شما یک UTXO به ارزش نیم بیتکوین دارید که نمیتوانید آن را به مقادیر کمتری تقسیم کنید.
دیدگاه شبکه نسبت به UTXO چیست
یک تراکنش ارز دیجیتال، انتقال اطلاعات در درون پایگاه داده است. ارز دیجیتال به چندین بخش کوچک تقسیم میشود که هرکدام در پایگاه داده ذخیرهشده و خروجیهای خرج نشده تراکنش نامیده میشوند. تقریباً همه تراکنشها UTXO دارند.
این یعنی خرج کردن کریپتو با یک بایت داده انجام نمیشود. بلکه چندین بخش از ارز دیجیتال برای انجام درخواست انتقال، بازیابی میشوند. UTXO ها ارز دیجیتال مثل ساتوشی برای بیتکوین و gwei برای اتر نیستند. بااینحال میتوان UTXO را با آنها قیاس کرد.
وقتی از طریق کیف پولتان تراکنشی انجام میدهید، قفل UTXOهای شما بازشده و اطلاعات مالک جدید به UTXO هایی که شما برای آن شخص انتقال دادهاید تخصیص داده میشود. آنها مجدداً قفلشده و کاربر میتواند از آنها در تراکنشهایی با فرآیند مشابه استفاده کنند.
با انجام تراکنشها، پایگاه داده پر از رکوردهایی از تغییر مالکان میگردد. خروجی، کسری از رمزارز است که شما به کسی فرستادهاید اما خرج نشدهاند. آنها در پایگاه داده بهعنوان ورودی یک تراکنش دیگر ذخیره میشوند.
دیدگاه کاربر نسبت به UTXO چیست
وقتی تصمیم به ارسال بیتکوین خود میگیرید، فقط مقدار ارسالی و مقدار مانده را میبینید. برای شما، این شبیه به استفاده از یک اسکناس 1 دلاری برای یک کالای 0.5 دلاری است—به شما پول خرد میدهند، آن را در جیبتان میگذارید و به کارتان ادامه میدهید.
رابطه مدل UTXO با تراکنش های بیت کوین و بلاک چین
برای اینکه بهتر متوجه شویم رابطه تراکنشهای بیتکوین و بلاکچین با UTXO چیست ابتدا با کیوسک آکادمی، این مفاهیم پایه را بررسی میکنیم.
بلاکچین
بیتکوین از ساختار ریاضیاتی به شکل یک شی انتزاعی با مفهوم معنایی تشکیلشده است. این ساختار میتواند حاوی دادههای خام یا ساختارهای کوچکتری در خودش باشد. دادههای درون آنها نیز بر اساس مفهوم معنایی این ساختارها (که از نامشان حدس زده میشود) و توسط پروتکل تفسیر میگردند.

بلاکچین همانطور که از نامش پیداست یک زنجیره بلوکی است. بلاکچین بزرگترین ساختار در بین ساختارهای پروتکل است و بلاکچین بیتکوین درحالحاضر 310 گیگابایت حجم دارد. هر بلاک دو نوع ساختار هدر (Header) و لیست تراکنش دارد. هدر دربرگیرنده متادیتاهای یک بلاک خاص است که در بین آنها، هش بلاک قبلی هم قرار دارد که به بلاک قبل اشاره میکند. بهاینترتیب هر بلاک، به والد خود اشاره دارد و والد نیز به والد خود و به همین ترتیب به اولین بلاک برمیگردد. بهاینترتیب ساختاری زنجیره مانند از بلاکها ایجادشده که آن را بلاکچین مینامند. بلاکچین چیزی فراتر از لیستهای به هم مرتبط نیست.

تصویر فوق نشاندهنده دادههای دهمین بلاک بلاکچین بیتکوین است. بخش خلاصه ، دادههای هدر و بخش پایین، لیست تراکنشهاست. این بلاک در 9 ژوئن 2009 احتمالاً توسط خود ساتوشی استخراج شده است. در لیست تراکنشها تنها یک تراکنش با ارسال 50 بیتکوین میبینیم. این تراکنش کوینبیس است یعنی اولین تراکنش در هر بلاک که ماینرها پاداش آن را میگیرند. آن زمان کسی نبود که بخواهد برای او تراکنش انجام دهد بنابراین تنها تراکنش، تراکنش کوینبیس است که برای 50 بیتکوین انجامشده.
حالا که با مفهوم بلاکچین آشنا شدیم به بررسی مفهوم تراکنش میپردازیم.
تراکنش

با جدا کردن تنها یک تراکنش میتوانیم ساختارهای مختلفی را ببینیم که همگی مفاهیم معنایی متفاوتی دارند. اولی ساختاری عددی به نام Transaction Version است که نوع تراکنش را نشان میدهد. با خواندن این عدد میتوانیم قوانین بکار رفته برای تائید یک تراکنش خاص را متوجه شویم.
آخرین ساختار، Lock Time است که نشان میدهد آیا تراکنش بلافاصله وارد بلاکچین شده یا مدتزمانی طول کشیده.
بین آنها لیست Inputs و Outputs قرار دارد. Output تراکنش از مقدار و قفل رمزنگاری تشکیلشده است. تصور کنید خروجیها گاهی قفل هستند و ورودی، کلیدی برای باز کردن آنها به ما میدهد. Value مقداری برحسب ساتوشی (sats) است که در درون خروجی قفلشده است.
هر ورودی تراکنش دارای اشارهگر (pointer) و کلید باز کردن قفل (unlocking key) است. اشارهگر به خروجی تراکنش قبلی اشاره دارد. کلید نیز برای باز کردن قفل خروجی قبلی که به آن اشاره میشود به کار میرود. هر بار خروجی توسط یک ورودی با موفقیت قفلگشایی شود، در درون بلاکچین با عنوان پرداختشده (spent) درج میگردد. بنابراین میتوانید تراکنش را یک عمل انتزاعی در نظر بگیرید که قفلگشایی برخی خروجیهای قبلی و ایجاد خروجیهای جدید را انجام میدهد.
این خروجیهای جدید را میتوان مجدداً توسط یک ورودی تراکنش جدید ارجاع داد. یک UTXO یا «خروجی تراکنش خرج نشده» همه آن خروجیهایی است که هنوز توسط یک ورودی باز نشدهاند.
فرض کنید که وقتی قفل خروجی باز شود، از منبع در حال گردش حذف میشود و خروجیهای جدید جای آن را میگیرد. بنابراین مجموع ارزش خروجیهایی که قفل آنها بازشده همیشه برابر مجموع مقادیر خروجیهای تازه ایجادشده است (کارمزد تراکنش را در نظر نگیرید) و کل عرضه درحالحاضر گردش بیتکوین ثابت میماند.
شکل زیر شماتیک تراکنش را نشان میدهد. یک تراکنش برخی از UTXOهای قدیمی را مصرف کرده و UTXOهای جدید را بیرون میاندازد.

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

مثلاً در TX4بالا، input0به output0 از TX2 اشاره میکند. خروجیهای آخرین تراکنش به نامهای TX6 و TX3، یکی به ارزش 10 هزار و دیگری 20 هزار، UTXO هستند. زیرا هنوز توسط ورودی تراکنش به آنها ارجاع نشده است. وقتی ورودی به آنها اشاره و کلید درستی برای باز کردن آنها ارائه کند، آنها نیز پرداخت میشوند و دیگر UTXO نیستند. آنها با UTXO های جدیدی که در تراکنشهای بعدی تولید میشوند جایگزین میگردند.
مطلبی که باید اینجا اشارهکنیم این است که مثلاً در TX1، نقاط output0 به خروجی اشاره میکند که ارزش 40هزار دارد اما خروجی جدیدی ایجاد میکند که ارزش آن 30هزار است. 10 هزارتای گمشده، کارمزد تراکنش بوده. این کارمزد هزینهای است که برای گنجاندن تراکنش خاص در یک بلوک جدید به ماینرها پرداخت میشود. هرقدر کارمزد تراکنش بیشتر باشد، احتمال اینکه ماینرها آن را وارد بلاک بعدی کنند بیشتر است.
مجموع UTXO ها
مجموع همه UTXOها در هرلحظه مجموعه UTXO نامیده میشود و بهصورت مداوم توسط هر نود بیتکوین نگهداری میگردد. ازنظر فنی آنها را با عنوان chainstate میشناسند و در فهرست راهنمای نود ذخیره میشوند و هرگاه بلاک جدیدی به بلاکچین اضافه شود بهروزرسانی میگردد. این بلاک حاوی لیستی از آخرین تراکنشهاست که نشان میدهد کدام UTXOهای قبلی پرداختشده و کدام UTXO های جدید ایجادشدهاند. هر نود بیتکوین شبکه، همیشه کپی دقیقه از UTXO در حافظه خود دارد.

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

در دنیای واقعی UTXOها مشابه سکه یا اسکناسهای فیزیکی هستند. وقتی کسی میخواهد از سوپرمارکت خرید کند، پول را میدهد، اجناس را برمیدارد و بقیه پولش را میگیرد. اگر اسکناس 10دلاری داشته باشید و بخواهید یک جنس 5 دلاری بخرید، اسکناس را نصف نمیکنید. بلکه آن را کامل تحویل داده و یک اسکناس 5 دلاری جدید میگیرد.
UTXOها هم به روشی مشابه کار میکنند. در هر تراکنش، UTXO ها مصرف میشوند حتی اگر نیاز به پرداخت مقدار خیلی جزئی از آنها باشد. مثلاً فرض کنید علی میخواهد 6 بیتکوین به رضا پرداخت کند. اما علی فقط یک UTXO به ارزش 10 بیتکوین دارد. او تراکنشی ایجاد میکند که این UTXO را به دو UTXOجدید با رازش 6 و 4 بیتکوین تبدیل کند. آن UTXO که علی خودش پرداخت میکند UTXO خرد نام دارد و نرمافزار کیف پول او بهصورت اتوماتیک آن را نشان میدهد. هر زمان پرداختی انجام شود، کیف پول، مقادیر را بهروزرسانی میکند.
هر UTXO به یک آدرس بیتکوین ارتباط دارد و انواع مختلفی از آدرسها وجود دارند (P2PKH، P2SH، Bech32 و غیره). آدرسهای مختلف عملکردهای مختلفی برای این UTXO ها دارند. مثلا اگر کسی یک UTXO با چند امضا ایجاد کند یعنی یک UTXO که نیاز به کلید 2 یا چند نفر دارد تا پرداخت شود، آدرس آن با عدد 3 شروع میشود که در ادامه میبینید:
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
مقایسه UTXO با مدل بالانس اکانت
شاید فکر کردن به این که در سیستم پرداخت دیجیتال، مفهوم UTXO چیست عجیب باشد. UTXO شبیه پول فیزیکی است درحالیکه ما در پلتفرمهای دیجیتالی با حسابهای کاربری (اکانت ها) سروکار داریم.
مدل اکانت ساده است، کاربران میتوانند یک یا چند اکانت داشته باشند و میزان آن هر مقداری باشد و مفهومی به اسم پول خرد وجود ندارد. اعتبار به بالانس اضافه شده و بدهی کسر میشود.
بااینحال این دو مدل به اهداف مشابهی میرسند یعنی پرداخت پول به افراد اما هردوی آنها مزایا و معایبی دارند.
مدلهای UTXO برای مقیاسپذیری و حریم خصوصی، بهترند. منطق تراکنش ساده است و هر UTXO میتواند یکبار و بهطورکلی مصرف شود. ازآنجاییکه منطق سادهتر است، تائید تراکنشها را میتوان بهصورت موازی انجام داد. میتوان با استفاده از مدل UTXO نظیر الحاق کوین و غیره طرحهای مختلف تکنیکهای بهبود حریم خصوصی را ایجاد کرد. بهاینترتیب با کسب این سودها، معاملات قابل انجام میگردند. مدل UTXO ذاتاً غیرشهودی و انتزاعی است. UTXOها ازنظر قراردادهای هوشمندی که بر اساس موجودی کل حساب کاربر اجرا میشوند محدودند.
مثال عملی برای درک عملکرد UTXO
UTXO ابزاری کارآمدی برای سازماندهی دفتر کل بلاکچین و یکی از اهداف آن محافظت در برابر هزینههای مضاعف است. بعد از خرج کردن یک UTXO، دو یا چند UTXO جدید از آن تراکنش تولید میشود و به کیف پولهای مناسب خود میروند. مستندات اصلی بیتکوین، UTXO ها را معیاری برای تائید در دسترس بودن وجوه بهمنظور اجرای تراکنشها در نظر میگیرد.
میتوانید کوینهای UTXO را صورتحساب ارز تک فیات در نظر بگیرید. مثلاً اگر 55 دلار نقد دارید. چون اسکناس 55 دلاری وجود ندارد پس حتماً چند اسکناس دارید. مثلاً پنج اسکناس 10 دلاری و یک اسکناس 5 دلاری یا دو اسکناس 20 دلاری و سه اسکناس 5 دلاری یا به هر شکل دیگری که درنهایت مجموع آنها 55 دلار شود.
UTXO هم همینطور است. شما یک بالانس در کیف پولتان میبینید امام ممکن است یک یا چند UTXO در کیف پولتان باشد که سایزهای مختلفی داشته باشند. مجموع همه UTXOهای کیف پول برابر بالانس کیف پول است.
حالا فرض کنید 55 دلار دارید و میخواهید یک قهوه 4.5دلاری بخرید. اگر یک 5 دلاری بدهید، مبلغ نیم دلار دریافت میکنید و اگر اسکناس 10 دلاری بدهید یک 5 دلاری و یک نیم دلاری میگیرید. همین مفهوم تغییر پول در دنیای فیزیکی در بلاکچین، UTXO است. مثلاً اگر 700 بیتکوین داشته باشید ممکن است بهصورت سه UTXO با مبالغ 300، 140 و 260 بیتکوین باشد.
حالا میخواهید 100 بیتکوین به آدرسی بفرستید. برای این کار باید یک UTXO را بهصورت کامل ارسال کنید چون در دنیای واقعی هم ما اسکناسها را نصف نمیکنیم. پس میتوانید UTXO که 140 بیتکوین ارزش دارد را بفرستید. دوست شما نیز آن را دریافت کرده و در مقابل یک UTXO به ارزش 40 بیتکوین برای شما میفرستد.
کاربرد خروجی خرج نشده تراکنش یا UTXO چیست

مدل UTXO در بسیاری از ارزهای دیجیتال بکار میرود چون به کاربر امکان ردیابی مالکیت همه بخشهای یک ارز دیجیتال را میدهد. ازآنجاییکه ارزهای دیجیتال با در نظر گرفتن ناشناس بودن ایجاد میشوند، UTXO ها با آدرسهایی که برای همه شبکه قابلمشاهده هستند مرتبطاند.
کاربران از مالکیت آنها قابلتشخیص نیستند مگر اینکه آدرسشان را اعلام کنند. اما مدل UTXO اجازه شفافیت آدرسها را میدهد.
مزایای UTXO چیست
اگر هنوز نمیدانید مزایای بهکارگیری UTXO چیست به موارد زیر توجه کنید:
- قراردادهای هوشمند زبان آگنوستیک
قراردادهای هوشمند مبتنی بر UTXO بهعنوان موفقیتی بزرگ در اکوسیستم بلاکچین شناخته میشوند. این قراردادهای هوشمند کاملاً مستقل از زبان برنامهنویسی هستند و به همه UTXO ها امکان توسعه مکانیسمهای اجماع منحصربهفرد را میدهند.
- پشتیبانی از صرافیهای غیرمتمرکز و اتمیکسواپها
دومین مزیت مهم UTXOها مستقیماً به حمایت آنها صرافیهای غیرمتمرکز برمیگردد. مدل UTXO میتواند از اتمیکسواپ پشتیبانی کند، بنابراین امکان مبادلات همتا به همتا (بدون واسطه) را فراهم میکند. نیازی نیست نگران حسابهای متمرکز، سرویسهای escrow یا توکنهای پروکسی با اتمیکسواپ باشید. درنتیجه ویژگی UTXO اتمیکسواپ، مبادلات مستقیم ارز دیجیتال بین کاربران را تسهیل میکند.
- مزایای مقیاسپذیری
یکی دیگر از مزایای کوینهای UTXO مقیاسپذیری است. ازآنجاییکه امکان پردازش UTXOهای مختلف در یکلحظه وجود دارد، میتوان تراکنشها را بهموازات هم پردازش کرد. درنتیجه متوجه میشوید که این مدل چطور، بار محاسباتی شبکه بلاکچین را کاهش میدهد.
- امنیت و حریم خصوصی
مزیت مهم دگر، تسهیل حریم خصوصی است. در آدرسهای جدید بهکاررفته برای هر تراکنش UTXO، دنبال کردن تراکنشها غیرممکن است. بعلاوه یکی دیگر از مزایای UTXO ها در ارتباط بین ورودی و خروجی تراکنش است. بااینکه استثناهای کمی وجود دارد، UTXO ها میتوانند احراز هویت راحتتر همه تراکنشها را انجام داده و درعینحال از پرداخت دوباره یک رمزارز جلوگیری کنند.
معایب UTXO چیست
برای اینکه ببینیم مشکلات UTXO چیست باید آن را بهصورت گسترده در نظر بگیریم. وجود انبوه کوینهای کوچک در شبکه ارز دیجیتال باعث غیراقتصادی شدن تراکنشها میشود. چراکه ممکن است هزینه تراکنش از هزینه محصول یا خدمتی که با ارز دیجیتال خریداری میشود بیشتر شود. مثلاً منطقی نیست یک فنجان قهوه 2 دلاری را با تراکنش ارز دیجیتال پرداخت کنیم چراکه کارمزد آن بیش از 2 دلار خواهد شد.
تفاوت های تراکنش با پول نقد و خروجی های تراکنش نشده
گرچه میتوان برای درک اینکه مفهوم و نحوه عملکرد UTXO چیست از مثال پول نقد استفاده کرد اما آنها تفاوتهایی هم دارند.
تراکنشهای ارز دیجیتال دارای کارمزد هستند اما در هنگام خرید چیزی با پول نقد، کارمزدی پرداخت نمیکنید. از طرفی UTXO ها برحسب تراکنشهایی که قبلاً انجامشده است میتوانند هر مقداری داشته باشند ولی اسکناسها باارزشهای مشخصشده از سوی دولت چاپ میشوند مثلاً اسکناس 7 دلاری نداریم. بههمیندلیل انعطاف در تراکنشهای UTXO بیشتر است.
جمع بندی
UTXO ها به دلیل اهمیت و قابلیتهای آنها، مفاهیم پایهای پلتفرم بلاکچین هستند. آنها بهعنوان مکانیسمهای حسابداری بلاکچین عمل کرده و برای همه انواع تراکنشها، ازجمله کریپتو یکپارچه هستند. مکانیسم اصلی عملکرد UTXO شبیه مبادلات پولی هرروزه ماست. اما آنها مزایایی چون حفظ حریم خصوصی، امنیت، سفارشیسازی و مقیاسپذیری دارند. مدل UTXO با تقویت بهینهسازی بار محاسباتی، مزایای فراوانی برای زنجیرههای بلوکی دارد. اما پیادهسازی آنها نیز با پیچیدگیهای خاص خود همراه است.
با کیوسک آکادمی همراه باشید تا با دنیای ارزهای دیجیتال بهتر آشنا شوید.