区块链研习社

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

2018-11-23  本文已影响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的值就是转账者给合约转账的金额数,转的所有金额都会叠加到合约的余额中。

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

上一篇 下一篇

猜你喜欢

热点阅读