[#ScriptExecutionData]
= ScriptExecutionData
:mrdocs:

Mutable per&hyphen;input state carried through Taproot&sol;Tapscript execution&period;

== Synopsis

Declared in `&lt;script&sol;interpreter&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
struct ScriptExecutionData;
----

== Data Members

[cols="1,4"]
|===
| Name| Description
| xref:ScriptExecutionData/m_annex_hash.adoc[`m&lowbar;annex&lowbar;hash`] 
| Hash of the annex data&period;
| xref:ScriptExecutionData/m_annex_init.adoc[`m&lowbar;annex&lowbar;init`] 
| Whether m&lowbar;annex&lowbar;present and (when needed) m&lowbar;annex&lowbar;hash are initialized&period;
| xref:ScriptExecutionData/m_annex_present.adoc[`m&lowbar;annex&lowbar;present`] 
| Whether an annex is present&period;
| xref:ScriptExecutionData/m_codeseparator_pos.adoc[`m&lowbar;codeseparator&lowbar;pos`] 
| Opcode position of the last executed OP&lowbar;CODESEPARATOR (or 0xFFFFFFFF if none executed)&period;
| xref:ScriptExecutionData/m_codeseparator_pos_init.adoc[`m&lowbar;codeseparator&lowbar;pos&lowbar;init`] 
| Whether m&lowbar;codeseparator&lowbar;pos is initialized&period;
| xref:ScriptExecutionData/m_output_hash.adoc[`m&lowbar;output&lowbar;hash`] 
| The hash of the corresponding output
| xref:ScriptExecutionData/m_tapleaf_hash.adoc[`m&lowbar;tapleaf&lowbar;hash`] 
| The tapleaf hash&period;
| xref:ScriptExecutionData/m_tapleaf_hash_init.adoc[`m&lowbar;tapleaf&lowbar;hash&lowbar;init`] 
| Whether m&lowbar;tapleaf&lowbar;hash is initialized&period;
| xref:ScriptExecutionData/m_validation_weight_left.adoc[`m&lowbar;validation&lowbar;weight&lowbar;left`] 
| How much validation weight is left (decremented for every successful non&hyphen;empty signature check)&period;
| xref:ScriptExecutionData/m_validation_weight_left_init.adoc[`m&lowbar;validation&lowbar;weight&lowbar;left&lowbar;init`] 
| Whether m&lowbar;validation&lowbar;weight&lowbar;left is initialized&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
