You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cardano-cli creates datum values that are outside of the transaction body using indeterminate arrays. A hash value is then placed inside of the transaction body. In order to be able to sign with cardano-hw-cli, only things inside the tx body should be canonicalized. If any datum values outside are changed, hashes don't match and the transaction doesn't work. Leaving data outside of the tx-body as non-canonical should not change the ability of the ledger device to witness the transaction.
Notice that there is an indeterminate array outside of the transaction body in the 5: section inside 121_0 tag.
After running through transform. This data has been corrupted by making it into a determinate length array. This value should not affect signing on the ledger because it is OUTSIDE the transaction body.
The datum values are now in a determinate array and even though signing is allowed, the transaction cannot succeed because the hash value for the datum has changed.
The text was updated successfully, but these errors were encountered:
The workaround I've found is to go through the whole signing process with the ledgers and before submitting, fix the datum outside of the transaction body to put back in the indeterminate-length array.
cardano-hw-cli encodes and decodes cbor by using a third-party library, trying to avoid having to write a custom one. Hence it is hard to encode one part of an object with definite length arrays and another with indefinite length arrays, and it's also hard to tell the cbor library to stop decoding at some point. And it's messy and error-prone to do some string cut/paste/replace operations on encoded cbors. I'll discuss this with IOG.
cardano-cli creates datum values that are outside of the transaction body using indeterminate arrays. A hash value is then placed inside of the transaction body. In order to be able to sign with cardano-hw-cli, only things inside the tx body should be canonicalized. If any datum values outside are changed, hashes don't match and the transaction doesn't work. Leaving data outside of the tx-body as non-canonical should not change the ability of the ledger device to witness the transaction.
Example:
Notice that there is an indeterminate array outside of the transaction body in the
5:
section inside 121_0 tag.After running through transform. This data has been corrupted by making it into a determinate length array. This value should not affect signing on the ledger because it is OUTSIDE the transaction body.
After:
The datum values are now in a determinate array and even though signing is allowed, the transaction cannot succeed because the hash value for the datum has changed.
The text was updated successfully, but these errors were encountered: