Bifrost Node Release Report v2.0.0 & v2.0.1

:warning: The following report is a set of changes that deserve to be highlighted due to their impact on the Bifrost Network. For more information on setting up your node please follow our official documentation.

Summary

This report outlines the recent updates to the Bifrost Network’s Node client and runtime. This report contains combined update details for both v2.0.0 and v2.0.1.

The primary feature of the new release is its support for Bitcoin Relay Protocol (BRP). It also contains the upgrade to polkadot-sdk@stable2407 within Substrate and Frontier frameworks. Furthermore, this version introduces notable improvements in performance and efficiency across the client side and runtime pallets. For further details, please see the comprehensive descriptions that follow.

Client Upgrade

  • V1.3.0 → V2.0.0
  • V2.0.0 → V2.0.1

Client Upgrade Recommendation Levels

  • Full Nodes, RPC Nodes: mandatory
  • Basic Nodes, Others: highly recommended

Substrate and Frontier Upgrade

  • V1.3.0 → stable2407

:fire: High Impact

Integration of the Bitcoin Relay Protocol (BRP)

Ref: Release v2.0.0 by dnjscksdn98 · Pull Request #93 · bifrost-platform/bifrost-node

The Bifrost Network has now successfully implemented the Bitcoin Relay Protocol (BRP) on both Testnet and Mainnet. This new protocol, BRP, is built on top of CCCP to enhance interoperability with the Bitcoin network. The inbound bridge, representing the inflow of Bitcoin, transfers assets from the Bitcoin network to the Bifrost network, converting native BTC into wrapped BTC tokens. Conversely, the outbound bridge transfers assets from the Bifrost network to the Bitcoin network, converting wrapped BTC tokens into native BTC, ensuring smooth asset flow between the two networks.

The Bifrost Node implements three new native runtime pallets that interacts with each other, making BRP fully operational. The following pallets are as below.

  • The RegistrationPool pallet manages registered user information, such as vault addresses.
  • The SocketQueue pallet is responsible for validating and finalizing certain PSBT’s for asset transfers within BRP.
  • The RelayExecutives pallet knows which authority has the right privilege to participate within BRP.

Polkadot SDK migration: stable2407

Ref: NODE-106, deps: polkadot-sdk@stable2407 migration by dnjscksdn98 · Pull Request #67 · bifrost-platform/bifrost-node

The Bifrost Nodes’ runtime and client, built with Substrate and Frontier libraries targeting branch v1.3.0, have now been updated to stable2407. This update leads to a couple of major features with significant enhancements in both performance and efficiency.

Notable Updates

  • [Frontier] Ethereum Cancun Upgrade
    • Two new opcodes (TLOAD and TSTORE) have been added, which were introduced by EIP-1153.
    • One new opcode (MCOPY) has been added that was introduced by EIP-5656.
    • Changes the behavior of the SELFDESTRUCT opcode that was introduced by EIP-6780.
  • [Frontier] Fix the gas discrepancy of eth_estimateGas and the actual execution (link.)
  • [Frontier] Add standard debug namespace RPC methods (link.)
  • [Substrate] Implement new pallets to the runtime: safe-mode and tx-pause (link.)
  • [Substrate] Migrate NativeElseWasmExecutor to WasmExecutor (link.)
  • [Substrate] Optimize logic for gossiping assignments. This gives us a 15% to 20% reduction in CPU usage (link.)
  • [Substrate] Optimize finalization performance. This gives us faster and fewer memory allocations (link.)

Process to update node client

Please follow the steps below to update your node client.

Step 1.

First, stop your bifrost-node service and remove the installed executable binary file.

systemctl stop bifrost-node.service
rm /var/lib/bifrost-data/bifrost-node

Step 2.

Then, re-download the latest bifrost-node binary.

wget "https://github.com/bifrost-platform/bifrost-node/releases/latest/download/bifrost-node"

Step 3.

Now, the installed binary must be granted execution permission and moved to your chain data directory.

chmod +x bifrost-node
chown BIFROST_SERVICE bifrost-node
mv bifrost-node /var/lib/bifrost-data

Step 4.

At last, restart your bifrost-node service.

systemctl restart bifrost-node.service