Короткий ответ: обычный Ethereum-аккаунт, или EOA, управляется приватным ключом и может начать транзакцию. Адрес смарт-контракта связан с размещённым кодом и выполняет его, когда получает вызов. Оба выглядят как 0x-адреса и могут хранить активы, но контракт не имеет seed-фразы и не подписывает перевод как обычный кошелёк.
Кто управляет обычным аккаунтом
EOA создаётся из ключевой пары. Владелец подписывает транзакции, выбирает nonce и оплачивает gas нативной монетой. Аппаратный или программный кошелёк лишь помогает хранить ключ и формировать подпись. Сеть проверяет её и понимает, что действие разрешил владелец адреса.
Один и тот же формат адреса используется для получения ETH и токенов. Баланс токена при этом хранится в контракте токена, а не «внутри» самого кошелька. Перенос приложения на другое устройство не меняет адрес, если используется тот же ключ.
Seed-фраза может восстанавливать набор обычных аккаунтов, но не является свойством адреса контракта. Никому не передавайте её для «активации» перевода или исправления отображения.
Как появляется адрес контракта
Контракт создаётся транзакцией развёртывания. После включения кода в состояние сети у него появляется адрес. Дальнейшие вызовы исполняют функции по заложенным правилам. Контракт может переводить токены и ETH, создавать другие контракты и записывать события, если код и состояние это позволяют.
У контракта нет человека, который подпишет исходящую обычную транзакцию его приватным ключом. Средства двигаются только через доступный путь в коде: функцию вывода, правила мультиподписи, выполнение заявки или другой предусмотренный механизм.
Внешняя транзакция пользователя способна породить много внутренних вызовов. Как обозреватель их разделяет, объясняет статья про внутренние транзакции и события токенов.
Почему одинаковый вид адреса вводит в заблуждение
По строке 0x нельзя надёжно определить тип без запроса к сети. Обозреватель проверяет наличие bytecode по адресу в выбранном состоянии. Если код присутствует, это контракт. Если его нет, адрес обычно отображается как обычный аккаунт, хотя существуют технические крайние случаи, связанные с ещё не развёрнутыми адресами.
В другой EVM-сети тот же адрес может иметь совершенно иной тип и историю. Контракт в Ethereum не обязан существовать в Base или Arbitrum. Сначала выбирайте chain ID, затем проверяйте код и транзакции.
Название, иконка и верифицированный исходный код в обозревателе помогают исследованию, но не заменяют сверку адреса по доверенному каналу. Похожий контракт может копировать интерфейс настоящего.
Можно ли отправлять активы на контракт
Технически ETH и ERC-20 могут оказаться на адресе контракта, но возможность вернуть их определяется кодом. Контракт может отклонять прямой ETH-перевод, принимать его только через определённую функцию или не иметь пути вывода случайно присланного токена.
Перед депозитом используйте функцию официального интерфейса, а не копируйте адрес контракта в поле обычного перевода. Депозитный метод способен записывать долю пользователя, тогда как прямой transfer лишь меняет токен-баланс адреса без внутреннего учёта протокола.
Если актив уже отправлен, сохраните TxID и обратитесь к разработчикам контракта. Никто не сможет извлечь средства без предусмотренного кодом права. Плата «специалисту по возврату» не создаст приватный ключ контракта.
Как проверить получателя до перевода
- Уточните сеть и назначение операции.
- Откройте адрес в обозревателе нужной сети и проверьте наличие кода.
- Если это контракт, сопоставьте его с документацией самого приложения.
- Проверьте, предполагается обычный transfer или вызов конкретной функции.
- Для нового маршрута выполните небольшую тестовую операцию.
Не путайте адрес аккаунта получателя с контрактом самого токена. Эту практическую разницу также разбирает материал об адресе, сети и контракте токена.
Контрактный кошелёк – отдельный случай
Smart wallet хранит активы по адресу контракта, но принимает решения по правилам кода: одной или нескольким подписям, лимитам, модулям восстановления. Пользователь управляет им через ключи или другие авторизаторы, а не владеет приватным ключом самого контрактного адреса.
Такой кошелёк может оплачивать gas через отдельного спонсора, объединять действия и ограничивать ключи. Однако совместимость сервисов бывает разной. Биржа или приложение может ожидать обычную подпись адреса и не распознать контрактный аккаунт.
Как отличить ошибку интерфейса от состояния сети
Если перевод подтверждён, но сервис не видит поступление, проверьте token transfers, внутренние вызовы и конечный баланс. Индексатор может отставать. Если транзакция завершилась Failed, прочитайте причину отката и материал о том, почему комиссия всё равно списалась.
При невозможности оценить вызов проверьте, принимает ли контракт такой метод и актив. Увеличение gas limit не добавляет отсутствующую функцию. Порядок диагностики есть в инструкции, почему кошелёк не может оценить gas.
Что сообщать поддержке
Передайте сеть, публичные адреса отправителя и получателя, TxID, токен, сумму и ожидаемый метод. Seed-фраза, приватный ключ, пароль и 2FA не нужны для определения типа адреса. Запрос секретов не является технической поддержкой.
Итог
Обычный аккаунт начинает действия подписью ключа, а контракт реагирует согласно коду. Внешне их адреса похожи, поэтому тип проверяют в конкретной сети. Не отправляйте активы контракту как обычному получателю, пока не убедитесь, что его логика умеет корректно принять и учесть перевод.



