Что такое адрес «Script Hash» и как он работает?

Я узнал этот адрес, играя с блокчейном

https://blockchain.info/address/3NukJ6fYZJ5Kk8bPjycAnruZkE5Q7UW7i8

Я узнал, что это что-то под названием «scripthash». Как это работает? Чем он отличается от обычного адреса?

Я узнал об этом - https://en.bitcoin.it/wiki/BIP_0016 - но я до сих пор этого не понимаю и не понимаю сути.

Преимущество заключается в том, что отправитель может финансировать любую произвольную транзакцию, какой бы сложной она ни была, используя фиксированную длину 20-байтового хэша, достаточно короткого для сканирования с помощью QR-кода или легко копируемого и вставляемого.

Чем это отличается от того , что возможно сегодня - сканирование только адреса получателя?

редактировать: И добавив еще один вопрос - почему именно эта транзакция с указанным адресом в качестве ввода

https://blockchain.info/tx-index/3618498

включены в 94 различных блоков ? Как это вообще работает?

Ответы (2)

P2SH, как определено в BIP 16 , утверждает, что

Цель pay-to-script-hash — передать ответственность за предоставление условий для выкупа транзакции от отправителя средств к выкупателю.

Преимущество заключается в том, что отправитель может финансировать любую произвольную транзакцию, какой бы сложной она ни была, используя фиксированную длину 20-байтового хэша, достаточно короткого для сканирования с помощью QR-кода или легко копируемого и вставляемого.

Следовательно, это позволяет любой клиентской реализации финансировать транзакцию с помощью произвольного сценария, при этом клиенту не обязательно понимать его. Видите ли, у транзакций есть довольно сложные возможности заявить свои условия требования, что может поставить различные реализации клиентов перед дилеммой: каждый раз, когда появляется новый тип сценария, они должны будут реализовать его, чтобы клиент мог отправлять транзакции, которые использовать их.

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

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

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

Причина, по которой транзакция 4005d6be включена в такое количество блоков, заключается в том, что все эти блоки потеряны, поэтому включенные в них майнеры поддерживали версию P2SH, но так и не получили большинства. Тот факт, что эта транзакция до сих пор не подтверждена, возможно, связан с тем, что это не настоящий сценарий P2SH.

Ой! Удивительно. Еще вопрос: Насколько сегодня поддерживается P2SH? Что вообще я могу написать в закодированном скрипте? Я узнал, что майнеры не примут любой произвольный скрипт, верно ли то же самое в отношении закодированных скриптов?
Это хороший вопрос. Хотя вы можете указать хэш произвольного скрипта в качестве условия запроса, мы должны убедиться, что скрипт действителен, иначе вы больше никогда не сможете потратить эти монеты.
@cdecker, не могли бы вы уточнить второй ваш абзац, начинающийся со слов «P2SH имеет то преимущество, что…»? Клиент отправляет биткойны или искупитель? Можете ли вы привести пример того, какой тип сценария им не нужно будет создавать, а затем также привести пример сценария, который проверяет первый сценарий?
Допустим, у отправителя действительно старый кошелек, который не поддерживает адреса с мультиподписью. Используя P2SH, получатель создает хэш сценария, который выполняет мультиподпись, использует его для создания адреса P2SH и отправляет его отправителю. Отправитель теперь имеет адрес, который является действительным адресом P2SH, и может отправлять на него средства, даже если он ничего не знает о мультиподписных адресах. В качестве примера я хотел бы указать вам на примеры в BIP 16 .
Вы сказали, что «клиент не обязательно должен знать, как построить такой скрипт». Если я использую бета-кошелек, использующий P2SH-адреса, и они делают ошибку, когда скрипт неправильно рассчитывается и не может потратить средства... или это более надежно, чем это, и я излишне параноик?
Ну, это сводится к тому, насколько вы доверяете кошельку, который вы используете как получатель :-) Это похоже на ваш кошелек P2PKH с ошибкой в ​​вычислении хэша, или он использует неправильный публичный ключ, или он неправильно получает публичный ключ из приватного ключа. . При этом кошельки тщательно тестируются перед выпуском, поэтому я бы не стал слишком беспокоиться, если вы используете хорошо протестированную реализацию кошелька.
@cdecker привет, я тоже программист, я говорил с тобой о создании криптовалюты. Какой у вас контакт? или пришлите мне по электронной почте [wsxdrfv (at) hanmail (dot) net] Спасибо.

