نحوه محاسبه اندازه معامله قبل از ارسال (Legacy Non Segwit - P2PKH/P2SH)

ساخت وبلاگ

من می دانم که من هزینه معامله را به ازای هر کیلوبایت پرداخت می کنم ، بنابراین چگونه می توانم قبل از ارسال آن از طریق API RPC ، محاسبه کنم که معامله چقدر بزرگ خواهد بود. من سایتی را با استفاده از بیت کوین اجرا می کنم ، و نمی توانم اجازه دهم تعادل کاربر منفی شود ، بنابراین باید بدانم که آیا آنها تعادل کافی برای تأمین هزینه دارند.

3 پاسخ 3

با فرض اینکه تمام ورودی هایی که خرج می کنید از معاملات منظم "پرداخت به آدرس دهی" است ، هر ورودی 180 بایت (به علاوه یا منهای 1) بایت را به معامله کمک می کند. هر خروجی 34 بایت به معامله اضافه می کند. و یک 10 بایت اضافی ثابت وجود دارد که همیشه وجود دارد.

"به علاوه یا منهای 1" از این واقعیت ناشی می شود که هر ورودی به یک امضا نیاز دارد تا ادعا شود. امضای شامل دو مقدار 32 بایت است ، اما اگر هر یک از مقادیر دارای بایت اول 0x80 یا بیشتر باشد ، دارای یک بایت 0x00 است که به آن آماده شده است. بنابراین من فرض می کنم یکی از این دو بالا و دیگری کم است. به این ترتیب من حداکثر با یک بایت در هر ورودی خاموش هستم.

بنابراین اگر معامله شما در ورودی ها و خروجی های خارج از کشور باشد ، اندازه معامله ، در بایت خواهد بود:

به عنوان مثال ، این معامله دارای 40 ورودی و 16 خروجی است. این به ما اندازه معامله می دهد

یعنی 7754 +- 40 بایت. اندازه واقعی 7761 بایت است.

اگر ورودی ها از معاملات "پرداخت به pubkey" باشد ، ورودی ها از معاملات "پرداخت به آدرس دهی" کوچکتر هستند. و این بسته به نحوه اجرای آن ، برای ورودی های "پرداخت به اسکریپت هش" نیز متفاوت خواهد بود.

ویرایش: این معامله با بیت کوین های دزدیده شده در Heist Linode انجام شده است و اندازه معامله 1337 را نشان می دهد ، احتمالاً استفاده عمدی از Leetspeak در blockchain.

edit2: اکنون که کلیدهای عمومی فشرده امری عادی هستند ، هر ورودی 32 بایت کوتاه تر است و بنابراین اندازه معامله اکنون است:

در اینجا برخی از محاسبات بر اساس مستندات پروتکل ارائه شده است.

