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.
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 theevm_providers.ethereum
section. - [Testnet] A new parameter named
chainlink_dai_usd_address
added to theevm_providers.bsc
section. - [Testnet] A new parameter named
chainlink_dai_usd_address
added to theevm_providers.polygon
section. - [Mainnet / Testnet] A new chain named
base
added to theevm_providers
section. - [Mainnet / Testnet] The chain ID of
base
added to thewatch_list
where thehandler_type
isBridgeRelay
forhandler_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.