Commit c0b7401
feat: add execution error decode command (#604)
Adds execution error decode command. This command takes a JSON for an
mcms-tools results json and attempts to decode the error revert reason
using the ABI registries injected by the proposal context.
TODO: Remove local replace once mcmslib is released with
smartcontractkit/mcms#547
.
## AI Summary
This pull request introduces significant improvements to error decoding
for EVM transaction failures, adds a new CLI command for error decoding,
and includes dependency updates. The most notable changes are the
addition of robust helpers for decoding EVM execution errors,
comprehensive tests for these helpers, and a new CLI command to decode
errors from JSON files using the ABI registry. Several dependencies in
`go.mod` have also been updated.
**EVM Error Decoding Enhancements**
* Added `DecodedExecutionError` struct and `tryDecodeExecutionError`
function in `err_decode_helpers.go` to extract and decode revert reasons
and underlying reasons from EVM execution errors, handling both custom
and standard errors, and supporting decoding with or without an ABI
registry.
* Introduced `decodeRevertData` and `decodeRevertDataFromBytes` helpers
to convert hex or byte revert data into human-readable error messages,
falling back to custom error selectors if no decoder is available.
**CLI Improvements**
* Added a new CLI command `error-decode-evm` in `mcms_v2.go` that reads
a JSON file containing transaction error data, loads the ABI registry
from the specified environment, decodes the error using the new helpers,
and prints the decoded revert and underlying reasons.
[[1]](diffhunk://#diff-726dd799d05204c24b69b8bda1f4ede5393c5955b360b076db8d11bc01f56a1bR115)
[[2]](diffhunk://#diff-726dd799d05204c24b69b8bda1f4ede5393c5955b360b076db8d11bc01f56a1bR150-R261)
**Testing**
* Added a comprehensive test `Test_tryDecodeExecutionError` in
`err_decode_helpers_test.go` that covers decoding custom errors,
standard errors, selectors, underlying reasons, and nil/empty cases for
the new error decoding logic.
**Dependency Updates**
* Updated several dependencies in `go.mod`, including
`github.com/smartcontractkit/chain-selectors`,
`github.com/smartcontractkit/chainlink-testing-framework/framework`,
`golang.org/x/oauth2`, and others. Also, replaced the
`github.com/smartcontractkit/mcms` dependency to use a local path.
[[1]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6R7-R8)
[[2]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L30-R39)
[[3]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L54-R56)
[[4]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L84-R86)
[[5]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L123-R131)
[[6]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L269-R271)
[[7]](diffhunk://#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6L297)
**Minor Improvements**
* Improved error logging and error joining in the
`MultiClient.retryWithBackups` method for more informative logs when
retryable errors occur.
* Cleaned up unnecessary comments in `maybeDataErr` for code clarity.
These changes collectively improve the developer experience when
diagnosing and understanding EVM transaction failures, both
programmatically and via the CLI.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>1 parent 8c67cb6 commit c0b7401
File tree
7 files changed
+470
-32
lines changed- .changeset
- chain/evm/provider/rpcclient
- engine/cld/legacy/cli/mcmsv2
7 files changed
+470
-32
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
401 | 401 | | |
402 | 402 | | |
403 | 403 | | |
404 | | - | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
405 | 408 | | |
406 | 409 | | |
407 | 410 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
33 | 37 | | |
34 | 38 | | |
35 | 39 | | |
| |||
57 | 61 | | |
58 | 62 | | |
59 | 63 | | |
60 | | - | |
| 64 | + | |
61 | 65 | | |
62 | 66 | | |
63 | 67 | | |
64 | 68 | | |
65 | | - | |
| 69 | + | |
66 | 70 | | |
67 | 71 | | |
68 | 72 | | |
69 | 73 | | |
70 | 74 | | |
71 | | - | |
| 75 | + | |
72 | 76 | | |
73 | 77 | | |
74 | 78 | | |
75 | 79 | | |
76 | 80 | | |
77 | 81 | | |
78 | | - | |
| 82 | + | |
79 | 83 | | |
80 | 84 | | |
81 | 85 | | |
| |||
181 | 185 | | |
182 | 186 | | |
183 | 187 | | |
184 | | - | |
| 188 | + | |
185 | 189 | | |
186 | 190 | | |
187 | 191 | | |
| |||
619 | 623 | | |
620 | 624 | | |
621 | 625 | | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
622 | 780 | | |
623 | 781 | | |
624 | 782 | | |
| |||
0 commit comments