2. 2 توضیح - 2. 2. 1 ورودی
- 2. 2. 2 خروجی
- تأیید 2. 2. 3
- 3. 1 پرداخت به pubkeyhash
- 3. 2 پرداخت به اسکریپت
قالب کلی معامله بیت کوین (داخل یک بلوک)
| رشته | شرح | اندازه |
| نسخه شماره | در حال حاضر 1 | 4 بایت |
| پرچم | در صورت وجود ، همیشه 0001 ، و نشان دهنده وجود داده های شاهد است | آرایه 2 بایت اختیاری |
| در داخل نسخه | عدد صحیح مثبت vi = varint | 1 - 9 بایت |
| لیست ورودی ها | اولین ورودی معامله اول نیز "Coinbase" نامیده می شود (محتوای آن در نسخه های قبلی نادیده گرفته شد) | -بسیاری از ورودی ها |
| از پیش رو | عدد صحیح مثبت vi = varint | 1 - 9 بایت |
| لیست خروجی ها | خروجی های اولین معامله ، بیت کوین های معدن را برای بلوک خرج می کنند | -بسیاری از خروجی ها |
| شاهدان | لیستی از شاهدان ، 1 برای هر ورودی ، اگر پرچم بالا از دست رفته باشد حذف شده است | متغیر ، به Segregated_Witness مراجعه کنید |
| lock_time | اگر شماره های غیر صفر و دنباله ای باشد<0xFFFFFFFF: block height or timestamp when transaction is final | 4 بایت |
نمونه اصلی معامله بیت کوین با 1 ورودی و 1 فقط خروجی
داده ها
ورودی: TX قبلی: F5D8EE39A430901C91A5917B9F2DC19D6D1A0E9CEA205B009CA73DDDDDDDDDDDDDDD04470B9A6 INDEX: 0 اسکریپتس: 304502206E21798A42FAE0E8555428542854281ABD38 C4571D10 90DB022100E2AC980643B82C0E88FFDFEC6B64E3E6BA35E7BA5FA5FA5FA5FA5FA5FA5FA5D6C8D25C6B241501 OUTPUP: 5000000000 Script1601010101017 FCD52D2C580B65D35549D op_equalverify op_checksig
توضیح
ورودی در این معامله 50 BTC را از خروجی شماره 0 در معامله F5D8 وارد می کند. سپس خروجی 50 BTC را به آدرس بیت کوین ارسال می کند (در اینجا در Hexadecimal 4043 بیان شده است. به جای پایه معمولی 58). هنگامی که گیرنده می خواهد این پول را خرج کند ، وی با مراجعه به شماره 0 این معامله را در ورودی معامله خود ارجاع می دهد.
ورودی
ورودی مرجع خروجی از معامله قبلی است. ورودی های متعدد اغلب در یک معامله ذکر شده است. تمام مقادیر ورودی معامله جدید (یعنی کل سکه خروجی های قبلی که توسط ورودی های معامله جدید ارجاع شده است) اضافه می شوند و کل (کمتر از هزینه معامله) توسط خروجی های معامله جدید کاملاً استفاده می شود. TX قبلی هش از معامله قبلی است. فهرست خروجی خاص در معامله ارجاع شده است. Scriptsig نیمه اول فیلمنامه است (بعداً با جزئیات بیشتر مورد بحث قرار می گیرد).
این اسکریپت شامل دو مؤلفه ، یک امضای و یک کلید عمومی است. کلید عمومی باید با هش داده شده در فیلمنامه خروجی بازخرید شده مطابقت داشته باشد. از کلید عمومی برای تأیید امضای REAREEMERS ، که دومین مؤلفه است استفاده می شود. به طور دقیق تر ، مؤلفه دوم امضای ECDSA بر روی هش از نسخه ساده شده معامله است. این ، همراه با کلید عمومی ، ثابت می کند که معامله توسط صاحب واقعی بیت کوین های مورد نظر ایجاد شده است. پرچم های مختلف نحوه ساده سازی معامله را تعریف می کنند و می تواند برای ایجاد انواع مختلف پرداخت استفاده شود.
خروجی
خروجی حاوی دستورالعمل ارسال بیت کوین است. مقدار تعداد Satoshi (1 BTC = 100،000،000 Satoshi) است که در صورت ادعا ، این خروجی ارزش خواهد داشت. ScriptPubkey نیمه دوم فیلمنامه است (بعداً مورد بحث قرار گرفت). بیش از یک خروجی می تواند وجود داشته باشد ، و آنها مقدار ترکیبی ورودی ها را به اشتراک می گذارند. از آنجا که هر خروجی از یک معامله فقط می تواند یک بار توسط ورودی یک معامله بعدی ارجاع شود ، اگر نمی خواهید آن را از دست دهید ، کل مقدار ورودی ترکیبی باید در یک خروجی ارسال شود. اگر ورودی 50 BTC باشد اما فقط می خواهید 25 BTC ارسال کنید ، بیت کوین دو خروجی به ارزش 25 BTC ایجاد می کند: یکی به مقصد ، و دیگری به شما (معروف به "تغییر" ، اگرچه آن را برای خودتان ارسال می کنید). هر بیت کوین ورودی که در خروجی بازخرید نشده است ، هزینه معامله در نظر گرفته می شود. هرکسی که این بلوک را تولید کند می تواند با وارد کردن آن در معامله Coinbase آن بلوک ، آن را مطالبه کند.

