in this pr: #2836, i noticed in the execution flow we decode once and encode twice. We do this sort of thing throughout the codebase. It is okay but as we want to be dealing with lower and lower block times we should try to optimise this flow and others.
in this flow #2836 (comment), i believe we can decode once and do no encoding if we changed the flow of the code.