Only this pageAll pages
Powered by GitBook
1 of 21

Rover - Liquid Staking on Botanix

Introduction

Loading...

Loading...

Loading...

Loading...

Loading...

Technical Documentation

Loading...

Loading...

Loading...

Loading...

Loading...

User Guides

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

FAQ

Loading...

Liquid Staking First Principles

Maximizing Rewards with BTC: The Most Capital-Efficient Method

Staking allows BTC token holders, such as those who purchased BTC on an exchange or bridged to Botanix, to assign some or all of their tokens to specific validators. This process enhances the voting power of these same validators.

There are two ways to participate in staking: directly staking to a validator or delegating to a stake pool. In either scenario, delegators maintain control over their staked tokens.

Stake Pools <> Liquid Staking

On Botanix, stake pools consist of multiple validator nodes. By delegating to a stake pool, you can distribute your stake across numerous validators simultaneously. In return, you'll receive a liquid stake pool token (e.g., rovBTC) that can be immediately utilized in DeFi, providing instant liquidity.

Network Advantages

Stake pools contribute to the network's decentralization by spreading stake across various validator nodes. Each stake pool has distinct criteria and strategies for validator selection, with some pools requiring geographic decentralization and meeting specific performance standards for validators.

Instant Liquidity and DeFi

Liquid staking tokens gain utility from their ability to integrate with DeFi. RovBTC has partnered with key DeFi partners throughout Botanix, and we anticipate a wide range of integrations in the coming months. Learn more by visiting the ecosystem page.

Rover Overview

Rover is a liquid staking protocol built on Botanix. Rover allows users on Botanix to participate in staking and earn yield on their Bitcoin, while remaining liquid via a Liquid Staking Token (LST) called rovBTC. Each rovBTC is fully 1:1 backed and redeemable for BTC. One of the key benefits of rovBTC is that it is liquid and can be traded and used on various decentralized exchanges and dAPPS. RovBTC can be used for trading, lending, to provide liquidity, or as collateral across DeFi applications on Botanix.

Rover is launching in two phases - the first phase is the points program, where users on Botanix can deposit their Bitcoin, receive rovBTC, earn native Bitcoin yield and points according to their pro-rata share of the total amount of deposited Bitcoin. The second phase of Rover's lunar mission is a migration to Proof of Stake (PoS). This will occur shortly after Botanix transitions to PoS itself. When this happens, the Bitcoin locked in Rover will be delegated to validators and start participating in the Botanix Proof of Stake.

Staking Contract

Staking

Overview

RovBTC is the main user-facing vault contract of the Rover protocol. It allows holders of native BTC, pBTC, or already-staked stBTC to deposit their assets and receive rovBTC – an ERC-4626 compliant receipt token that represents a share of the protocol's pooled collateral and its staking rewards.

Behind the scenes every deposit is converted into stBTC (a yield-bearing representation of pBTC) and kept inside the vault. As the underlying stBTC balance grows due to staking rewards, each rovBTC token becomes redeemable for an ever-growing amount of BTC.

This page explains the complete staking lifecycle, the fees that apply, and the roles that safeguard the contract.


Deposit flow

Function
When to use
Accepted asset

depositBTC

The user sends native BTC (gas token) together with the call

BTC

depositPBTC

The user already holds pBTC

pBTC

depositStakedBTC

The user already holds stBTC

stBTC

1. Pre-checks

  1. Contract must not be paused.

  2. assets must be non-zero.

  3. The desired deposit must not push the vault above maxDepositTVL (if the limit is set).

2. Asset handling

  • BTC ⇒ pBTC – If the user sends native BTC the contract immediately wraps it into pBTC via pBTC.deposit{value: msg.value}().

  • pBTC ⇒ stBTC – pBTC is approved to the staking contract and staked with stBTC.deposit(assets, address(this)).

  • stBTC direct – For depositStakedBTC the user directly transfers stBTC to the vault, so only an ERC-20 transfer is required.

3. Minting rovBTC

The amount of rovBTC minted equals the amount of stBTC shares the vault received (sharesReceived). This keeps rovBTC perfectly aligned with the underlying stBTC position.


Withdrawal / Redemption flow

