در سال های اخیر تقاضا برای ارزهای دیجیتال به طور فزاینده ای افزایش یافته و همچنان در حال رشد است. این امر موجب شده تا کاربران به جنبه های مختلف این بازار علاقه مند شوند. 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 در قابلیت های مربوط به حسابداری، به عنوان جنبه بنیادی توسعه پلتفرم های بلاک چینی شناخته می شود. مکانیسم خروجی خرج نشده تراکنش کاملاً شبیه به پول نقد است و برای همه انواع تراکنش ها، از جمله معاملات ارزهای دیجیتال به صورت یکپارچه عمل می کند.