Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: unpack and log agglayer errors #158

Merged
merged 3 commits into from
Nov 12, 2024

Conversation

goran-ethernal
Copy link
Collaborator

@goran-ethernal goran-ethernal commented Nov 1, 2024

Description

This PR introduces error unpacking when getting a certificate header using the interop_getCertificateHeader rpc endpoint on agglayer.

When agglayer marks a certificate as InError it also packs the error in the json format of CertificateHeader status field. These errors can be different, where each error has its own unique error code and structure.

This PR handles unmarshaling of these different errors, so we can log them when we get the certificate header from agglayer, which can be useful for debugging purposes, to know in a clear way what was the cause of error when settling a certificate.

Types of errors from Agglayer

There are 3 main types of errors that the agglayer can return:

  1. TypeConversionError - errors that can occur on failure on the pessimistic proof witness generation from the LocalNetworkStateData and the provide Certificate. List of TypeConversionErrors can be found here: https://agglayer.github.io/agglayer/agglayer_types/enum.Error.html
  2. ProofGenerationError - errors that can occur on failure on the pessimistic proof execution, either natively or in the prover. List of ProofGenerationErrors can be found here: https://agglayer.github.io/agglayer/pessimistic_proof/enum.ProofError.html.
  3. ProofVerificationError - errors that can occur on failure on the proof verification. List of ProofVerificationErrors can be found here: https://agglayer.github.io/agglayer/agglayer_types/enum.ProofVerificationError.html

What to review

Only .go files. .json files are just test vectors for different errors.

@goran-ethernal goran-ethernal self-assigned this Nov 1, 2024
@goran-ethernal goran-ethernal force-pushed the feat/agglayer-error-handling branch 3 times, most recently from a076f0d to 4ef77b4 Compare November 5, 2024 14:03
@goran-ethernal goran-ethernal marked this pull request as ready for review November 5, 2024 14:18
agglayer/client.go Outdated Show resolved Hide resolved
agglayer/proof_generation_error.go Show resolved Hide resolved
@goran-ethernal goran-ethernal force-pushed the feat/agglayer-error-handling branch 2 times, most recently from 7915df1 to f3c8b33 Compare November 8, 2024 14:17
Copy link

sonarcloud bot commented Nov 12, 2024

@goran-ethernal goran-ethernal merged commit 7545d8f into develop Nov 12, 2024
10 checks passed
@goran-ethernal goran-ethernal deleted the feat/agglayer-error-handling branch November 12, 2024 10:39
joanestebanr added a commit that referenced this pull request Nov 12, 2024
* feat: unpack and log agglayer errors (#158)

* feat: unpack and log agglayer errors

* feat: agglayer error unpacking

* fix: lint and UT

* feat: epoch notifier (#144)

- Send certificates after a percentage of epoch
- Require epoch configuration to AggLayer
- Change config of `aggsender` adding: `BlockFinality` and `EpochNotificationPercentage`

* refact: GetSequence method (#169)

* feat: remove sanity check (#178) (#179)

---------

Co-authored-by: Goran Rojovic <[email protected]>
Co-authored-by: Rachit Sonthalia <[email protected]>
Co-authored-by: Toni Ramírez <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants