Bitcoin infrastructure for
One SDK. Instant, global reach.










One SDK. Instant, global reach.










Connect
01 / 04
Embed self-custodial wallets directly into your application.
import { SingleKey, Wallet } from '@arkade-os/sdk'
// use your private key in hex format
const identity = SingleKey.fromHex('secret')
// create a wallet instance
const wallet = await Wallet.create({
identity,
arkServerUrl: 'https://arkade.computer',
})
// You can receive bitcoin offchain instantly! No inbound liquidity!
const address = await wallet.getAddress()
console.log('Ark Address:', address)Unified API for Bitcoin, Lightning, and Arkade balances
Automatic account lifecycle management
Built-in deposit and withdrawal flows
What you can build
- Savings products
- Neobank backends
- Payment apps
- Treasury management apps
Swap
02 / 04
Move value across Bitcoin, Lightning, and connected networks.
contract NonInteractiveSwap(
pubkey maker,
pubkey server,
bytes32 assetIdHash,
int amount,
int expiryTime
) {
function swap(bytes32 assetId, signature takerSig, pubkey taker) {
// Verify the asset being provided matches what the maker requested
require(sha256(assetId) == assetIdHash, "Asset ID doesn't match requested asset");
// Verify the output contains the correct amount going to the maker
require(tx.outputs[0].value >= amount, "Output amount too small");
require(tx.outputs[0].asset == assetId, "Output asset incorrect");
// Verify the output is spendable by the maker
bytes makerScript = new P2PKH(maker);
require(tx.outputs[0].scriptPubKey == makerScript, "Output not spendable by maker");
// Verify the taker signature
require(checkSig(takerSig, taker), "Invalid taker signature");
}
}Cross-network atomic swaps
Onramp and offramp to any destination
Instant liquidity routing
What you can build
- Payment apps
- Savings products
- Neobank backends
- Treasury management apps
Build
03 / 04
Escrow, lending, and conditional contract tooling using simple primitives.
// Path 1: Buyer and seller both agree
const collaborativePath = MultisigTapscript.encode({
pubkeys: [buyerPubkey, sellerPubkey, serverPubkey]
}).script;
// Path 2: Arbiter resolves dispute
const arbiterPath = MultisigTapscript.encode({
pubkeys: [arbiterPubkey, serverPubkey]
}).script;
// Path 3: Refund to buyer after 30 days
const startTime = BigInt(Math.floor(Date.now() / 1000));
const refundPath = CLTVMultisigTapscript.encode({
pubkeys: [buyerPubkey, serverPubkey],
absoluteTimelock: startTime + (86400n * 30n) // 30 days
}).script;
// Assemble VtxoScript
const escrowScript = new VtxoScript([collaborativePath, arbiterPath, refundPath]);
const escrowAddress = escrowScript.address(networks.mutinynet.hrp, serverPubkey).encode();
console.log('Escrow address:', escrowAddress);Conditional transfers with time-based fallbacks
Programmable vaults and scheduled releases
Collateral management without custody
What you can build
- Lending products
- Escrow services
- Credit facilities
- P2P Trading
Issue
04 / 04
Stablecoins and tokenized assets on Bitcoin rails.
import { Wallet, MnemonicIdentity } from '@arkade-os/sdk';
const wallet = await Wallet.create({
identity: MnemonicIdentity.fromMnemonic('your twelve word mnemonic phrase ...'),
arkServerUrl: 'https://arkade.computer',
});
const { assetId } = await wallet.assetManager.issue({
amount: 1000,
metadata: {
name: 'Tether USD',
ticker: 'USDT',
decimals: 2
}
});Multi-asset balance management
Sub-second stablecoin transfers
Native asset issuance