stacks-core icon indicating copy to clipboard operation
stacks-core copied to clipboard

Improve emitted events for Clarity post-conditions

Open wileyj opened this issue 9 months ago • 1 comments

consider the following failed transaction:

$ curl -sL https://api.hiro.so/extended/v1/tx/0xe0a149de6e7f367449fff50e3fa86399d6d708273ab8dabe5bbd3ff380386624 | jq -r .post_conditions,.tx_status
[
  {
    "type": "fungible",
    "condition_code": "sent_equal_to",
    "amount": "300000000000",
    "principal": {
      "type_id": "principal_standard",
      "address": "SP..."
    },
    "asset": {
      "contract_name": "miamicoin-token-v2",
      "asset_name": "MIA",
      "contract_address": "SP1H1733V5MZ3SZ9XRW9FKYGEZT0JDGEB8Y634C7R"
    }
  }
]
abort_by_post_condition

in this example, the tx failed due to an incorrect asset_name being used MIA vs the expected miamicoin.

the emitted event that is consumed by the API (and then exposed to the explorer UI) is a bit too generic about why it has failed ("rolled back by a post condition", likely from the tx_status field the API is returning).

I propose adding some extra data to the event emitted by stacks-node, specifiying which (possibly any) post-condition is actually causing the tx to fail. Once added, there will need to be changes downstream to the event_observers that process this event.

wileyj avatar May 02 '24 15:05 wileyj

@wileyj I wanted to give this one a try, if that's okay! I opened #4814, but could you (or someone else) give it a look and lmk if it's on the right track? If so, I'll update the impacted tests and improve the code.

ldiego08 avatar May 21 '24 20:05 ldiego08