Чем отличаются адреса bech32 от адресов P2SH по размеру транзакции?

Bech32 (начинается с bc1) и P2SH (начинается с 3) могут использоваться для транзакций SegWit. Я знаю, что bech32 должен создавать транзакции меньшего размера, но я хотел бы знать, насколько меньше (чем P2SH). Как соотносятся транзакции, поступающие с обычного адреса с одним ключом?

Ответы (2)

bech32 производит меньшие транзакции, чем транзакции P2SH segwit.

  • один дополнительный байт на выход для создания выходов P2SH, чем для создания utxos bech32 (P2SH использует OP_HASH160и OP_EQUALв дополнение к 20-байтовому хэшу в своем сценарии, тогда как bech32 просто использует фиксированный 00байт в дополнение к 20-байтовому хешу), и
  • 23 дополнительных байта на ввод для расходования из utxos P2SH, чем из utxos bech32 (P2SH должен создать сценарий, который был хеширован при тратах в sigscript, для кодирования которого требуется 23 байта - у bech32 вообще нет sigscript, не являющегося свидетелем).

По сути, для P2SH требуется хэш скрипта, для родного SegWit — нет, а все остальное почти то же самое. Собственный SegWit предоставляет сценарий при создании вывода, а P2SH предоставляет его, когда вывод израсходован.


Если вы хотите знать, сколько вы сэкономили (или можете сэкономить) в каждой транзакции, проводник Blockstream предоставляет удобную функцию, где вы можете увидеть сбережения. Например, для этой транзакции можно дополнительно сэкономить 16% на комиссиях.

Смотрите обсуждение здесь: reddit.com/r/Bitcoin/comments/80a4zl/…
bitcoincore.org/en/segwit_wallet_dev/… говорит: «По сравнению с версиями P2SH размер транзакции в нативных версиях в большинстве случаев меньше».
Вот пример : SegWit => 30% экономии. Нативный SegWit => дополнительная экономия 16%

Они оба просто кодировка. Результирующий tx может быть точно таким же. Однако в реальной жизни люди используют bech32 только для нативных транзакций SegWit, а p2sh используется в качестве оболочки для SegWit. tx на самом деле немного меньше при использовании p2sh.

Да неужели? P2SH на самом деле меньше? В чем тогда преимущество bech32? Я не совсем понимаю, что означает «нативный» в контексте «нативный сегвит». Кстати, у вас есть источники, где мы могли бы подробнее прочитать об этом/проверить ваш ответ?
Лучший источник всегда является фактическим источником. bech32 был предложен в bip173, который вы можете найти здесь: github.com/bitcoin/bips/blob/master/bip-0173.mediawiki . Там также есть раздел о том, чем bech32 лучше других кодировок. Для размера нет определенного источника без указания, что именно вы хотите сравнить. bech32 — кодировка, p2sh — тип транзакции. Для сравнения я предположил, что bech32 эквивалентен нативному segwit.
Этот ответ неверен по нескольким причинам: 1. Это не просто другая кодировка, выходы обернутого segwit и собственного segwit - это разные типы вывода. Когда средства отправляются на обернутый адрес segwit, они могут быть потрачены только на вводе обернутого segwit, и наоборот для собственного segwit. 2. Обернутые транзакции SegWit и нативные SegWit-транзакции не могут быть идентичными, даже если они могут иметь одинаковый эффект (с разной комиссией). 3. Обернутые транзакции SegWit используют больше блочного пространства, чем собственные SegWit-транзакции.