瀏覽代碼

优化 gas

DevYK 2 年之前
父節點
當前提交
e0024a1970
共有 5 個文件被更改,包括 33 次插入43 次删除
  1. 4 4
      config/dev_config.js
  2. 3 3
      config/prd_config.js
  3. 4 4
      config/test_config.js
  4. 19 15
      model/moralis_sdk.js
  5. 3 17
      routes/sdk.js

+ 4 - 4
config/dev_config.js

@@ -14,7 +14,8 @@ const account_config = {
     WELLET_PUBLIC_KEY: '0xAD48D13E77011cFE03fF19729B6A247847AfD28E',
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
-    BNB_GAS_PRICE: '13000000000',
+    BNB_GAS_PRICE: '10000000000',
+    TOKEN_GAS_PRICE: '10000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/18dfe21f-b1bd-46ca-a8c7-c85e1c84f02d'
 }
@@ -23,9 +24,8 @@ const reids_token_config = {
     TOKENPRICE: 'TOKENPRICE_TEST',
     TOKENWITHDRAW: 'TOKENWITHDRAW',
     GASPRICE: "GASPRICE",
-    LAST_TOTAL_BNB_FREE: 'LAST_TOTAL_BNB_FREE',
-    LAST_TOTAL_TOKEN_FREE: 'LAST_TOTAL_TOKEN_FREE',
-    LAST_GAS_PRICE: 'LAST_TOKEN_GAS_PRICE',
+    LAST_BNB_PRICE: 'LAST_BNB_PRICE',
+    LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY_DEV',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY_DEV',

+ 3 - 3
config/prd_config.js

@@ -8,6 +8,7 @@ const account_config = {
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
     BNB_GAS_PRICE: '5000000000',
+    TOKEN_GAS_PRICE: '5000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/9ab2594f-3d27-4f70-a5ed-a6aee0420aa6'
 }
@@ -22,9 +23,8 @@ const reids_token_config = {
     TOKENPRICE: 'TOKENPRICE',
     TOKENWITHDRAW: 'TOKENWITHDRAW',
     GASPRICE: "GASPRICE",
-    LAST_TOTAL_BNB_FREE: 'LAST_TOTAL_BNB_FREE',
-    LAST_TOTAL_TOKEN_FREE: 'LAST_TOTAL_TOKEN_FREE',
-    LAST_GAS_PRICE: 'LAST_TOKEN_GAS_PRICE',
+    LAST_BNB_PRICE: 'LAST_BNB_PRICE',
+    LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',

+ 4 - 4
config/test_config.js

@@ -7,7 +7,8 @@ const account_config = {
     WELLET_PUBLIC_KEY: '0xAD48D13E77011cFE03fF19729B6A247847AfD28E',
     TOKEN_GAS_LIMIT: '90000',
     BNB_GAS_LIMIT: '21000',
-    BNB_GAS_PRICE: '13000000000',
+    BNB_GAS_PRICE: '10000000000',
+    TOKEN_GAS_PRICE: '10000000000',
     TRANSFER_GAS: true,
     FEISHU_URL:'https://open.feishu.cn/open-apis/bot/v2/hook/18dfe21f-b1bd-46ca-a8c7-c85e1c84f02d'
 }
@@ -22,9 +23,8 @@ const reids_token_config = {
     TOKENPRICE: 'TOKENPRICE_TEST',
     TOKENWITHDRAW: 'TOKENWITHDRAW',
     GASPRICE: "GASPRICE",
-    LAST_TOTAL_BNB_FREE: 'LAST_TOTAL_BNB_FREE',
-    LAST_TOTAL_TOKEN_FREE: 'LAST_TOTAL_TOKEN_FREE',
-    LAST_GAS_PRICE: 'LAST_TOKEN_GAS_PRICE',
+    LAST_BNB_PRICE: 'LAST_BNB_PRICE',
+    LAST_TOKEN_PRICE: 'LAST_TOKEN_PRICE',
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',

+ 19 - 15
model/moralis_sdk.js

@@ -75,6 +75,8 @@ async function setWeb3apiRateLimit() {
         logger.error('setWeb3apiRateLimit error')
 }
 
+// initMasterSDK()
+// initMoralisSecretSDK()
 
 function toJson(code_, obj_, errMsg_) {
     return utils.toJson(code_, obj_, errMsg_);
@@ -338,16 +340,17 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
             }
             // });
         }
-        logger.log('account_config.TOKEN_GAS_LIMIT=', account_config.TOKEN_GAS_LIMIT);
+        var lastTokenPrice = await redis.readRedis(reids_token_config.LAST_TOKEN_PRICE)
 
-        var lastTokenFree = await redis.readRedis(reids_token_config.LAST_TOTAL_TOKEN_FREE)
-        logger.log('LAST_TOTAL_TOKEN_FREE=', lastTokenFree);
-        if (lastTokenFree && reids_token_config.LAST_TOTAL_TOKEN_FREE && parseInt(lastTokenFree) > 0) {
-            tokenGasPrice = parseInt(tokenCount) * parseInt(lastTokenFree);
+        logger.log('LAST_TOKEN_PRICE=', lastTokenPrice);
+
+        if (lastTokenPrice && parseInt(lastTokenPrice) > 0) {
+            tokenGasPrice = parseInt(tokenCount) * parseInt(lastTokenPrice) * parseInt(account_config.TOKEN_GAS_LIMIT);
+            ret_a_gas = lastTokenPrice;
         } else {
-            tokenGasPrice = parseInt(tokenCount) * parseInt(account_config.TOKEN_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
+            tokenGasPrice = parseInt(tokenCount) * parseInt(account_config.TOKEN_GAS_LIMIT) * parseInt(account_config.TOKEN_GAS_PRICE);
+            ret_a_gas = account_config.TOKEN_GAS_PRICE;
         }
-        ret_a_gas = account_config.BNB_GAS_PRICE;
         logger.log('tokenGasPrice=', tokenGasPrice);
     }
 
@@ -370,14 +373,15 @@ async function computeTransferGasFree(obj, my_account_all_coins, tokenPrices) {
             nativeCount = 1;
             logger.log('native > 1.0', tokenCount);
 
-            var lastBnbFree = await redis.readRedis(reids_token_config.LAST_TOTAL_BNB_FREE)
-            logger.log('LAST_TOTAL_BNB_FREE=', lastBnbFree);
-            if (lastBnbFree && parseInt(lastBnbFree) > 0) {
-                nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbFree);
+            var lastBnbPrice = await redis.readRedis(reids_token_config.LAST_BNB_PRICE)
+            logger.log('LAST_BNB_PRICE=', lastBnbPrice);
+            if (lastBnbPrice && parseInt(lastBnbPrice) > 0) {
+                nativeGasPrice = parseInt(nativeCount) * parseInt(lastBnbPrice) * parseInt(account_config.BNB_GAS_LIMIT);
+                ret_a_gas = lastBnbPrice;
             } else {
                 nativeGasPrice = parseInt(nativeCount) * parseInt(account_config.BNB_GAS_LIMIT) * parseInt(account_config.BNB_GAS_PRICE);
+                ret_a_gas =  parseInt(account_config.BNB_GAS_PRICE);
             }
-            ret_a_gas = account_config.BNB_GAS_PRICE;
 
             // var real_native_amount = BigInt(nativeAllBalance) - BigInt(nativeGasPrice) - BigInt(tokenGasPrice);
             var real_native_amount = BigInt(nativeAllBalance);
@@ -648,11 +652,11 @@ const transfer_handle = async (obj) => {
         if (ret && obj.contractAddress) {
             var tr = getTransferGasFree('token', ret)
             logger.debug('cache setkey token LAST_TOTAL_TOKEN_FREE getTransferGasFree', tr)
-            redis.redis_set(reids_token_config.LAST_TOTAL_TOKEN_FREE, tr.totalGasFree);
+            redis.redis_set(reids_token_config.LAST_TOKEN_PRICE, tr.gasFee);
         } else {
             var tr = getTransferGasFree('native', ret)
             logger.debug('cache setkey LAST_TOTAL_BNB_FREE getTransferGasFree', tr)
-            redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree);
+            redis.redis_set(reids_token_config.LAST_BNB_PRICE, tr.gasFee);
         }
     } else {
         var tm_obj = { ...obj }
@@ -714,7 +718,7 @@ const collectCoins = async (obj) => {
     logParams.addressBalances = { ...my_account_all_coins };
 
     //得到币价格
-    if (process.env.NODE_ENV == 'dev') {
+    if (process.env.NODE_ENV != 'dev') {
         var test_json = '{"tokenPrice": [{"contract": "0x0000000000000000000000000000000000000000", "usdPrice": 400}, {"contract": "0x03716F32f72c692a0B355fa04639669E3341B94e", "usdPrice": 0.1}]}'
         obj.tokenPrices = JSON.parse(test_json);
     } else {

+ 3 - 17
routes/sdk.js

@@ -33,7 +33,6 @@ async function getTransfers(ctx) {
     var temp_obj = { ...obj }
     var index = 0
 
-    // for (let index = 0; index < 30; index++) {
     await moralis.getTokenTransfers(obj).then((result) => {
         logger.log('getTransfers response', 'index=' + index, result)
         ctx.body = result;
@@ -52,12 +51,10 @@ async function getTransfers(ctx) {
                     var tr = moralis.getTransferRecordGasFree('native', json_obj, temp_obj.address)
                     logger.log('getTransferRecordGasFree:', tr, temp_obj.address)
                     if (tr && tr.totalGasFree > 0) {
-                        logger.log('getTransferRecordGasFree redis_set LAST_TOTAL_BNB_FREE:', tr.totalGasFree.toString())
-                        logger.log('getTransferRecordGasFree redis_set LAST_TOTAL_TOKEN_FREE:', (parseInt(tr.totalGasFree) * parseInt(account_config.TOKEN_GAS_LIMIT)).toString())
-                        redis.redis_set(reids_token_config.LAST_TOTAL_BNB_FREE, tr.totalGasFree.toString());
-                        redis.redis_set(reids_token_config.LAST_TOTAL_TOKEN_FREE, (parseInt(tr.gas_price) * parseInt(account_config.TOKEN_GAS_LIMIT)).toString());
+                        logger.log('getTransferRecordGasFree redis_set LAST_PRICE:', tr)
+                        redis.redis_set(reids_token_config.LAST_BNB_PRICE, tr.gas_price.toString());
+                        redis.redis_set(reids_token_config.LAST_TOKEN_PRICE, tr.gas_price.toString());
                     }
-
                     if (json_obj.data.total > 0) {
                         //提交归集任务
                         if (temp_obj.address) {
@@ -71,7 +68,6 @@ async function getTransfers(ctx) {
             }
         }
     })
-    // }
 }
 
 
@@ -97,14 +93,6 @@ async function collect_conis_task() {
         try {
             exec_obj = JSON.parse(exec_obj)
             logger.log('collect_conis_task exec item>>>>', exec_obj);
-
-            if (exec_obj.address == await redis.readRedis(reids_token_config.LAST_COLLECT_PUBLIC_KEY) && utils.getTimestamp() - await redis.readRedis(reids_token_config.LAST_COLLECT_TIME) < 60 * 2 * 1000) {
-                logger.log('间隔不足 1 分钟', exec_obj);
-                continue
-            }
-
-            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, utils.getTimestamp())
-            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, exec_obj.address)
             //开始收集用户地址里面的币到归集地址
             var ret = await moralis.collectCoins(exec_obj)
             logger.log('collect_conis_task ret =', exec_obj, ret)
@@ -118,8 +106,6 @@ async function collect_conis_task() {
             } catch (error) { }
         } catch (error) {
             logger.error('collect_conis_task error', error.toString());
-            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, 0)
-            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, 0)
         }
         logger.log("collect_conis_task cost-time", utils.getTimestamp() - start_time, exec_obj)
     }