Skip to content

Changelog and Migration

Installing a new Underwriter version

From within the Underwriter’s directory:

  • Pull down the Underwriter if it is running.
    Terminal window
    docker compose down
  • Get the codebase changes:
    Terminal window
    git pull && git checkout main
  • Pull the corresponding docker image:
    Terminal window
    docker pull
  • Perform any migration steps as described on all relevant changelogs.
  • Start the Underwriter.
    Terminal window
    docker compose up -d


Release: GitHub


  • Complete overhaul of how the Underwriter determines whether to execute underwrites. Any swap that goes to a vault that has been created with an approved vault template, within a whitelisted endpoint is now allowed to be underwritten (allowed vault addresses had to be hardcoded before on the Underwriter’s configuration). This means that the Underwriter now supports newly created vaults on the fly.
  • The Underwriter now ‘syncs’ with the Relayer’s monitor service.
    • The blockDelay option of the Underwriter now configures an additional block delay to that of the Relayer.
  • A new minMaxGasDelivery configuration prevents the Underwriter from executing underwrites of cross-chain packets with a too low maxGasDelivery that would cause the packet from never arriving at the destination chain.
    • This configuration must be defined for ALL chains individually.
  • A new minRelayDeadlineDuration configuration prevents an Underwriter from underwriting a cross-chain swap with a delivery deadline that is too short.
  • A new minUnderwriteDuration configuration on the expirer prevents the Underwriter from auto expiring underwrites as a result of invalid configuration.
  • Block reorgs are detected using the blockDelay configuration.
  • Improve handling of l1 and l2 block numbers for chains like Arbitrum.
  • Full changelog.

Migration steps:

  • Update the Underwriter configuration:
    • The pool configuration has been removed.
    • New endpoint configuration (see config.example.yaml):
      • Every endpoint defines a whitelisted Catalyst factory + interface + incentives address combination, together with the approved vault template addresses and cross-chain channels configuration.
    • blockDelay has been moved to the monitor configuration.
    • underwriteBlocksMargin has been renamed renamed to maxUnderwriteDelay and is now time-based.
    • Optional resolver configuration for each chain
      • resolver: 'arbitrum' is now required for Arbitrum.
    • See config.types.ts for further advanced configuration options added that are not present on config.example.yaml.