我可以从合约内部修改msg.value吗?

问题描述 投票:0回答:1

我知道

msg.value
是只读的,但我想在用户调用函数时创建一个代码,我将随机设置额外值,并且该值应该添加到总付款中,平均值+天然气。

pragma solidity ^0.8.0;

contract Test {
  function testFunction() public payable {
    payable(msg.sender).transfer(2200000000000000);
  }
}

这个功能当然不起作用,但是有没有办法从合约内部做到这一点?

solidity
1个回答
0
投票

简短的回答是否定的。

这是因为

msg.value
来自用户。用户已经签署了他们想要随交易一起发送的金额,并且您无法更改它,因为这将是一个巨大的安全漏洞。

即使合约可以使用的gas也是预先确定的,因为它是经过计算的,并且用户签署了他们愿意支付费用的金额。

想象一个用户签名发送 1 ETH,然后将其更改为 2 ETH。额外的 1 ETH 从哪里来?

© www.soinside.com 2019 - 2024. All rights reserved.