Я помню некоторые из этих транзакций и исследовал их.

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

OP_HASH160 [20 byte hash] OP_EQUAL

Это скрипт P2SH PubKey. До софт-форка это означало, что любой, кто знал значение хэша, [20 byte hash]мог потратить монеты.

Небольшая заметка о софт-форках с принудительным большинством хешрейта. Обычно они невидимы для клиентов, не подозревающих о них. Причина в том, что эти софт-форки обычно только запрещают определенные вещи, а не позволяют произойти чему-то новому и неожиданному.

P2SH является одним из этих типов, потому что он добавил дополнительные правила к приведенному выше фрагменту биткойн-скрипта. Правило таково: если значение хешируется до [20 byte hash], то считайте, что это строка биткойн-скрипта, и проверьте ее . Все, что это делает, — это предотвращает некоторые попытки траты войти в блокчейн — они могут не пройти проверку P2SH.

С точки зрения старой версии, если что-то, что вы разрешаете, никогда больше не повторится, это не нарушение правил.

Итак, почему этот блок был «заминирован» 94 раза? Ну, отчасти потому, что Blockchain.info использует запутанную терминологию. Они получили 94 блока, включая эту транзакцию. Жаль только, что все они остались сиротами!

Это неудачный случай, когда софт-форк с большинством хешрейта действительно вызвал проблемы для кого-то. Что кто-то был в меньшинстве, использующем v0.6, и продолжал использовать более старую версию программного обеспечения (или они забыли обновить). Их программное обеспечение обработало транзакцию с действительным прообразом для [20-байтового хэша] и приняло его в мемпул. Затем он попытался добыть его.

Большинство, однако, только что приняли правило, согласно которому такие транзакции подвергаются дополнительной проверке, и посчитали эту транзакцию недействительной, поэтому они отказались строить поверх этих блоков.

Что касается адресов P2SH, в наши дни они очень полезны. Вы можете попросить кого-нибудь профинансировать сложный скрипт (например, мультиподпись или канал Lightning), используя адрес фиксированного размера!

Разве segwit не является софт-форком с принудительным большинством хэшрейтов? Я не могу понять, как это только запрещает и не позволяет что-то новое.
Прямо сейчас вы можете заплатить, OP_0 [32 bytes]и майнеры поместят ваши расходы в блок без вашей подписи. (однако мы бы не софтфорчили этот скрипт, если бы кто-то его использовал) С активацией segwit выходные данные с этим скриптом больше не принимаются без проверки — применяются новые правила (теперь необходимо предоставить ДЕЙСТВИТЕЛЬНЫЙ свидетель), так что только не- нарушения правил включаются в блоки. Со старыми узлами ничего нового не происходит. Просто отсутствие чего-то, что его не заботило.
То же, что и P2SH — старые узлы, которые принимали расходы OP_HASH160 [HASH] OP_EQUALдо активации, принимали любую транзакцию без подписи. Впоследствии они не поймут, что всех подписей, которые не прошли оценку P2SH, больше нет.
Будет эпично, когда все транзакции SegWit будут потрачены дважды, т. е. украдены майнерами в The Real Bitcoin (унаследованном блокчейне Satoshi).
Пожалуйста, соблюдайте нашу политику «Будьте любезны», это неподходящий способ обращения к людям.
Я хочу узнать больше о segwit. И софт-форк, отличия хард-форка, смысл. В конце концов, как их применять с точки зрения программиста.
Segwit в чем-то похож на P2SH, если сравнивать их. Посмотрите на справочный код. Ваши другие вопросы, вероятно, требуют отдельного вопроса :)