@cryptorubic/web3 1.0.0-alpha.no-sdk.38 → 1.0.0-alpha.no-sdk.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptorubic/web3",
3
- "version": "1.0.0-alpha.no-sdk.38",
3
+ "version": "1.0.0-alpha.no-sdk.39",
4
4
  "dependencies": {
5
5
  "@ethersproject/bignumber": "^5.8.0",
6
6
  "@mysten/sui": "^1.24.0",
@@ -31,6 +31,7 @@ export declare class TronAdapter extends AbstractAdapter<TronWeb, TronWeb, TronB
31
31
  */
32
32
  private getTransactionInfo;
33
33
  getTokensBalances(userAddress: string, tokensAddresses: string[]): Promise<BigNumber[]>;
34
+ private batchMulticallTokenBalance;
34
35
  multicallContractsMethods<Output extends TronWeb3PrimitiveType>(contractAbi: any, contractsData: {
35
36
  contractAddress: string;
36
37
  methodsData: MethodData[];
@@ -51,21 +51,13 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
51
51
  return this.public.trx.getTransactionInfo(hash);
52
52
  }
53
53
  async getTokensBalances(userAddress, tokensAddresses) {
54
- const indexOfNativeCoin = tokensAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.TRON, address));
54
+ const indexOfNativeCoin = tokensAddresses.findIndex((tokenAddress) => web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.TRON, tokenAddress));
55
55
  const promises = [];
56
56
  if (indexOfNativeCoin !== -1) {
57
57
  tokensAddresses.splice(indexOfNativeCoin, 1);
58
58
  promises[1] = this.getBalance(userAddress);
59
59
  }
60
- promises[0] = this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokensAddresses.map((tokenAddress) => ({
61
- contractAddress: tokenAddress,
62
- methodsData: [
63
- {
64
- methodArguments: [userAddress],
65
- methodName: 'balanceOf'
66
- }
67
- ]
68
- })));
60
+ promises[0] = this.batchMulticallTokenBalance(userAddress, tokensAddresses, 10);
69
61
  const results = await Promise.all(promises);
70
62
  const tokensBalances = results[0].map((tokenResults) => {
71
63
  const { success, output } = tokenResults[0];
@@ -76,6 +68,34 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
76
68
  }
77
69
  return tokensBalances;
78
70
  }
71
+ async batchMulticallTokenBalance(userAddress, tokensAddresses, batchSize) {
72
+ if (tokensAddresses.length > 100) {
73
+ const balances = [];
74
+ for (let i = 0; i < tokensAddresses.length; i += batchSize) {
75
+ const batchRequest = tokensAddresses.slice(i, i + batchSize);
76
+ const batchResult = await this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, batchRequest.map((tokenAddress) => ({
77
+ contractAddress: tokenAddress,
78
+ methodsData: [
79
+ {
80
+ methodName: 'balanceOf',
81
+ methodArguments: [userAddress]
82
+ }
83
+ ]
84
+ })));
85
+ balances.push(...batchResult);
86
+ }
87
+ return balances;
88
+ }
89
+ return this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokensAddresses.map((tokenAddress) => ({
90
+ contractAddress: tokenAddress,
91
+ methodsData: [
92
+ {
93
+ methodName: 'balanceOf',
94
+ methodArguments: [userAddress]
95
+ }
96
+ ]
97
+ })));
98
+ }
79
99
  async multicallContractsMethods(contractAbi, contractsData) {
80
100
  const calls = contractsData.map(({ contractAddress, methodsData }) => {
81
101
  return methodsData.map(({ methodName, methodArguments }) => [
@@ -101,7 +121,10 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
101
121
  };
102
122
  }));
103
123
  }
104
- catch {
124
+ catch (err) {
125
+ this.logger
126
+ ? this.logger.customError('[TronAdapter_multicallContractsMethods] Error: ', err)
127
+ : console.debug('[TronAdapter_multicallContractsMethods] Error:', err);
105
128
  return this.multicallContractsMethodsByOne(contractAbi, contractsData);
106
129
  }
107
130
  }