معامله بیت کوین از موارد زیر تشکیل شده است:

  • نسخه (4 بایت)
  • تعداد txin (1~9b)
  • برای هر txin:
    • Outpoint (36b)
    • طول فیلمنامه (1~9b)
    • scriptsig (؟)
    • دنباله (4b)
    • مقدار (8b)
    • طول فیلمنامه (1~9b)*
    • اسکریپت (؟)*

    با فرض ایجاد یک معامله استاندارد P2SH/P2PKH ، طول اسکریپت مشخص شده در ستاره به 1Byte محدود می شود زیرا طول اسکریپت به عنوان یک عدد صحیح متغیر رمزگذاری می شود. در حالی که اندازه اسکریپت مشخص شده در ستاره ها به 24bytes محدود می شود زیرا فقط حاوی هش اسکریپت است.

    بنابراین ، به طور خلاصه ، می توانیم فرض کنیم که اگر ما به یک آدرس P2SH/P2PKH پرداخت می کنیم ، حداکثر محدودیت هر TXOUT به 34 بایت است ، زیرا در هر اسکریپت خروجی 4 نسخه وجود دارد. یک شکست عالی را می توان در اینجا یافت.

    با فرض اینکه ما برای TXIN ما از نقاط P2PKH صرف می کنیم. Scriptsig ما (متشکل از یک امضاء معامله شده 72Byte Der + 33Byte Public Public) به اندازه 146bytes خواهد بود و طول اسکریپت ما فقط 1Byte را مصرف می کند زیرا اندازه اسکریپتگ کمتر از 0xFD است.

    بنابراین ، یک معامله استاندارد P2PKH/P2SH که یک UTXO قابل بازخرید با یک اسکریپتگ اساسی است که فقط به یک خروجی پرداخت می کند ، 189Bytes است. در غیر این صورت ، ما همچنین می توانیم این موضوع را بیشتر تعمیم دهیم:

    در تعداد txins

    تعداد TXOUT ها را نشان می دهد

    اندازه معاملات P2SH/P2PKH = در * 146 + OUT * 33 + 10

    محاسبه اندازه معاملات P2SH/P2PKH که با ورودی های پیچیده تأمین می شود (یعنی UTXOS قابل استفاده با امضاهای M-O-N ، قراردادهای تایم با هش) ذاتاً دشوار است و به پیچیدگی نسخه بازخرید استفاده شده برای تولید اسکریپت از اسکریپت بستگی داردمعامله قبلی P2SH.

    درک این نکته مهم است که هزینه معامله ای که برای پرداخت آن باید پرداخت کنید ، براساس نحوه دریافت وجوه مورد استفاده برای پرداخت هزینه است. پرداخت خروجی (با فرض اینکه فقط به یک مکان باشد) همیشه به همان اندازه خواهد بود. بنابراین قسمت "خارج" همیشه دارای دو اسکریپت استاندارد "پرداخت برای پرداختن به آدرس" خواهد بود. اندازه بخش "در" بستگی به تعداد خروجی هایی دارد که باید ادعا کنید ، این بستگی به نحوه دریافت بودجه دارد.

    بنابراین من پیشنهاد نمی کنم هزینه معامله را به شخص برداشت کند ، زیرا پس از آن شما بر اساس پارامترهایی که کاربر هیچ کنترلی بر آن ندارد ، کاربر را صورتحساب می دهید. هزینه معاملات به مواردی بستگی دارد مانند تعداد خروجی های معامله برای جمع آوری سکه های مورد نیاز. این کاملاً به نحوه ساخت وجوه شما بستگی دارد.

    تصور کنید که اگر به یک فروشگاه آب نبات می روید و به شما گفته می شود که یک نوار آب نبات 35 سنت است ، اما بعد از آنکه به شما زنگ زدند ، با هزینه 15 درصد پرداخت کردند. وقتی از آنها پرسیدید که برای این چیست ، آنها توضیح دادند که مشتری قبلی همه آنها را در سکه ها پرداخت کرده است ، و برای اینکه تغییر خود را به شما بدهد ، باید تمام آن سکه ها را حساب کنند ، و این زمان بیشتری طول می کشد.

    من فکر می کنم شما دلسرد می شوید زیرا این هزینه مربوط به نحوه ساخت وجوه آنها است و هیچ ارتباطی با معامله شما ندارد. شما انتظار دارید که آنها یا این هزینه ها را بخورند یا آنها را به قیمت خود بسازند. شما انتظار ندارید که آنها دقیقاً بدانند که چقدر هزینه فروش یک نوار آب نبات را بر اساس پیکربندی مشاغل داخلی آنها و شما را شخصاً بر اساس آن شارژ می کند.

    یا هزینه ای را برای هر عقب نشینی شارژ کنید (در حال حاضر . 01 BTC متداول است) یا هزینه های معاملات را خودتان پوشش دهید. و از استراتژی های معقول برای کاهش هزینه های معامله استفاده کنید. اما ، به نظر من ، شما واقعاً نمی خواهید این نوع هزینه را به مشتری منتقل کنید.

استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید

برچسب : نویسنده : توران میرهادی بازدید : <-PostHit-> تاريخ : سه شنبه 26 ارديبهشت 1402 ساعت: 16:47