Ink contract Transaction emit errors with hex code. How to map that to the actual error and get a trace of error in the contract?
1 Answer
As @forgetso says in the comment you can decode the error index to get the number. You can use the Substrate Utilities to get the number 27, and then go to your runtime to check which pallet is the 70 in your runtime.
Find in your node the macro construct_runtime!
(example of the node template). You should note the the order in which pallets are listed in the construct_runtime! macro is significant. By default, the pallet index starts at zero for the first pallet and is incremented for each pallet thereafter.
Because you are talking about an ink! contract probably is the pallet_contracts, so the error may be this:
/// The contract's code was found to be invalid during validation or instrumentation.
///
/// The most likely cause of this is that an API was used which is not supported by the
/// node. This hapens if an older node is used with a new version of ink!. Try updating
/// your node to the newest available version.
///
/// A more detailed error can be found on the node console if debug messages are enabled
/// by supplying `-lruntime::contracts=debug`.
CodeRejected,
Check this previous answer on StackExchange for more information about get the error.
27
if you remove the 6 trailing zeroes. This is the 27th error in whatever module70
refers to. Which chain are you using? I can't find a module with index 70 in my default substrate node.