feat: Soft failure reason for evm op results#9109
Conversation
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a soft failure reason mechanism for EVM operation results to help tracer implementations distinguish between different types of failures that don't halt execution.
- Adds a new
SoftFailureReasoninterface with predefined failure types - Enhances
OperationResultto include optional soft failure reason information - Updates
AbstractCallOperationto set specific soft failure reasons for insufficient balance and max call depth scenarios
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| SoftFailureReason.java | New interface defining soft failure reasons with default implementations |
| Operation.java | Enhanced OperationResult to include optional SoftFailureReason field |
| AbstractCallOperation.java | Updated to set soft failure reasons for balance and depth check failures |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
evm/src/main/java/org/hyperledger/besu/evm/frame/SoftFailureReason.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
|
what is a soft failure? |
|
@macfarla soft failures doesn't cause a revert or transaction to fail. For example, not enough balance or if calls depth is more than 1024. A good example of "soft failure" is https://github.com/hyperledger/besu/blob/main/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractExtCallOperation.java#L206 as well. |
Add soft failure reasons for evm operation results. Signed-off-by: Usman Saleem <usman@usmans.info>
Add soft failure reasons for evm operation results. Signed-off-by: Usman Saleem <usman@usmans.info>
Add soft failure reasons for evm operation results. Signed-off-by: Usman Saleem <usman@usmans.info> Signed-off-by: jflo <justin+github@florentine.us>
Add soft failure reasons for evm operation results. Signed-off-by: Usman Saleem <usman@usmans.info> Signed-off-by: georgereuben <reubengeorge101@gmail.com>
Add soft failure reasons for evm operation results. Signed-off-by: Usman Saleem <usman@usmans.info> Signed-off-by: georgereuben <reubengeorge101@gmail.com>
PR description
Add Soft failure reason for evm op results. This will help in tracer implementations such as call tracer which need soft failure reasons.
** New File:**
SoftFailureReason
Main Modifications:
org.hyperledger.besu.evm.operation.Operation
org.hyperledger.besu.evm.operation.AbstractCallOperation#execute
Fixed Issue(s)
Thanks for sending a pull request! Have you done the following?
doc-change-requiredlabel to this PR if updates are required.Locally, you can run these tests to catch failures early:
./gradlew spotlessApply./gradlew build./gradlew acceptanceTest./gradlew integrationTest./gradlew ethereum:referenceTests:referenceTests