خروجی تراکنش UTXO یا Unspent یکی از مفاهیم اصلی است که امکان عملکرد مناسب فناوری بلاک چین را که ساتوشی ناکاموتو برای بیتکوین، توسعه داده است، می دهد.
چندین دهه قبل از ایجاد بیت کوین ، وسواس فکری برای ایجاد یک پول کاملا دیجیتالی ذهن بسیاری از مردم را به خود مشغول کرده بود. اما یکی از اصلی ترین مشکلاتی که همه با آن برخورد کردند، مخارج مضاعف معروف بود .
ساتوشی ناکاموتو بود که به لطف مجموعه ای از تکنیک ها، این مشکل بزرگ را حل کرد و توانست اولین پول غیرمتمرکز صرفا دیجیتالی را ایجاد کند. در این مقاله توضیح خواهیم داد که UTXOها چیست و نقش بزرگی که در ایجاد تراکنش ها ایفا می کنند تا بیت کوین های شما بتوانند با خیال راحت در بلاک چین پروتکل حرکت کنند .
UTXO، مفهومی برای جلوگیری از هزینه مضاعف
همانطور که قبلاً توضیح دادیم، یک تراکنش از ورودی ها و خروجی ها تشکیل شده است. مجموعه ورودی ها و خروجی ها، همراه با ارزهای ارسالی و امضاهای رمزنگاری، منجر به یک هش تراکنش می شود که معمولاً HASH ID نامیده می شود.
ورودی HASH ID تراکنشی است که کیف پول را دریافت کرده و قبلاً هم استفاده نشده است، یعنی UTXO هستند، در حالی که خروجی آدرس مقصد است که UTXO برای آن ایجاد می شود که بعداً می توانید در تراکنش استفاده کنید. همان آدرس می تواند بی نهایت UTXO داشته باشد. به همین دلیل است که UTXO ها به عنوان مجموعه ای از تراکنش ها تعریف می شوند.
وقتی شخصی نیاز به ارسال تراکنش دارد، باید توسط UTXO تغذیه شود. یعنی معاملاتی که دریافت کرده اید و خرج نشده اند. این بدان معناست که یک شخص می تواند از یک یا چند UTXO برای یک تراکنش استفاده کند. در واقع، آن UTXO ها می توانند بخشی از یک یا چند آدرس در کیف پول شما باشند. و حتی میتوان یک تراکنش با UTXO از آدرسهای کیف پولهای مختلف ایجاد کرد، البته تا زمانی که هر کدام با کلید خصوصی واضح مربوطه امضا شده باشد.
همه اینها به یک مکان منتهی می شود: یک UTXO فقط یک بار قابل استفاده است. و این در عملکرد فناوری بلاک چین اساسی است، زیرا بخشی از مجموعه ابزارهایی است که تضمین می کند که ارزها بیش از یک بار استفاده نشوند (معروف به دوگانه خرج کرد).
استفاده از این مکانیسم برای شناسایی سکه های خرج نشده به اندازه ای قابل اعتماد است که در بیت کوین می توانید تعداد سکه های در گردش را بشمارید. کاری که شما انجام می دهید این است که تمام سکه هایی را که در UTXO هستند، یعنی در تراکنش هایی که خرج نشده اند، جمع کنید.
در اینجا یک مثال ساده برای درک جریان میزنیم:
تصور کنید که ماریا می خواهد به پدرو در مجموع ۱۰۰ یورو بیت کوین برای یک شغل بپردازد. ماریا امیدوار است که از برخی افرادی که به او بیت کوین بدهکار هستند به او بازگردانند و از آن پول برای کار پدرو استفاده کنند.
وقتی ماریا این پرداختها را دریافت میکند، مقداری «ورودی» پول داشته است و از این ورودیها یک «خروجی» برای پرداخت به پدرو میسازد. به ماریا بدهیهایش پرداخت شد که ۷۵ یورو و دیگری ۵۰ یورو بود.
وقتی ماریا به پدرو پول می دهد، مجبور است از هر دو ورودی استفاده کند، زیرا هیچ کدام به اندازه کافی نیستند، و او پدرو را به عنوان خروجی قرار می دهد.
پس از آن، پدرو یک ورودی UTXO خواهد داشت (او پرداخت را دریافت کرده است).
سکه های باقی مانده کجا می روند؟
همانطور که می بینید، ماریا در مجموع ۱۲۵ یورو داشت که به دو UTXO تقسیم شده بود، اما او فقط باید ۱۰۰ یورو می فرستاد. او مجبور شده است از هر دو UTXO استفاده کند، آدرس پدرو را به عنوان خروجی تنظیم کند، اما کیف پول شما کار دیگری را به طور شفاف برای ماریا انجام داده است. کیف پول یک آدرس برای ماریا به عنوان یک خروجی قرار داده است که ۵ یورو باقیمانده را به آن اختصاص خواهد داد. این همان چیزی است که به عنوان جهت تغییر شناخته می شود.
به هر حال، برخی از تراکنش ها هستند که تبدیل به UTXO می شوند اما توسط UTXO قبلی ایجاد نمی شوند.
با آنچه در بالا توضیح داده شد، می توانید درک کنید که چگونه این مدل “ورودی” و “خروج” می تواند به ما در ایجاد روابط تملک و اعطای پول کمک کند. روابطی که در بلاک چین با استفاده از رمزنگاری مشخص می شود و به ما اطمینان کامل می دهد که پول به مقصد خود رسیده است و به طور مؤثر تحت کنترل گیرنده است.
UTXO و اهمیت آن در بیت کوین
در بیت کوین همه تراکنش ها دارای این ساختار ورودی و خروجی هستند. در «ورودیهای» تراکنش بیتکوین، میتوانیم منشأ موجودی را که با کیف پول یا کیف خود مدیریت میکنیم، ببینیم. در حالی که در “Departures”، ما می توانیم ببینیم که پول خود را به کجا ارسال می کنیم. علاوه بر این، ما می توانیم پول باقی مانده را نیز ببینیم که برگردانده می شود. همه اینها توسط هر کسی قابل مشاهده و ردیابی است، زیرا بلاک چین بیت کوین عمومی و شفاف است.
اگر دقت کنید، این مدل به شما اجازه می دهد تا کنترل کاملی بر نحوه استفاده از پول و شرایط استفاده از آن داشته باشید. اول از همه، برای استفاده از موجودی در بیت کوین، آن موجودی باید به عنوان یک UTXO در کیف پول شما در نظر گرفته شود. یعنی شخصی باید یک پرداخت (خروجی یا UTXO) انجام دهد تا این پرداخت به ورودی شما تبدیل شود و بنابراین موجودی در دسترس برای خرج کردن داشته باشید.
این یک فرآیند بازگشتی است. یعنی از لحظه ای که سکه در نتیجه یک بلوک استخراج شده تولید می شود، تکرار می شود. به عنوان مثال، یک تراکنش در واقع یک UTXO است که توسط ماینر ایجاد شده تا آن موجودی را به آدرسی تحت کنترل خود ارسال کند. بنابراین، این تراکنش خروجی تبدیل به یک جریان پولی برای ماینر می شود که بعداً می تواند خرج شود. همین روند برای بقیه کاربران بیت کوین نیز تکرار می شود. با این کار میتوانیم ببینیم که UTXOها بخشی ضروری از تراکنشهای بیتکوین هستند و بدون آنها، عملکرد آنها غیرممکن خواهد بود.
گسترش مثال نحوه عملکرد UTXO روی بیت کوین
ما می توانیم عملکرد UTXO در بیت کوین را به شکل زیر مشاهده کنیم:
دانیل می خواهد برای ماشین لوئیس به ارزش ۱ BTC بپردازد و در مجموع ۱.۵ BTC در کیف پول او موجود است. موجودی دانیل به دو جهت A با ۰.۸ BTC و B با ۰.۷ BTC تقسیم می شود.
بنابراین، دانیل نزد لوئیس می رود و پرداخت ۱ بیت کوین را انجام می دهد. در این مرحله، کیف پول دانیل نمی تواند ۱ بیت کوین را مستقیما ارسال کند زیرا موجودی در دو جهت تقسیم می شود. بنابراین هر دو موجودی را می گیرد و آنها را به ورودی تراکنش پرداخت تبدیل می کند. سپس آدرس لوئیس را می گیرد و ارسال ۱ بیت کوین را به آن اختصاص می دهد، همچنین مجموعاً ۰,۴۹۹۵ بیت کوین را به آدرس صرافی اختصاص می دهد و بقیه به عنوان کمیسیون ماینینگ باقی می ماند.
هنگامی که دانیل تراکنش خود را ارسال کرد، توسط شبکه پردازش و تایید می شود و مسیر خود را به سمت برگشت ناپذیری آغاز می کند. و در این مرحله، به راحتی می توان دید UTXO های تراکنش کجا هستند.
اولین UTXO که در مثال می توانیم تشخیص دهیم، موجودی های دانیل هستند. آن آدرسهایی که ۰.۸ BTC و ۰.۷ BTC موجودی دارند، دو UTXO هستند که تحت کنترل آنها هستند و به آنها اجازه میدهند پرداخت را به لوئیس انجام دهند. از آنجایی که دانیل کنترل این موجودی ها را در دست دارد، می تواند مانند این مثال، UTXO های خود را برای پرداختی جدید به «ورودی» تبدیل کند.
بلافاصله پس از تایید شبکه تراکنش دانیل، اوضاع تغییر می کند. اکنون، دانیل دیگر موجودیهایی را که در ابتدا داشت تحت کنترل خود ندارد، و در عوض، تراکنشهای او UTXOهای جدیدی ایجاد کرده است که موارد قبلی را بازنویسی میکنند. UTXO های جدید مورد بحث ابتدا با آدرس لوئیس و ۱ بیت کوینی که در آن از دانیل دریافت کرده است، نشان داده می شوند. و دوم، برای آدرس صرافی و ۰,۴۹۹۵ BTC که دانیل از شبکه دریافت کرده است. همانطور که گفتیم، مابقی برای تکمیل ۱.۵ BTC که دانیل در اصل داشت، به عنوان پرداخت کمیسیون برای ماینر باقی می ماند.
اسکریپت بیت کوین و رابطه آن با UTXO ها
کل عملکرد UTXO در بیت کوین توسط اسکریپت بیت کوین ، زبان برنامه نویسی که برای نوشتن تمام عملیات در بیت کوین استفاده می شود، تضمین می شود. هر تراکنش دارای یک اسکریپت مرتبط است که به ما اجازه می دهد:
- تأیید کنید که موجودی مورد استفاده واقعاً مال ما است.
- اطمینان حاصل کنید که موجودی های ارسال شده فقط توسط شخصی که ما آنها را برای او ارسال می کنیم می تواند خرج شود.
اما این عملیات چگونه انجام می شود؟ این چیزی است که در زیر توضیح می دهیم:
تأیید اینکه تعادل متعلق به ماست
اولین کار برای استفاده از تعادل در بیت کوین این است که نشان دهیم این تعادل واقعاً متعلق به ماست. برای انجام این کار، اولین چیزی که باید در نظر داشته باشید این است که هر UTXO که به یک ورودی تبدیل می کنیم (ترازی که قرار است خرج کنیم) در واقع خروجی تراکنش قبلی است که به ما امکان دسترسی به آن BTC را می دهد. یعنی تمام موجودی های بیت کوین دارای یک UTXO مرتبط با آن هستند و UTXO گفته شده دارای یک اسکریپت مسدود کننده مرتبط با آن است.
این اسکریپت مسدود کننده یک قفل دیجیتال است که باید آن را باز کنیم تا بتوانیم از تعادل UTXO مذکور استفاده کنیم. اسکریپت های مسدود کننده در بیت کوین متنوع هستند، اما رایج ترین آنها P2PKH (پرداخت به هش کلید عمومی) است. اگرچه P2SH (multisig) نیز وجود دارد ، P2PK (ابتدایی ترین از همه). این اسکریپت مسدود کننده را می توان با کلید خصوصی باز کرد که به آدرس نشان داده شده در UTXO منجر می شود.
بنابراین برای باز کردن قفل اسکریپت، کاری که باید انجام دهیم این است که آدرس بیت کوین را بگیریم، کلید خصوصی خود را برداریم و کلید عمومی آدرس مذکور را تولید کنیم. در پایان امضای دیجیتال خود را مهر می زنیم و با تمام این داده های تایید شده، موجودی آدرس مذکور باز می شود تا بتوانیم از آن استفاده کنیم. یعنی گره ها تراکنش را می پذیرند و آن را در mempool در انتظار ماینرها قرار می دهند.
برعکس، اگر ما موفق به انجام آن نشویم، تراکنش به سادگی توسط گره ها رد می شود و ما نمی توانیم از موجودی استفاده کنیم. به این فرآیند اسکریپت باز کردن قفل می گویند. البته این فرآیند رمزنگاری برای کاربران یک کیف پول به صورت خودکار و شفاف است، کل فرآیند توسط خود کیف پول انجام می شود، اما اکنون می دانید که در داخل آن چه اتفاقی می افتد. در این طرح، این بخش از عملیات در scriptSig هر اسکریپت بیت کوین توضیح داده شده است.
ایجاد اسکریپت قفل
با اثبات اینکه میتوانیم UTXOهای خود را خرج کنیم، به فرآیند ایجاد تراکنش ادامه میدهیم و یک اسکریپت قفل برای UTXO مقصد جدید ایجاد میکنیم. در این مورد، کاری که کیف پول انجام می دهد این است که یک اسکریپت شبیه به اسکریپتی که قبلا برای ما ایجاد شده بود ایجاد می کند، که نشان می دهد تنها فردی که می تواند این UTXO جدید را خرج کند، کسی است که کلیدهای خصوصی را در اختیار دارد و آدرس های مکان را کنترل می کند.
به این ترتیب، آنچه ایجاد میشود یک زنجیره اعتبارسنجی است که در آن بیتکوینها هنگام عبور از یک آدرس به آدرس دیگر، مسدود میشوند تا آخرین فردی که آنها را در اختیار میگیرد، استفاده کند.
همانطور که می بینید، در بیت کوین همه چیز یک دلیل کاملاً مشخص دارد و این به همه بخش های آن اجازه می دهد تا عملکرد صحیح ارزهای دیجیتال را در کنار هم انجام دهند. به عنوان یک پروتکل باز، تمام گره هایی که می خواهند بخشی از پروتکل باشند، قوانین را به یک شکل تفسیر می کنند.
تمام تراکنشها توسط همه گرهها بررسی میشوند، آنهایی که اکثریت را میپذیرند پذیرفته میشوند و آنهایی را که اکثریت قدرت هش (تولید شده توسط ماینرها) میپذیرند، تأیید میشوند. این کنترل ها به طور دموکراتیک انطباق با پروتکل را تضمین می کنند.
UTXO در بیت کوین
تراکنش هایی که از UTXO انجام نمی شوند
همانطور که قبلاً اشاره کردیم، برخی از تراکنشهای خاص وجود دارد که برخی از آنها با UTXO تولید نمیشوند، زیرا سکهها به صورت “جادویی” ظاهر میشوند.
چرا با استفاده از موجودی های موجود در بیت کوین، پرداخت کسری انجام نمی دهید؟
با خواندن مثال قبلی، ممکن است تعجب کرده باشید که چرا کیف پول بیت کوین دانیل با یک بار ورود، پرداخت دقیق ۱ بیت کوین را انجام نداده است؟ پاسخ این است که UTXO ها تعادل درون بیت کوین را به طور غیرقابل تقسیم نشان می دهند. یعنی ما نمیتوانیم آن موجودی را به مقادیر کوچکتر تبدیل کنیم، مگر اینکه موجودی را صرف ایجاد یک تراکنش جدید کنیم.
برای آسانتر کردن کار، بیایید به این مثال نگاه کنیم: اگر بخواهیم با کیف پول خود ۱ بیت کوین بپردازیم، اما این مبلغ به ۱۰۰ UTXO مختلف تقسیم میشود که هر کدام ۰.۰۱ BTC دارند، کیف پول ما ۱۰۰ آدرس را به عنوان ورودی میگیرد. معامله ما و با آن پرداخت را انجام خواهد داد. یعنی پروتکل بیت کوین آن ۱۰۰ UTXO را به عنوان “Spent” علامت گذاری می کند. از آنجا، یک تراکنش جدید با یک UTXO جدید ایجاد می کند که در آن ما پرداخت ۱ بیت کوین را ارسال کرده ایم و ما را بدون کنترل موجودی در آن آدرس های استفاده شده رها می کند.
ارتباط با کمیسیون در بیت کوین
یکی دیگر از ابزارهای UTXO مربوط به کمیسیون یا کارمزد بیت کوین است. در مثال قبل توضیح دادیم که هر بار که معامله ای انجام می دهیم، کارمزد آن عملیات برابر است با تفاوت بین ورودی ها و خروجی ها. یا به عبارتی :
کل ورودی – کل خروجی = کمیسیون
این نشان می دهد که ساخت یک معامله از ابتدا دارای تعادل کمیسیون است. کمیسیون به ماینرها با هیچ خروجی مرتبط نیست، بنابراین ماینرها آنچه را که مرتبط نمی ماند حفظ می کنند. یعنی ورودی کل باید همیشه بیشتر از کل خروجی مرتبط باشد.
کمیسیون به ماینرها ثابت نیست، هر کدام بسته به عجله ای که در آن هستند تصمیم می گیرند چقدر می خواهند بپردازند، اما این چیزی است که ما در تمام تراکنش های داخل بیت کوین می بینیم و هدف آن دو چیز است:
- تشویق به کار ماینرهایی که در هنگام تولید یک بلوک، نه تنها پاداش آن را دریافت می کنند، بلکه کمیسیون تمام تراکنش های تایید شده توسط بلوک مذکور را نیز دریافت می کنند.
- از آسیب پذیری شبکه در برابر حملات مخرب مانند DDoS ، حمله dusting و غیره جلوگیری کند. به این دلیل است که هر تراکنش هزینه دارد و انجام تراکنشهای انبوه هزینه بالایی برای مهاجم دارد.
UTXO در سایر بلاک چین ها و ارزهای دیجیتال
طرح UTXO آنقدر خوب است که بقیه ارزهای دیجیتال تصمیم گرفته اند از آن برای سیستم های خود استفاده کنند. البته، هر بلاک چین می تواند این مفهوم را به گونه ای متفاوت تنظیم کند. به این ترتیب، میتواند با عملکردهای اضافی که هر پروتکل بلاک چین در جایی که اجرا میشود، تطبیق دهد. با این حال، عملیات اصلی یکسان است. از این رو، حتی سکه های حفظ حریم خصوصی مانند Monero o Zcash ، از این طرح مطابق با ویژگی های پروتکل خود استفاده می کنند.




