Какие скрипты в настоящее время считаются стандартными и, следовательно, действительно распространяются?

Все, что я узнал о , это то, что, хотя теоретически он достаточно универсален (например, разрешает транзакции с мультиподписью), большинство сценариев просто не распространяется клиентскими узлами по умолчанию, т.е., хотя вы можете легко переводить средства в сценарий, вы можете в конечном итоге получить трудное время когда-либо тратить эти транзакции. Итак, что делает скрипт стандартным/нестандартным, есть ли список скриптов, поддерживаемых в настоящее время сетью?

Ответы (2)

Я знаю четыре стандартных сценария. Как сказал Лука, исходный код эталонного клиента — это определение протокола, поэтому вам нужно прочитать код, чтобы получить окончательный ответ. Как заметил Питер, стандартный сценарий — это тот, который ретранслируется эталонным клиентом. Нестандартный сценарий не будет отклонен, если он находится в блоке, если это допустимый сценарий.

Те, что я знаю, это:

  1. Pay-to-PubKey-Hash: это стандартный платеж на биткойн-адрес. Адрес находится на выходе, а подпись и публичный ключ — на входе.
  2. Pay-to-Pubkey: это платеж на pubkey. Открытый ключ находится на выходе, а подпись — на входе.
  3. Pay-to-ScriptHash: используется для некоторых более сложных платежных транзакций. Хэш скрипта находится на выходе, а подпись и сериализованный скрипт — на входе. При первом проходе хэш сценария сверяется с сериализованным сценарием. Если он проверяет, то сериализованный сценарий расширяется, и второй проход выполняется с использованием этого сценария.
  4. Pay-to-MultiSig: для подписания скрипта требуется несколько подписей. Выходные данные содержат открытые ключи, а входные — подписи. Все подписи должны быть проверены одним из открытых ключей, но открытых ключей может быть больше, чем подписей. Текущее ограничение для M из N сценариев составляет N=3.
Вы можете добавить, что для мультиподписных транзакций ограничение составляет M-из-N, где N не более 3. Кроме того, для P2SH существует требование, чтобы встроенный скрипт также был стандартным. Кроме того, этот список верен для 0.8.x.
Также обратите внимание, что стандартизация влияет только на то, какие транзакции ретранслируются. Нестандартные скрипты, которые действительны, могут быть помещены в блоки без проблем, если майнер захочет.
Таким образом, в настоящее время P2SH означает, что транзакция, тратящая его, будет передана только в том случае, если этот сценарий снова будет одним из этих четырех?
@TobiasKienzler Это мое понимание.
Что касается M из N - единственный предел для N как таковой составляет 15, но выше определенного M + N размер вашей транзакции будет слишком большим для майнинга. Нам удалось протолкнуть 3 из 3 и 2 из 4 через пулы по умолчанию при тестировании Orisi.org. И вы можете протолкнуть 8 из 15 через пул Eligius — у них всего 5% мощности хеширования, поэтому вам придется ждать 4-10 часов, пока пройдет tx. (также см. bitcoin.stackexchange.com/questions/23893/… )
Кроме того, один из основных разработчиков сделал запрос на вытягивание, чтобы смягчить правила для скриптов. Через несколько месяцев будет разрешено все (см. bitcoin.stackexchange.com/questions/28181/… ). А еще до этого времени - Элигиус примет практически все :)

Стандартный список операций для скриптов находится в bitcoindисходном коде, который вы можете найти здесь: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L90 .

Чтобы понять, какие из них на самом деле реализованы и используются, вам нужно прочитать исходный код.

Так что нет, для этого нет стандарта. Стандартом является фактическая программа bitcoind.

То есть скрипт всегда считается стандартным, если он использует только эти опкоды?
Нет, это всего лишь список существующих опкодов . Не все из них даже включены. Но это не имеет ничего общего со стандартностью, которая делается в другом месте кода.
Вот почему я сказал: «Чтобы понять, какие из них на самом деле реализованы и используются, вам нужно прочитать исходный код».
Скрипт, являющийся «стандартным», является здесь техническим термином. Стандартные сценарии — это те, которые ретранслирует эталонный клиент. Это не зависит от того, действительны они или нет.