A full Bitmark (BTM) node and wallet that run in a browser tab — no install, no server you have to trust for consensus. It's the bitcoin-kernel/browser-node stack pointed at a small, old, live coin. ← back to the node
The hard part of a node is consensus — deciding which blocks and transactions are valid. That logic is a single
schema-driven engine (the "kernel"): it validates headers, blocks, scripts and ECDSA signatures, and maintains a UTXO set.
A coin is just a set of parameters fed to that engine. Bitmark is one more parameter set —
btm:mainnet: magic f9beb4d9, port 9265, P2PKH addresses (b…), 2-minute
blocks. Same engine, live coin.
A browser can't open raw TCP. So everything rides WebRTC:
The bridges are pure transport — they relay raw bytes and can't forge a block or a balance the tab doesn't re-check. They rendezvous in rooms on a WebRTC signaling server (a JavaScript Solid Server pod).
Re-validating ~2.4M blocks in a tab is impractical, so — exactly like Bitcoin Core's assumeUTXO — the node loads a UTXO snapshot at a recent height (a "keystone"), then validates forward to the tip and follows it:
Keys are generated locally and never leave the tab (keys →). The wallet derives legacy P2PKH addresses (Bitmark has no SegWit), reads balance + UTXOs from your own node's validated UTXO set (the set fullnode persists to OPFS — no trusted index), selects coins, signs the legacy sighash with the bundled WASM secp, checks the tx against the node's own verifier, and broadcasts peer-to-peer over the bridge. ElectrumX remains a one-click fallback for balance and broadcast (electrum.html). You can also look up any address, watch the mempool for incoming payments, and prove a tx's inclusion with a merkle proof.
Built on the bitcoin-kernel engine, unchanged — only the parameters differ. source