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.
This report analyzes the recent updates to the Bifrost Network’s (CCCP) Relayer. The primary feature of this release is its support for Arbitrum Mainnet(One) & Testnet (Goerli), as well as some minor fixes. The target client is bifrost-relayer.rs (Rust) that has been updated to accommodate these changes.
- V1.0.4 → V1.0.5
Please note that it is mandatory to upgrade your Relayer client and configurations if you’re operating a Relayer on our Mainnet or Testnet.
We’re thrilled to introduce all of our users that Bifrost Network has integrated with a new network, the Arbitrum Network, a Layer 2 (L2) blockchain designed to scale Ethereum. CCCP now offers users native cross-chain functionality between Arbitrum and Bifrost Network. As this support is in its early stage, only ETH, USDT and USDC from the Arbitrum Network are supported. However, we plan to include other assets from the Arbitrum Network soon.
Note that Mainnet and Testnet Relayer operators are required to prepare their own Arbitrum node or from third-party node providers. The running node must be archive-mode enabled and fully synced. Follow the steps below to upgrade the Relayer binary (for Rust) and configurations after the node is prepared.
Please make sure to correctly configure the RPC endpoint. The chain information is as below.
|Name||Chain ID||Block Explorer||Environment|
The Bifrost Relayer performs a bootstrap process upon startup to detect any missed CCCP events. This ensures that no events are overlooked, even in cases of unforeseen interruptions of Relayer such as power outages. To utilize this feature, you can activate it by adjusting the
bootstrap_config in the YAML settings.
Within the Bifrost Relayer, the bootstrap module estimates the block number for each external chain, which will then be designated as the starting block number for spotting missed events. To accomplish this, the Relayer takes the average block time of the target chain. The variable used to store this average block time was an unsigned integer. Consequently, for chains like Arbitrum (the avg.block time is 0.2~0.3 sec), this could sometimes result in the integer variable being set to zero, leading the approximated result to also be zero. To address this, we’ve modified the variable type to a float.
Previously, the maximum bootstrap offset was available to the past 64 rounds. In the case of Bifrost Mainnet, a single round lasts for 12 hours, which means that 64 rounds will approximately lead to the past one month blockchain data. However, we’ve determined that the value was set too high, which could unintentionally cause an overload. To avoid the overhead, we have changed the value from 64 rounds to 14 rounds.
Please follow the steps below to update your relayer client.
First, update your configuration YAML file based on the “Configuration updates required” section below. When adding your Arbitrum RPC endpoint please use one of the following providers.
Then, remove or backup the previous
bifrost-relayer binary file.
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
At last, restart the Systemd service.
sudo systemctl restart bifrost-relayer
- [Mainnet / Testnet] A new chain named
arbitrumadded to the
- [Mainnet / Testnet] The chain ID of
arbitrumadded to the