miden_lib/transaction/
events.rs1use core::fmt;
2
3use super::TransactionEventError;
4
5const ACCOUNT_VAULT_BEFORE_ADD_ASSET: u32 = 0x2_0000; const ACCOUNT_VAULT_AFTER_ADD_ASSET: u32 = 0x2_0001; const ACCOUNT_VAULT_BEFORE_REMOVE_ASSET: u32 = 0x2_0002; const ACCOUNT_VAULT_AFTER_REMOVE_ASSET: u32 = 0x2_0003; const ACCOUNT_STORAGE_BEFORE_SET_ITEM: u32 = 0x2_0004; const ACCOUNT_STORAGE_AFTER_SET_ITEM: u32 = 0x2_0005; const ACCOUNT_STORAGE_BEFORE_SET_MAP_ITEM: u32 = 0x2_0006; const ACCOUNT_STORAGE_AFTER_SET_MAP_ITEM: u32 = 0x2_0007; const ACCOUNT_BEFORE_INCREMENT_NONCE: u32 = 0x2_0008; const ACCOUNT_AFTER_INCREMENT_NONCE: u32 = 0x2_0009; const ACCOUNT_PUSH_PROCEDURE_INDEX: u32 = 0x2_000a; const NOTE_BEFORE_CREATED: u32 = 0x2_000b; const NOTE_AFTER_CREATED: u32 = 0x2_000c; const NOTE_BEFORE_ADD_ASSET: u32 = 0x2_000d; const NOTE_AFTER_ADD_ASSET: u32 = 0x2_000e; const FALCON_SIG_TO_STACK: u32 = 0x2_000f; const PROLOGUE_START: u32 = 0x2_0010; const PROLOGUE_END: u32 = 0x2_0011; const NOTES_PROCESSING_START: u32 = 0x2_0012; const NOTES_PROCESSING_END: u32 = 0x2_0013; const NOTE_EXECUTION_START: u32 = 0x2_0014; const NOTE_EXECUTION_END: u32 = 0x2_0015; const TX_SCRIPT_PROCESSING_START: u32 = 0x2_0016; const TX_SCRIPT_PROCESSING_END: u32 = 0x2_0017; const EPILOGUE_START: u32 = 0x2_0018; const EPILOGUE_END: u32 = 0x2_0019; const LINK_MAP_SET_EVENT: u32 = 0x2_001a; const LINK_MAP_GET_EVENT: u32 = 0x2_001b; #[repr(u32)]
62#[derive(Debug, Clone, Eq, PartialEq)]
63pub enum TransactionEvent {
64 AccountVaultBeforeAddAsset = ACCOUNT_VAULT_BEFORE_ADD_ASSET,
65 AccountVaultAfterAddAsset = ACCOUNT_VAULT_AFTER_ADD_ASSET,
66
67 AccountVaultBeforeRemoveAsset = ACCOUNT_VAULT_BEFORE_REMOVE_ASSET,
68 AccountVaultAfterRemoveAsset = ACCOUNT_VAULT_AFTER_REMOVE_ASSET,
69
70 AccountStorageBeforeSetItem = ACCOUNT_STORAGE_BEFORE_SET_ITEM,
71 AccountStorageAfterSetItem = ACCOUNT_STORAGE_AFTER_SET_ITEM,
72
73 AccountStorageBeforeSetMapItem = ACCOUNT_STORAGE_BEFORE_SET_MAP_ITEM,
74 AccountStorageAfterSetMapItem = ACCOUNT_STORAGE_AFTER_SET_MAP_ITEM,
75
76 AccountBeforeIncrementNonce = ACCOUNT_BEFORE_INCREMENT_NONCE,
77 AccountAfterIncrementNonce = ACCOUNT_AFTER_INCREMENT_NONCE,
78
79 AccountPushProcedureIndex = ACCOUNT_PUSH_PROCEDURE_INDEX,
80
81 NoteBeforeCreated = NOTE_BEFORE_CREATED,
82 NoteAfterCreated = NOTE_AFTER_CREATED,
83
84 NoteBeforeAddAsset = NOTE_BEFORE_ADD_ASSET,
85 NoteAfterAddAsset = NOTE_AFTER_ADD_ASSET,
86
87 FalconSigToStack = FALCON_SIG_TO_STACK,
88
89 PrologueStart = PROLOGUE_START,
90 PrologueEnd = PROLOGUE_END,
91
92 NotesProcessingStart = NOTES_PROCESSING_START,
93 NotesProcessingEnd = NOTES_PROCESSING_END,
94
95 NoteExecutionStart = NOTE_EXECUTION_START,
96 NoteExecutionEnd = NOTE_EXECUTION_END,
97
98 TxScriptProcessingStart = TX_SCRIPT_PROCESSING_START,
99 TxScriptProcessingEnd = TX_SCRIPT_PROCESSING_END,
100
101 EpilogueStart = EPILOGUE_START,
102 EpilogueEnd = EPILOGUE_END,
103
104 LinkMapSetEvent = LINK_MAP_SET_EVENT,
105 LinkMapGetEvent = LINK_MAP_GET_EVENT,
106}
107
108impl TransactionEvent {
109 pub const ID_PREFIX: u32 = 2;
111}
112
113impl fmt::Display for TransactionEvent {
114 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
115 write!(f, "{self:?}")
116 }
117}
118
119impl TryFrom<u32> for TransactionEvent {
120 type Error = TransactionEventError;
121
122 fn try_from(value: u32) -> Result<Self, Self::Error> {
123 if value >> 16 != TransactionEvent::ID_PREFIX {
124 return Err(TransactionEventError::NotTransactionEvent(value));
125 }
126
127 match value {
128 ACCOUNT_VAULT_BEFORE_ADD_ASSET => Ok(TransactionEvent::AccountVaultBeforeAddAsset),
129 ACCOUNT_VAULT_AFTER_ADD_ASSET => Ok(TransactionEvent::AccountVaultAfterAddAsset),
130
131 ACCOUNT_VAULT_BEFORE_REMOVE_ASSET => {
132 Ok(TransactionEvent::AccountVaultBeforeRemoveAsset)
133 },
134 ACCOUNT_VAULT_AFTER_REMOVE_ASSET => Ok(TransactionEvent::AccountVaultAfterRemoveAsset),
135
136 ACCOUNT_STORAGE_BEFORE_SET_ITEM => Ok(TransactionEvent::AccountStorageBeforeSetItem),
137 ACCOUNT_STORAGE_AFTER_SET_ITEM => Ok(TransactionEvent::AccountStorageAfterSetItem),
138
139 ACCOUNT_STORAGE_BEFORE_SET_MAP_ITEM => {
140 Ok(TransactionEvent::AccountStorageBeforeSetMapItem)
141 },
142 ACCOUNT_STORAGE_AFTER_SET_MAP_ITEM => {
143 Ok(TransactionEvent::AccountStorageAfterSetMapItem)
144 },
145
146 ACCOUNT_BEFORE_INCREMENT_NONCE => Ok(TransactionEvent::AccountBeforeIncrementNonce),
147 ACCOUNT_AFTER_INCREMENT_NONCE => Ok(TransactionEvent::AccountAfterIncrementNonce),
148
149 ACCOUNT_PUSH_PROCEDURE_INDEX => Ok(TransactionEvent::AccountPushProcedureIndex),
150
151 NOTE_BEFORE_CREATED => Ok(TransactionEvent::NoteBeforeCreated),
152 NOTE_AFTER_CREATED => Ok(TransactionEvent::NoteAfterCreated),
153
154 NOTE_BEFORE_ADD_ASSET => Ok(TransactionEvent::NoteBeforeAddAsset),
155 NOTE_AFTER_ADD_ASSET => Ok(TransactionEvent::NoteAfterAddAsset),
156
157 FALCON_SIG_TO_STACK => Ok(TransactionEvent::FalconSigToStack),
158
159 PROLOGUE_START => Ok(TransactionEvent::PrologueStart),
160 PROLOGUE_END => Ok(TransactionEvent::PrologueEnd),
161
162 NOTES_PROCESSING_START => Ok(TransactionEvent::NotesProcessingStart),
163 NOTES_PROCESSING_END => Ok(TransactionEvent::NotesProcessingEnd),
164
165 NOTE_EXECUTION_START => Ok(TransactionEvent::NoteExecutionStart),
166 NOTE_EXECUTION_END => Ok(TransactionEvent::NoteExecutionEnd),
167
168 TX_SCRIPT_PROCESSING_START => Ok(TransactionEvent::TxScriptProcessingStart),
169 TX_SCRIPT_PROCESSING_END => Ok(TransactionEvent::TxScriptProcessingEnd),
170
171 EPILOGUE_START => Ok(TransactionEvent::EpilogueStart),
172 EPILOGUE_END => Ok(TransactionEvent::EpilogueEnd),
173
174 LINK_MAP_SET_EVENT => Ok(TransactionEvent::LinkMapSetEvent),
175 LINK_MAP_GET_EVENT => Ok(TransactionEvent::LinkMapGetEvent),
176
177 _ => Err(TransactionEventError::InvalidTransactionEvent(value)),
178 }
179 }
180}