در سالهای اخیر تقاضا برای ارزهای دیجیتال بهطور فزایندهای افزایش یافته و همچنان در حال رشد است. این امر موجب شده تا کاربران به جنبههای مختلف این بازار علاقهمند شوند. UTXO یکی از رایجترین اصطلاحاتی است که هنگام آشنایی با فضای ارزهای دیجیتال مانند بیت کوین با آن مواجه میشویم؛ برای مثال بیشک هنگام ارسال یا دریافت بیت کوین با عبارت «خروجی خرجنشده تراکنش» مواجه شده و این عبارت سؤالاتی را در ذهن شما ایجاد کرده است، اما این عبارت به چه معناست؟ آیا هنگام انجام تراکنشهای ناموفق که در آنها مبلغی جابهجا نشده، رسید دریافت میکنیم؟ مطمئناً جواب این سؤال خیر است. در ادامه این مطلب به بررسی نحوه کارکرد این مدل میپردازیم.
معرفی مدل UTXO
عبارت UTXO کوتاهشده عبارت Unspent Transaction output و یک اصطلاح فنی است. در دنیای ارزهای دیجیتال مانند بیت کوین، خروجی خرجنشده تراکنش، واژهای انتزاعی از پول الکترونیکی است و به میزان ارز دیجیتالی گفته میشود که پس از انجام یک تراکنش ارز دیجیتال مانند بیت کوین برای فرد باقی میماند. هر UTXO مشابه با یک کوین بوده و با توجه به واحد پول مربوط به خود ارزش مشخصی دارد.
زمانی که تراکنش پذیرفتهشدهای در یک سیستم پرداخت معتبر مانند بلاک چین بیت کوین انجام میشود، تنها UTXO ها میتوانند بهعنوان ورودیهای تراکنش استفاده شوند. خروجی خرجنشده تراکنش بهطور مداوم پردازش شده و مسئول شروع و پایان هر تراکنش است؛ یعنی زمانی که یک تراکنش جدید اتفاق میافتد، ورودیها حذف و خروجیها بهعنوان UTXO های جدید ایجاد میشوند.
رابطه مدل UTXO با تراکنشهای بیت کوین و بلاک چین
این مدل مفهومی بسیار مهم در حوزه بلاک چین بوده و درک آن بسیار ساده است. این مدل در بلاک چین بیت کوین در مقایسه با سایر بلاک چینها متفاوت است؛ چراکه از همان ابتدا یکی از مهمترین اهداف راهاندازی بیت کوین ایجاد سیستم مالی با ویژگیهایی مانند شفافیت، منصفانهبودن و قابلیت حسابرسی بوده است. این مدل به تمام نودهای موجود در شبکه بیت کوین این امکان را میدهد تا در هر مقطع زمانی درباره اینکه کدام بیت کوین وجود دارد، توافق کنند.
از طرف دیگر تراکنشهای انجامشده در بلاک چین بیت کوین شامل ورودی و خروجیهای متعددی است. این امر سبب میشود UTXO ها ترکیب و تقسیم شوند و هرکدام مبلغی را پرداخت کنند. گرههای بیت کوین با استفاده از این مدل میتوانند هر تراکنش انجامشده در بلاک چین را بهطور مؤثر تأیید کنند. این گرهها پس از دریافت تراکنشها میتوانند تأیید کنند که آیا UTXO هایی که مصرف میشوند، معتبر هستند یا نه. درنهایت این ویژگی سبب میشود تا بیت کوین بدون نیاز به وجود اشخاص ثالث مطمئن، مشکل Double Spend را برطرف کند.
نحوه کارکرد مدل UTXO
این مدل مانند پول نقد در دنیای واقعی عمل میکند؛ برای مثال زمانی که برای خرید به مغازهای میروید، اسکناس 10 هزار تومانی خود را میدهید و با بخشی از ارزش آن کالایی را خریداری کرده و باقیمانده پول خود را دریافت میکنید. در این مثال شما برای دریافت باقیمانده پول خود اسکناس 10 هزار تومانی را نصف نمیکنید، بلکه این اسکناس را کامل پرداخت کرده و برای باقیمانده آن یک اسکناس 5 هزار تومانی دریافت میکنید.
در دنیای ارزهای دیجیتال UTXO نیز مشابه مثال بالا عمل میکند. در یک تراکنش انجامشده در بلاک چین، UTXO ها همیشه کامل پرداخت میشوند؛ حتی اگر مبلغ پرداختی موردنظر بخش جزئی از کل ارزش این مدل اصلی باشد. مانند مثال بالا، فرض کنید علی میخواهد در ازای خرید کالایی که 6 بیت کوین قیمت دارد، به فروشنده بیت کوین پرداخت کند، اما علی تنها یک UTXO به ارزش 10 بیت کوین دارد. برای خرید این کالا، علی یک تراکنش ایجاد کرده و در آن تمام 10 بیت کوین را مصرف میکند.
برای انجام این تراکنش دو UTXO ایجاد میکند، یک UTXO برای فروشنده به ارزش 6 بیت کوین و یک UTXO برای خودش به ارزش 4 بیت کوین. UTXO که علی برای خودش ایجاد کرده، بهعنوان UTXO Change (باقیمانده پول) شناخته شده و کیف پول نرمافزاری وی بهطور خودکار این UTXO را ردیابی میکند تا موجودی نهایی 4 بیت کوین را در حساب وی اعمال کند.
معرفی جایگزینهای مدل UTXO
در شبکههای بلاک چینی امروزی دو نوع مدل ثبت رکورد رایج است:
- مدل خروجی تراکنش خرج نشده که توسط شبکه بیت کوین استفاده میشود.
- Account / Blance Model که توسط شبکه اتریوم استفاده میشود.
در بالا با مدل UTXO آشنا شدیم، اما رقیب اصلی آن یعنی Account Model چگونه کار میکند؟ مدل تراکنش اکانت، مانند حسابهای بانکی، داراییها را به صورت موجودی حساب نشان میدهد.
دو نوع اکانت وجود دارد:
- حسابهای کاربری کنترل شده با کلید خصوصی: زمانی که کاربری کیف پول اتر ایجاد کرده و اولین تراکنش خود را دریافت میکند، یک حساب کنترل شده با کلید خصوصی به Global state اضافه شده و در تمام نودهای شبکه ذخیره میشود.
- حسابهای کاربری کنترل شده با کد قرارداد: استقرار یک قرارداد هوشمند منجر به ایجاد یک حساب کاربری کنترل شده با کد قرارداد میشود. قراردادهای هوشمند میتوانند وجوهی را در خود نگهداشته و سپس طبق شرایط تعریف شده در منطق قرارداد مجدداً آنها را توزیع کنند. هر حساب در اتریوم برای ارتباط با آدرسها و حسابهای دیگر یک موجودی، فضای ذخیرهسازی و کد دارد.
تراکنش انجامشده براساس مدل اکانت، برای کاهش موجودی حساب فرستنده و افزایش مانده حساب گیرنده، گرههایی (Nodes) را فعال میکند. برای جلوگیری از حملات تکراری، هر تراکنش در مدل اکانت، دارای یک nonce است. حملات تکراری زمانی اتفاق میافتد که گیرنده پرداخت، برای دریافت مجدد پول، یک تراکنش جعلی را پخش میکند؛ درنتیجه مبلغ پرداختی از حساب فرستنده دو بار کسر میشود. برای مقابله با اینگونه حملات، هر حساب در شبکه اتریوم، یک nonce دارد که برای عموم کاربران قابل مشاهده است و با هر تراکنش خروجی یک عدد به آن اضافه میشود. این امر مانع ارسال چند مرتبه یک تراکنش میشود. برای درک بهتر تراکنش در مدل اکانت به مثال زیر توجه کنید:
طرح مثال
فرض کنید علی 5 اتر دارد و میخواهد یکی از آنها را به محمد بدهد. در مرحله اول، سیستم یک اتر را از حساب علی کسر میکند و اکنون او 4 اتر دارد. از طرف دیگر محمد یک اتر در حساب خود دارد و با دریافت یک اتر از علی، سیستم یک اتر دیگر به حساب محمد اضافه میکند. همانطور که ملاحظه کردید، ثبت سوابق مالی در شبکه اتریوم مانند بانک در دنیای حقیقی است. هنگام انجام تراکنشهای بانکی ابتدا بانک سوابق مالی کاربر را بررسی کرده و تنها درصورت وجود موجودی کافی، تراکنش انجامشده را تأیید و نهایی میکند.
مقایسه مدل خروجی خرج نشده تراکنش با اکانت مدل
در ادامه قصد داریم دو مدل خروجی خرجنشده تراکنش و مدل Account را از جنبههای مختلف مانند مقیاسپذیری، حفظ حریم خصوصی، قابلیتهای قرارداد هوشمند و… با یکدیگر مقایسه کنیم:
بهطور خلاصه مدل UTXO یک Verification Model است. این بدان معناست که کاربران تراکنشهایی را ارسال میکنند که مشخصکننده وضعیت نتایج تراکنش بوده و بهعنوان خروجیهای تراکنش جدید قابل مصرف، توسط گیرنده (ها) تعریف میشود. درنهایت نودها وضعیت ورودیها و امضاها را بررسی میکنند، اما از سوی دیگر مدل Account یک مدل محاسباتی است که با استفاده از آن کاربران تراکنشهایی را اعمال میکنند و درخصوص چگونگی وضعیت تراکنشها به نودها دستور میدهند. سپس شبکه براساس دستورالعملها محاسبات مربوط به وضعیت جدید را انجام میدهد.
1. مقایسه مقیاسپذیری در مدل UTXO و اکانت
از چند روش مختلف میتوان مقیاسپذیری این دو مدل را با یکدیگر مقایسه کرد. یک روش این است که بر روی الزامات ذخیرهسازی کلی هر سیستم تمرکز کنیم. یک روش دیگر آن است که در نظر داشته باشیم کدامیک از این دو مدل برای استقرار فناوریهای لایه دوم در بالای بلاک چین اصلی مناسبتر است.
2. مقایسه اندازه بلاک چین در مدل UTXO و اکانت
مدل اکانت در مقایسه با مدل UTXO بهطور کارآمدتری از فضای ذخیرهسازی استفاده میکند. ذخیره یک موجودی حساب واحد در مدل اکانت، در مقایسه با ذخیره چندین UTXO که کل موجودی کاربر را تشکیل میدهند، به فضای ذخیرهسازی کمتری نیاز دارد. از آنجا که تراکنشهای انجامشده در مدل اکانت تنها حاوی فرستنده، گیرنده، مبلغ انتقال و یک امضای دیجیتال است، اندازه آنها در مقایسه با مدل UTXO کوچکتر است. علاوه بر این، تنها با حذف خروجیهای تغییر، دادههای زیادی در مدل اکانت ذخیره میشوند.
از طرف دیگر، یک تراکنش UTXO وضعیت پس از انتقال تراکنش (خروجیهای تراکنش جدید ایجادشده) را مشخص میکند و در مقایسه با مدل اکانت، حاوی دادههای بیشتری است. همچنین ممکن است از چندین UTXO بهعنوان ورودیهای تراکنشها مصرف شود؛ درحالیکه تراکنش اکانت تنها مشخص میکند که از کدام حساب مبلغ موردنظر کسر شود.
برای درک بهتر این موضوع، باید بدانید که مدل اکانت شبکه اتریوم 100 بایت و مدل خروجی خرجنشده در Horizen تراکنش حدود 200 تا 300 بایت لازم است. همچنین سرعت دریافت نودهای جدید در سیستمهایی که از مدل اکانت استفاده میکنند، بیشتر است؛ چراکه برای همگامسازی آنها به دادههای کمتری نیاز است. تعداد حسابها در مدل اکانت بسیار کمتر از تعداد کل UTXO های تنظیمشده در سیستمی با اندازه مشابه است.
3. مقایسه سازوکار کانالهای State و پرداخت در مدل UTXO
در حال حاضر، پیشرفتهترین ساز و کار کانال پرداخت، مربوط به شبکه Lightening روی بیت کوین است. در این ساز و کار زمانی که داراییها به لایه دوم وارد یا از آن خارج میشوند، از یک مکانیسم اثبات و تأیید استفاده میشود. همانطور که در بالا نیز به آن اشاره شد، مدل UTXO یک مدل اثبات و تأیید و مدل اکانت یک مدل محاسباتی است؛ از همینرو، ساختار این مدل برای این نوع رویکردهای مقیاسپذیری مناسبتر است.
4. مقایسه فرایند شاردینگ در مدل UTXO و اکانت
هنگام استفاده از مدل UTXO پارتیشنبندی یک بلاک چین به شاردها و زنجیرههای جانبی آسانتر خواهد بود. جمعآوری خروجیهای تراکنشهای قابل خرج و تعریف خروجیها در سمت مشتری اتفاق افتاده و استرس را در سیستم کلی کاهش میدهد، اما در مدل اکانت، هر نود حساب فرستنده و گیرنده را در قسمتهای مختلف بومیسازی کرده و سپس هر دو را ویرایش میکند. درنهایت میتوان گفت مدل خروجی خرجنشده تراکنش امکان پارتیشنبندی ساختار داده را سادهتر میکند.
5. مقایسه حریم خصوصی در مدل UTXO و اکانت
زمانی که صحبت از حریم خصوصی میشود هر دو مدلهای خروجی خرج نشده تراکنش و اکانت مزیتهایی را ارائه میدهند که در ادامه به معرفی هر یک از آنها میپردازیم:
- مدل UTXO پیوند میان تراکنشها را سخت تر میکند، درحالی که مدل اکانت قابلیت تعویض بهتری را ارائه میدهد. با توجه به ویژگی قابلیت تعویض، میتوان گفت مدل اکانت حریم خصوصی بهتری را به کاربران ارائه میدهد.
- در مدل UTXO به صورت مداوم از آدرسهای تغییر استفاده شده و این امر باعث میشود تا ردیابی مالکیت کوین نسبت به مدل اکانت دشوارتر باشد. در یک بیان ساده، آدرسی که به تازگی در این مدل ایجاد میشود، مالک شناخته شدهای نداشته و برای رسیدن به یک کاربر مشخص، نیاز به تجزیه و تحلیل یک زنجیره پیشرفته است.
درحالی که مدل اکانت کاربران را به طور ضمنی به استفاده مجدد از آدرس تشویق کرده و از این جهت ایجاد تاریخچه تراکنش برای کاربر آسان تر میشود.
- با وجود اینکه در مدل UTXO هیچ یک از تکنیکهای حریم خصوصی اعمال نمیشوند، اما تغییرات UTXO از شفافیت کاملی برخوردار هستند.
از طرف دیگر، مدل اکانت همراه با یک “Coin Mixer” داخلی ارائه میشود. به این ترتیب زمانی که یک حساب توسط چندین تراکنش تأمین مالی میشود، نتیجه تراکنش یک موجودی واحد است. در نهایت هنگامی که پرداختی از این حساب انجام میشود، ناظر نمیتواند تعین کند کدام یک از سکههای دریافتی در خرج خواهند شد.
6. مقایسه قابلیت قراردادهای هوشمند در مدل UTXO و اکانت
زمانی که درباره فعالسازی قراردادهای هوشمند صحبت میشود، مدل اکانت مزایای روشنی دارد. پیش از هر چیزی مدل اکانت منطق واضحتری را ارائه میدهد. اضافه و کمکردن موجودیها سبب میشود ایجاد تراکنشهایی که نیازمند اطلاعات State بوده و چندین طرف را درگیر میکند، برای توسعهدهندگان راحتتر باشد.
در این مدل، تراکنش امضاشده تا زمانی معتبر است که حساب ارسالکننده موجودی کافی برای پرداخت هزینه اجرا را داشته باشد. از نظر محاسباتی بررسی موجودی حساب، هزینه کمتری در مقایسه با تأیید فرایند خرج یا خرجنشدن تراکنش دارد. این امر بهویژه درباره «حسابهای کنترلشده با کد» که با سایر قراردادهای هوشمند تعامل دارند نیز صادق است.
قراردادهای هوشمند در مدل UTXO برای انتخاب خروجیها هنگام ارسال داراییها و مدیریت «خروجیهای تغییر» نیازمند ارائه منطق روشنی هستند. از آنجا که مدل UTXO ذاتاً بدون State است، تراکنشها را وادار به ارائه اطلاعات state میکند و سبب پیچیدهشدن طراحی کلی میشود.
موارد مهم دیگر در مقایسه مدل UTXO و مدل اکانت
یکی از مزایای مدل UTXO این است که امکان موازیسازی تراکنشها در قراردادهای هوشمند را بسیار راحتتر میکند. از آنجا که تمام UTXO ها به ورودیهای مستقلی مرتبط هستند، این امکان وجود دارد تا چندین UTXO مورداستفاده در چند تراکنش مختلف همزمان پردازش شوند، اما در مدل اکانت، نتیجه تراکنش به وضعیت ورودی بستگی دارد و انجام معاملات بهصورت موازی باید با دقت انجام شود؛ درنتیجه تراکنشهای مربوط به یک حساب بهصورت متوالی انجام میشوند.
نکته کلیدی این است که مدل UTXO هنگام انجام معاملات ساده بهتر عمل میکند و مدل اکانت زمانی کاربرد پیدا میکند که با یک منطق پیچیدهتری سروکار داشته باشید؛ از اینرو ترند محبوب درباره پلتفرمهای قرارداد هوشمند فعلی، استفاده از یک مدل ترکیبی است که در آن همزمان از مدل خروجی خرجنشده تراکنش برای حساب تراکنشها و از مدل اکانت برای قراردادهای هوشمند بهره میبرند.
نکات مهم در خصوص مدل UTXO
- زمانی که کاربر بیت کوین خرج میکند، تراکنش رمزنگاری شدهای ایجاد میشود. این تراکنش UTXOهای قدیمی را مصرف کرده و مقداری UTXO جدید ایجاد میکند.
- UTXO به صورت کامل مصرف شده و باقیمانده آن به صورت خودکار توسط کیف پول کاربر ایجاد میشود.
- پس از پایان تراکنش، موجودی اصلی حساب کاربر توسط کیف پول محاسبه شده و به کاربر نمایش داده میشود.
- هر UTXO به یک آدرس مرتبط است.
- آدرسهای مختلف به منزله UTXOهای مختلف است.
- به مقدار ارز دیجیتال باقیمانده پس از انجام تراکنش UTXO گفته میشود.
- UTXO به طور مداوم در حال پردازش است.
- UTXO مسئول شروع و پایان هر تراکنش است.
- پس از تکمیل تراکنش هر UTXO بهعنوان ورودی به دیتابیس برگشته و در آینده برای انجام تراکنش جدید استفاده میشود.
سخن آخر
بهدلیل اهمیت UTXO در قابلیتهای مربوط به حسابداری، بهعنوان جنبه بنیادی توسعه پلتفرمهای بلاک چینی شناخته میشود. مکانیسم خروجی خرجنشده تراکنش کاملاً شبیه به پول نقد است و برای همه انواع تراکنشها، از جمله معاملات ارزهای دیجیتال بهصورت یکپارچه عمل میکند.



























































