用户给A合约转账继续转账给B合约问题

大概逻辑是:用户调用函数转账给A合约,函数内继续把余额转账给B合约。 A合约代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

contract test2{
    uint public value;
    address public seller;
    address public test1Adder;

    constructor(address _add) public {
        test1Adder = _add;
    }

    function tr() public payable {
        seller = msg.sender;
        value = msg.value;
        payable(test1Adder).transfer(value);
    }

    // 查看合约内金额
    function getBalance() public view returns(uint) {
        return payable(address(this)).balance;
    }

}

B合约代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

contract test1{

    // 查看合约内金额
    function getBalance() public view returns(uint) {
         return payable(address(this)).balance;
    }

}

执行tr方法结果:

image.png

如果把B合约的地址换成用户地址是可以转成功的,求大哥调教-.-

请先 登录 后评论

最佳答案 2021-09-19 09:15

合约要接受没有calldata的以太币转账时,需要在合约里加上receive() external payable{}或者fallback() external payable,所以在B合约里最后加上应该就行了

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,284 浏览
  • hekang 提出于 2021-09-18 16:50