Как предотвратить повторную атаку между двумя конкурирующими цепями?

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

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

Если какие-либо пользователи по-прежнему заинтересованы в следовании цепочке без разветвления, они все равно должны обновляться, но работать с --oppose-dao-forkвключенным флагом, хотя им следует остерегаться атак воспроизведения транзакций и принимать соответствующие меры для защиты от них; пользователям, не заинтересованным в цепочке без разветвления, не нужно беспокоиться о проблемах с повторением транзакции.

Теперь я понимаю, что транзакция будет действительна в обеих цепочках. Как предотвратить трансляцию транзакции в сети pro-fork. И как сделать так, чтобы транзакция не была действительной в цепочке pro-fork?

Ответы (3)

Специальное руководство по защите от повторных атак со стороны хардфорка TheDAO , с https://blog.ethereum.org/2016/07/26/onward_from_the_hard_fork .

Пользователям, которые заинтересованы в совершении каких-либо действий со своими ETC, включая создание и участие в приложениях, преобразование в другой актив и т. д., рекомендуется использовать контракт сплиттера по адресу 0xaa1a6e3e6ef20068f7f8d8c835d2d22fd5116444, чтобы переместить свои ETC в отдельную вновь созданную учетную запись, чтобы избежать повторных атак. ; мы также призываем сообщество ETC рассмотреть возможность принятия вторичного хард-форка для изменения форматов транзакций, чтобы сделать дальнейшие повторные атаки невозможными. До тех пор, пока этого не произойдет, после «разделения» ETH и ETC ими следует управлять через отдельные кошельки.

Чтобы использовать сплиттер-контракт внутри кошелька Ethereum, нажмите «Контракты» -> «Смотреть контракт», скопируйте адрес и ABI с указанной выше страницы etherscan и нажмите «ОК»; затем щелкните контракт на вкладке «Контракты», выберите «Записать в контракт» и выберите функцию «Разделить». Он запросит два адреса; для первого укажите адрес, по которому вы хотите отправить ETH (не стесняйтесь указать тот же адрес, с которого вы отправляете), для второго укажите адрес, по которому вы хотите отправить ETC. Обязательно попробуйте это с очень небольшим количеством эфира, чтобы убедиться, что это работает, прежде чем увеличивать количество. Вы можете использовать Ethereum Classic Explorer здесь , чтобы убедиться, что балансы ETC были переведены. Более подробное руководство, предоставленное сообществом, можно найти здесь.

Общее решениезащита от атак EIP 155 Simple replay .

Начиная с Geth 1.5.3 и Parity 1.4.4, они реализуют EIP 155, чтобы ваши транзакции ETH были защищены от повторной атаки на ETC. Создайте еще одну учетную запись и переместите все свои ETH на новый адрес. Не забудьте сделать резервную копию этой новой учетной записи (и не удаляйте старую учетную запись, поскольку в ней есть ваш ETC).

Если вы используете другой кошелек, вам следует проверить, внедрили ли они EIP 155.

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

Теоретически возможно, что вы станете жертвой повторной атаки, пока пытаетесь это сделать, и в конечном итоге вы переместите ETH на один и тот же адрес в обеих цепочках. Но поскольку вы контролируете этот адрес, вы можете просто попробовать еще раз, пока он не сработает.

переиграть сталкеров. в принципе, это может продолжаться до тех пор, пока вы не израсходуете все свои средства на комиссионные сборы.
Теоретически мог. Но вам повезет только один раз, а сталкеру везет каждый раз.
Не только теоретически: практически каждая транзакция воспроизводится в обеих цепочках. Я подозреваю, что это связано с несколькими клиентами, которые подключаются к пирам в обеих цепочках и ретранслируют транзакции. Они не вредоносные, но эффект тот же.
@Ник, здесь логика (и связанная с различными разделенными контрактами) заключается в том, что если я могу добраться до состояния, когда одна цепочка имеет эфир в данной учетной записи, а другая цепочка - нет, то пока транзакции могут быть воспроизведены, это не будет иметь значения ? - в цепочке, где на счете нет баланса, повторная транзакция не будет выполнена. Если да… Существуют ли на данный момент какие-либо другие риски сейчас или в будущем, или можно на 100% безопасно действовать независимо в каждой цепочке?
@ThomasClowes Более или менее. Транзакция, которая пытается использовать больше баланса, чем доступно, не будет выполняться вообще.