Вредоносный смарт-контракт и украденные токены из других контрактов?

Мне интересно, может ли взаимодействие с контрактом повлиять на мой ETH или токены в других контрактах.

Я спрашиваю, потому что я вижу много аирдропов EOS на Эфириуме, которые требуют от нас отправки транзакции 0 ETH, некоторые с данными, на адрес их контракта, чтобы получить их токены.

И поскольку я никогда не слышал о таком мошенничестве, я участвовал в аирдропе, который требовал от меня отправки 0 ETH, но не данных для контракта. Я получил их токены сразу после отправки, но я не могу не задаться вопросом, не может ли он позже испортить любой из моих других токенов.

Контракт был следующим: https://etherscan.io/address/0xb562ec0261a9cb550a5fbcb46030088f1d6a53cf#code

Ответы (1)

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

Тем не менее, есть различные способы обмануть кого-либо, чтобы они думали, что взаимодействуют с Контрактом А, когда на самом деле они взаимодействуют с Контрактом Б. Это особенно верно, если вы используете децентрализованное приложение, поскольку децентрализованное приложение отвечает за форматирование транзакций. которые он отправляет в контракт, и хотя такие инструменты, как Metamask, будут просить пользователя просмотреть их, трудно надежно проверить отправляемые вами транзакции.

Кроме того, некоторые контракты используют подписанные данные, а не полагаются исключительно на отправителя транзакции, и эти подписанные данные могут использоваться с другим контрактом, отличным от ожидаемого.

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

Так, например, чтобы обмануть кого-то даже при отправке 0 ETH, сайт раздачи может указать адрес контракта токена, которым я владею, и сказать мне: «Эй, отправьте 0 ETH на этот контракт с данными XXXXX ...» и неосознанно я будет вызывать функцию этого контракта с аргументами, которые будут отправлять мои токены этого контракта на адрес хакера.
Кроме того, в последнем абзаце вы упомянули, что может быть хорошей идеей хранить более ценные адреса на другом компьютере или аппаратном кошельке. Но если адрес из аппаратного кошелька взаимодействует с контрактом, другие адреса в том же аппаратном кошельке не будут затронуты, даже если оба закрытых ключа были получены из одного и того же начального числа, верно?
Верно, использование другого адреса в том же аппаратном кошельке закроет некоторые углы атаки по сравнению с использованием того же адреса в том же аппаратном кошельке. То, о чем мы беспокоимся, связано с тем, что сайт каким-то образом обманывает вас, заставляя делать одно, когда вы думаете, что делаете другое, и большее разделение усложняет им задачу.