-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Conversation
One thing worries me - the ON_OP() macro ultimately calls the _onOp() funtion object passed to VM::exec(), which is the hook for more than logging. Moving the place it is called will cause different values to be passed in, which apparently is what we want for logging, but might break other tools. @yann300 ? |
Codecov Report
@@ Coverage Diff @@
## develop #4320 +/- ##
===========================================
+ Coverage 67.27% 67.33% +0.05%
===========================================
Files 307 307
Lines 23576 23567 -9
===========================================
+ Hits 15861 15869 +8
+ Misses 7715 7698 -17
|
@gcolvin I haven't seen it used for anything besides tracing |
I would remove all mentions on |
That might break some stuff in remix if we change where on_op is called (is on_op called after or before the actual execution of the step). |
@yann300 @cdetrio @winsvega I'm wondering if this is premature, given that the standard format isn't done? It seems that as soon we merge this remix will break. All implementations need to change at once. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks ok to me. What do you think @gcolvin?
Also there is an issue with VM optimizer that injects PUSHC virtual opcodes. Can they be reverted in the trace?
@chfast I have some worries I've already stated. |
Trace is an artificial layer and when we go down the optimization we will need to fake it. @cdetrio says clients produce the same trace with this, I think it should be added. If we try to keep remix working, one way is to emit the new format with a special command line option, and keep the old behavior without that option. Is that preferable? |
I'm totally fine to update remix to the new trace as long as all the clients have the same format. |
I'm buying this
|
This fixes the VM trace logs to be aligned with the other clients, following the work-in-progress standard format ethereum/tests#249.
Some edge cases still remain, which might cause the cpp trace to differ under some circumstances, but this is a good start (traces are equivalent for all EIP158 state tests).