Non-custodial M2M liquidity layer
PetaSats swaps USDC / USDT ↔ BSV, and BSV ↔ BSV-21 tokens, as atomic machine-to-machine trades. One secret settles both legs — so the protocol never holds your funds, and neither party can take one side without releasing the other.
All of BSV is 2.1 petasats (21M × 100M sats). We're the rail that moves them — into the chain from the stablecoin economy, and back out.
What it is
Every capability rides the same trustless core: prove, then settle. Nothing pools, nothing is custodied, and value is never taken on faith.
USDC / USDT on Base ↔ BSV, bound by one hashlock. The EVM side locks in a standard HTLC; the BSV side in a SHA-256 hashlock with a co-signed nLockTime refund. One secret unlocks both — atomic by construction.
BSV ↔ BSV-21 trades settle through an OrdLock covenant — and the buyer proves the listing holds its tokens back to the deploy+mint genesis, via SPV inclusion and amount conservation. No indexer is trusted for value.
Provenance proven, not queriedDeterministic maker bots quote and settle liquidity on the edges — a sell-side OrdLock maker and an RFQ fund:BSV responder that turns a taken quote into a live cross-chain swap. The supply side runs itself.
There is no pooled custody and no operator key over user funds. Every transfer is an atomic swap or a self-settling covenant, backstopped by a watchtower that recovers either leg at its timelock if a swap stalls. Math, not trust.
SPV-native · fail-closedProven on mainnet
A real USDC → BSV atomic settlement, on mainnet, with live money. One secret unlocked both legs; PetaSats never touched the funds. Every hash below is on-chain — open the explorer and check.
The claim on BSV reveals the secret s; that same s releases the USDC. Reverse the order and it still holds — a stalled counterparty is always recoverable at the timelock. No step trusts the other side.
Integrate
convert().Your users arrive without BSV; your app needs them funded. PetaSats is the drop-in liquidity leg — surfaced as an SDK, an MCP tool for agents, and an embeddable widget. Crypto → crypto, non-custodial; for a fiat leg, compose a licensed on-ramp in front.
The intents your users actually utter
SDK — the shape
// non-custodial, atomic, one call
const swap = await petasats.convert({
from: 'USDC', to: 'BSV',
amount: '5.00',
deliverTo: wallet.address,
})
// → { settled, bsvTxid, secret } — funds move both ways or not at all
MCP — wire it into any agent
{
"mcpServers": {
"petasats": {
"command": "npx",
"args": ["-y", "@petasats/mcp"]
}
}
}
// tools: get_quote · swap_asset_to_bsv
// fund_wallet · list_liquidity
Embeddable widget
<!-- drop into any BSV app -->
<fund-with-bsv
asset="USDC"
to="1L6X…Hgc"></fund-with-bsv>
Alpha. The core settles on mainnet today; the developer SDK, MCP server, and widget are in active build. Names and shapes above show the integration surface — get in touch to build against it early.