[CRE-4708] Enable EVM transfer in LOOP mode#22832
Conversation
|
✅ No conflicts with other open PRs targeting |
|
I see you updated files related to
|
There was a problem hiding this comment.
Pull request overview
Risk Rating: HIGH
This PR updates the /v2/transfers EVM transfer endpoint to support executing native transfers via a LOOP relayer when LegacyEVMChains aren’t available, and adds supporting mocks/tests for the relayer path.
Changes:
- Add relayer-based execution path for EVM transfers (fallback when legacy chain lookup fails).
- Add unit tests covering the relayer transfer path and the “no legacy/no relayer” error case.
- Add mockery config + generated mock for the relayer interface.
Targeted areas for scrupulous human review:
EVMTransfersController.Createchain selection + error-to-HTTP mapping (avoid turning client input errors into 500s).CreateWithRelayerrequest validation parity with legacy mode (e.g., zerofromaddress), correct context usage, and response envelope compatibility (eth_txvsevm_tx).
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| core/web/mocks/relayer.go | Adds generated mock for relayer interface used by web controller tests. |
| core/web/evm_transfer_controller.go | Adds relayer fallback + new relayer execution path for EVM transfers. |
| core/web/evm_transfer_controller_test.go | Adds tests for relayer transfer success and missing-chain/relayer error behavior. |
| .mockery.yaml | Configures mockery generation output location for the relayer mock. |
Files not reviewed (1)
- core/web/mocks/relayer.go: Generated file
|




Current EVM transfer command uses EVMLegacyChain. In this PR we add an alternative code path which calls Relayer.Transact and does not use EVMLegacyChain. We started by enabling this new code path as a fallback if EVMLegacyChain is not available. Later, we will deprecate EVMLegacyChain and remove the corresponding code path.