==============================
Я только что прочитал статью Джимми песни "Как защитить от атак",
Ссылка: https://bitcointechtalk.com/how-to-protect-against-replay-attacks-7a00bd2fe52f.
Он объясняет возможные методы защиты переигровки в случае жесткого вилка не
осуществлять защиту воспроизведения на всех.
Джимми Сонг предложил следующие подходы:
- Replay-защищенный UTXO (RePro-UTXO):
Используйте coinbase полученного выхода (он же воспроизводить защищенный UTXO) в качестве одного из входов
переигровки защищенных транзакций. - Одновременное представление
Разместить две сделки одновременно, каждый для своего blockchain. - Использование Locktime
Помогает в случае, если один blockchain больше, что другой из (предпочтительно)
на leaset 6 блоков.
К сожалению, все вышеперечисленные подходы далеки от идеала.
Зачем? Вот почему ...
Проблемы, связанные с подходами защиты переигровки:
- Replay-защищенный UTXO (RePro-UTXO):
Конфиденциальность убийца! Все ваши собственные UTXO-ы становятся тесно связаны с одним REPRO-UTXO
или (небольшое) количество REPRO-UTXO-х годов. - Одновременное представление
Может не работать под сильным переигровки нападения или необходимо повторить ряд
раз (головная боль!). - Использование Locktime
Не помогает в случае жесткого раздвоенные blockchains расти в том же темпе.
В то время, RePro-UTXO может быть относительно легко реализованы для обмена,
она не может быть легко сделана личными кошельками, если рынок не возникает
который торгует RePro-UTXO-s по низкой цене.
Итак, я предлагаю эту BIP для конечной техники переигровки-защиты, которая может
быть относительно легко реализованы в Bitcoin Ядра и других проектах.
Новый опкод сценарий вводится "OP_BLOCKHASHEXIST" что делает
расходуемый сделка только если конкретный блок хэш существует
в blockchain.
Давайте предположим, что Bitcoin жестко разветвляется для blockchain1x и blockchain2x
и первые добытые блоки на обеих цепей block1x и block2x.
Затем, чтобы потреблять предварительно жесткий вилочный вывод P2PKH на blockchain1x, то scriptPubKey
из новой транзакции потребляющих будет:
scriptPubKey = <обычные вещи>
и blockchain2x, по-видимому:
scriptPubKey = <обычные вещи>
Байт-стоимость этого воспроизведения-защиты составляет 21 байт (1 байт кода операции и
20-байтовый хэш), и эта стоимость должна быть оплачены только один раз за жесткую вилку (для каждого
предварительно трудно вилка UTXO или группа предварительно жесткого вилки UTXO-х).
Такой подход не загрязняет пул памяти как вновь входящего transction
с несуществующим
Кроме того, этот подход не увеличивает шанс DoS атаки в качестве заголовка блока
хэш взять небольшое количество памяти (около 1 МБ в год: 24 * 6 * 365/1024).
Я считаю, что это BIP может быть относительно легко реализовать и, надеюсь, будет
быть принятым сообществом разработчиков.