|  | @@ -170,21 +170,33 @@ async function getAccountBalances(options) {
 | 
											
												
													
														|  |          options.chain = utils.getChainName(options.chain)
 |  |          options.chain = utils.getChainName(options.chain)
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      logger.log('getAccountBalances :', options)
 |  |      logger.log('getAccountBalances :', options)
 | 
											
												
													
														|  | -    try {
 |  | 
 | 
											
												
													
														|  | -        if (options.type == 'native') {
 |  | 
 | 
											
												
													
														|  | -            var opt_ret = await Moralis.Web3API.account.getNativeBalance(options);
 |  | 
 | 
											
												
													
														|  | -            logger.log('getNativeBalance=', opt_ret);
 |  | 
 | 
											
												
													
														|  | -            return opt_ret
 |  | 
 | 
											
												
													
														|  | -        } else {
 |  | 
 | 
											
												
													
														|  | -            var aar = await Moralis.Web3API.account.getTokenBalances(options);
 |  | 
 | 
											
												
													
														|  | -            logger.log('getTokenBalances=', aar);
 |  | 
 | 
											
												
													
														|  | -            return aar;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -    } catch (error) {
 |  | 
 | 
											
												
													
														|  | -        logger.error('getBalances error:', error.toString(), JSON.stringify(options))
 |  | 
 | 
											
												
													
														|  | -        return null
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    //做 1次 重试
 | 
											
												
													
														|  | 
 |  | +    //Error: Request failed with status code 524
 | 
											
												
													
														|  | 
 |  | +    //Error: Request failed with status code 500
 | 
											
												
													
														|  | 
 |  | +    var tryCount = 2;
 | 
											
												
													
														|  | 
 |  | +    var result;
 | 
											
												
													
														|  | 
 |  | +    do {
 | 
											
												
													
														|  | 
 |  | +        try {
 | 
											
												
													
														|  | 
 |  | +            if (options.type == 'native') {
 | 
											
												
													
														|  | 
 |  | +                result = await Moralis.Web3API.account.getNativeBalance(options);
 | 
											
												
													
														|  | 
 |  | +                logger.log('getNativeBalance=', result);
 | 
											
												
													
														|  | 
 |  | +            } else {
 | 
											
												
													
														|  | 
 |  | +                result = await Moralis.Web3API.account.getTokenBalances(options);
 | 
											
												
													
														|  | 
 |  | +                logger.log('getTokenBalances=', result);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            break
 | 
											
												
													
														|  | 
 |  | +        } catch (error) {
 | 
											
												
													
														|  | 
 |  | +            if (tryCount == 1) {
 | 
											
												
													
														|  | 
 |  | +                logger.error('getBalances error:', error.toString(), JSON.stringify(options))
 | 
											
												
													
														|  | 
 |  | +                result = null;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            tryCount -= 1;
 | 
											
												
													
														|  | 
 |  | +            await utils.sleep(1000)
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +    } while (tryCount >= 1);
 | 
											
												
													
														|  | 
 |  | +    return result
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  /**
 |  |  /**
 | 
											
										
											
												
													
														|  | @@ -897,31 +909,53 @@ async function getTokenTransfers(opt) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          var t_1
 |  |          var t_1
 | 
											
												
													
														|  |          var t_2
 |  |          var t_2
 | 
											
												
													
														|  | -        //主流币
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            logger.log('getTokenTransfers account getTransactions>>>>>', options);
 |  | 
 | 
											
												
													
														|  | -            t_1 = await Moralis.Web3API.account.getTransactions(options);
 |  | 
 | 
											
												
													
														|  | -            logger.log('getTokenTransfers native ret -->>> t_1', t_1);
 |  | 
 | 
											
												
													
														|  | -            setTransfersDataType('native', t_1.result)
 |  | 
 | 
											
												
													
														|  | -        } catch (error) {
 |  | 
 | 
											
												
													
														|  | -            logger.error("getTransactions error:", '主流币:', error.toString(), JSON.stringify(options))
 |  | 
 | 
											
												
													
														|  | -            return toJson(ERROR_CODE_001, null, error.toString());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        //20币
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            //token 获取交易记录如果没有时间有些地址会失败
 |  | 
 | 
											
												
													
														|  | -            if (!options.to_block) {
 |  | 
 | 
											
												
													
														|  | -                options.to_block = '10000000000'
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // Error: Request failed with status code 524
 | 
											
												
													
														|  | 
 |  | +        // 做一次重试
 | 
											
												
													
														|  | 
 |  | +        var tryCount = 2
 | 
											
												
													
														|  | 
 |  | +        do {
 | 
											
												
													
														|  | 
 |  | +            //主流币
 | 
											
												
													
														|  | 
 |  | +            try {
 | 
											
												
													
														|  | 
 |  | +                logger.log('getTokenTransfers account getTransactions>>>>>', options);
 | 
											
												
													
														|  | 
 |  | +                t_1 = await Moralis.Web3API.account.getTransactions(options);
 | 
											
												
													
														|  | 
 |  | +                logger.log('getTokenTransfers native ret -->>> t_1', t_1);
 | 
											
												
													
														|  | 
 |  | +                setTransfersDataType('native', t_1.result)
 | 
											
												
													
														|  | 
 |  | +                break
 | 
											
												
													
														|  | 
 |  | +            } catch (error) {
 | 
											
												
													
														|  | 
 |  | +                if (tryCount == 1) {
 | 
											
												
													
														|  | 
 |  | +                    logger.error("getTransactions error:", '主流币:', error.toString(), JSON.stringify(options))
 | 
											
												
													
														|  | 
 |  | +                    return toJson(ERROR_CODE_001, null, error.toString());
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                tryCount -= 1;
 | 
											
												
													
														|  | 
 |  | +                await utils.sleep(1000)
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  | -            logger.log('getTokenTransfers account getTokenTransfers>>>>>', options);
 |  | 
 | 
											
												
													
														|  | -            t_2 = await Moralis.Web3API.account.getTokenTransfers(options);
 |  | 
 | 
											
												
													
														|  | -            logger.log('getTokenTransfers token ret -->>> t_2', t_2);
 |  | 
 | 
											
												
													
														|  | -            setTransfersDataType('token', t_2.result)
 |  | 
 | 
											
												
													
														|  | -        } catch (error) {
 |  | 
 | 
											
												
													
														|  | -            logger.error("getTransactions error:", 'token币:', error.toString(), JSON.stringify(options))
 |  | 
 | 
											
												
													
														|  | -            return toJson(ERROR_CODE_001, null, error.toString());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +        } while (tryCount >= 1);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // Error: Request failed with status code 524
 | 
											
												
													
														|  | 
 |  | +        tryCount = 2
 | 
											
												
													
														|  | 
 |  | +        do {
 | 
											
												
													
														|  | 
 |  | +            //20币
 | 
											
												
													
														|  | 
 |  | +            try {
 | 
											
												
													
														|  | 
 |  | +                //token 获取交易记录如果没有时间有些地址会失败
 | 
											
												
													
														|  | 
 |  | +                if (!options.to_block) {
 | 
											
												
													
														|  | 
 |  | +                    options.to_block = '10000000000'
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                logger.log('getTokenTransfers account getTokenTransfers>>>>>', options);
 | 
											
												
													
														|  | 
 |  | +                t_2 = await Moralis.Web3API.account.getTokenTransfers(options);
 | 
											
												
													
														|  | 
 |  | +                logger.log('getTokenTransfers token ret -->>> t_2', t_2);
 | 
											
												
													
														|  | 
 |  | +                setTransfersDataType('token', t_2.result)
 | 
											
												
													
														|  | 
 |  | +                break
 | 
											
												
													
														|  | 
 |  | +            } catch (error) {
 | 
											
												
													
														|  | 
 |  | +                if (tryCount == 1) {
 | 
											
												
													
														|  | 
 |  | +                    logger.error("getTransactions error:", 'token币:', error.toString(), JSON.stringify(options))
 | 
											
												
													
														|  | 
 |  | +                    return toJson(ERROR_CODE_001, null, error.toString());
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                tryCount -= 1;
 | 
											
												
													
														|  | 
 |  | +                await utils.sleep(1000)
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        } while (tryCount >= 1);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //异常
 |  |          //异常
 | 
											
												
													
														|  |          if (t_2 && t_2.total > 0 && Array.isArray(t_2.result) && t_2.result.length <= 0) {
 |  |          if (t_2 && t_2.total > 0 && Array.isArray(t_2.result) && t_2.result.length <= 0) {
 | 
											
										
											
												
													
														|  | @@ -955,20 +989,26 @@ async function getTokenTransfers(opt) {
 | 
											
												
													
														|  |              return toJson(ERROR_CODE_001, null, error.toString());
 |  |              return toJson(ERROR_CODE_001, null, error.toString());
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      } else if (options.type == 'transaction_hash') {//根据哈希查询
 |  |      } else if (options.type == 'transaction_hash') {//根据哈希查询
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            logger.log('transaction_hash getTransaction options-->>> ', options);
 |  | 
 | 
											
												
													
														|  | -            //native
 |  | 
 | 
											
												
													
														|  | -            const transaction = await Moralis.Web3API.native.getTransaction(options);
 |  | 
 | 
											
												
													
														|  | -            var arr = [];
 |  | 
 | 
											
												
													
														|  | -            if (transaction)
 |  | 
 | 
											
												
													
														|  | -                arr.push(transaction)
 |  | 
 | 
											
												
													
														|  | -            var obj = { result: arr }
 |  | 
 | 
											
												
													
														|  | -            logger.log('transaction_hash getTransaction ret-->>> ', transaction, obj);
 |  | 
 | 
											
												
													
														|  | -            return toJson(SUCCEED_CODE, obj, null);
 |  | 
 | 
											
												
													
														|  | -        } catch (error) {
 |  | 
 | 
											
												
													
														|  | -            logger.error("native getTransaction error:", error.toString(), JSON.stringify(options))
 |  | 
 | 
											
												
													
														|  | -            return toJson(ERROR_CODE_001, null, error.toString());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +        var tryCount = 2
 | 
											
												
													
														|  | 
 |  | +        do {
 | 
											
												
													
														|  | 
 |  | +            try {
 | 
											
												
													
														|  | 
 |  | +                logger.log('transaction_hash getTransaction options-->>> ', options);
 | 
											
												
													
														|  | 
 |  | +                //native
 | 
											
												
													
														|  | 
 |  | +                const transaction = await Moralis.Web3API.native.getTransaction(options);
 | 
											
												
													
														|  | 
 |  | +                var arr = [];
 | 
											
												
													
														|  | 
 |  | +                if (transaction)
 | 
											
												
													
														|  | 
 |  | +                    arr.push(transaction)
 | 
											
												
													
														|  | 
 |  | +                var obj = { result: arr }
 | 
											
												
													
														|  | 
 |  | +                logger.log('transaction_hash getTransaction ret-->>> ', transaction, obj);
 | 
											
												
													
														|  | 
 |  | +                return toJson(SUCCEED_CODE, obj, null);
 | 
											
												
													
														|  | 
 |  | +            } catch (error) {
 | 
											
												
													
														|  | 
 |  | +                if (tryCount == 1) {
 | 
											
												
													
														|  | 
 |  | +                    logger.error("native getTransaction error:", error.toString(), JSON.stringify(options))
 | 
											
												
													
														|  | 
 |  | +                    return toJson(ERROR_CODE_001, null, error.toString());
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                tryCount -= 1;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        } while (tryCount >= 1);
 | 
											
												
													
														|  |      } else {
 |  |      } else {
 | 
											
												
													
														|  |          return toJson(ERROR_CODE_001, null, "This type is not supported.");;
 |  |          return toJson(ERROR_CODE_001, null, "This type is not supported.");;
 | 
											
												
													
														|  |      }
 |  |      }
 |