Users can leave the vault through three public functions:

  • withdraw – burn enough rovBTC so that exactly assets pBTC are returned.

  • redeem – burn a specific amount of rovBTC shares and receive pBTC (amount determined by previewRedeem).

  • redeemNativeBTC – like redeem but unwraps pBTC to native BTC and transfers it to receiver.

Net assets are delivered to the user (pBTC transfer or unwrap + native BTC transfer).


Rewards fee

The protocol may charge a fee on staking gains – never on principal. The fee percentage is stored in rewardsFee and can be changed by an account holding the RovBTC Admin role.


Events

  • Deposit(caller, receiver, assets, shares) – standard ERC-4626 deposit event.

  • Referral(caller, assets, referralId) – emitted on each deposit function, carries an optional referral identifier.

  • RewardFeeCollected(gains, feeAmount) – emitted whenever a withdrawal produces gains.


Helpers

Preview functions

  • previewDeposit(assets) – exact rovBTC a user will receive for assets pBTC.

  • previewWithdraw(assets) – shares required to receive exactly assets pBTC (net of fee).

  • previewRedeem(shares) – net pBTC the user will receive for redeeming shares rovBTC.

TVL helpers

  • calculateTVL() / totalAssets() – expose the current total value locked (in pBTC terms).


Glossary

  • BTC – Native Bitcoin on Botanix.

  • pBTC – Wrapped BTC ERC-20 token, 1:1 with native BTC.

  • stBTC – Staked BTC ERC-20 token accruing staking rewards.

  • rovBTC – ERC-4626 vault token representing a share of the Rover stake pool.

Security

Rover: Secure, Audited, and Non-Custodial

Rover has undergone audits by three leading independent auditors, ensuring its security and reliability.

Liquid staking with rovBTC is non-custodial, meaning Rover has no access to the funds deposited into rovBTC. Even if Rover were to cease operations, holders would still be able to withdraw their BTC from validators, along with any accumulated staking rewards.

Halborn

9MB
Rover Contracts Halborn Audit.pdf
pdf

Zellic

401KB
Rover Protocol - Zellic Audit Report.pdf
pdf

Roadmap

Overview

Rover is a liquid staking solution for BTC on Botanix developing in tandem with their roadmap. Phase 1 (Deposit) lets users mint rovBTC 1:1 backed by bridged BTC and earn Protocol Points. Phase 2 aligns with Botanix’s migration from Proof‑of‑Authority (PoA) to Proof‑of‑Stake (PoS), enabling delegation of the pooled BTC to validators so that rovBTC accrues native staking yield from transaction fees.

Stage 1

Stage 1 Rover deploys to mainnet with a one‑way bridge, real‑time monitoring dashboards, and an initial audit reports, setting the stage for staking integration.

Stage 2

Introduces the delegation module: pooled BTC is assigned to whitelisted validators, rewards are accounted for on‑chain, and rovBTC becomes an interest‑bearing token backed by the deposited BTC from stage 1. Stage 2 will be developed and released as Botanix matures from a proof of authority model, at launch, to their proof of stake model.

How to use the Botanix EVM

What is the Botanix EVM?

The Botanix EVM is fully equivalent with Ethereum or other EVM compatible chains. If you're familiar with using Ethereum mainnet, then the Botanix EVM will be the same except that everything will be denominated in BTC (gas fees etc).

Navigate here for a user guide: https://docs.botanixlabs.com/botanix/user-tutorials/overview

Testnet

Chain details​

  • Network Name: Botanix

  • New RPC URL: rpc.botanixlabs.com

  • ChainID: 3637

  • Symbol: BTC

  • Explorer: https://botanixscan.io/

Join the Community

  1. Website

  2. X (Twitter)

  3. Blog

  4. Discord

  5. Telegram

rovBTC DeFi Integrations

While Bitcoin has served as a store of value for many holders over the years, DeFi is unlocking its potential for much more. On Botanix, rovBTC is usable across the following protocols:

  • Arch Finance

Arch is a decentralized exchange on Botanix that leverages concentrated liquidity and automated liquidity managers (ALMs) to create efficient, high-yield markets. On Arch, rovBTC can be traded or deployed into liquidity pools, especially against BTC, where ALMs help optimize fees and minimize rebalances for liquidity providers.

  • Dolomite

