pycardano icon indicating copy to clipboard operation
pycardano copied to clipboard

RedeemerTag for certificates is CERT rather than CERTIFICATE

Open SCMusson opened this issue 1 year ago • 2 comments

Describe the bug Getting this error trying to build a registration and delegation stake transaction using a staking script:

pycardano.exception.TransactionBuilderException: Cannot find execution unit for redeemer: {
  'data': 0,
  'ex_units': {'mem': 0, 'steps': 0},
  'index': 1,
  'tag': {
    '__objclass__': <enum 'RedeemerTag'>,
    '_name_': 'CERT',
    '_sort_order_': 2,
    '_value_': 2,
  },
} in estimated execution units: {'certificate:1': {'mem': 36122, 'steps': 6633740}}

BlockFrostChainContext is the ChainContext I'm using here, I'm not sure if the backend will change things.

I'm guessing that blockfrost is using the tag name CERTIFICATE while pycardano is using CERT

Should RedeemerTag.CERT actually be RedeemerTag.CERTIFICATE or is there some compatibility code missing?

#312 It seems that reward/withdrawal tag was previously different as well.

SCMusson avatar Oct 14 '24 10:10 SCMusson

Reward/Withdrawal was previously different because the tags changed between OgmiosV5 and V6. Either changing the name of the Tag (which is automatically the tag name used for the JSON serialization) or adding compatibility code to OgmiosV6/Blockfrost backend akin to #312 should do the trick.

nielstron avatar Oct 14 '24 10:10 nielstron

BTW Blockfrost is internally using Ogmios as well, that's why my reasoning is mainly about Ogmios and not Blockfrost.

nielstron avatar Oct 14 '24 10:10 nielstron