本文介绍了我如何设置TX ETH金额?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我知道用户可以手动将eth发送到合同/功能,但有没有办法直接在代码中请求特定的金额,以便将其添加到燃气费中,例如,dxsale.app在创建预售时的方式(见下面的截图)-它将预售的0.1eth成本添加到0.0072的燃气费中,总计为0.1072。
这可以在ERC20合同中完成吗?我知道我可以在payable
函数中接收ETH,例如
function deposit() payable public {
require(msg.value > 0, "You need to send some Ether");
}
但我是否可以指定我希望收到的金额(固定费用),以便将其添加到TX成本中?
谢谢
推荐答案
TLDR:交易发送后执行合同功能。因此无法从合同中设置交易参数。
不在固体代码中。仅当发送的金额不是预期值时才能引发异常。
function deposit() payable public {
require(msg.value == 0.1 ether, "You need to send 0.1 Ether");
}
您可以在创建事务请求时指定金额。例如,元掩码使用Ethereum Provider API,因此您可以预定义元掩码将显示的数量。
const params = [
{
from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',
to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567',
value: '0x9184e72a', // 2441406250
},
];
ethereum
.request({
method: 'eth_sendTransaction',
params,
});
但用户可以在他们的钱包中覆盖此选项,或者他们始终可以使用不同的方式(不使用自定义值请求)提交交易。
该值(在params
JS对象和msg.value
全局变量中)始终不包括煤气费。
params.value
将包含0.1 eth(魏氏十六进制数),msg.value
将包含0.1 eth(魏氏十进制数)。 这篇关于我如何设置TX ETH金额?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!