Dolomite is a decentralized lending and trading platform that supports advanced collateral management and seamless asset utility. Users can lend and borrow rovBTC on Dolomite, unlocking capital efficiency while still maintaining exposure to staked Bitcoin.

  • Palladium

Palladium is a Bitcoin-native DeFi platform on Botanix that enables users to mint the censorship-resistant stablecoin pUSD by staking rovBTC as collateral. This integration allows Bitcoin holders to unlock interest-free liquidity while retaining exposure to their staked assets.

  • Bitzy

Bitzy is a decentralized exchange built on Botanix that offers fast and flexible trading. Users can instantly swap, trade, and provide liquidity with assets like rovBTC, benefiting from features such as AMM swaps, aggregation, and yield-boosted liquidity pools.

  • Artura

Artura is a decentralized perpetual exchange (DEX) built on Bitcoin Layer 2s like Botanix, offering synthetic trading with up to 150x leverage on assets such as memecoins, AI tokens, and Runes. Users can utilize rovBTC as collateral, provide it as liquidity, and engage in leveraged trading on rovBTC pairs, enabling capital-efficient exposure to Bitcoin-native assets.

  • GMX

GMX is a decentralized spot and perpetual exchange enabling users to trade cryptocurrencies like BTC, ETH, and AVAX with up to 100x leverage directly from their wallets. Integrating rovBTC allows users to trade Bitcoin-native assets with leverage, enhancing capital efficiency and expanding DeFi opportunities within the ecosystem.

  • BIMA

BIMA is a decentralized yield platform offering permissionless access to institutional-grade investment strategies, all without selling your Bitcoin. By depositing rovBTC into BIMA vaults, users can tap into diverse strategies and high-yield opportunities.

Protocol FAQ

When will phase 2 launch?

Phase 2 will deploy as Botanix matures from Proof of Authority to Proof of Stake.

How are points determined?

Points are determined using the following calculation

  1. Points are accrued per block calculated as rovBTC / per block. For more information visit.

  2. 10% of all referred user's points (10% of points earned from staking, not points earned from referrals).

Where can I use my rovBTC?

rovBTC is integrated throughout Botanix's DeFi ecosystem. Check here for our ecosystem list.

How does rovBTC increase in value over time?

rovBTC is a reward-bearing BTC derivative that maintains a fixed token balance in your wallet while its value appreciates over time through an increasing exchange rate. As rewards accumulate, the rovBTC/BTC exchange rate gradually rises, reflecting the growing value of the underlying asset. When you choose to redeem your rovBTC, you’ll receive more BTC than your original deposit, making it a passively appreciating and capital-efficient asset.

Will you earn points if rovBTC is purchased on secondary markets?

No, purchasing rovBTC on the secondary market will not earn you staking rewards or points. The rewards and points system is specifically designed to encourage users to stake and then utilize rovBTC within the DeFi ecosystem.

Oracles

rovBTC price feeds will be available via oracles on Botanix. We are currently in the process of setting up oracle feeds and will update this page when they are ready.

Protocol Fees

This section outlines all the fees associated with utilizing Rover. Understanding these fees is crucial for users to manage their interactions with the platform.

Staking Reward Fees

Rover charges a fee on staking rewards accrued at the time of withdrawal. The staking rewards fee is charged only on the net rewards accrued from the Botanix staking rewards, and will not reduce the principal capital deposited into the protocol.

Validator Fees

Once Botanix develops further along it's roadmap and releases full PoS, Rover will delegate BTC stakes to validators who take a commission on all rewards.

Referrals

Earn Points with Invite Codes

Existing users will be able to earn additional points through invite codes. When a friend signs up using your code, you will receive 10%, or 0.1 points, for every 1 BTC they stake. You can find your custom invite code on the stake page under "Your Referral Code" to see how many referrals you have accumulated and points earned.

Stake BTC for RovBTC

Earning points and yield on your BTC has never been easier

Head over to the link below to start staking and walk through the following instructions

Start here:

