Skip to content

Commit f30ea7f

Browse files
committed
now storing latest seen block number
1 parent 55959a6 commit f30ea7f

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

IceCreamSwapWeb3/EthAdvanced.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from time import sleep
22
from typing import Optional
33

4+
from eth_typing import BlockNumber
45
from web3.eth import Eth
56
from web3.exceptions import ContractLogicError
6-
from web3.types import FilterParams, LogReceipt, CallOverride, BlockIdentifier, TxParams
7+
from web3.types import FilterParams, LogReceipt, CallOverride, BlockIdentifier, TxParams, BlockData
78

89
from IceCreamSwapWeb3 import Web3Advanced
910

@@ -41,7 +42,7 @@ class EthAdvanced(Eth):
4142
METHODS_TO_RETRY = [
4243
'fee_history', 'create_access_list', 'estimate_gas',
4344
'get_transaction', 'get_raw_transaction', 'get_raw_transaction_by_block',
44-
'send_transaction', 'send_raw_transaction', 'get_block', 'get_balance',
45+
'send_transaction', 'send_raw_transaction', 'get_balance',
4546
'get_code', 'get_transaction_count', 'get_transaction_receipt',
4647
'wait_for_transaction_receipt', 'get_storage_at', 'replace_transaction',
4748
'modify_transaction', 'sign', 'sign_transaction', 'sign_typed_data', 'filter',
@@ -94,6 +95,29 @@ def call(
9495
no_retry=no_retry,
9596
)
9697

98+
def get_block_number(self, no_retry: bool = False, ignore_latest_seen_block: bool = False) -> BlockNumber:
99+
block_number: BlockNumber = exponential_retry(func_name="get_block_number")(super().get_block_number)(
100+
no_retry=no_retry or not self.w3.should_retry,
101+
)
102+
if not ignore_latest_seen_block and self.w3.latest_seen_block < block_number:
103+
self.w3.latest_seen_block = block_number
104+
return block_number
105+
106+
def get_block(
107+
self,
108+
block_identifier: BlockIdentifier,
109+
full_transactions: bool = False,
110+
no_retry: bool = False
111+
) -> BlockData:
112+
block: BlockData = exponential_retry(func_name="get_block")(super().get_block)(
113+
block_identifier=block_identifier,
114+
full_transactions=full_transactions,
115+
no_retry=no_retry or not self.w3.should_retry,
116+
)
117+
if self.w3.latest_seen_block < block["number"]:
118+
self.w3.latest_seen_block = block["number"]
119+
return block
120+
97121
def get_logs(
98122
self,
99123
filter_params: FilterParams,

IceCreamSwapWeb3/Web3Advanced.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from importlib.resources import files
22

3+
from eth_utils import to_checksum_address
34
from web3 import Web3
45
from web3.exceptions import ContractLogicError
56
from web3.main import get_default_modules
@@ -49,6 +50,8 @@ def __init__(
4950

5051
self.middleware_onion.inject(geth_poa_middleware, layer=0, name="poa") # required for pos chains
5152

53+
self.latest_seen_block = self.eth.get_block_number(ignore_latest_seen_block=True)
54+
5255
self.filter_block_range = self._find_max_filter_range()
5356
self.revert_reason_available: bool = self._check_revert_reason_available()
5457
if not self.revert_reason_available:
@@ -75,7 +78,7 @@ def _find_max_filter_range(self):
7578
# getting logs from the 0 address as it does not emit any logs.
7679
# This way we can test the maximum allowed filter range without getting back a ton of logs
7780
result = self.eth._get_logs({
78-
"address": "0x0000000000000000000000000000000000000000",
81+
"address": to_checksum_address("0x0000000000000000000000000000000000000000"),
7982
"fromBlock": current_block - 5 - filter_range + 1,
8083
"toBlock": current_block - 5,
8184
})

0 commit comments

Comments
 (0)