SQRL SDKIn development
Bitcoin rails, built
into your product.
One library for Lightning payments, tokens that settle on Bitcoin, and signing that stays with the user. Web and native. Opening to a first group of teams soon.
The library
Bitcoin is the
runtime.
Three things every product on these rails needs, in one install. Nothing new to trust underneath them.
Lightning, first class
Invoices, channels and instant settlement, spoken natively. No gateway sits between your product and the payment.
Tokens that live on Bitcoin
Deploy, mint, move and redeem SCL tokens inside real Bitcoin transactions. Whitelists are a condition of the contract, not a check in your backend.
Keys never leave the user
The SDK builds transactions and hands them back to be signed. No private key material passes through SQRL, or through you.
The API
Wallet to market,
in one package.
A WebAssembly client that runs in the browser. It holds the keys, signs the transactions, and talks to Bitcoin directly.
01
Open a wallet in the browser
The wallet is created and unlocked on the device. Its seed is encrypted into local storage and never crosses the network, so there is no key for you to hold.
import SclWallet from "@dark-fusion-protocol/scl-wallet"; const wallet = new SclWallet(); await wallet.create_wallet("acme", pw); await wallet.init( "acme", pw, "mainnet", "https://blockstream.info/",); await wallet.sync();02
Take a payment
Estimate the fee for the confirmation target you want, then send. What comes back is the Bitcoin transaction id, which is the only receipt anyone needs.
// Fee for a 5 block targetconst fee = await wallet.estimate_fee_scl( address, "10000", contractId, 5,); const res = await wallet.send_scl( address, "10000", contractId, JSON.parse(fee).Result,); // { "Result": "892dd30adf02…" }03
Issue an asset
One call deploys an SCL contract on Bitcoin. Ticker, supply and decimals are the whole configuration, and the contract is live once the transaction confirms.
const fee = await wallet.estimate_fee_mint(5); const res = await wallet.mint_scl01_contract( "SMOL", "31415900000000", "8", JSON.parse(fee).Result,); const contracts = await wallet.get_contracts();04
Run a market
Listings and bids are batched calls that settle peer to peer. An order book, a swap, or an in-game marketplace all come out of the same two methods.
// Offer inventoryawait wallet.list_token_batch(orders, fee); // Bid on someone else'sawait wallet.place_bid_batch(bids, fee); // Fill, and the swap settles atomicallyawait wallet.accept_bid( unsignedTxHex, fulfilTx, contractId,);import SclWallet from "@dark-fusion-protocol/scl-wallet"; const wallet = new SclWallet(); await wallet.create_wallet("acme", pw); await wallet.init( "acme", pw, "mainnet", "https://blockstream.info/",); await wallet.sync();Built for the people
moving the money.
Trading platforms
Quote, fill and settle without ever holding a customer balance. Positions clear on Bitcoin rather than on your books, so the balance sheet stays yours and the risk does not.
Payment gateways
Route Lightning at the volume a gateway needs, and settle to the merchant directly. There is no float to fund and no chargeback window to price in.
Merchants and checkout
Take a payment at the counter or in the cart and see it confirmed before the customer has put their phone away. Fees stay in fractions of a cent at any size.
Games and virtual economies
Move value as often as the game needs it. Micropayments that cost almost nothing make an in-game economy that settles for real, not one that only settles on withdrawal.
Exchanges and DEXs
Non-custodial swaps with Bitcoin finality on both legs. Nothing is wrapped, nothing is bridged, and there is no pegged asset standing in for the real one.
What you skip
Four things you
no longer build.
Most of the work in a payments product is the part nobody sees. This is the part you can stop maintaining.
A custody stack
Keys stay with your users. There is nothing for you to hold, insure, or be licensed for.
A node cluster
Lightning liquidity and Bitcoin broadcast come with the library.
A reconciliation job
Every movement carries the transaction that settled it, so the ledger already agrees.
A bridge
The asset is already on Bitcoin. There is no peg to defend and no bridge to exploit.
Questions from
people who build.
What a developer asks before writing anything. For anything else, write to us and a person answers.
Simple Contract Language, Orobit's contract language for tokens on Bitcoin. It is deliberately constrained: it describes only operations Bitcoin can verify, which is what keeps contracts predictable and cheap to run. You do not have to read or write SCL to use the SDK, because the library compiles your parameters for you.
With the user. The SDK builds transactions and hands back something to sign. Signing happens in the wallet or on the device, and SQRL stores only public key identifiers. If a key is lost, nobody at SQRL can recover it.
No. Broadcast and channel liquidity come with the SDK. Point a workspace at testnet to prove out payments, token movements and signing end to end before anything touches mainnet.
Yes. The same typed client runs in a browser and on a server, so a checkout page and the service behind it share one integration rather than two.
Vaults carry a signing threshold, for example two of three, and policies that cap amounts over a cycle. A movement does not broadcast until the threshold is met, and every step is written to an audit log.
Not yet. The SDK is in private development with a small group of teams while the interfaces settle. Tell us what you are building and we will bring you in as it opens.

Early access
Tell us what you
are building.
The SDK opens to a small group of teams first. Send us the shape of what you need and we will bring you in.

