合约A调用B的方法实现转账, 怎么写func() 扣A的钱

官方合约, A调用B的func() 实现批量转账, 实际花的是A的钱.

合约方法 func(){
 address(addr).send(amount);
 // 实际花的是合约的钱,  怎么写 花 调用方的钱
}

是通过 DELEGATECALL吗? 有方法例子吗.

请先 登录 后评论

最佳答案 2022-09-28 17:18

function test(address payable addr, uint256 num) public payable { address(addr).call{value: num}(""); } 最后采用这种方式. 用例子理解起来可能更简单点

  function test(address payable addr, uint256 num) public payable  {
          address(addr).call{value: num}(""); // 可以转账给这个addr ,默认花这个合约的钱
        }
        function test2(address payable addr) public payable  {
           address(addr).call{value: msg.value}(""); // 可以转账给这addr ,默认花调用方
        }

后边就是msg.value}("") // 很多知名contract也是这种用法

请先 登录 后评论

其它 3 个回答

Tiny熊
  擅长:智能合约,以太坊
请先 登录 后评论
情非得已
请先 登录 后评论
FILAgiao - 法律顾问、冥想专家
请先 登录 后评论
  • 4 关注
  • 0 收藏,2200 浏览
  • nercis 提出于 2022-09-28 11:13