Я реализовал функцию перевода ETH со своей учетной записи на другую:
async function transfer(to, value) {
let options = {
from : PUBLIC_ADDRESS,
to : to,
value: value
};
options.gas = await web3.eth.estimateGas(options);
let signedTransaction = await web3.eth.accounts.signTransaction(options, PRIVATE_KEY);
return await web3.eth.sendSignedTransaction(signedTransaction.rawTransaction);
}
Это исключительно для передачи ETH; Я не пытаюсь вызвать какую-либо функцию смарт-контракта, поэтому я могу опустить data
поле из options
объекта.
Я заметил, что web3.eth.estimateGas(options)
всегда возвращает 21000.
Могу ли я рассчитывать на это и упростить свой код до:
let options = {
from : PUBLIC_ADDR,
to : to,
value: value,
gas : 21000
};
?
Спасибо
Если to
адрес не является смарт-контрактом, то да. Это стандартная стоимость газа для простого перевода эфира.
Если to
адрес является смарт-контрактом, даже если вы ничего не отправляете в data
поле, может быть потреблено другое количество газа.
хорошая вибрация
to
адрес не является смарт-контрактом, поэтомуdata
поле пустое (и теперь я понимаю, что пустоеdata
поле не обязательно означает неконтрактныйto
адрес). Большое спасибо!!!