feat(ift): extend catalyst to support IFT messages#63
Closed
johnnylarner wants to merge 13 commits intomainfrom
Closed
feat(ift): extend catalyst to support IFT messages#63johnnylarner wants to merge 13 commits intomainfrom
johnnylarner wants to merge 13 commits intomainfrom
Conversation
…ps and gas block limits
Remove the aggregate Err field from SentTx in both cosmos and ethereum chains. Rename SourceErr to BroadcastErr and RelayerErr to PostBroadcastErr to align with the txMode abstraction. Add Failed() and Error() methods that derive overall status from the specific error fields and TxResponse.
…elay config - add MsgIFTTransfer as a case in both ethereum and cosmos TxFactory BuildTxs/CreateMsg, with baseline support for high-throughput runs - replace implicit HandlePostBroadcast with explicit RelayConfig that specifies a relayer URL and which message types should be relayed - remove txMode interface and mode.go from both chains - move relayer config from ift.relayer to top-level relay in spec - use SuggestGasTipCap instead of hardcoded 2 gwei default for EVM gas fee estimation - fix EVM IFT timeout to use Unix seconds instead of nanoseconds
dhfang
reviewed
Apr 16, 2026
| } | ||
|
|
||
| maxGas := params.ConsensusParams.Block.MaxGas | ||
| if maxGas == -1 { |
Contributor
There was a problem hiding this comment.
Our test chain did not have max gas configured causing catalyst to fail on the maxGas check below in lin 196
dhfang
reviewed
Apr 16, 2026
| r.logger.Debug("processing block", zap.Int64("height", block.Height), | ||
| zap.Time("timestamp", block.Timestamp), zap.Int64("gas_limit", block.GasLimit)) | ||
|
|
||
| if r.spec.SendInterval > 0 && time.Since(lastSendTime) < r.spec.SendInterval { |
Contributor
There was a problem hiding this comment.
Time based tx submission interval
dhfang
reviewed
Apr 16, 2026
| Err: nil, | ||
| } | ||
|
|
||
| if err := r.relayTxHash(ctx, msgType, res.TxHash); err != nil { |
Contributor
There was a problem hiding this comment.
This only executes if the operator has relaying configured.
dhfang
reviewed
Apr 17, 2026
| wg := sync.WaitGroup{} | ||
| blockStats := make([]loadtesttypes.BlockStat, endBlock-startBlock+1) | ||
| receipts := make(map[uint64]gethtypes.Receipts) | ||
| msgTypeByHash := make(map[common.Hash]loadtesttypes.MsgType, len(sentTxs)) |
Contributor
There was a problem hiding this comment.
Small refactor to store the msg type by tx hash in a map and look it up when building test stats later.
Contributor
|
PR author is not in the allowed authors list. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds end-to-end IFT transfer support to Catalyst. Senders can drive MsgIFTTransfer load from cosmos or EVM chains to cosmos or EVM destinations and configure Catalyst to forward transactions to an ibc relayer.
Changes
ift/accounts/{cosmos,evm}.go).SuggestGasTipCapfrom the node rather than a hardcoded 2 gwei default — works on L2s without manual tuning.send_intervalconfig.In a future PR, I will extend metric collection in the runners to capture relaying failures.