You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
I'm working on the Gigahorse decompiler and I'm interested in evaluating it against heimdall.
In the past for black-box comparisons we've opted for high-level metrics, mainly:
Number of call signatures used in external calls
number of event signatures in emitted events
Wanted to create an issue to verify that I'm using heimdall correctly.
I'm invoking it using: heimdall decompile filename -vvv -d --include-sol --skip-resolving. Any other flags I should be aware of?
Code to identify external call sigs (recognize lines that are like *call*(abi.encode(selector_hex, ...):
selectors = set()
for call in [line for line in text if "call" in line]:
if "abi.encode" not in call:
continue
selectors.add(call.split("abi.encode(")[1][:10])
selectors_filtered = set([sel for sel in selectors if sel.startswith("0x")])
Code to identify event sigs (recognize lines that are like emit Event_event_sig(...):
event_sigs = set()
for event in [line for line in text if "emit Event_" in line]:
event_sigs.add(event.split("emit Event_")[1][:8])
Do the above seem about right or can external calls and events appear in the decompiler output in a different way?
I'd also like to have some more low-level metrics (for example bytecode block reachable from contract's public function) but these would probably be harder to get.
Thanks,
Sifis
The text was updated successfully, but these errors were encountered:
Component
Other (please specify)
Question
Hi,
I'm working on the Gigahorse decompiler and I'm interested in evaluating it against heimdall.
In the past for black-box comparisons we've opted for high-level metrics, mainly:
Wanted to create an issue to verify that I'm using heimdall correctly.
I'm invoking it using:
heimdall decompile filename -vvv -d --include-sol --skip-resolving
. Any other flags I should be aware of?Code to identify external call sigs (recognize lines that are like
*call*(abi.encode(selector_hex, ...)
:Code to identify event sigs (recognize lines that are like
emit Event_event_sig(...)
:Do the above seem about right or can external calls and events appear in the decompiler output in a different way?
I'd also like to have some more low-level metrics (for example bytecode block reachable from contract's public function) but these would probably be harder to get.
Thanks,
Sifis
The text was updated successfully, but these errors were encountered: