Ark
Scaling Bitcoin with Shared UTXOs
thesimplekid
What is Ark?
A second layer on Bitcoin for instant, cheap, self-custodial payments — that works on Bitcoin today, with no soft fork or consensus changes.
- Simple onboarding — no channels to open, no inbound liquidity to buy.
- Instant payments with low, predictable fees.
- Full control of your bitcoin — you can always exit to the main chain unilaterally.
- Lightning interoperable — send and receive Lightning through the Ark server.
Originally proposed by Burak Keceli in 2023.
Why Another Layer 2?
Lightning works, but it pushes hard problems onto every user and wallet.
Liquidity
You can only receive what your inbound capacity allows. Channels must be funded, balanced, and often purchased up front.
Channel Management
Opening, closing, rebalancing, watching for breaches. Real on-chain cost and complexity per user.
Routing & Online-ness
Payments can fail to route. To receive, you generally need to be online and reachable.
The Core Idea: Shared UTXOs
Many users trustlessly share a single on-chain UTXO using a tree of pre-signed, off-chain transactions.
- Your balance is a VTXO — a Virtual UTXO.
- It behaves like a real UTXO, but lives off-chain.
- Backed by pre-signed transactions you can broadcast at any time to claim your bitcoin on-chain.
- One on-chain output can hold value for thousands of users.
On-chain UTXO (shared root)
|
+----+----+----+
| | | |
VTXO VTXO VTXO VTXO
Alice Bob Carol Dave
|
(Alice's pre-signed
exit path to L1)
Inside a VTXO: Taproot
A VTXO is just a Taproot (P2TR) output — one key-path for the happy case, hidden script-paths for safety.
Taproot output (VTXO)
|
+--------+---------+
| |
KEY PATH SCRIPT PATH
MuSig2(user, (tap tree)
server) |
| +-----+-----+
cheap, | |
private exit expiry
cooperative (user + sweep
spend CSV) (CLTV)
- Key path = MuSig2(user + server). A cooperative spend is a single Schnorr signature — cheap and indistinguishable from any normal Taproot spend.
- Every instant payment / forfeit takes this path. The server can never move funds without your half of the signature.
- Script paths only get revealed on-chain if cooperation breaks down.
The Safety Scripts
The hidden tapscript leaves encode "what if the server disappears?" and "what if a VTXO is abandoned?"
// Leaf / unilateral EXIT — relative timelock, user can claim alone
<userPubKey> OP_CHECKSIGVERIFY
<144> OP_CHECKSEQUENCEVERIFY // ~1 day delay (CSV)
// Root / branch EXPIRY — absolute timelock, server reclaims liquidity
<serverPubKey> OP_CHECKSIGVERIFY
<expiryHeight> OP_CHECKLOCKTIMEVERIFY // CLTV, ~28 days
- Relative (CSV) timelocks gate the user's emergency exit — you broadcast your branch & leaf, wait the delay, claim on L1.
- Absolute (CLTV) timelocks let the server recycle the shared UTXO after a VTXO expires — which is why you must refresh in time.
How It Works: Rounds
The server periodically (e.g. hourly) runs a round: it pools requests and commits one transaction tree to the chain.
User Ark Server (Operator) Bitcoin L1
| | |
| 1. Request VTXO in next round | |
| -------------------------------> | |
| | 2. Build tree, collect sigs |
| 3. Co-sign tree branch | |
| <------------------------------> | |
| | 4. Broadcast ONLY the root tx |
| | -----------------------------> |
| 5. Hold VTXO off-chain | |
| (spend instantly, no chain) | |
Between rounds, paying another Ark user is instant and never touches the chain.
Instant Payments: Out-of-Round
You don't wait for a round to pay another Ark user. Between rounds, transfers are instant and off-chain.
Alice (sender) Ark Server Bob (receiver)
| | |
| 1. Pay Bob, sign | |
| FORFEIT of my VTXO | |
| -----------------------> | |
| | 2. Co-sign a NEW VTXO |
| | for Bob (off-chain) |
| | -----------------------> |
| | | 3. Holds spendable
| | | VTXO instantly
| ... next round folds these VTXOs into the tree ...
Bob's only trust: that Alice won't collude with the server to double-spend her forfeited VTXO before the next round settles it — and he can always exit on-chain.
Lightning Interoperability
The Ark server doubles as a Lightning gateway — you reach the whole Lightning world without a single channel.
Receiving → VTXO
Someone pays your Lightning invoice. The server's node receives the HTLC and credits you a fresh VTXO.
Lightning payment → Server → your VTXO
Spending → Lightning
You spend a VTXO; the server pays the external Lightning invoice for you, settling atomically via the HTLC preimage.
your VTXO → Server → Lightning invoice
No channels, no inbound liquidity, no routing — the server bridges. The swap is hash-locked (HTLC), so it's atomic: either the Lightning payment settles and your VTXO moves, or neither does.
The Operator (Ark Server)
A coordinator that makes the whole thing liquid — but cannot steal your funds.
What it does
- Runs rounds & builds transaction trees.
- Co-signs and provides liquidity so payments settle instantly.
- Acts as a Lightning gateway.
What it can't do
- Can't move your VTXO without your signature.
- Can't stop your unilateral exit to L1.
- Worst case if it vanishes: you exit on-chain.
Note: "ASP" / "Ark Service Provider" is the older name for the operator.
The Operator's Liquidity Burden
Ark doesn't delete the liquidity problem — it moves it from users to the operator.
Why the server fronts capital
- To mint a fresh VTXO (a refresh, a Lightning send, an off-board) the server must put up on-chain bitcoin now.
- It receives the user's forfeited old VTXO — but can only reclaim that bitcoin after it expires (~28 days).
- So capital is locked roughly for the VTXO lifetime.
The key inversion
- An LSP locks capital against each user's balance.
- An Ark server locks capital against payment volume / churn — not 1:1 against total deposits.
- Dynamic fees: cheaper to refresh a near-expiry VTXO, pricier for a fresh long-lived one. Users pay for the time-value of locked capital.
Expiry is what makes the business viable. Without it, dormant users would lock the operator's capital forever. Second's simulations put Ark at ~3.7–6.7× more capital-efficient than an LSP (e.g. a DCA stacker: ~32 days of locked liquidity vs ~210 for an LSP).
Exit & Expiry: The Fine Print
Unilateral Exit
If the server misbehaves or disappears, you broadcast your branch & leaf transactions in sequence to recover funds directly on Bitcoin. No permission needed.
VTXO Expiry
VTXOs carry a timelock (~28 days). You must refresh them in a later round before they expire — otherwise the server can reclaim that liquidity.
Honest trade-off: Ark needs you to be interactive (refresh before expiry), and out-of-round payments require trusting the sender not to collude with the operator until the next round settles. You give up some of Lightning's pure peer-to-peer model for radically simpler UX.
Today: Covenant-less Ark (clArk)
Bitcoin has no covenants yet — so the tree can't be enforced by script. It's enforced by signatures instead.
How it's held together
- The VTXO tree is built from pre-signed transactions, co-signed n-of-n (MuSig2) by all round participants + the server.
- Interactive: you must be online to co-sign when receiving or when your VTXO moves in a round.
- You can't (yet) send to an offline user or onboard one without their participation.
The statechain-like trust
- Transfers rely on the sender forfeiting their old VTXO and not colluding with the server before the next round settles it.
- Like a statechain: a server co-signs and helps enforce single ownership — security leans on cooperative signing + an honest operator, backstopped by unilateral exit.
Upside: works on Bitcoin today, no soft fork. Cost: interactivity, round coordination, and practical limits on tree size / users per round.
Tomorrow: Covenant-based Ark
A covenant lets the output's script commit to the whole tree — no all-hands signing session required.
What CTV changes
OP_CHECKTEMPLATEVERIFY makes the tree deterministic & script-enforced at the root.
- Non-interactive: the server can build the tree alone — send to offline users, onboard without their input.
- Bigger trees → more users per round and better fee efficiency.
The evolutions
- hArk / Erk (Steven Roose): use
CTV + CSFS to drop user interactivity entirely and allow offline refresh.
- Needs a Bitcoin soft fork (CTV / CSFS aren't activated).
bark is built forward-compatible: upgrade to native covenants if/when they activate.
The arc: statechain-like & interactive today → covenant-enforced & non-interactive if Bitcoin gains CTV/CSFS. Same VTXO model, far less coordination.
Ark vs. Lightning
|
Ark |
Lightning |
| Inbound liquidity |
None needed — receive instantly |
Must have inbound capacity |
| Onboarding |
Receive a VTXO, done |
Open & fund a channel |
| Receiving offline |
Easier (server-mediated) |
Generally must be online |
| Routing failures |
None — server is the hub |
Payments can fail to route |
| Interactivity |
Must refresh VTXOs (~28d) |
Always-on channels |
| Trust model |
Operator coordinates; you can always exit |
Peer-to-peer; watchtowers |
Use Cases
Payments
Instant, low-fee wallet-to-wallet transfers with a Lightning on/off ramp — no channel UX for the user.
Assets & Stablecoins
Issue and move Bitcoin-native assets (e.g. stablecoins) off-chain with instant settlement.
Swaps & Contracts
Atomic swaps across Ark, L1 and Lightning, plus escrows, payment channels and programmable spending conditions.
Strong fit for onboarding many users cheaply and for apps that need programmable, instant Bitcoin settlement.
Two Implementations
Same core idea, different emphasis. (Neither is run by the original author, Burak.)
- Focus on payments & self-custodial wallets.
arkd server + bark wallet.
- Closely tracks the core Ark spec: rounds, VTXOs, Lightning gateway.
- Goal: a clean, simple Bitcoin payments layer.
- Focus on a programmable execution layer.
- "Virtual mempool" + batch settlement; SDKs for devs.
- Smart contracts, asset issuance, atomic swaps.
- Renamed terms: operator, batch swaps (not ASP/rounds).
Inside Arkade: Programmability
Arkade adds a contract language that compiles to Arkade Script — an extended Bitcoin Script that resolves into VTXO Taproot outputs.
// high-level, Ivy-like syntax
contract SingleSig(pubkey user) {
function spend(signature s) {
require(checkSig(s, user));
}
}
Every function auto-compiles to two variants:
- Cooperative → key-path with the operator (instant).
- Unilateral exit → script-path + timelock.
… the exact Taproot key-path / script-path split from earlier.
Primitives
checkSig, checkMultisig, checkSigFromStack
sha256 for HTLC preimages
CSV / CLTV timelocks & arithmetic
- Transaction introspection — read inputs, outputs, values, scriptPubKeys (covenants)
- Asset-aware flows across VTXOs
Enough to build escrows, HTLC atomic swaps, and Spilman / Poon-Dryja payment channels.
Arkade: Execution & Settlement
Virtual Mempool
- Off-chain engine where VTXO spends preconfirm instantly.
- No global state machine or accounts — just local input → output transitions per VTXO.
- Independent branches run in parallel, fully deterministic.
Batch Settlement
- Operations finalize on Bitcoin via the Intent System.
- One on-chain tx anchors thousands of off-chain state changes.
- Unilateral exit still holds if the operator vanishes.
Trust note: contract execution is run by the operator inside a Trusted Execution Environment (TEE) and signed by the Arkade Signer — this gives verifiable preconfirmations, but it's a different trust assumption than raw on-chain Bitcoin Script. Self-custody is preserved by the exit path; correctness of preconfirms leans on the TEE.
How They Differ
- Scope: Second aims to be the simplest Bitcoin payments layer; Arkade aims to be a programmable application platform on top of the same VTXO mechanics.
- Audience: Second targets wallet users; Arkade targets developers building apps, assets and contracts.
- Vocabulary: Arkade rebrands concepts (operator, virtual mempool, batch swaps) and treats its system as distinct from generic "Ark."
- Common ground: VTXOs, shared UTXOs, unilateral exit, no consensus changes, Lightning interop.
Ark in One Line
Share a Bitcoin UTXO across many users with pre-signed exits — get Lightning-like speed with no liquidity headaches, while keeping the right to walk away on-chain.
Arrow Keys to Navigate