Steps

  1. Add Botanix to your Metamask Wallet

  2. Bridge BTC

    • Use Botanix Bridge to deposit BTC onto the chain

    • Confirm transaction and wait for block confirmations

    • Use your BTC for Gas fees and staking

  3. Stake BTC or stBTC

    • Head to

    • Click the “Connect Wallet” button on the app and select your preferred wallet from the available options.

    • Click the “Stake Now” button to open the staking window, where you can either stake all of your Bitcoin by clicking the “MAX” button or enter a specific amount to stake.

    • Once confirmed, click the “STAKE BTC” button and wait for the transaction to complete.

  4. Confirm your rovBTC Balance

    • Once your BTC is staked, you'll receive an equivalent amount of rovBTC. You can check if it’s been deposited to your account by clicking your wallet button on the top right, where it should reveal a dropdown window with your rovBTC balance shown.

    • rovBTC will appear in your EVM wallet (ERC-20 style)

    • You can now use it across the Botanix ecosystem and start earning BTC yield and Points

  5. Unstake (Redeem BTC)

    • You can unstake your rovBTC back to Rover's contract whenever you want

    • Claim your original BTC + proportional rewards

Bridging BTC from other EVM networks

A useful guide for bridging BTC derivatives into botanix and rover can be found :

https://www.roverstaking.com/stake
https://www.roverstaking.com/stake
here

Rover Points Program

Rover Points Program

The Rover Points Program is our way of recognizing and rewarding users who actively contribute to the protocol’s growth and stability.

How to Earn and Track your Points

Points are automatically calculated based on your onchain activity. Track your points here: https://www.roverstaking.com/leaderboard

You can earn them through the following actions:

Staking rovBTC

Earn points continuously while your rovBTC remains staked. The longer you stake, the more points you accumulate. (1x Multiplier)

Holding rovBTC

Simply holding rovBTC in your wallet earns you points over time. No interaction required — just hold and accrue points. (1x Multiplier)

Liquidity Provisioning

  • Supply rovBTC/BTC liquidity on Arch or Bitzy (2x Multiplier)

  • Supply rovBTC/pUSD liquidity on Arch or Bitzy (3x Multiplier)

  • Supply rovBTC/stBTC on GMX or Arch (2x Multiplier)

Lending Markets

  • Deposit rovBTC as collateral on Dolomite (2x Multiplier)

Collateralize

  • Collateralize pUSD with rovBTC on Palladium (2x Multiplier)

Supply Vault

  • Deposit rovBTC into Artura's vault (2X Multiplier)

  • Deposit rovBTC into Bima's vault (2X Multiplier)

Referrals

  • Earn Points with Invite Codes

  • Refer a user to rovBTC and earn a 10% bonus on your points (navigate here for more info)

Activity

Description

Multiplier

Staking rovBTC

Earn points continuously while staking.

1×

Holding rovBTC

Accrue points passively just by holding rovBTC in your wallet.

1×

rovBTC/BTC Liquidity (Arch or Bitzy)

Provide liquidity to rovBTC/BTC pools.

2×

rovBTC/pUSD Liquidity (Arch/ or Bitzy)

Provide liquidity to rovBTC/pUSD pools.

3×

rovBTC/stBTC Liquidity (GMX or Arch)

Supply liquidity to the rovBTC/stBTC pool on GMX.

2×

Lending on Dolomite

Depsoit rovBTC as collateral via Dolomite.

2×

Collateralizing pUSD (Palladium)

Use rovBTC to collateralize pUSD on Palladium.

2×

Artura Vault Deposit

Deposit rovBTC into Artura’s rovBTC vault to earn yield and points.

2×

Bima Vault Deposit

Deposit rovBTC into Bima's rovBTC vault to mint USBD.

2x

Referrals

Refer users using invite codes and earn a 10% point bonus from their activity.

—

Protocol Architecture

Protocol Architecture

This page gives a birds-eye view of how assets move through the Rover protocol — from Layer-1 Bitcoin all the way to rovBTC and back.


1. Actors & Contracts

Layer
Component
Purpose

2. High-level flow

Bridging back to L1 is optional — users can also keep the unlocked BTC on Botanix.


3. Step-by-step

3.1 Bridging BTC ➜ Botanix

  1. User locks BTC in the Bridge on Layer-1.

  2. The bridge mints the equivalent amount of Botanix native BTC (gas token).

