首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >msg.sender不增加余额

msg.sender不增加余额
EN

Ethereum用户
提问于 2020-01-23 21:16:12
回答 1查看 503关注 0票数 0

我正在尝试执行从`坚固性教程获得的以下代码

代码语言:javascript
复制
pragma solidity 0.5.4;
contract ERC20Token {
    string name;
    mapping(address => uint256) public balances;

    function mint() payable public {
        balances[msg.sender] += msg.value;//use tx.origin, 
    }
}
contract MyContract {
    address public token;

    address payable wallet;

    constructor(address payable _wallet, address _token) public {
        wallet = _wallet;
        token = _token;
    }
    function() external payable{
       buyToken();
    }
    function buyToken() public payable {
        ERC20Token _token = ERC20Token(address(token));
        _token.mint();
        wallet.transfer(msg.value);
    }
}

教程说我必须使用tx.origin而不是msg.sender,但是tx.origin是一个漏洞。请有人指导我如何解决这个问题。

EN

回答 1

Ethereum用户

发布于 2020-01-23 21:30:17

你是正确的,msg.sender是被建议的而不是tx.origin。这不起作用的原因是您没有用mint()调用发送任何ETH,所以它是0,令牌余额也没有增加。很难理解预期的结果,但是您可能希望mint只能由MyContract调用,让mint接受一个参数并调用为_token.mint(msg.value),然后使用该参数作为令牌的数量。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/79279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档