Skip to content

Commit 7781afd

Browse files
committed
fix: correct event signature hash and add validation in substreams
- Fix truncated TRANSFER_WITH_REF_AND_FEE_TOPIC (was 40 chars, now 64 chars) - Add validation to check topics[0] matches expected event signature - Prevents parsing non-TransferWithReferenceAndFee events
1 parent a6f87ea commit 7781afd

File tree

1 file changed

+8
-1
lines changed
  • packages/substreams-tron/src

1 file changed

+8
-1
lines changed

packages/substreams-tron/src/lib.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ const NILE_PROXY_ADDRESS: &str = "THK5rNmrvCujhmrXa5DB1dASepwXTr9cJs";
1616

1717
/// TransferWithReferenceAndFee event signature (keccak256 hash of event signature)
1818
/// Event: TransferWithReferenceAndFee(address,address,uint256,bytes indexed,uint256,address)
19+
/// keccak256("TransferWithReferenceAndFee(address,address,uint256,bytes,uint256,address)")
1920
const TRANSFER_WITH_REF_AND_FEE_TOPIC: &str =
20-
"e8e8ca0a945b88ee72ec3e1e5f1e9c8f2a0a1e8a";
21+
"9f16cbcc523c67a60c450e5ffe4f3b7b6dbe772e7abcadb2686ce029a9a0a2b6";
2122

2223
/// Maps TRON blocks to extract ERC20FeeProxy payment events
2324
#[substreams::handlers::map]
@@ -46,6 +47,12 @@ fn map_erc20_fee_proxy_payments(block: Block) -> Result<Payments, substreams::er
4647
continue;
4748
}
4849

50+
// Validate the event signature matches TransferWithReferenceAndFee
51+
let topic0 = hex::encode(&log_entry.topics[0]);
52+
if topic0 != TRANSFER_WITH_REF_AND_FEE_TOPIC {
53+
continue;
54+
}
55+
4956
// Parse the event data
5057
if let Some(payment) = parse_transfer_with_reference_and_fee(
5158
&log_entry,

0 commit comments

Comments
 (0)