3.2 Deposit routes into RovBTC

Route
Function
What happens internally

All three flows converge on the same outcome: the vault ends up holding stBTC and the user receives rovBTC shares.

3.3 Yield accrual

The stBTC balance inside the vault grows over time as staking rewards are harvested (stBTC.harvest()). Consequently each rovBTC share becomes worth more pBTC/BTC.

3.4 Withdrawals

  1. User calls withdraw, redeem, or redeemNativeBTC.

  2. Vault redeems the required stBTC back to pBTC.

  3. A fee on gains (if any) is transferred to rewardsFeeReceiver.

  4. Net pBTC is transferred, or unwrapped to native BTC, and optionally bridged back to L1.


4. Where to integrate

Stage
API / Contract
Typical integrators

6. Further reading

  • Staking — Deep-dive into fees and calculations.

  • Third-Party Integrations — Code examples for front-end and on-chain use-cases.

Bitcoin L1

BTC

Native Bitcoin held by end-users

Botanix

Bridge

Locks / unlocks BTC on L1 and mints / burns wrapped BTC on Botanix

Botanix

pBTC (ERC-20)

1 : 1 wrapped BTC used inside EVM

Botanix

stBTC (ERC-20)

pBTC deposited into the staking pool earning protocol rewards

Botanix

RovBTC (ERC-4626)

Vault holding stBTC and issuing rovBTC shares

Native BTC

depositBTC

Vault wraps BTC → pBTC → stakes to stBTC, then mints rovBTC

pBTC

depositPBTC

Vault stakes pBTC to stBTC, then mints rovBTC

stBTC

depositStakedBTC

Vault pulls stBTC directly and mints rovBTC

Bridge

Bridge UI / SDK

Centralised exchanges, wallets

Wrap / Unwrap

pBTC.deposit / pBTC.withdraw

Wallets, bridges, aggregators

Stake / Unstake pBTC

stBTC.deposit / stBTC.redeem

Yield optimisers

Vault

RovBTC (this repo)

Lending markets, portfolio trackers, treasuries

Integrations

Third-Party Integrations

This guide is aimed at front-end and smart-contract developers that want to add rovBTC support to their dApps, dashboards or automated strategies.

All code samples use the Botanix test-net RPC and the ethers v6 library, but the same concepts apply to other stacks.


1. Discover the contracts

Name
Address
Interface

rovBTC (ERC-4626)

0x9BC574a6f1170e90D80826D86a6126d59198A3Ef

IRovBTC

pBTC (ERC-20)

0x0D2437F93Fed6EA64Ef01cCde385FB1263910C56

IPBTC

stBTC (ERC-20)

0xF4586028FFdA7Eca636864F80f8a3f2589E33795

ISTBTC

Replace the placeholders with the network-specific addresses published by the Rover team.

export const ROV_BTC = "0x…";
export const P_BTC  = "0x…";
export const ST_BTC = "0x…";

2. Reading data (balance, TVL, previews)

import { Contract, JsonRpcProvider, parseUnits, formatUnits } from "ethers";
import { ROV_BTC } from "./const";
import rovBTCAbi from "./abi/rovBTC.json";

const provider = new JsonRpcProvider("https://testnet.botanix.io");
const rovBTC = new Contract(ROV_BTC, rovBTCAbi, provider);

export async function getUserInfo(user: string) {
  const [shares, previewRedeem] = await Promise.all([
    rovBTC.balanceOf(user),
    rovBTC.previewRedeem(parseUnits("1", 18)) // 1 rovBTC → pBTC
  ]);

  const tvl = await rovBTC.totalAssets();

  return {
    shares: formatUnits(shares, 18),
    oneShareWorth: formatUnits(previewRedeem, 18),
    tvl: formatUnits(tvl, 18)
  };
}

The same helpers (previewDeposit, previewWithdraw, calculateTVL) are available and gas-cheap because they are view functions.


3. Staking from your UI (front-end)

3.1 Deposit native BTC

import { BrowserProvider, parseUnits } from "ethers";
import rovBTCAbi from "./abi/rovBTC.json";
import { ROV_BTC } from "./const";

