|
@@ -89,14 +89,45 @@ function getTransferRecordGasFree(type, obj, address) {
|
|
if (element.gas_price && element.gas && type == 'native') {//native
|
|
if (element.gas_price && element.gas && type == 'native') {//native
|
|
return {
|
|
return {
|
|
totalGasFree: parseInt(element.gas_price) * parseInt(element.gas),
|
|
totalGasFree: parseInt(element.gas_price) * parseInt(element.gas),
|
|
- gas_price: parseInt(element.gas_price)
|
|
|
|
|
|
+ gas_price: parseInt(element.gas_price),
|
|
|
|
+ gas_limit: parseInt(element.gas),
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
return null;
|
|
|
|
+}
|
|
|
|
|
|
|
|
+function changeJsonHexBignumberToString(json) {
|
|
|
|
+ if (json) {
|
|
|
|
+ var obj = JSON.parse(json)
|
|
|
|
+ var code = obj.code;
|
|
|
|
+ logger.log('changeJsonHexBignumberToString obj=', obj)
|
|
|
|
+ try {
|
|
|
|
+ if (obj.data && obj.data.gasPrice && obj.data.gasLimit && obj.data.gasPrice.hex && obj.data.gasLimit.hex) {
|
|
|
|
+ var curGasPrice = BigNumber(obj.data.gasPrice.hex).toNumber()
|
|
|
|
+ var curGasLimit = BigNumber(obj.data.gasLimit.hex).toNumber()
|
|
|
|
+ obj.data.gasPrice.number = curGasPrice.toString()
|
|
|
|
+ obj.data.gasLimit.number = curGasLimit.toString()
|
|
|
|
+ logger.log('getTransferGasFree totalGasFree=', curGasPrice, curGasLimit)
|
|
|
|
+ if (obj.data.value && obj.data.value.hex) {
|
|
|
|
+ var value = BigNumber(obj.data.value.hex).toNumber()
|
|
|
|
+ logger.log('getTransferGasFree native value=', value)
|
|
|
|
+ if (value != 0) {
|
|
|
|
+ obj.data.value.number = value.toString()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ logger.log('changeJsonHexBignumberToString ret=', obj.data)
|
|
|
|
+ return JSON.stringify(obj.data)
|
|
|
|
+ } catch (error) {
|
|
|
|
+ logger.error('changeJsonHexBignumberToString error',error.toString())
|
|
|
|
+ return json;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return json;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -115,7 +146,8 @@ function getTransferGasFree(type, json) {
|
|
curGasLimit = account_config.BNB_GAS_LIMIT
|
|
curGasLimit = account_config.BNB_GAS_LIMIT
|
|
}
|
|
}
|
|
var totalGasFree = parseInt(curGasLimit) * parseInt(curGasPrice);
|
|
var totalGasFree = parseInt(curGasLimit) * parseInt(curGasPrice);
|
|
-
|
|
|
|
|
|
+ var gas_fee
|
|
|
|
+ var gas_limit
|
|
logger.log('getTransferGasFree json=', json)
|
|
logger.log('getTransferGasFree json=', json)
|
|
|
|
|
|
if (json) {
|
|
if (json) {
|
|
@@ -128,6 +160,8 @@ function getTransferGasFree(type, json) {
|
|
if (curGasPrice > 0 && curGasLimit > 0) {
|
|
if (curGasPrice > 0 && curGasLimit > 0) {
|
|
totalGasFree = curGasPrice * curGasLimit;
|
|
totalGasFree = curGasPrice * curGasLimit;
|
|
}
|
|
}
|
|
|
|
+ gas_fee = curGasPrice
|
|
|
|
+ gas_limit = gas_limit
|
|
logger.log('getTransferGasFree totalGasFree=', curGasPrice, curGasLimit, totalGasFree)
|
|
logger.log('getTransferGasFree totalGasFree=', curGasPrice, curGasLimit, totalGasFree)
|
|
if (obj.data.value && obj.data.value.hex) {
|
|
if (obj.data.value && obj.data.value.hex) {
|
|
var value = BigNumber(obj.data.value.hex).toNumber()
|
|
var value = BigNumber(obj.data.value.hex).toNumber()
|
|
@@ -143,6 +177,8 @@ function getTransferGasFree(type, json) {
|
|
totalGasFree: totalGasFree,
|
|
totalGasFree: totalGasFree,
|
|
nativeValue: nativeValue,
|
|
nativeValue: nativeValue,
|
|
tokenValue: tokenValue,
|
|
tokenValue: tokenValue,
|
|
|
|
+ gasFee: gas_fee,
|
|
|
|
+ gasLimit: gas_limit,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -325,7 +361,7 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
|
|
|
var lastBnbFree = await redis.readRedis(reids_token_config.LAST_TOTAL_BNB_FREE)
|
|
var lastBnbFree = await redis.readRedis(reids_token_config.LAST_TOTAL_BNB_FREE)
|
|
logger.log('LAST_TOTAL_BNB_FREE=', lastBnbFree);
|
|
logger.log('LAST_TOTAL_BNB_FREE=', lastBnbFree);
|
|
- if (lastTokenFree && reids_token_config.LAST_TOTAL_TOKEN_FREE && parseInt(lastTokenFree) > 0) {
|
|
|
|
|
|
+ if (lastBnbFree && parseInt(lastBnbFree) > 0) {
|
|
nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbFree);
|
|
nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbFree);
|
|
} else {
|
|
} else {
|
|
nativeGasPrice = parseInt(nativeCount) * parseInt(account_config.BNB_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
|
|
nativeGasPrice = parseInt(nativeCount) * parseInt(account_config.BNB_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
|
|
@@ -348,13 +384,13 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
|
|
|
|
|
|
logger.log('transfer obj=', transfer_obj)
|
|
logger.log('transfer obj=', transfer_obj)
|
|
|
|
|
|
- //计算所有币转账所需要的 gas
|
|
|
|
|
|
+ //计算所有币
|
|
totalCount = nativeCount + tokenCount;
|
|
totalCount = nativeCount + tokenCount;
|
|
// var gasPrice = await redis.readRedis(reids_token_config.GASPRICE);
|
|
// var gasPrice = await redis.readRedis(reids_token_config.GASPRICE);
|
|
logger.log('nativeAllBalance', nativeAllBalance);
|
|
logger.log('nativeAllBalance', nativeAllBalance);
|
|
logger.log('totalCount', totalCount);
|
|
logger.log('totalCount', totalCount);
|
|
|
|
|
|
-
|
|
|
|
|
|
+ //计算所有币转账所需要的 gas
|
|
var total2Gas = nativeGasPrice + tokenGasPrice;
|
|
var total2Gas = nativeGasPrice + tokenGasPrice;
|
|
var service_charge = 0;
|
|
var service_charge = 0;
|
|
logger.log('total2Gas', total2Gas);
|
|
logger.log('total2Gas', total2Gas);
|
|
@@ -445,6 +481,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
var totalGasFee = 0;
|
|
var totalGasFee = 0;
|
|
var collects = []
|
|
var collects = []
|
|
var collects_error = []
|
|
var collects_error = []
|
|
|
|
+ var collects_mysql = []
|
|
for (let index = 0; index < my_account_all_coins.transfer_arrays.length; index++) {
|
|
for (let index = 0; index < my_account_all_coins.transfer_arrays.length; index++) {
|
|
var ti = my_account_all_coins.transfer_arrays[index]
|
|
var ti = my_account_all_coins.transfer_arrays[index]
|
|
logger.tlog('ti=', ti)
|
|
logger.tlog('ti=', ti)
|
|
@@ -470,6 +507,7 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
// tr.totalGasFree
|
|
// tr.totalGasFree
|
|
totalGasFee += parseInt(tr.totalGasFree);
|
|
totalGasFee += parseInt(tr.totalGasFree);
|
|
}
|
|
}
|
|
|
|
+ collects_mysql.push(changeJsonHexBignumberToString(ret))
|
|
} else {
|
|
} else {
|
|
//缓存当前交易的 gas 费用
|
|
//缓存当前交易的 gas 费用
|
|
try {
|
|
try {
|
|
@@ -484,8 +522,8 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
}
|
|
}
|
|
try {
|
|
try {
|
|
collects_error.push(JSON.parse(ret).errMsg)
|
|
collects_error.push(JSON.parse(ret).errMsg)
|
|
- } catch (error) {
|
|
|
|
- logger.error('collects_error json parse error',ret)
|
|
|
|
|
|
+ } catch (error) {
|
|
|
|
+ logger.error('collects_error json parse error', ret)
|
|
}
|
|
}
|
|
} catch (error) {
|
|
} catch (error) {
|
|
logger.error('start_collectCoins 获取 gas fee=', error.toString(), JSON.stringify(ti));
|
|
logger.error('start_collectCoins 获取 gas fee=', error.toString(), JSON.stringify(ti));
|
|
@@ -496,12 +534,12 @@ async function transfers(obj, my_account_all_coins, logParams) {
|
|
}
|
|
}
|
|
//日志埋点-归集全部所花费的 gas 费用
|
|
//日志埋点-归集全部所花费的 gas 费用
|
|
logParams.collectCoinsTotalGasFee = totalGasFee.toString();
|
|
logParams.collectCoinsTotalGasFee = totalGasFee.toString();
|
|
- logParams.collects = JSON.stringify(collects)
|
|
|
|
|
|
+ //日志埋点-归集的响应
|
|
|
|
+ logParams.results = collects
|
|
|
|
+ logParams.collects = JSON.stringify(collects_mysql)
|
|
if (t_i == my_account_all_coins.transfer_arrays.length) {
|
|
if (t_i == my_account_all_coins.transfer_arrays.length) {
|
|
logger.log('归集日志上报:', logParams);
|
|
logger.log('归集日志上报:', logParams);
|
|
logParams.type = report.REPORT_TYPE.collect_coins
|
|
logParams.type = report.REPORT_TYPE.collect_coins
|
|
- //日志埋点-归集的响应
|
|
|
|
- logParams.results = collects
|
|
|
|
var info = await queryCompanyInfoFromId(0);
|
|
var info = await queryCompanyInfoFromId(0);
|
|
logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
|
|
logParams.receiver_address_total_balance_after = await queryCollectBalance(info.user_address, obj.chain)
|
|
//归集入库
|
|
//归集入库
|
|
@@ -595,6 +633,8 @@ const transfer_handle = async (obj) => {
|
|
redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree);
|
|
redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
|
|
+ var tm_obj = { ...obj }
|
|
|
|
+ tm_obj.privateKey = '不对外暴露'
|
|
logger.error('transfer_handle transfer error', JSON.stringify(obj));
|
|
logger.error('transfer_handle transfer error', JSON.stringify(obj));
|
|
}
|
|
}
|
|
return ret;
|
|
return ret;
|