在同一个合约中,看代码:
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的值就是转账者给合约转账的金额数,转的所有金额都会叠加到合约的余额中。
看到这里是不是已经明白了,如果还有不懂的地方,请评论。
网友评论