export async function depositNativeBTC(amountBtc: string, referralId = 0) {
  const provider = new BrowserProvider(window.ethereum!);
  const signer   = await provider.getSigner();
  const rovBTC   = new Contract(ROV_BTC, rovBTCAbi, signer);

  const tx = await rovBTC.depositBTC(
    parseUnits(amountBtc, 18),   // assets argument (pBTC precision)
    await signer.getAddress(),   // receiver
    referralId,
    {
      value: parseUnits(amountBtc, 18) // msg.value = native BTC sent
    }
  );
  await tx.wait();
}

3.2 Deposit pBTC

import pBTCAbi from "./abi/pBTC.json";
import { P_BTC } from "./const";

export async function depositPBTC(amount: string, referralId = 0) {
  const provider = new BrowserProvider(window.ethereum!);
  const signer   = await provider.getSigner();

  // 1️⃣ Approve pBTC
  const pBTC = new Contract(P_BTC, pBTCAbi, signer);
  await (await pBTC.approve(ROV_BTC, parseUnits(amount, 18))).wait();

  // 2️⃣ Deposit
  const rovBTC = new Contract(ROV_BTC, rovBTCAbi, signer);
  await (await rovBTC.depositPBTC(parseUnits(amount, 18), await signer.getAddress(), referralId)).wait();
}

3.3 Deposit stBTC

import stBTCAbi from "./abi/stBTC.json";
import { ST_BTC } from "./const";

export async function depositStBTC(amount: string, referralId = 0) {
  const provider = new BrowserProvider(window.ethereum!);
  const signer   = await provider.getSigner();
  const stBTC    = new Contract(ST_BTC, stBTCAbi, signer);

  await (await stBTC.approve(ROV_BTC, parseUnits(amount, 18))).wait();

  const rovBTC = new Contract(ROV_BTC, rovBTCAbi, signer);
  await (await rovBTC.depositStakedBTC(parseUnits(amount, 18), await signer.getAddress(), referralId)).wait();
}

From your component you can call any of the above helpers depending on the asset type detected in the user's wallet.


4. Programmatic deposits (scripts & bots)

Below is a TypeScript Hardhat script that periodically moves idle pBTC from a treasury address into the vault.

import { ethers } from "hardhat";
import rovBTCAbi from "../abi/rovBTC.json";
import pBTCAbi from "../abi/pBTC.json";
import { ROV_BTC, P_BTC } from "../const";

async function main() {
  const signer = (await ethers.getSigners())[0]; // eg. Cold-wallet relayer

  const pBTC  = new ethers.Contract(P_BTC, pBTCAbi, signer);
  const rovBTC = new ethers.Contract(ROV_BTC, rovBTCAbi, signer);

  const amount = await pBTC.balanceOf(signer.address);
  if (amount.isZero()) return console.log("Nothing to deposit");

  await (await pBTC.approve(ROV_BTC, amount)).wait();
  await (await rovBTC.depositPBTC(amount, signer.address, 0)).wait();

  console.log(`Deposited ${ethers.formatUnits(amount, 18)} pBTC`);
}

main().catch(console.error);

5. On-chain integrations (Solidity)

Your contract can stake treasury assets or build strategies on top of rovBTC. Import the minimal interface and interact just like any ERC-4626.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IRovBTC {
    function depositPBTC(uint256 assets, address receiver, uint256 referralId) external returns (uint256 shares);
}

contract RovBTCTreasury {
    address public immutable ROV_BTC;

    constructor(address _rovBtc) {
        ROV_BTC = _rovBtc;
    }

    // The contract must already hold pBTC (e.g. via fees)
    function stake(uint256 amount) external {
        IRovBTC(ROV_BTC).depositPBTC(amount, address(this), 0);
    }
}

Because rovBTC follows the ERC-4626 token standard you can plug it into any yield aggregator that supports the interface without additional wrappers.


6. Test-net faucet

Need pBTC or stBTC to test your integration? Use the public faucet:

  1. Visit https://faucet.botanix.io.

  2. Claim test BTC, swap it for pBTC at https://swap.botanix.io.

  3. Stake pBTC into stBTC at https://stake.botanix.io (optional).


7. Support

For technical questions join our Discord or open a GitHub discussion.