直接貼代碼:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract BatchTransfer {
event Transfer(address indexed from, address indexed to, uint256 value);
constructor() payable {
}
function batchTransfer(address payable[] memory _recipients, uint256 _amount) public payable {
for(uint256 i = 0; i < _recipients.length; i++) {
_transfer(msg.sender, _recipients[i], _amount);
}
}
function _transfer(address _from, address payable _to, uint256 _amount) internal {
(bool success, ) = _to.call{value: _amount}("");
require(success, "Transfer failed");
emit Transfer(_from, _to, _amount);
}
}
實現原理:先往合約中轉賬指定的金額,然後通過合約轉賬給接收者
合約部署:
轉賬支持:
如果轉賬失敗,可以直接debug: