One SDK. Instant, global reach.
Backed by
Connect
01 / 04
Embed self-custodial wallets directly into your application.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
Swap
02 / 04
Move value across Bitcoin, Lightning, and connected networks.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
Build
03 / 04
Escrow, lending, and conditional contract tooling using simple primitives.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 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
Issue
04 / 04
Stablecoins and tokenized assets on Bitcoin rails.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Wallet } from '@arkade-os/sdk'; import { ArkadeAssets } from '@arkade-os/assets'; const wallet = await Wallet.create({ identity, arkServerUrl: 'https://arkade.computer', }); const assets = new ArkadeAssets({ wallet }); const { controlAssetId, tokenAssetId } = await assets.issue({ name: 'ACME Token', ticker: 'ACME', supply: 1_000_000n, decimals: 8, reissuable: true, });
Multi-asset balance management
Sub-second stablecoin transfers
Native asset issuance


