Как решить, сколько эфира вам нужно для вашего приложения?

Скажем, я создаю контракт, который работает как система монет/марок. Я знаю, что когда мы разворачиваем контракт, нам нужен эфир. И произойдет транзакция, которая затем требует газа за комиссию. Газ будет извлекаться из эфира, который есть на счету, верно?

Газ считается постоянным, но количество транзакций не может быть предсказано. Его может быть мало или много, так как же мы рассчитываем эфир, который нам нужен в первую очередь? (Я спрашиваю об этом, если вы создаете приложение, а затем выпускаете его для клиента, как вы должны настроить количество эфира и убедиться, что позже оно не закончится)

Любой, у кого есть опыт разработки DApp, пожалуйста, помогите объяснить, как мы должны распределять эфир в первую очередь? А что делать, когда эфир закончился?

Большое спасибо

Я почти уверен, что это не дубликат. Если я правильно понимаю, это путаница о том, кто платит за газ при взаимодействии с контрактом.
Я подтверждаю, что проблема, похоже, в том, что ОП думает, что он должен предоставлять газ для всех будущих вызовов TX по своему контракту. Каждый пользователь платит газ за свой звонок, а ОП должен платить только за газ для создания контракта.

Ответы (2)

Похоже, у вас есть несколько фундаментальных вещей, которые вы путаете с контрактами и эфиром: во-первых, вы, как человек (или компания), владеете адресом Ethereum, который вы можете использовать для перевода эфира в и из (вашего кошелька). Когда вы развертываете контракт, это действие представляет собой транзакцию в блокчейне Ethereum, поэтому оно должно исходить с какого-то адреса Ethereum. Итак, вы подписываете его своим адресом кошелька, и виртуальная машина Ethereum создает совершенно новый адрес (отдельно от вашего собственного адреса кошелька) для нового контракта.

Отправить эфир на контракт может любой желающий. Но возврат эфира зависит от кода самого контракта. Вам нужно выбрать, как это будет работать по мере разработки.

Итак, отвечая на ваши вопросы:

Газ [для развертывания контракта] будет извлечен из эфира, который есть на аккаунте, верно?

Учетная запись, которая развертывает контракт (ваш кошелек), должна иметь достаточно эфира, чтобы заплатить за газ для создания контракта, да. Вновь созданный контракт будет создан без эфира (если только код контракта не делает что-то, что передает эфир).

Газ считается постоянным, но количество транзакций не может быть предсказано. Его может быть мало или много, так как же мы рассчитываем эфир, который нам нужен в первую очередь?

Количество газа, необходимое для создания нового контракта, зависит от сложности кода самого контракта. Вы можете использовать estimateGas()функцию в web3, чтобы вычислить это из скомпилированного байт-кода вашего контракта перед его развертыванием ( подробнее ).

Как настроить количество эфира, чтобы потом оно не закончилось

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

Газ будет извлекаться из эфира, который есть на счету, верно?

  1. Для развертывания контракта вам нужен эфир в учетной записи, которая будет развертывать контракт.

  2. Тогда каждый аккаунт, который будет взаимодействовать с вашим контрактом , будет платить газ. На самом деле контракт (и владелец контракта) не может оплачивать сборы за пользователя.

Но с предстоящим выпуском Metropolis и абстракцией аккаунта смарт-контракты смогут оплачивать сборы.

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

Так что ответить на вопрос, как рассчитать эфир, который нам нужен в первую очередь, на самом деле сложно, поскольку ни в одном контракте этого еще не сделано.