Допустим, я развертываю контракт с простой функцией, которая принимает некоторое значение, и развертываю ее в разветвленной цепочке. Контракт окажется на непредсказуемом адресе U. Затем люди начнут отправлять в контракт несколько транзакций со значением ETH, одновременно вызывая функцию. Все в порядке.
Но все эти входящие транзакции воспроизводимы и, вероятно, фактически воспроизводятся в цепочке ETC (при условии, что на адресе отправителя есть баланс ETC, что может произойти в любое время в будущем, например, если какая-то третья сторона случайно отправит туда средства) . Проблема здесь в том, что в цепочке ETC нет контракта по адресу U (даже если я разверну тот же контракт в этой цепочке, он окажется на другом адресе), поэтому адрес U рассматривается как учетная запись, контролируемая извне, поэтому значение будет передано, и никакая функция не будет вызвана (похоже, поле данных в транзакции игнорируется для транзакций на счета, контролируемые извне). Таким образом, значение ETC ушло в пустоту и не подлежит восстановлению.
Это правда или я что-то не так понимаю? Кажется, это может происходить очень часто.
Я не говорю, что это может привести к очевидным путям потери ценности, но это может быть потенциальным вектором атаки или просто создать беспорядок.
Ответ - нет. Адрес контракта создается детерминировано, например. если транзакция развертывания контракта воспроизводится в другой цепочке, контракт будет иметь один и тот же адрес U в обеих цепочках.
Борцмейер
мази