در بیتکوین کامپیوترهای شبکه (گرهها) و ماینرها که باید کار تایید تراکنشها رو انجام بدن، اطلاعات «حسابهای» شبکه رو نگهداری نمیکنن. بلکه «تراکنشهای» شبکه رو نگهداری میکنن. به همهی تراکنشها هم نیازی ندارن و میتونن فقط «تراکنشهای خرج نشده» رو نگه دارن.
فرض کنید علی و حسن هر کدوم با تراکنشهای الف و ب به یکی از حسابهای پیمان (پ) یک بیتکوین واریز کنن. پیمان وقتی وارد کیف پولش میشه میبینه که ۲ بیتکوین موجودی داره. اما گرههای شبکه هیچ توجهی به اینکه حساب پ چقدر موجودی داره ندارن و فقط تراکنشهای الف و ب رو به صورت مستقل (بدون ارتباط دادنشون با هم) نگهداری میکنن.
زمانی که پیمان تصمیم میگیره این ۲ بیتکوین رو یکجا برای شخص دیگهای ارسال کنه، تراکنشی که باید امضا کنه شامل شناسه تراکنش الف و ب هست و مقداری از سکهها و آدرسی که باید کوینها برای اون ارسال بشن. بنابراین وقتی پیمان میخواد سکههای خودش رو خرج کنه، نمیتونه بگه که من مالک حساب پ هستم و میخوام از موجودی خودم خرج کنم. بلکه باید دقیقا مشخص کنه که بنا به کدوم تراکنشهایی - که هنوز خرجشون نکرده - این مقدار سکه برای من ارسال شده و حالا میخوام اونها رو خرج کنم.
همینطور پیمان حق نداره که فقط بخشی از سکههای یک تراکنش رو خرج کنه و باید همهی سکههای یک تراکنش رو یکجا خرج کنه. مثلا برای ارسال ۱.۵ بیتکوین، باید تراکنشهای الف و ب رو به عنوان ورودی مشخص کنه، مقدار ۱.۵ بیتکوین و آدرس مقصد رو به عنوان خروجی مشخص کنه و همینطور یک آدرس دیگه که متعلق به خودش هست رو با مقدار ۰.۵ بیتکوین به عنوان خروجی قرار بده که باقیموندهی سکهها مجددا به حسابی متعلق به خودش ارسال بشه. (در حقیقت باید مقداری کمتر (مثلا ۰.۴۹ بیتکوین) رو به خودش برگردونه تا مقداری که باقی میمونه و در خروجی تعیین تکلیف نشده، به عنوان کارمزد تراکنش لحاظ بشه)
به این نحوهی عملکرد بیتکوین مدل خروجی تراکنش خرج نشده (Unspent Transaction Output) یا UTXO گفته میشه که میتونه به عنوان ورودی در یک تراکنش جدید خرج بشه. در مقابل رمزارز ایتریوم بر مبنای «حسابها» کار میکنه که اینجا توضیحات بیشتری دادم.
#UXTO #BTC
〽️ @irancoin
فرض کنید علی و حسن هر کدوم با تراکنشهای الف و ب به یکی از حسابهای پیمان (پ) یک بیتکوین واریز کنن. پیمان وقتی وارد کیف پولش میشه میبینه که ۲ بیتکوین موجودی داره. اما گرههای شبکه هیچ توجهی به اینکه حساب پ چقدر موجودی داره ندارن و فقط تراکنشهای الف و ب رو به صورت مستقل (بدون ارتباط دادنشون با هم) نگهداری میکنن.
زمانی که پیمان تصمیم میگیره این ۲ بیتکوین رو یکجا برای شخص دیگهای ارسال کنه، تراکنشی که باید امضا کنه شامل شناسه تراکنش الف و ب هست و مقداری از سکهها و آدرسی که باید کوینها برای اون ارسال بشن. بنابراین وقتی پیمان میخواد سکههای خودش رو خرج کنه، نمیتونه بگه که من مالک حساب پ هستم و میخوام از موجودی خودم خرج کنم. بلکه باید دقیقا مشخص کنه که بنا به کدوم تراکنشهایی - که هنوز خرجشون نکرده - این مقدار سکه برای من ارسال شده و حالا میخوام اونها رو خرج کنم.
همینطور پیمان حق نداره که فقط بخشی از سکههای یک تراکنش رو خرج کنه و باید همهی سکههای یک تراکنش رو یکجا خرج کنه. مثلا برای ارسال ۱.۵ بیتکوین، باید تراکنشهای الف و ب رو به عنوان ورودی مشخص کنه، مقدار ۱.۵ بیتکوین و آدرس مقصد رو به عنوان خروجی مشخص کنه و همینطور یک آدرس دیگه که متعلق به خودش هست رو با مقدار ۰.۵ بیتکوین به عنوان خروجی قرار بده که باقیموندهی سکهها مجددا به حسابی متعلق به خودش ارسال بشه. (در حقیقت باید مقداری کمتر (مثلا ۰.۴۹ بیتکوین) رو به خودش برگردونه تا مقداری که باقی میمونه و در خروجی تعیین تکلیف نشده، به عنوان کارمزد تراکنش لحاظ بشه)
به این نحوهی عملکرد بیتکوین مدل خروجی تراکنش خرج نشده (Unspent Transaction Output) یا UTXO گفته میشه که میتونه به عنوان ورودی در یک تراکنش جدید خرج بشه. در مقابل رمزارز ایتریوم بر مبنای «حسابها» کار میکنه که اینجا توضیحات بیشتری دادم.
#UXTO #BTC
〽️ @irancoin
Telegram
JahaniGram