本文介绍了我如何设置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,
  });

但用户可以在他们的钱包中覆盖此选项,或者他们始终可以使用不同的方式(不使用自定义值请求)提交交易。


该值(在paramsJS对象和msg.value全局变量中)始终不包括煤气费。

因此,如果您发送0.1Eth,则在此基础上再加上燃气费,总成本可能为0.10012345。params.value将包含0.1 eth(魏氏十六进制数),msg.value将包含0.1 eth(魏氏十进制数)。

这篇关于我如何设置TX ETH金额?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 16:42