Skip to content

feat(network): Local Tx Submission errors#598

Merged
scarmuega merged 39 commits into
txpipe:mainfrom
sterraf:CollectError_merged
Feb 13, 2025
Merged

feat(network): Local Tx Submission errors#598
scarmuega merged 39 commits into
txpipe:mainfrom
sterraf:CollectError_merged

Conversation

@sterraf
Copy link
Copy Markdown
Contributor

@sterraf sterraf commented Feb 12, 2025

This PR decodes the RejectReason after a failed local Tx submission by structuring into two variants:

  1. Plutus errors (an ASCII string); or
  2. an (Era, Vec<TxError>) pair.

The TxError type corresponds to the Conway era ledger transaction errors. Its only analyzed variant is that of ConwayUtxowPredFailure for which, in turn, 6 variants have been implemented along with their deeper structure.

For each error having variants not yet analyzed, a temporary "raw" variant was added to hold the CBOR information.

Unit-tests using an up-to-date preprod node response were added to codec.rs. For instance, I had to implement the SMaybe option type with the codec corresponding to (S)Maybe type of the Cardano node, required for many types (different to default one for Option<T>.

This PR properly subsumes #562, #584, #585, #588, and #593, which are to be closed.

@scarmuega scarmuega merged commit 07ec18b into txpipe:main Feb 13, 2025
@ginnun
Copy link
Copy Markdown
Contributor

ginnun commented Feb 20, 2025

For anyone interested, we have a full working implementation of all the tx submission errors in this fork: https://github.com/blockfrost/pallas/tree/feat/blockfrost

This fork also generates identical error messages to the Haskell native cardano submit API.

We plan to open a PR once we do a bit of refactoring.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

3 participants