Interchangeable implementations

Choose where
Fiber runs.

Both providers expose the same Fiber WebLN contract. They differ in node location, custody, transport, and operational footprint—not in the API your dApp calls.

01 / DOWNLOAD

Install the provider.
Keep control local.

These testnet builds always point to the newest GitHub Release. Start with the embedded node; use remote fnn only when you already operate a node.

RADVANCED

Remote fnn

Connects Chrome to an fnn JSON-RPC endpoint that you configure and operate separately.

Download latest ZIP CKB Testnet · GitHub Release
MANUAL INSTALL

Unzip the download, open chrome://extensions, enable Developer mode, then choose Load unpacked and select the extracted folder.

Release notes and checksums
02 / PROVIDER LAB

Two providers.
One browser contract.

Enable one extension at a time. Switch extensions and refresh; the same calls will reach a different node implementation.

PROVIDER RUNTIME

Select an installed implementation. Both use the shared flow below.

LIVE TESTNET FLOWAwaiting detection
NODENot detected
PEEROffline
CHANNELNot opened
PAYMENTNot sent
1

Prepare the Fiber provider

Extension required · Awaiting detection

2

Fund the address

Balance: CKB · auto-checks every 5s · updated Never

Faucet ↗
3

Open a public channel

02b6d4e3ab86a2ca…d20302be71
4

Send keysend

Direct payment to Public node 1 · bottle

Channel and payment buttons submit real Testnet actions only when you click them.
03 / COMPARISON

Change stays inside providers.
Stability stays with dApps.

The protocol absorbs operational differences while keeping permissions, method names, results, and errors predictable.

ConcernWASM nodeRemote fnnDApp sees
Node locationBrowser extensionRemote or local processProvider
Key custodyHeld locallyHeld by fnn nodeNo key access
Transportoffscreen + WASMJSON-RPCPromise API
Payment callfiber.sendPaymentfnn send_paymentsendPayment
Approval UXExtension promptExtension promptTyped errors
THE PROTOCOL'S JOB

Hide node differences, preserve user control, and let payment apps express intent.

BUILD AGAINST THE CONTRACT

Provider choice
without app rewrites.

Start with provider discovery, then use the same typed client for either implementation.

Read the API reference