Connect your dApp to MyQRLWallet

@qrlwallet/connect gives your dApp an EIP-1193 provider with QR and deep-link pairing. Every message travels over an end-to-end post-quantum encrypted channel: the relay only ever sees ciphertext.

Connected in a few lines

terminal
npm install @qrlwallet/connect
app.ts
import { QRLConnect } from '@qrlwallet/connect';

const qrl = new QRLConnect({
  dappMetadata: {
    name: 'My QRL dApp',
    url: 'https://mydapp.com',
  },
});

// Show the pairing URI: as a QR code on desktop,
// as a deep link on mobile
const uri = await qrl.getConnectionURI();
if (qrl.isMobile()) {
  window.location.href = uri;
} else {
  renderQrCode(uri);
}

qrl.on('connect', ({ chainId }) => {
  console.log('Wallet connected on chain', chainId);
});

// Use it like any EIP-1193 provider
const accounts = await qrl.request({ method: 'qrl_requestAccounts' });

const txHash = await qrl.request({
  method: 'qrl_sendTransaction',
  params: [{
    from: accounts[0],
    to: 'Q...',
    value: '0x2386F26FC10000', // 0.01 QRL
  }],
});

How a pairing works

Your dApp shows a connection URI

The SDK generates a qrlconnect:// URI. Render it as a QR code on desktop, or open it as a deep link on mobile.

The user scans or taps

MyQRLWallet (web, desktop, or mobile) picks up the URI and asks the user to approve the connection.

A post-quantum channel is established

An ML-KEM-768 (FIPS 203) key encapsulation keys an AES-256-GCM channel through the relay. The relay routes ciphertext only.

Requests flow, the wallet approves

Your dApp sends JSON-RPC requests; the wallet prompts the user for every transaction and signature, then returns the signed result.

Built for the post-quantum chain

End-to-End Post-Quantum Encryption

ML-KEM-768 key exchange with AES-256-GCM transport. The relay server never sees keys or plaintext.

Standard Provider Interface

An EIP-1193 provider with EIP-6963 wallet discovery, so MyQRLWallet shows up in multi-wallet pickers automatically.

Post-Quantum Signing

qrl_signMessage and qrl_signTypedData use SHAKE256 + ML-DSA-87, with local verify helpers exported by the package.

Session Persistence

Sessions survive page reloads for 7 days and reconnect automatically: no re-scanning on every visit.

Mobile-Aware Pairing

QR codes on desktop, deep links on mobile, and message buffering while the wallet app is backgrounded.

Self-Hostable Relay

The default relay runs at qrlwallet.com, and the relay server is open source: point relayUrl at your own.

The live demo dApp

Pair a wallet, send a testnet transaction, sign a message, and watch every encrypted relay message in an event log. No setup required.

zondscan.com/dapp-example
The live QRL Connect demo dApp with wallet pairing and signing

Open the demo next to MyQRLWallet on your phone or desktop, and fund your test account at the faucet.