- A+
所属分类:币安BSC
通常批量转账可以作为独立的软件来使用,但是第三方的批量转账软件都不太完善,要么需要你把所有的代币全部转让对方指定的账户地址,要么在使用第三方批量转账软件时需要提供钱包私钥,这样就容易泄露钱包私钥,存在安全隐患。考虑到此类问题,建议在合约中增加批量转账功能,就可以避免使用第三方批量转账软件。
一、如果提供三种批量转账相关的合约实现功能代码:批量转账包含精度、批量转账不包含精度、批量转账固定数量
1、批量转账包含精度代码实现
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
require(addresses.length == tokens.length,"Mismatch between Address and token count");
uint256 SCCC = 0;
for(uint i=0; i < addresses.length; i++){
SCCC = SCCC + tokens[i];
}
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_transfer(from,addresses[i],tokens[i]);
}
}
如果合约包含分红tricker,那么相关的代码就需要修改为如下形式:
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
require(addresses.length == tokens.length,"Mismatch between Address and token count");
uint256 SCCC = 0;
for(uint i=0; i < addresses.length; i++){
SCCC = SCCC + tokens[i];
}
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_basicTransfer(from,addresses[i],tokens[i]);
if(!isDividendExempt[addresses[i]]) {
try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {}
}
}
// Dividend tracker
if(!isDividendExempt[from]) {
try distributor.setShare(from, balanceOf(from)) {} catch {}
}
}
2、批量转账不包含精度
function multiTransfer_nodecimals(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
require(addresses.length == tokens.length,"Mismatch between Address and token count");
uint256 SCCC = 0;
for(uint i=0; i < addresses.length; i++){
SCCC = SCCC + tokens[i];
}
SCCC = SCCC * 10**_decimals;
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_transfer(from,addresses[i],(tokens[i] * 10**_decimals));
}
}
如果合约包含分红tricker,那么相关的代码就需要修改为如下形式:
function multiTransfer_nodecimals(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
require(addresses.length == tokens.length,"Mismatch between Address and token count");
uint256 SCCC = 0;
for(uint i=0; i < addresses.length; i++){
SCCC = SCCC + tokens[i];
}
SCCC = SCCC * 10**_decimals;
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_basicTransfer(from,addresses[i],(tokens[i] * 10**_decimals));
if(!isDividendExempt[addresses[i]]) {
try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {}
}
}
// Dividend tracker
if(!isDividendExempt[from]) {
try distributor.setShare(from, balanceOf(from)) {} catch {}
}
}
3、批量转账固定数量
function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow
uint256 SCCC = tokens * addresses.length;
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_transfer(from,addresses[i],tokens);
}
}
如果合约包含分红tricker,那么相关的代码就需要修改为如下形式:
function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow
uint256 SCCC = tokens * addresses.length;
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_basicTransfer(from,addresses[i],tokens);
if(!isDividendExempt[addresses[i]]) {
try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {}
}
}
// Dividend tracker
if(!isDividendExempt[from]) {
try distributor.setShare(from, balanceOf(from)) {} catch {}
}
}
以上为三种批量转账相关的合约实现功能代码。
二、直接在区块链浏览器上通过如下方式传递数组参数到合约,完成批量转账功能
注:以上是三种方式都可以实现批量转账功能,一定程度上都可以节约部分手续费,消耗的手续费大于一笔转账的手续费,小于每笔子交易单独转账时的累积和。
至此,完成合约中增加批量转账功能的所有操作流程。
pdf+视频币安智能链BSC发币教程下载:
本文是全系列中第48 / 62篇:通证发行
- justSwap开盘咯,你也想发个币去当庄家?手把手教你怎么用TRC20标准在tron发币
- TRX上发币教程(JustSwap怎么玩?JustSwap交易所新手使用教程)
- 币安智能链一键发币工具【BSC-TokenDIY】
- 波场trx公链上发行数字代币,上线justswap交易教程
- TRX上发币教程(玩转JustSwap,JustSwap小白发币教程)
- 波场trx发行数字货币——tronlink钱包添加发行的代币【justswap交易所】
- 波场TRX发行代币——上线justswap交易所【发币教程pdf下载】
- 火币生态链自助发币工具【HECO-TokenDIY】
- 币安智能链一键发币工具【BSC-TokenDIY】小白发币教程pdf下载
- imtoken钱包使用教程(图解)支持ERC2.0 TRC2.0下载注册安装交易
- imtoken钱包转账操作方法【imtoken钱包】使用教程【图解】
- 波场链发币教程——开发源代码验证合约代码【pdf+视频】
- 波场、币安、火币发币合约开源代码教程【PDF+视频】附合约代码
- 波场、币安、火币发币后无法在tp钱包显示解决方法
- 波场justswap币安pancakeswap火币mdex发币教程——波场地址转换为以太坊地址
- 币安BSC火币HECO波场TRX通缩燃烧持币分红模式的合约代码
- 波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码
- 币安BSC智能链发币教程——metamask钱包使用【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——remix+metamask实现币安BSC链上发币【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——开源合约代码验证完全匹配【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——上线PancakeSwap薄饼交易所【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——获取薄饼PancakeSwap资金池地址【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——区块链浏览器上执行合约【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——通过standard json input方式开源合约【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——通缩燃烧加池分红基金会地址回流合约代码【pdf+视频BSC发币教程下载】
- 币安BSC,波场TRX,火币HECO链上的主流币兑换方法
- 波场链发币后在tp钱包余额显示异常,不显示小数点后面的数值
- 币安BSC智能链发币教程——带黑白名单功能的合约代码【pdf+视频BSC发币教程下载】
- pancakeswap薄饼上添加流动性时同时实现BNB和USDT的交易
- 币安BSC智能链发币教程——持币分红合约代码【pdf+视频BSC发币教程下载】
- 波场justswap币安pancakeswap火币mdex发币教程——tronide部署合约后一直卡住不动的处理方法
- 币安BSC智能链发币教程——手动燃烧功能合约代码【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——pancakeswap薄饼添加流动性后实现永久锁仓【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——无限增发功能合约代码实现【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——pancakeswap薄饼添加流动性后实现锁仓固定时间【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——合约实现自动加池(自动筑池)功能【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——动态推广收益八代推广收益级带收益空投锁定上下级【pdf+视频BSC发币教程下载】
- 波场justswap币安pancakeswap火币mdex发币教程——波场添加sunswap v1版本失败的解决方法
- 币安BSC智能链发币教程——质押挖矿,质押母币挖矿子币模式【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——添加流动性分红本币到添加者钱包模式【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——分红USDT到指定钱包地址或者添加流动性的用户钱包地址【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——挖矿模式合约代码实现【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——实时查询流动性LP占比,用户添加流动性的份额统计【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——分红任意代币到持币钱包地址的合约代码实现【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——合约中添加批量转账功能的合约代码实现【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——万能分红任何币种+自动添加流动性+营销钱包+销毁+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——万能分红任何币种合约源代码解析【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——合约中增加批量转账功能【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——修改自动加池模式中所得LP的属主【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——分红任何币种+自动加池+燃烧通缩+营销钱包+八代推广收益+开发者钱包+基金会钱包模式合约代码部署【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——合约中引入黑名单功能及执行(解除)拉黑操作【pdf+视频BSC发币教程下载】
- 波场TRX链发币教程——上线sunswap后永久锁仓资金池【pdf+视频TRX发币教程下载】
- 币安BSC智能链发币教程——增加合约代码部署时必须完成的初始化功能【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——通过数组传递多个参数到构造函数的方式【pdf+视频BSC发币教程下载】
- 波场TRX链发币教程——sunswap v1和v2版本的区别,添加资金池异常【pdf+视频TRX发币教程下载】
- 币安BSC智能链发币教程——解决合约开源时无法获取构造函数输入参数的ABI码问题【pdf+视频BSC发币教程下载】
- 欧易OKC链发币教程——remix+metamask实现欧易OKC链上发币【pdf+视频OKC发币教程下载】
- 欧易OKC链发币教程——配置metamask钱包连接欧易OKC主网和测试网【pdf+视频OKC发币教程下载】
- 币安BSC智能链发币教程——时间锁合约部署及使用解析【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——合约中增加定时开放交易功能的代码实现【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——区分买入和撤销流动性,卖出和添加流动性的代码实现【pdf+视频BSC发币教程下载】
- 币安BSC智能链发币教程——fistswap添加流动性后LP加池分红FIST到添加流动性的钱包地址的代码实现【pdf+视频BSC发币教程下载】
- 我的微信
- 这是我的微信扫一扫
-
- App下载
- 漫兮网App下载
-