Я пытаюсь заполнить несколько пробелов в своем понимании того, как произошла эта транзакция!
Все началось с этой статьи
Короче говоря, какой-то линчеватель/майнер смог собрать все BCH, находящиеся на адресах segwit (а именно те, для которых открытые ключи были раскрыты владельцами, тратящими BTC с тех же адресов.
Смотрите эту транзакцию, которая была создана, майнер Bitcoin Cash Block Explorer
Пошаговая разбивка
Майнер извлекает открытый ключ этого адреса 3P9dyU9ga3aJorHAUqKBFCX2NdyuHEVgx1 (это адрес P2SH P2WPKH, см. этот обозреватель блоков биткойнов )
Вопрос: что это за открытый ключ? Ты видишь какие-нибудь ключи? («3» — это адрес с мультиподписью и требует 3 адреса, поэтому должно быть 3 открытых ключа, верно?)
В статье не объяснялось, как и какую необработанную транзакцию он создал, используя только открытые ключи.
Это самая неприятная часть. В статье утверждается, что майнер создал узел segwit и майнил поверх него.
Как это вообще возможно? (У Bcash не активирован segwit. Однако, даже если он майнил, используя свой узел segwit, его узел не позволит ему создать действительную транзакцию, потому что segwit требует свидетеля или подписи с закрытым ключом открытого ключа с адресом 3P9dyU9ga3aJorHAUqKBFCX2NdyuHEVgx1.)
Однако в этой статье утверждается
Майнер только что создал scriptsig (в статье не объяснялось, что означает «применить определенный хэш»).
Теперь это легко, майнеру просто нужно назначить выход BCH (адрес, начинающийся с 1)
становится еще глупее. В статье говорится, что после совершения необработанной транзакции он добыл ее ..... без трансляции. Как это работает?
3.1 Если вы это не транслируете, то какой в этом смысл? Как эта транзакция пройдет на новый адрес/кошелек, созданный майнером (в данном случае 1C4TafndKYFoGkeoHfQAWkZzEYLum31txf)?
3.2 Если майнер майнит свой собственный блок, а затем не транслирует его, не станет ли он осиротевшим? и так, что здесь происходит?
Вопрос: что это за открытый ключ? ты видишь ключи? («3» — это адрес с мультиподписью и требует 3 адреса? Значит, должно быть 3 открытых ключа, верно?)
Нет. Адрес, начинающийся с a 3
, является адресом P2SH. Это не означает, что это адрес с мультиподписью или что для подписи транзакции требуется любое количество ключей. Скорее это просто означает, что есть какой-то сценарий (это может быть любой сценарий, не обязательно сценарий с несколькими подписями), который необходимо включить во входные данные, которые расходуют выходные данные P2SH. Этот сценарий будет диктовать другие элементы ввода.
Для вложенного вывода Segwit P2SH (P2SH-P2WPKH и P2SH-P2WSH) сценарий, на который ссылается адрес (известный как сценарий погашения), имеет форму OP_0 <20 byte hash>
или OP_0 <32 byte hash>
. Когда узел segwit видит этот сценарий в выходных данных или как сценарий выкупа, он знает, что ему следует просмотреть вновь определенные свидетели транзакции, чтобы получить остальные данные, необходимые для проверки транзакции.
Однако для узла без SegWit они пометят транзакцию как действительную (но не стандартную), потому что для узла без SegWit эти сценарии выкупа не указывают, что требуется подпись. Это делает эти выходные данные доступными для всех на не-сегвит-узлах.
Поскольку Bitcoin Cash не реализует segwit, все их узлы не являются узлами segwit. Таким образом, чтобы тратить средства из вложенных выходов SegWit P2SH, вам нужно только предоставить сценарий погашения. Однако сценарии выкупа защищены хешем; имея только вывод P2SH, вы не можете понять сценарий выкупа, если вы его уже не знаете. Скрипты выкупа раскрываются, когда тратится выход.
Что майнер сделал здесь, так это то, что они нашли как можно больше скриптов выкупа. Сценарии выкупа используемых выходов P2SH были сценариями выкупа, которые были обнаружены в сети Биткойн, потому что они использовались в качестве входных данных в транзакции. Таким образом, майнер взял все обнаруженные сценарии выкупа и проверил, какие из них имеют соответствующие результаты в сети Bitcoin Cash. Те, что были, затем могли быть потрачены майнером, поскольку майнер тогда знал сценарий выкупа.
становится еще тупее????????????????????? В статье говорится, что после совершения необработанной транзакции он добыл ее ..... без трансляции ?????? Какие
Транзакцию не нужно транслировать до того, как она будет добыта. Майнер может включать любые транзакции, которые он хочет, включая транзакции, которые не транслируются для публики. Как только блок будет добыт, транзакция будет транслироваться вместе с блоком.
Выходные данные SegWit выглядят так же, как выходные данные AnyCanSpend для устаревших узлов (чтобы сохранить его как софтфорк). Поскольку у Bitcoin Cash нет SegWit (и он категорически против), все майнеры видят в них выход AnyCanSpend и могут их выкупить.
Этого не может произойти в сети Биткойн, потому что другие майнеры отклонят этот блок.
Может, он вот этот парень: https://www.reddit.com/r/btc/comments/7g6s9l/an_update_on_bch_segwit_recoveries/ ?
[Удалена бессмысленная часть]
Нейт Элдридж
пользователь380208