Skip to content

v2.5.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 01 Feb 17:15
· 57 commits to main since this release
be5a4cf

The long-awaited v2.5.0 release comes with quite a few new notable features, a handful of enhancements, and a long list of fixes and performance tweaks. Core dependencies have been upgraded to ensure rly now supports the CometBFT v0.38.x, Cosmos SDK v0.50.x, and ibc-go v8.0.x lines. 

Highlighted Features

External feegrants

You can now use feegrant enabled addresses associated with private keys that the relayer operator does not actually have control of. This means that the grantees are authorized externally, i.e. someone else controls the granter's private key.

Previously, the feegrant feature only supported addresses associated with private keys the relayer operator controlled and had configured via the relayer.
 
 See: (#1338

CometBFT client wrapper

With the introduction of CometBFT v0.38.0 we were originally maintaining a fork of CometBFT to account for breaking changes to the API exposed via the RPC client, notably the BlockResults call. This approach was both brittle and problematic due to duplicate proto types being registered. 

We have now introduced cometbft-client as a dependency in the relayer. The new dependency serves as a slimmed-down version of CometBFT which only includes the packages and source code files necessary to utilize the RPC client. This allows us to avoid maintaining an entire fork of the repo, while also having fine-grained control over breaking changes introduced in CometBFT moving forward to ensure backwards compatibility with older versions.

See: (#1384) & (#1388)

Configurable limits on receiver and ICS-20 memo fields

Users can now configure a max size limit on both the receiver and ICS-20 memo fields via the new config fields MaxReceiverSize & ICS20MemoLimit respectively. 

This allows relayer operators to ignore ICS-20 packets with receiver or memo fields whose size is greater than these configured values. 

See: (#1377)

Ability to fine-tune client creation parameters

A few new flags have been added to enable a greater level of configuration when initializing new IBC light clients via the rly tx clients and rly tx client commands.

  • --max-clock-drift sets the MaxClockDrift value; if not set, the default value of 10 minutes is used. 

  • --client-tp-percentage, overrides the current trusting period value utilized by the relayer when creating a new client, which is currently 85% of a chain's unbonding period. If a user specifies a custom trusting period with the existing client-tp flag this value is ignored.

  • --client-unbonding-period enables setting a custom unbonding period when creating a new client. This is useful because, in order to substitute an expired client with a new one, the new client must match the expired client's state (which includes the unbonding period). Failure to ensure these values match results in an error in ibc-go.

See: (#1369), (#1365) & (#1313)

Stuck packet flushing

Adds the new flags --stuck-packet-chain-id, --stuck-packet-height-start, and --stuck-packet-height-end to the rly tx start and rly tx flush commands. These new flags are used for starting up the CosmosChainProcessor by querying a specific range for a chain ID before jumping to current and relaying anything that needs to be handled by the queried range.

This is useful if stuck packets have been identified between a particular range of block heights. Without this feature, operators would normally have to start the relayer with a large initial block history via the --block-history flag, this can be incredibly resource and time-intensive for larger values.

Note: This is for advanced usage only and should only be used for mitigation scenarios, as the relayer will not have a full picture of what happened between --stuck-packet-height-end and the current chain tip. This could lead to failures if packets were already handled since the stuck packet height range.

See: (#1296

Additional Features

  • Add Prometheus metrics for unrelayed-packets and unrelayed-acknowledgments. (#1356)  
  • Add the ability to configure log level in global config. (#1324)  
  • Setup keys for all configured chains with a single mnemonic with the --restore-all flag in rly keys restore. (#1190)  
  • Edit configured RPC endpoints for a chain using the rly chains set-rpc command. (#1292)  
     

Enhancements

  • Ensure that ✘ is displayed for clients if they are expired in rly path list. (#1352)  
  • Make tx broadcast errors more verbose. (#1344)  
  • Add unbonding period to client expiration query. (#1327)  

Fixes

  • Fix flush race which caused acknowledgements to not be fully cleared from the caches when giving up on sending a packet message after max retries. (#1363)  
  • Register concrete type for type URL of EthAccount. (#1390)  
  • Update penumbra protos and fix tx.go, query.go with new apis. (#1379)  
  • Add handling for MsgTimeout in Penumbra ChainProvider. (#1378)  
  • Ensure gas simulation returns proper gas amount for feegrants. (#1364)  
  • Fix Prometheus metric cosmos_relayer_observed_packets observing packets on irrelevant channels. (#1345)  
  • Properly pipe memo from cli to broadcast tx logic for MsgTransfer and MsgRegisterCounterpartyPayee. (#1362)  
  • Update penumbra protos & make adjustments to account for CometBFT upgrade. (#1360)  
  • Use ibc-data prefix in QueryTendermintProof in Penumbra ChainProvider. (#1361)  
  • Fix getAnchor function in Penumbra ChainProvider so it doesn't query out of range heights. (#1358)  
  • Update Penumbra proof spec to new multistore format. (#1355)  
  • Add _total suffix to counter metrics. (#1347)  
  • Use the ChainProvider's InterfaceRegistry instead of creating a new default one. (#1346)  
  • Fix cosmos_relayer_tx_failure metric counting the same error multiple times. (#1343)  
  • Cleanup cached MsgChannelCloseInit msgs after MsgChannelCloseConfirm is observed. (#1326)  
  • Add does not exist check for loadConfigFile error. (#1325)  
  • Add missing MsgChannelCloseConfirm msg type when parsing from events. (#1196)  
  • Fix issue with packets being relayed even when estimated gas is higher than configured max gas limit. (#1302)  
  • Properly set max gas limit when configured value is greater than zero. (#1303)  

Other

  • Update security procedures for Hacker One Program. (#1382)  
  • Add ICS-29 guide to docs/. (#1375)  
  • Update relayer troubleshooting doc. (#1350)  
  • Clean up docs and fix typos. (#1319)  
  • Remove problematic self hosted GitHub runners. (#1306)  

Changelog

  • be5a4cf ci: bump goreleaser-cross version (#1391)
  • a9ce8d6 Problem: no concrete type registered for type URL of EthAccount (#1390)
  • f76614d update penumbra protos and fix tx.go, query.go with new apis (#1379)
  • 287354b Fix flush race (#1363)
  • ef1578e refactor: encapsulate slim client in wrapper (#1388)
  • 7cb083c External feegrants (#1338)
  • 5ab55c0 feat: add configurable limits for receiver and ICS-20 memo fields (#1377)
  • 1ef7db5 feat: introduce cometbft client wrapper to eliminate forked repo (#1384)
  • 9bd144e Update Security Procedures for Hacker One Program (#1382)
  • 4ad5ab2 fix: add handling for MsgTimeout in Penumbra ChainProvider (#1378)
  • caf9d52 When creating a client, make max-clock-drift configurable  (#1369)
  • 3b05fdb add ICS-29 guide to path docs (#1375)
  • 71acbb8 build(deps): bump github.com/containerd/containerd in /interchaintest (#1372)
  • c98f389 build(deps): bump github.com/dvsekhvalnov/jose2go in /interchaintest (#1371)
  • 820caf5 build(deps): bump github.com/dvsekhvalnov/jose2go from 1.5.0 to 1.6.0 (#1370)
  • c017b8c build(deps): bump golang.org/x/crypto from 0.15.0 to 0.17.0 (#1366)
  • 3655821 build(deps): bump golang.org/x/crypto in /interchaintest (#1367)
  • 56a534c Link custom client trusting period ratio (#1365)
  • ba17805 Add Prometheus metrics for unrelayed-packets and unrelayed-acknoledgments (#1356)
  • f52b342 Update troubleshoot doc (#1350)
  • 523748e Problem: simulate gas is less than required with feegrants (#1364)
  • cfe8b93 fix: Observed Packet Metric (#1345)
  • 654ea9f fix: pipe memo from cli to broadcast tx logic for MsgTransfer and MsgRegisterCounterpartyPayee  (#1362)
  • 912472c fix: update penumbra protos & make adjustments to account for cometbft upgrade (#1360)
  • 8669bf0 penumbra: use ibc-data prefix in QueryTendermintProof (#1361)
  • cf2754a penumbra provider: fix getAnchor: don't query out of range heights (#1358)
  • dd40ff2 penumbra: update proof spec to new multistore format (#1355)
  • 7f03bc7 rename metric (#1347)
  • 1c18c2b Ensure that ✘ is displayed for clients if they are expired (#1352)
  • c6e5bdb fix: Use the provider IR instead of creating a new one (#1346)
  • 7efcd30 verbose tx error (#1344)
  • 34d3d4f fix: cosmos_relayer_tx_failure metric redundant count (#1343)
  • be8ebe0 Auto add issues to Strangelove project board (#1337)
  • d0b2700 deps: bump version numbers for handful of deps (#1334)
  • 7e02760 Add Unbonding Period to clients-expiration query.  (#1327)
  • c0783eb upgrade deps for cometbft v0.38.0, ibc-go v0.8.0, sdk v0.50.0 and handle breaking changes (#1312)
  • 27cf122 fix: cleanup close init after close confirmed (#1326)
  • 2c60f6c feat: add log-level in global config (#1324)
  • 9b80dd0 fix: add not exist check for loadConfigFile error (#1325)
  • 26aa983 Create new client with custom unbonding period (#1313)
  • e4e9f27 docs: fix typos (#1319)
  • d0deac5 Harry/wallet init (#1190)
  • cc75c04 fix: add missing msg type when parse from event (#1196)
  • cb4708b edit rpc endpoints using command (#1292)
  • 200d0fb Remove self hosted runners (#1306)
  • 6bd9c02 Stuck packet (#1296)
  • 892e52c Problem: packet get relayed even estimated gas is higher than max gas (#1302)
  • a3cb991 Problem: estimate less gas when miss max gas on txf when simualte runTx (#1303)