Откуда взялся этот Эфир?

Давайте посмотрим на этот адрес на Etherscan: https://etherscan.io/address/0xfbe0aFcd7658BA86be41922059dD879C192D4c73 Первая транзакция — это создание смарт-контракта, стоимость которого составляет около 15 ETH. Не могу понять, где такой адрес имеет этот баланс.

Ответы (2)

На самом деле создание смарт-контракта не стоило 15 ETH, но 15 ETH были переданы смарт-контракту в качестве стоимости. Таким образом, смарт-контракт при создании содержал 15 ETH.

Но за собственно вопрос он был вознагражден от майнинга. Вы можете увидеть его по адресу https://etherscan.io/address/0xfbe0afcd7658ba86be41922059dd879c192d4c73#mine .

Чтобы добавить к этому, пользователь мог отправить дополнительные 15 ETH, потому что функция конструктора для контракта имела модификатор payable.

В Ethereum есть две учетные записи: одна — учетная запись кошелька, используемая пользователем для отправки и получения эфира и создания смарт-контракта, другая — учетная запись контракта.

Для каждой оплачиваемой транзакции эфир сохраняется на счете контракта. "оплачиваемый" является ключевым словом в солидности. Функции, в которых упоминается/определяется подлежащее оплате, пользователь должен заплатить эфир, чтобы вызвать эту функцию, эта функция известна как оплачиваемая функция.

Таким образом, в этом контракте конструктор оплачивается, и пользователь отправляет 15th при вызове конструктора, и он сохраняется в учетной записи контракта. 15 eth списывается со счета кошелька пользователя.

в Ethereum нет такого понятия, как «оплачиваемая транзакция». Использование не должно ничего платить за вызов оплачиваемой функции, оно может отправить 0 значение, и оно все равно будет работать.
Да, это правильно! Он принимает 0 эфира в качестве значения.
Да, это правильно! Он принимает 0 эфира в качестве значения. Вы можете поставить условия под оплачиваемой транзакцией, например, require(msg.value == 1 ether); попробуйте это в ремиксе,structor() payable { require(msg.value == 1 ether); }