A 6. 102 BTC را به C ارسال می کند و C 6. 25 BTC تولید می کند. C 3. 12009 BTC را به D ارسال می کند ، و او باید خودش را تغییر دهد. D BTC 3. 12009 را به شخص دیگری می فرستد ، اما آنها هنوز آن را بازخرید نکرده اند. فقط خروجی D و تغییر C قادر به صرف شده در وضعیت فعلی هستند.
تایید
برای تأیید اینکه ورودی ها مجاز به جمع آوری مقادیر خروجی های ارجاع شده هستند ، بیت کوین از یک سیستم اسکریپتینگ مانند سفارشی مانند استفاده می کند. Scriptsig ورودی و اسکریپت های خروجی ارجاع شده (به این ترتیب) ارزیابی می شوند ، با ScriptPubkey با استفاده از مقادیر باقی مانده روی پشته توسط Scriptsig. اگر ScriptPubkey درست برگردد ، ورودی مجاز است. از طریق سیستم اسکریپت ، فرستنده می تواند شرایط بسیار پیچیده ای را ایجاد کند که افراد برای ادعای ارزش خروجی باید آنها را ملاقات کنند. به عنوان مثال ، می توان خروجی ایجاد کرد که بدون هیچ گونه مجوز توسط هر کسی ادعا شود. همچنین ممکن است نیاز داشته باشید که یک ورودی توسط ده کلید مختلف امضا شود ، یا به جای یک کلید با رمز عبور قابل بازخرید باشد.
انواع معامله
بیت کوین در حال حاضر دو جفت مختلف ScripttsIg/ScriptPubkey ایجاد می کند. اینها در زیر شرح داده شده است.
طراحی انواع پیچیده تر معاملات و پیوند دادن آنها به توافق نامه های رمزنگاری شده امکان پذیر است. اینها به عنوان قرارداد شناخته می شوند.
با پرداختن
scriptpubkey: op_dup op_hash160 op_equalverify op_checksig scriptsig: یک آدرس بیت کوین فقط یک هش است ، بنابراین فرستنده نمی تواند یک کلید عمومی کامل در ScriptPubkey ارائه دهد. هنگام بازخرید سکه هایی که به آدرس بیت کوین ارسال شده اند ، گیرنده هم امضا و هم کلید عمومی را ارائه می دهد. این اسکریپت تأیید می کند که کلید عمومی ارائه شده در ScriptPubkey به هش هش می دهد ، و سپس امضای آن را علیه کلید عمومی بررسی می کند.
| پشته | فیلمنامه | شرح |
| خالی. | op_dup op_hash160 op_equalverify op_checksig | Scriptsig و ScriptPubkey ترکیب شده اند. |
| | op_dup op_hash160 op_equalverify op_checksig | ثابت ها به پشته اضافه می شوند. |
| | op_hash160 op_equalverify op_checksig | مورد پشته بالا کپی شده است. |
| | op_equalverify op_checksig | مورد پشته بالا هشدار داده شده است. |
| | op_equalverify op_checksig | ثابت اضافه شده است. |
| | op_checksig | برابری بین دو مورد پشته برتر بررسی می شود. |
| درست است، واقعی | خالی. | امضا برای دو مورد پشته برتر بررسی می شود. |
با پرداخت اسکریپت
ScriptPubkey: OP_HASH160 OP_EQUAL SCRIPTSIG: .. SIGNATURES. M-N-N معامله چندمدی: ScriptsIg: 0. اسکریپت: op_m. op_n op_checkmultisig
آدرس های P2SH با انگیزه جابجایی "مسئولیت تأمین شرایط برای بازپرداخت معامله از فرستنده وجوه به رستگاری ایجاد شده است. آنها به فرستنده اجازه می دهند تا با استفاده از 20 بایت ، یک معامله دلخواه را تأمین کند ، هر چقدر هم که پیچیده باشد. هش "1. آدرس های پرداخت به pubkey-hash به طور مشابه یک هش 20 بایت از کلید عمومی هستند.
Pay-to Script-Hash وسیله ای برای معاملات پیچیده ، بر خلاف پرداخت به پبی-هاش ، که تعریف خاصی برای ScriptPubkey و Scriptsig دارد ، فراهم می کند. مشخصات هیچ محدودیتی در فیلمنامه ندارد و از این رو مطلقاً می توان با استفاده از این آدرس ها ، هر قراردادی را تأمین کرد.
ScriptPubkey در معامله بودجه اسکریپت است که تضمین می کند اسکریپت ارائه شده در معامله بازخرید شده به اسکریپت مورد استفاده برای ایجاد آدرس.
در Scriptsig بالا ، "امضاها" به هر اسکریپتی اشاره دارد که برای برآورده کردن اسکریپت سریالی زیر کافی است.
| پشته | فیلمنامه | شرح |
| خالی. | 0 op_2 op_3 op_checkmultisig | فقط از Scriptsig استفاده می شود. |
| 0 op_2 op_3 | op_checkmultisig | ثابت ها به پشته اضافه می شوند. |
| درست است، واقعی | خالی | امضاهای معتبر به ترتیب کلیدهای موجود در فیلمنامه. |
نسل
نسل ها دارای یک ورودی واحد هستند و این ورودی به جای اسکریپتیگ یک پارامتر "Coinbase" دارد. داده های موجود در "Coinbase" می تواند هر چیزی باشد. استفاده نمی شودبیت کوین هدف فعلی فشرده و شماره "Extranonce" با دقت فعلی را در آنجا قرار می دهد ، که هر بار که قسمت Nonce در هدر بلوک سرریز می شود. خروجی ها می توانند هر چیزی باشند ، اما بیت کوین دقیقاً مانند معامله آدرس IP ایجاد می کند. خارج از کشور برای بزرگنمایی دامنه برای اثبات عملکرد کار کمک می کند. معدنچیان می توانند به راحتی Nonce (4Byte) ، Timestamp و Extranonce (2 تا 100Bytes) را اصلاح کنند.
قالب عمومی (داخل یک بلوک) از هر ورودی یک معامله - txin
| رشته | شرح | اندازه |
| معامله قبلی هش | دو برابر SHA256 از یک معامله (قبلی) استفاده شده | 32 بایت |
| شاخص TXOUT قبلی | فهرست عدد صحیح غیر منفی خروجی از معامله مورد استفاده | 4 بایت |
| طول txin-script | عدد صحیح غیر منفی vi = varint | 1 - 9 بایت |
| txin-script / scriptsig | فیلمنامه | -همه بایت |
| Sequence_no | normally 0xFFFFFFFF; irrelevant unless transaction's lock_time is> 0 | 4 بایت |
ورودی به اندازه کافی توصیف می کند که در کجا و چگونه می توان بیت کوین را بازخرید کرد. اگر این (تنها) ورودی اولین معامله یک بلوک باشد ، به آن ورودی معامله نسل گفته می شود و محتوای آن کاملاً نادیده گرفته می شود.(از نظر تاریخی هش معامله قبلی 0 و شاخص TXOUT قبل ی-1 است.)
قالب کلی (داخل یک بلوک) هر خروجی تراکنش - Txout
| رشته | شرح | اندازه |
| ارزش | عدد صحیح غیر منفی که تعداد ساتوشی ها (BTC/10^8) باید منتقل شود | 8 بایت |
| طول اسکریپت Txout | عدد صحیح غیر منفی | 1 - 9 بایت VI = VarInt |
| Txout-script / scriptPubKey | فیلمنامه | -همه بایت |
خروجی شرایطی را برای انتشار این مقدار بیت کوین بعداً تعیین می کند. مجموع مقادیر خروجی اولین تراکنش، ارزش بیت کوین های استخراج شده برای بلوک به اضافه کارمزد تراکنش های احتمالی سایر تراکنش های بلاک است.
همچنین ببینید
- فیلمنامه
- قوانین پروتکل - پیام های "tx".
- مستندات پروتکل - تأیید تراکنش
- معاملات خام
- قیاس سکه
- شکل پذیری تراکنش
- پخش تراکنش