/bifrost-1

A parachain focused on building bridges of chains based on PoS consensus.

Primary LanguageRustGNU General Public License v3.0GPL-3.0

Bifrost Banner

Bifrost Logo

Welcome,

Bifrost is a Web3 derivatives protocol that provides decentralized cross-chain liquidity for staked assets. By leveraging on the cross-consensus message (XCM) it can provide cross-chain liquid staking services for multiple chains.

Our mission is to provide standardized cross-chain interest-bearing derivatives for Polkadot relay chains, parachains, and heterogeneous chains bridged with Polkadot.

👉 Discover the Bifrost at bifrost.finance.
👉 Learn to use the Bifrost with our wiki.

🐣 Supported by

Web3 Foundation Grants Substrate Builders Program Web3 Bootcamp

master-build Codacy Badge Substrate Version License Dapp Analytics Discord Twitter

Get Build Help

make help

Install Rust and required tools

curl https://sh.rustup.rs -sSf | sh
make init

Build binary

make build-all-release

Format code

make format

Lint code

make clippy

Testing

make test-all

Generate runtime weights

if runtime logic change we may do the benchmarking to regenerate WeightInfo for dispatch calls

make generate-all-weights

Testing runtime migration

If modify the storage, should test the data migration before production upgrade.

# bifrost kusama
make try-kusama-runtime-upgrade

# bifrost polkadot
make try-polkadot-runtime-upgrade

Run development chain

make run-dev

Run local testnet with polkadot-launch

Install polkadot-launch

yarn global add polkadot-launch
cd -

Build polkadot

git clone -n https://github.com/paritytech/polkadot.git /tmp/polkadot
cd /tmp/polkadot
git checkout release-v0.9.22
cargo build --release
cd -

Launch Polkadot and the parachain

cd -
polkadot-launch ./scripts/bifrost-launch.json

It will take about 1-2 minutes for the parachain to start producing blocks.

Run local testnet with parachain-launch

Install parachain-launch

yarn global add @open-web3/parachain-launch

Generate docker files

parachain-launch generate --config=scripts/bifrost-docker-launch.yml --yes

It will pull images and generate required docker files in a folder called output in your current working directory

Start relaychain and parachain

To start the nodes, navigate to the output folder that the generated docker scripts in and start containers:

cd ./output
docker-compose up -d --build

Run full node

Create bifrost-fullnode directory, generate node-key and get bifrost.json

mkdir -p ~/node-key
subkey generate-node-key --file ~/node-key/bifrost.key

Start full node

Replace your-fullnode-name

docker pull bifrostnetwork/bifrost:latest
docker run -d \
-v ~/node-key:/node-key \
-p 9944:9944 \
-p 9933:9933 \
-p 30333:30333 \
bifrostnetwork/bifrost:latest \
  --name your-fullnode-name \
  --base-path "/data" \
  --node-key-file "/node-key/bifrost.key" \
  --chain "/spec/bifrost.json" \
  --pruning=archive \
  --rpc-external \
  --ws-external \
  --rpc-cors all \
  --state-cache-size 0 \
  --execution wasm