Skip to content

Commit 50a55f2

Browse files
committed
fixed recursive MultiCall._inner_call kwargs
1 parent d29be5c commit 50a55f2

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

IceCreamSwapWeb3/Multicall.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,17 @@ def call(self, use_revert: Optional[bool] = None, batch_size: int = 1_000):
7878
return self._inner_call(use_revert=use_revert, calls=self.calls, batch_size=batch_size)
7979

8080
def _inner_call(self, use_revert: bool, calls: list[ContractFunction], batch_size: int):
81+
kwargs = dict(
82+
use_revert=use_revert,
83+
batch_size=batch_size,
84+
)
8185
# make sure calls are not bigger than batch_size
8286
if len(calls) > batch_size:
8387
results = []
8488
for start in range(0, len(calls), batch_size):
8589
results += self._inner_call(
86-
use_revert=use_revert,
90+
**kwargs,
8791
calls=calls[start: min(start + batch_size, len(calls))],
88-
batch_size=batch_size
8992
)
9093
return results
9194

@@ -102,16 +105,16 @@ def _inner_call(self, use_revert: bool, calls: list[ContractFunction], batch_siz
102105
if len(calls) == 1:
103106
print(f"Multicall with single call got Exception '{repr(e)}', retrying in 1 sec")
104107
sleep(1)
105-
return self._inner_call(use_revert=use_revert, calls=calls)
108+
return self._inner_call(**kwargs, calls=calls)
106109
print(f"Multicall got Exception '{repr(e)}', splitting and retrying")
107-
left_results = self._inner_call(use_revert=use_revert, calls=calls[:len(calls) // 2])
108-
right_results = self._inner_call(use_revert=use_revert, calls=calls[len(calls) // 2:])
110+
left_results = self._inner_call(**kwargs, calls=calls[:len(calls) // 2])
111+
right_results = self._inner_call(**kwargs, calls=calls[len(calls) // 2:])
109112
return left_results + right_results
110113
results = self.decode_contract_function_results(raw_returns=raw_returns, contract_functions=calls)
111114
if len(results) == len(calls):
112115
return results
113116
# if not all calls were executed, recursively execute remaining calls and concatenate results
114-
return results + self._inner_call(use_revert=use_revert, calls=calls[len(results):])
117+
return results + self._inner_call(**kwargs, calls=calls[len(results):])
115118

116119
@staticmethod
117120
def calculate_expected_contract_address(sender: str, nonce: int):

0 commit comments

Comments
 (0)