一、准备:
1、准备用于批量转账的钱包,该钱包需要有足够的BNB来支付批量转账的gas费用
2、发起批量转账的钱包必须是专用钱包,因为要提交私钥到批量转账工具,该钱包不要存储任何资产
3、发起批量转账的钱包要有足够数量的代币,否则批量转账累加量超过了钱包余额,转账会失败
4、每次批量转账最多支持同时往30个不同的钱包地址转账,即最多支持30笔转账。
【附注20221218】
批量转账功能主要通过两种方式实现:第一,借助第三方的批量转账工具,第二,在合约中预先内置批量转账功能,直接在区块链浏览器上调用批量转账功能。其中借助第三方批量转账工具最多的缺点就是可能需要提供钱包的私钥以用于批量转账的签名授权,另外需要预授权,可能会导致钱包资产丢失。
批量转账的目的主要有以下两个:
1、多笔交易整合到一笔交易中,减少交易的gas费用
2、批量转账工具,快速分散代币的持有数量,进一步打算代币,避免手动转账的冗余性。
二、操作步骤:
1、授权允许批量转账的代币数量
输入授权相关的参数,截图如下
注:授权数量必须是代币的最小单位数量,即包含代币精度的授权数量。比如授权100个,精度为9,则授权数量必须填写100000000000(100后面9个0)
2、确认授权后,在区块链浏览器上查询hash详情
在区块链浏览器上查询授权操作结果:
结果显示:授权操作成功。
3、执行批量转账,往多个地址批量转账
注:
1) 批量转账对应的转账数量:输入值必须是代币的最小单位,即包含精度后的数量。比如转账100个,精度为9,必须输入100000000000(100后面9个0)
2) 批量转账的累加转账数量,不能超过钱包给批量转账合约授权的数量,否则转账失败。
4、确认转账后,到区块链浏览器上查询批量转账详情
获取批量转账的交易hash,在bscscan上查询批量转账的hash详情
截图显示:20000代币成功接收。
批量转账的其他29个钱包,也验证成功收到了代币。
5、批量转账功能合约代码如下:
pragma solidity ^0.4.23; import './Erc20.sol'; import './SafeMath.sol'; contract BatchTransferContract{ using SafeMath for uint256; address owner; event EtherTransfer(address from, uint256 value); event TokenTransfer(address from, uint256 value,address token); event EtherClaim(address owner,uint256 value); event TokenClaim(address owner,uint256 value,address token); modifier onlyOwner() { require(msg.sender == owner); _; } constructor() public{ owner = msg.sender; } function() public payable {} function sendEther(address[] recipients,uint256[] values) public payable{ uint256 total = msg.value; uint256 i=0; for(i;i<recipients.length;i++){ require(total >= values[i]); total = total.sub(values[i]); recipients[i].transfer(values[i]); } emit EtherTransfer(msg.sender,msg.value); } function sendToken(address token,address[] recipients,uint256[] values) public payable{ uint256 total = 0; ERC20 erc20 = ERC20(token); uint256 i = 0; for(i;i < recipients.length;i++){ erc20.transferFrom(msg.sender,recipients[i],values[i]); total += values[i]; } emit TokenTransfer(msg.sender,total,token); } function claimEther() public onlyOwner{ uint256 balance = address(this).balance; owner.transfer(balance); emit EtherClaim(owner,balance); } function claimToken(address token) public onlyOwner{ ERC20 erc20 = ERC20(token); uint256 balance = erc20.balanceOf(this); erc20.transfer(owner,balance); emit TokenClaim(owner,balance,token); } }
至此,完成BSC链上批量转账工具及操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册