Bifrost Relayer Release Analysis v1.0.3

:warning: The following report is a set of changes that deserves to be highlighted due to their impact on the Bifrost Network. Highlights are categorized into High Impact, Medium Impact, and Low Impact for ease of navigation.

For more information on setting up your relayer please follow our official documentations.

Summary

This report analyzes the recent updates to the Bifrost Network’s (CCCP) Relayer. The primary feature of this release is its support for Base Mainnet/Testnet, as well as the addition of DAI as a new oracle asset. Both bifrost-relayer.rs (Rust) v1.0.3 and bifrost-relayer.py (Python) v0.7.16 have been updated to accommodate these changes. Moreover, this report specifically highlights the upgrades made to bifrost-relayer.rs.

:warning: Please note that it is mandatory to upgrade your Relayer client and configurations if you’re operating a Relayer on our Mainnet or Testnet.

High Impact

Support Base Mainnet and Testnet

Client: Rust, Python

We wish to inform you that Bifrost Network has begun its integration with a new network, the Base Network, an Ethereum Layer 2 (L2) blockchain backed by Coinbase. Currently, CCCP offers users a native cross-chain functionality between Base and Bifrost Network. As this support is in its early stage, only ETH and DAI from the Base Network are supported. However, we plan to include other assets from the Base Network soon.

Please note that Mainnet and Testnet Relayer operators are required to prepare their own Base node or from third-party node providers. The running node must be archive-mode enabled and fully synced. When after the node is prepared, please follow the steps below to upgrade your Relayer binary (for Rust) or Source code (for Python) and also your configurations.

DAI Support and Oracle Feeding Enhancement

Client: Rust, Python

Bifrost Network has incorporated support for DAI, a leading stable coin, to function as a price oracle asset. Initially, this update permits users to bridge DAI exclusively between Base and the Bifrost Network. Nevertheless, Bifrost team aims to broaden the bridging capabilities for DAI shortly. Moreover, the latest release have refined the oracle price feeding logic to enhance resilience against various price source failures, including server errors and unforeseen API changes.

Low Impact

Update Relayer’s Cost-Efficiency Logic

Client: Rust

In CCCP’s cross-chain operations, the quorum transactions may be reverted if any other relayer has already processed it. This implies that any subsequent relayer could incur wasted operating expenses. To mitigate this, CCCP Relayer employs logic that determines whether the quorum process is complete by monitoring the mempool and blocks on the target blockchain. This release extends that feature to the Base Network. The logic will only have effect when evm_providers.<chain>.is_relay_target parameter in your configuration YAML file is set to true.

Txpool namespace availability check logic: This logic allows only unique transactions for external chains, utilizing the txpool_content JSON RPC method. However, activating this feature requires the txpool namespace to be enabled on your running node, that was previously verified through the txpool_status method. If the response is successful, txpool verification becomes activated. It’s worth noting that for Base Network, even if the txpool namespace is enabled, the txpool_content method may still be unavailable. To address this, we now check availability using the txpool_content method directly.

Process to update bifrost-relayer.rs client

Please follow the steps below to update your relayer client.

Step 1.

First, update your configuration YAML file based on the “Configuration updates required” section below. When adding your Base RPC endpoint please use the following providers.

Step 2.

Then, remove or backup the previous bifrost-relayer binary file.

rm <PATH_TO_BIFROST_RELAYER_BINARY>

Step 3.

Next, install the latest version of bifrost-relayer into the same directory and update permissions. (In case of directory changes, the Systemd configuration file should be modified as well)

wget "https://github.com/bifrost-platform/bifrost-relayer.rs/releases/latest/download/bifrost-relayer"
chmod +x bifrost-relayer

Step 4.

At last, restart the Systemd service.

sudo systemctl restart bifrost-relayer

Configuration updates required

config.mainnet.yaml : https://github.com/bifrost-platform/bifrost-relayer.rs/blob/main/configs/config.mainnet.yaml

config.testnet.yaml : https://github.com/bifrost-platform/bifrost-relayer.rs/blob/main/configs/config.testnet.yaml

  • [Mainnet] A new parameter named chainlink_dai_usd_address added to the evm_providers.ethereum section.
  • [Testnet] A new parameter named chainlink_dai_usd_address added to the evm_providers.bsc section.
  • [Testnet] A new parameter named chainlink_dai_usd_address added to the evm_providers.polygon section.
  • [Mainnet / Testnet] A new chain named base added to the evm_providers section.
  • [Mainnet / Testnet] The chain ID of base added to the watch_list where the handler_type is BridgeRelay for handler_configs.

Process to update bifrost-relayer.py client

Please follow the steps below to update your relayer client.

Step 1.

First, checkout to the master branch and pull new updates. Then update your configuration JSON file based on the “Configuration updates required” section below. When adding your Base RPC endpoint please use the following providers.

Step 2.

Then, activate your virtual environment.

source venv/bin/activate

Step 3.

Next, install the updated packages specified in the requirements.txt file.

pip install -r requirements.txt --upgrade

Step 4.

At last, restart the Systemd service.

sudo systemctl restart bifrost-relayer

Configuration updates required

configs/entity.relayer.private.json : https://github.com/bifrost-platform/bifrost-relayer.py/blob/master/configs/entity.relayer.private.template.json

configs-testnet/entity.relayer.private.json : https://github.com/bifrost-platform/bifrost-relayer.py/blob/master/configs-testnet/entity.relayer.private.template.json

  • [Mainnet] A new parameter named BASE_MAIN added. This should be set to your Base Mainnet RPC endpoint.
  • [Testnet] A new parameter named BASE_GOERLI added. This should be set to your Base Goerli RPC endpoint.
1 Like