-
Notifications
You must be signed in to change notification settings - Fork 50
Open
Description
Issue To Be Solved
Many implementations of scheduled transactions have organically emitted an event to emit when a scheduled transaction fails. It would be good to standardize this.
Suggest A Solution
An event + emitter method so block explorers could watch for interface-level events and add failure states.
// inside FlowTransactionScheduler
access(all) event HandlerExecutionFailed(
id: UInt64,
handlerType: String,
address: Address?,
uuid: UInt64,
error: String
)
access(all) resource interface TransactionHandler {
// ...
// default implementation emits an event - can be overridden
access(contract) fun emitExecutionFailed(
id: UInt64,
error: String
) {
post {
emit HandlerExecutionFailed(
whileExecuting: whileExecuting,
handlerType: self.getType().identifier,
address: self.owner?.address,
uuid: self.uuid,
error: String
)
}
}
}
// ---------
// inside consuming resource
access(all) resource COAHandler : TransactionHandler {
access(FlowTransactionScheduler.Execute) fun executeTransaction(id: UInt64, data: AnyStruct?) {
// some failure state encountered
self.emitExecutionFailed(id: id, error: "CALL_FAILED")
return
}
}
The main concern would be id spoofing, but maybe there's something workable there to consider in the future.
This would be upgradeable
Reactions are currently unavailable
Metadata
Metadata
Assignees
Type
Projects
Status
🏗 In Progress