Hashi
Hashi is the Sui native Bitcoin orchestrator. It is a protocol for securing and managing BTC for use on Sui through threshold cryptography, where a committee of operators jointly controls the Bitcoin keys (see How Hashi works and the Hashi documentation). You deposit BTC into a managed pool, and Hashi represents your ownership as a fungible Coin<BTC> on Sui. You can then use this coin in Sui apps, DeFi protocols, and programmable transaction blocks like any other Sui coin.
Hashi is currently live on Testnet. Access the Testnet instance.
How Hashi works
Hashi uses a committee of operators running threshold cryptography to manage a Bitcoin custody pool. The committee jointly controls the Bitcoin private keys, so no single operator can move funds unilaterally (Hashi design docs).
The protocol supports 2 core flows:
- Deposit:
- You send BTC to a Hashi-managed Bitcoin address derived for your Sui address.
- The Bitcoin network confirms the transaction.
- Hashi mints an equivalent
Coin<BTC>on Sui and delivers it to your address.
- Withdrawal:
- You burn your
Coin<BTC>on Sui and specify a Bitcoin destination address. - The committee signs and broadcasts a Bitcoin transaction that sends BTC from the custody pool to your destination.
- You burn your
To run these flows programmatically, use the Hashi SDK. For withdrawal ordering and cancellation, see Security.
Security
Hashi protects against outflow vulnerabilities through a Guardian-based rate limiter on Bitcoin withdrawals. The rate limiter uses a configurable token-bucket mechanism denominated in BTC. The committee processes withdrawals in approximate first-in, first-out (FIFO) order, and you can cancel a pending withdrawal at any time before the committee selects it for processing (rate limiter design).
Hashi SDK
The Hashi TypeScript SDK (@mysten/hashi) provides programmatic access to deposits, withdrawals, and pool state queries. For SDK documentation and examples, see the Hashi SDK reference and the hashi-integrations example repo.
Full documentation
For the complete Hashi reference covering committee design, governance, operator runbooks, and protocol flows, see the Hashi documentation.
How do I deploy an app that uses Hashi to Sui?
Deploying to Sui means publishing a Move package to a Sui network. To build an app that holds or uses Coin<BTC> from Hashi, write your logic in a Move package and publish that package with the Sui CLI.
The Publishing Packages guide shows you how to:
- Compile and publish a Move package to a Sui network using the Sui CLI
- Estimate gas costs with a dry run
- Verify onchain bytecode
- Serialize publish transactions for multisig signing
Hashi runs on Testnet, so publish your package to Testnet when you want it to interact with the Hashi Testnet instance.
After your first publish, these guides cover the rest of the package lifecycle:
- Upgrades: Upgrading Packages explains layout-compatibility requirements and how to manage
UpgradeCapandUpgradeTicket. - Automation: Deploy Sui Packages with GitHub Actions builds a CI/CD pipeline that tests every pull request, automates Testnet publishing, and gates Mainnet publishing and upgrades behind manual approval.