Так это исправить повторяющиеся транзакции coinbase потенциально вызывая две coinbase сделки становятся недействительными?
Это делает дублирование ~ невозможно (за исключением получения хэш столкновения). Там не было ранее поведения, когда два coinbase сделок стали недействительными, а один может заменить another- хотя это препятствует BIP30.
Почему не клиент просто идентифицировать сделки смесью хэш-транзакций и родительского блока
Поскольку существуют транзакции снаружи и независимо друг от друга блоков. Даже если вы были готовы создать программное обеспечение, которое только работал с подтвержденными сделками (например, не полный узла), вы бы до сих пор сумасшедший проблемы с идентификаторами транзакций изменяющейся, когда цепь reorginizes, которая сам по себе может создать некоторые удивительные подвиги против торгового программного обеспечения.
(Таким образом, удаляя ошибку без необходимости хака)
В том числе и высоту, как часть хэша для coinbase сделки является то, Bitcoin должно быть всегда. Несмотря на то, что должны были перечислены как «вход», а не поставив его в coinbase, но, к сожалению, бывший не может быть сделано согласованно.
и почему бы не получить большинство шахтеров отклонять блоки с повторяющейся coinbases предотвратить blockchain вилку?
(По состоянию на BIP30) Мы отвергаем дублирование, которое будет перезаписывать существующую неизрасходованную сделку, потому что сам по себе создает некоторые действительно неприятные и критические атаки, но мы не можем явно не допустить дублирования уже провели сделки в общем случае, не делая обрезку невозможно , (Если вы должны помнить каждый TxN идентификатор, который когда-либо был для того, чтобы отказать в шахту дублирует вы не можете забыть затраченные сделки).
В том числе рост в coinbase неявно предотвращает дублирование, делая его infesable, но не требует неограниченного хранения как явного предупреждения. Она также позволяет узлы программного обеспечения для более DOS атак устойчивы, поскольку это позволило бы дополнительная фильтрация перед подключением. Это описано в некоторых из ссылок Gavin при условии.
BIP30 было экстренное исправление для серьезной уязвимости, развертывается, потому что реальное исправление не может быть развернуты быстро. Это изменение фиксирует базовый дизайн протокола изъян и фиксирует некоторые из менее critiial случаев угловых другой фикс не мог почты (например, перспективы иметь дело с повторяющимися идентификаторами транзакций для различных операций).