Skip to main content
Dynamic provides embedded wallets with a rich authentication kit — email login, social providers, and external wallet connections. Users sign in and get a Solana wallet provisioned automatically. Gas Station handles fee sponsorship and relay: once Dynamic’s embedded wallet has signed the transaction, Gas Station submits it to Solana and covers the fee.

How the integration works

Dynamic and Gas Station operate on separate layers: Your app builds a transaction using the fee payer returned by GET /api/transaction/config. Dynamic signs it. Gas Station relays it. The user never pays gas. Dynamic loads as an iframe inside your app and handles authentication and signing in that context. From the relay perspective, your app is the origin.

Demo

The Dynamic demo is a working React application that walks through the full gasless transaction flow:

altude-dynamic-gas-station-demo

Clone the demo to run a complete Dynamic + Gas Station integration on Solana devnet.
The demo covers:
  • Authentication — Dynamic handles email sign-in and provisions an embedded Solana wallet
  • Transaction buildingSystemProgram.createAccount with Altude as fee payer
  • Gasless relay — Signed transactions submitted through POST /api/Account/create and POST /api/Transaction/send
  • Transaction history — Persistent history with Solscan explorer links
  • Mock fallback — Runs without an Altude API key, simulating the full flow

The four-step flow

The demo walks through a step-by-step flow that shows where Dynamic ends and Gas Station begins:

Quick setup

1. Get your credentials

You need two things before running the demo:
  • Dynamic Environment ID — from app.dynamic.xyz. Create a project, then go to Developer → SDK & API Keys and copy your Environment ID. Make sure Solana is enabled under Chains and Networks.
  • Altude API key — from app.altude.so. Create an application and copy the devnet key.

2. Clone and configure

Open .env and set your credentials:
The Dynamic Environment ID is required — the app will not load without it. The Altude API keys are optional per-network; any network without a key runs in mock mode, simulating the full flow without on-chain transactions.

3. Run

Open http://localhost:5000. Sign in with email, walk through the four-step transaction flow, and watch Gas Station relay the transaction without the user paying gas.

Adapter pattern

The Dynamic adapter lives in src/wallet/dynamic.tsx and exports three symbols: WalletProvider, useWallet, and WalletButton. The rest of the app uses these through a single re-export in src/wallet/index.ts — switching providers means changing one line. To see how the adapter interface works or to adapt this for a different provider, see the integration overview.

Integration overview

Architecture, custody model, and how Gas Station fits alongside any wallet provider.

Gas Station API reference

Full reference for /api/Account/create, /api/Transaction/send, and other endpoints.