Skip to content

New APIError wrapper for send_read_only_transaction responses (and other transact errors?) #121

@aaroncox

Description

@aaroncox

The responses returned by this API endpoint (and possibly others) doesn't match our APIError interface, and we lack any sort of helpers/interfaces to process and interpret these errors. Their format is currently:

response.processed.except {
  code: 3050003,                                                                                                                                                                                                                     
  name: "eosio_assert_message_exception",
  message: "eosio_assert_message assertion failure",
  stack: [
    {
      context: {
        level: "error",
        file: "cf_system.cpp",
        line: 14,
        method: "eosio_assert",
        hostname: "",
        thread_name: "read-2",
        timestamp: "2025-07-25T18:31:08.339",
      },
      format: "assertion failure with message: ${s}",
      data: {
        s: "Input symbol does not match pair reserve symbol",
      },
    }, {
      context: {
        level: "warn",
        file: "apply_context.cpp",
        line: 131,
        method: "exec_one",
        hostname: "",
        thread_name: "read-2",
        timestamp: "2025-07-25T18:31:08.339",
      },
      format: "${receiver} <= ${account}::${action} console output: ${console}",
      data: {
        console: "",
        account: "ytbhy15kxsbw",
        action: "swapoutput",
        receiver: "ytbhy15kxsbw",
      },
    }
  ],
}

A new set of interfaces/classes need to be created that allows this error format to be taken in, parsed, and then generate string representations of the errors so it can output something like:

Input symbol does not match pair reserve symbol

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions