A Bitcoin staking protocol that allows users to stake Bitcoin and receive liquid staking tokens.
- Rust (stable) via
rustup - Internet Computer SDK (
dfx) 0.20 or newer - GNU Make
- (Optional) Wasmtime for local execution tests
make build# Deploy to local network (default)
make deploy
# Deploy to IC mainnet with Bitcoin mainnet
make deploy-mainnet# Check ICP balance on mainnet
make balance
# Clean build artifacts
make cleancargo test# Navigate to test directory
cd test
# Run individual test scripts
./stake.sh
./unstake.sh
./withdraw.sh
./get_pool_info.sh
./get_exchange_rate.sh
./get_recent_unstake_records.shWhen deployed for the first time, pool is automatically initialized. But if the canister is already deployed, the previous version, we need to initialize the pool addresses manually:
./init_pool.shThis generates Bitcoin addresses for the staking pools (indices 0-1).
The Liquidium Staking canister was independently audited by ScaleBit. You can review the full report here: Liquidium Staking Audit (September 1, 2025).
Interested in contributing? Please review CONTRIBUTING.md for setup instructions, coding standards, and pull request guidelines. All contributors must adhere to our Code of Conduct.
If you discover a security vulnerability, follow the responsible disclosure process outlined in SECURITY.md. Kindly avoid filing public issues for security reports.
Distributed under the GNU GPL v3.0.