ProofBridge is live on testnet. You’ll want testnet funds before or shortly after connecting:
Prerequisites
- A wallet application installed and set up with at least one account
- Testnet funds on the network you intend to use
- EVM (MetaMask / WalletConnect)
- Stellar
Use this flow for Ethereum Sepolia.
Open ProofBridge
Navigate to https://app.pfbridge.xyz in your browser.
Click Connect wallet
In the top-right corner, click Connect wallet. A modal appears listing supported wallet options.
Choose your wallet
Select MetaMask to connect via browser extension, or select WalletConnect to scan a QR code with a mobile wallet app.
Approve the connection request
Your wallet opens a connection prompt. Review the requested permissions and click Connect (MetaMask) or Approve (WalletConnect). ProofBridge only requests read access to your public address — it cannot initiate transactions without your signature.
Switch to the correct network
If your wallet is not already on Ethereum Sepolia, ProofBridge prompts you to switch. Click Switch network in the prompt and approve the network change in your wallet.
Sign the authentication message
ProofBridge requests a SIWE challenge — a plain-text message containing a unique nonce, the site origin, and your address. Review the message in your wallet and click Sign. This proves you control the wallet without spending gas or submitting a transaction.
The signed message is verified by ProofBridge and issues a session automatically. Access and refresh tokens are stored by the frontend — you do not need to manage them manually.
What happens after connecting
When you sign the authentication message, the ProofBridge relayer verifies your signature and creates a session. The frontend stores an access token and a refresh token transparently — sessions are renewed automatically, so you stay signed in without re-signing unless you explicitly disconnect.Link a second wallet to your account
ProofBridge accounts support one wallet per chain kind — one EVM wallet and one Stellar wallet attached to the same session. This lets a bridger fund an order on EVM and settle directly into a Stellar address they control, without signing out and back in as a different user. The flow after your first sign-in:Open the connection hub
Click your connected address in the header, then Link another wallet (or open the wallet icon in any flow that needs the other chain — the app will prompt you to link if the required chain isn’t attached yet).
Choose the chain you want to add
The modal shows only the chain kind you haven’t linked yet. If you signed in with MetaMask, you’ll be offered a Stellar wallet; if you signed in with Freighter, you’ll be offered EVM.
Sign the link challenge
Same authentication flow as first sign-in — SIWE for EVM, SEP-10 for Stellar — but the signed response is posted to
POST /v1/auth/link instead of POST /v1/auth/login. The relayer associates the newly-verified address with your existing account.Both wallets are now attached
Your header shows both addresses. Actions that need the EVM side (EVM deposits, MetaMask signatures) use your EVM wallet; actions that need the Stellar side (Soroban calls, SEP-41 approvals) use Freighter. Each chain’s wallet is used per-action — nothing is re-signed just to switch chains.
A single address can only be linked to one ProofBridge account at a time. If the wallet you’re trying to link was previously attached to a different account, the link fails with a clear error — disconnect it from the other account first.
What being linked enables
- Cross-chain flows in one session. Create an order on EVM and receive on Stellar (or the reverse) without signing out and back in.
- Per-chain address resolution. Backend callbacks can derive your Stellar recipient from your session when you’re signing an EVM action, and vice versa.
- No re-auth between actions. The JWT issued at login covers every linked wallet for that session; signatures are only asked for when a specific on-chain or pre-auth action needs them.
Swapping a linked wallet
Linking is stable but not permanent. To replace a linked wallet with a different one on the same chain kind:- Disconnect the current wallet on that chain kind (from the connection hub).
- Re-run the link flow with the new wallet.