美文网首页区块链研习社
solidity中msg.value详情,看完就明白了

solidity中msg.value详情,看完就明白了

作者: 吴敬悦 | 来源:发表于2018-11-23 21:06 被阅读3次

    在同一个合约中,看代码:

    pragma solidity ^0.4.25;

    contract TestMSG_SENDER{

        function show() public payable returns(uint) {

            return msg.value;

        }

        function getBalance() public view returns(uint){

            return address(this).balance;

        }

    }

    测试一 第一次测试结果

    然后我们切换一个账号再一次测试

    测试二

    通过这两次测试,我们知道这里的msg.value是保存到合约中的金额,也就是转入到此合约中的金额数。

    下面测试其他合约向此合约转账,看代码:

    pragma solidity ^0.4.25;

    contract TestMSG_SENDER{

        event MSG_value(uint);

        function() public payable{

            emit MSG_value(msg.value);

        }

        function getBalance() public view returns(uint){

            return address(this).balance;

        }

    }

    contract TestMSG_SENDER_1{

        TestMSG_SENDER contractAddr;

        constructor(address _contractAddr) public{

            contractAddr = TestMSG_SENDER(_contractAddr);

        }

        function sendValue() public payable returns(bool){

            return address(contractAddr).send(msg.value);

        }

    }

    第一个账户测试过程

    我们现在去看一看合约TestMSG_SENDER的余额;

    结果

    接下来,我们切换账户再试一试:

    换账户测试过程

    我们发现,smg.value的值就是转账者给合约转账的金额数,转的所有金额都会叠加到合约的余额中。

    看到这里是不是已经明白了,如果还有不懂的地方,请评论。

    相关文章

      网友评论

        本文标题:solidity中msg.value详情,看完就明白了

        本文链接:https://www.haomeiwen.com/subject/gujsqqtx.html