Algod: Replace logic.DebuggerHook with logic.EvalTracer interface#4438
Merged
jannotti merged 139 commits intoalgorand:masterfrom Jan 23, 2023
Merged
Algod: Replace logic.DebuggerHook with logic.EvalTracer interface#4438jannotti merged 139 commits intoalgorand:masterfrom
logic.DebuggerHook with logic.EvalTracer interface#4438jannotti merged 139 commits intoalgorand:masterfrom
Conversation
Dynamic budget checks in the evaluator complicate the gatekeeping. This functionality will be easier to add in the future after the `DebuggerHook` interface has been extended.
This test confirms an error spotted by @jannotti where `errors.As(…)` was always true. algorand#4322 (comment)
jasonpaulos
reviewed
Dec 15, 2022
jannotti
reviewed
Dec 16, 2022
logic.DebuggerHook with logic.EvalTracer interface
jannotti
approved these changes
Jan 19, 2023
This was referenced Jan 24, 2023
This was referenced Jan 30, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR upgrades the existing
logic.DebuggerHookinterface to be more powerful & lightweight. To be specific:logic.EvalTracerinterface and rename existinglogic.DebuggerHookinterface tologic.Debuggerto be more intuitive.EvalTracerhooks are introduced for before/after transaction groups, before/after transactions, and after TEAL opcodes.EvalContext.refreshDebugStatefunction which used to be called before every TEAL op has been removed. This function copied and base64 encoded the entire stack and scratch space every time it was invoked, which is potentially expensive and not needed for the eventual simulation trace.A new
logic.MakeEvalTracerDebuggerAdaptoradaptor function has been created so that existinglogic.Debuggerimplementors (e.g. tealdbg and the dryrun endpoint) can be ran aslogic.EvalTracerwith the same behavior.What's Next
By itself this PR doesn't activate any new behavior. Instead, it defines the tracer hooks that will be necessary for the following:
Test Plan
logic.MakeEvalTracerDebuggerAdaptorBlockEvaluator.TransactionGroupcalls tracer hooks correctlyverify.TxnGroupWithDebuggercalls tracer hooks correctly