|
@@ -27,6 +27,12 @@ var isExecCollect = false;
|
|
|
var masterInit = false
|
|
|
var secretInit = false
|
|
|
|
|
|
+// 对 shib 做限制
|
|
|
+const SHIB_AMOUNT_LIMIT = 20000
|
|
|
+const SHIB_AMOUNT_FEE_LIMIT = 10000
|
|
|
+const SHIB_ADDRESS = '0x2859e4544C4bB03966803b044A93563Bd2D0DD4D'
|
|
|
+
|
|
|
+
|
|
|
|
|
|
// logger.log('Moralis.settings',Moralis)
|
|
|
// Moralis.settings.setAPIRateLimit({
|
|
@@ -175,7 +181,7 @@ async function getAccountBalances(options) {
|
|
|
return aar;
|
|
|
}
|
|
|
} catch (error) {
|
|
|
- logger.log('getBalances error:', error,options)
|
|
|
+ logger.log('getBalances error:', error, options)
|
|
|
return null
|
|
|
}
|
|
|
|
|
@@ -226,9 +232,21 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
var receiver_info = await queryCompanyInfoFromId(0);
|
|
|
//得到 20 币 满足 1美刀的 count
|
|
|
if (Array.isArray(my_account_all_coins.other) && my_account_all_coins.other.length > 0) {
|
|
|
- my_account_all_coins.other.forEach(element => {
|
|
|
+ for (let index = 0; index < my_account_all_coins.other.length; index++) {
|
|
|
+ const element = my_account_all_coins.other[index];
|
|
|
+ // my_account_all_coins.other.forEach(element => {
|
|
|
logger.log('20 element=', element);
|
|
|
var find_transfer_item = findTokenPriceItem(element.token_address, tokenPrices);
|
|
|
+
|
|
|
+
|
|
|
+ if (element.token_address == SHIB_ADDRESS) {
|
|
|
+ if (parseInt(element.balance) < SHIB_AMOUNT_LIMIT) {
|
|
|
+ logger.warn('不满足归集条件', element);
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
if (find_transfer_item) {
|
|
|
var total_all_usdprice = calculate_total_usdprice(element.balance, element.decimals, find_transfer_item.usdPrice);
|
|
|
logger.log('findTokenPriceItem ret=', element.token_address, find_transfer_item, total_all_usdprice);
|
|
@@ -249,7 +267,8 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
} else {
|
|
|
logger.log('findTokenPriceItem not fount =', element);
|
|
|
}
|
|
|
- });
|
|
|
+ // });
|
|
|
+ }
|
|
|
logger.log('account_config.TOKEN_GAS_LIMIT=', account_config.TOKEN_GAS_LIMIT);
|
|
|
|
|
|
var lastTokenFree = await redis.readRedis(reids_token_config.LAST_TOTAL_TOKEN_FREE)
|
|
@@ -428,7 +447,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
|
}
|
|
|
} else {
|
|
|
logger.tlog('start_collectCoins error=', ret);
|
|
|
- logger.error('start_collectCoins 归集 error=', ret,ti.toString());
|
|
|
+ logger.error('start_collectCoins 归集 error=', ret, ti.toString());
|
|
|
};
|
|
|
}
|
|
|
if (t_i == my_account_all_coins.transfer_arrays.length) {
|
|
@@ -496,7 +515,7 @@ const transfer_handle = async (obj) => {
|
|
|
return toJson(-1, null, "decryptPrivityKey error.");
|
|
|
}
|
|
|
} catch (error) {
|
|
|
- logger.error('decryptPrivityKey error',error.toString(), obj);
|
|
|
+ logger.error('decryptPrivityKey error', error.toString(), obj);
|
|
|
if (!obj.privateKey) {
|
|
|
return toJson(-1, null, "decryptPrivityKey error.", error.toString());
|
|
|
}
|
|
@@ -515,7 +534,7 @@ const transfer_handle = async (obj) => {
|
|
|
logger.debug('cache setkey LAST_TOTAL_BNB_FREE getTransferGasFree', tr)
|
|
|
redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree);
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
logger.error('transfer_handle transfer error', obj);
|
|
|
}
|
|
|
return ret;
|
|
@@ -535,7 +554,7 @@ async function queryCollectBalance(address, chain) {
|
|
|
// return await getAccountBalances(queryCollectBalance);
|
|
|
return await getAccountAllCoins(queryCollectBalance);
|
|
|
} catch (error) {
|
|
|
- logger.error('queryCollectBalance error', error.toString(),address,chain);
|
|
|
+ logger.error('queryCollectBalance error', error.toString(), address, chain);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -771,7 +790,7 @@ const transfer = async (obj) => {
|
|
|
return toJson(SUCCEED_CODE, ret, "");
|
|
|
} catch (error) {
|
|
|
logger.tlog('transfer error:', error);
|
|
|
- logger.error('transfer error:', error.toString(),options.toString())
|
|
|
+ logger.error('transfer error:', error.toString(), options.toString())
|
|
|
if (error.reason != null) {
|
|
|
return toJson(ERROR_CODE_001, null, error.toString());
|
|
|
} else {
|