Skip to content

Commit dfb19de

Browse files
echonet: refactor, remove decoded class, merge functions (#10581)
1 parent b5c1193 commit dfb19de

File tree

3 files changed

+12
-60
lines changed

3 files changed

+12
-60
lines changed

echonet/l1_blocks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def find_l1_block_for_tx(
3636
logs = client.get_logs(start_block_data, end_block_data)
3737

3838
for log in logs:
39-
l1_event = L1Events.parse_event(log)
39+
l1_event = L1Events.decode_log(log)
4040

4141
if L1Events.l1_event_matches_feeder_tx(l1_event, feeder_tx):
4242
# TODO(Ayelet): Add blockNumber to L1Event.

echonet/l1_events.py

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,6 @@
1010

1111

1212
class L1Events:
13-
@dataclass(frozen=True)
14-
class DecodedLogMessageToL2:
15-
from_address: str
16-
to_address: str
17-
selector: int
18-
payload: List[int]
19-
nonce: int
20-
fee: int
21-
l1_tx_hash: str
22-
block_timestamp: int
23-
2413
@dataclass(frozen=True)
2514
class L1HandlerTransaction:
2615
"""Mirrors Rust starknet_api::transaction::L1HandlerTransaction"""
@@ -39,7 +28,7 @@ class L1Event:
3928
l1_tx_hash: str
4029
block_timestamp: int
4130

42-
def decode_log(log: dict) -> DecodedLogMessageToL2:
31+
def decode_log(log: dict) -> "L1Events.L1Event":
4332
"""
4433
Decodes Ethereum log from Starknet L1 contract into DecodedLogMessageToL2 event.
4534
Event structure defined in: crates/papyrus_base_layer/resources/Starknet-0.10.3.4.json
@@ -66,34 +55,20 @@ def decode_log(log: dict) -> DecodedLogMessageToL2:
6655
data_bytes = bytes.fromhex(data[2:]) # Remove 0x prefix and convert to bytes
6756
payload, nonce, fee = eth_abi.decode(["uint256[]", "uint256", "uint256"], data_bytes)
6857

69-
return L1Events.DecodedLogMessageToL2(
70-
from_address=from_address,
71-
to_address=to_address,
72-
selector=selector,
73-
payload=list(payload),
74-
nonce=nonce,
75-
fee=fee,
76-
l1_tx_hash=log["transactionHash"],
77-
block_timestamp=int(log["blockTimestamp"], 16),
78-
)
79-
80-
@staticmethod
81-
def parse_event(log: dict) -> "L1Events.L1Event":
82-
decoded = L1Events.decode_log(log)
83-
calldata = [int(decoded.from_address, 16)] + decoded.payload
58+
calldata = [int(from_address, 16)] + list(payload)
8459

8560
tx = L1Events.L1HandlerTransaction(
86-
contract_address=decoded.to_address,
87-
entry_point_selector=decoded.selector,
61+
contract_address=to_address,
62+
entry_point_selector=selector,
8863
calldata=calldata,
89-
nonce=decoded.nonce,
64+
nonce=nonce,
9065
)
9166

9267
return L1Events.L1Event(
9368
tx=tx,
94-
fee=decoded.fee,
95-
l1_tx_hash=decoded.l1_tx_hash,
96-
block_timestamp=decoded.block_timestamp,
69+
fee=fee,
70+
l1_tx_hash=log["transactionHash"],
71+
block_timestamp=int(log["blockTimestamp"], 16),
9772
)
9873

9974
@staticmethod

echonet/tests/test_l1_events.py

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,6 @@ class TestL1Events(unittest.TestCase):
3636
"removed": False,
3737
}
3838

39-
DECODED_LOG = L1Events.DecodedLogMessageToL2(
40-
from_address="0xf5b6ee2caeb6769659f6c091d209dfdcaf3f69eb",
41-
to_address="0x616757a151c21f9be8775098d591c2807316d992bbc3bb1a5c1821630589256",
42-
selector=0x1B64B1B3B690B43B9B514FB81377518F4039CD3E4F4914D8A6BDF01D679FB19,
43-
payload=[
44-
0x04C46E830BB56CE22735D5D8FC9CB90309317D0F,
45-
0xC50A951C4426760BA75C5253985A16196B342168,
46-
0x11BF9DBEBDD770C31FF13808C96A1CB2DE15A240274DC527E7D809BB2BF38DF,
47-
0x956DFDEAC59085EDC3,
48-
0x0,
49-
],
50-
nonce=0x19B255,
51-
fee=0x1308ABA4ADE2,
52-
l1_tx_hash="0x726df509fdd23a944f923a6fc18e80cbe7300a54aa34f8e6bd77e9961ca6ce52",
53-
block_timestamp=1764500447,
54-
)
55-
5639
L1_EVENT = L1Events.L1Event(
5740
tx=L1Events.L1HandlerTransaction(
5841
contract_address="0x616757a151c21f9be8775098d591c2807316d992bbc3bb1a5c1821630589256",
@@ -91,10 +74,10 @@ class TestL1Events(unittest.TestCase):
9174
}
9275

9376
def test_decode_log_success(self):
94-
decoded_log_result = L1Events.decode_log(self.RAW_JSON_LOG)
77+
result = L1Events.decode_log(self.RAW_JSON_LOG)
9578

96-
self.assertIsInstance(decoded_log_result, L1Events.DecodedLogMessageToL2)
97-
self.assertEqual(decoded_log_result, self.DECODED_LOG)
79+
self.assertIsInstance(result, L1Events.L1Event)
80+
self.assertEqual(result, self.L1_EVENT)
9881

9982
def test_decode_log_invalid_topics_raises_error(self):
10083
with self.assertRaisesRegex(
@@ -110,12 +93,6 @@ def test_decode_log_wrong_signature_raises_error(self):
11093
with self.assertRaisesRegex(ValueError, "Unhandled event signature"):
11194
L1Events.decode_log(log)
11295

113-
def test_parse_event_success(self):
114-
result = L1Events.parse_event(self.RAW_JSON_LOG)
115-
self.assertIsInstance(result, L1Events.L1Event)
116-
117-
self.assertEqual(result, self.L1_EVENT)
118-
11996
def test_matches_l1_handler_tx_success(self):
12097
l1_event = self.L1_EVENT
12198

0 commit comments

Comments
 (0)