Openfort: Solana embedded wallets, Kit signing, and Kora gas logoOpenfort: Solana embedded wallets, Kit signing, and Kora gas
Overview at openfort.io/docs/overview. React @openfort/react 2.1.2. Node @openfort/openfort-node 0.12.2. Embedded-wallet showdown stays.
devrels.xyz/a/320Openfort is wallet infrastructure: embedded wallets, funding, backend wallets, and paymasters. Dashboard is dashboard.openfort.io. Demo is demo.openfort.io. Community: t.me/openfort. Keys sit on OpenSigner, MIT licensed, self-hostable. Openfort is the managed cloud on top.
On Solana the embedded wallet is a standard Ed25519 keypair. Gasless is Kora sponsorship, not account abstraction. The comparison piece stays: embedded wallet showdown.
React: SVM config
Package @openfort/react 2.1.2. Set chainType: ChainTypeEnum.SVM. Solana does not use wagmi. No WagmiProvider, no OpenfortWagmiBridge. Cluster is required: mainnet-beta, devnet, or testnet. Commitment default is confirmed.
import { ChainTypeEnum, OpenfortProvider } from "@openfort/react"
<OpenfortProvider
publishableKey="YOUR_OPENFORT_PUBLISHABLE_KEY"
walletConfig={{
shieldPublishableKey: "YOUR_SHIELD_PUBLISHABLE_KEY",
chainType: ChainTypeEnum.SVM,
solana: {
cluster: "devnet",
rpcUrls: { devnet: "https://api.devnet.solana.com" },
commitment: "confirmed",
},
connectOnLogin: true,
}}
>
{children}
</OpenfortProvider>Sign with Kit 6
Custom sends use @solana/kit 6 and @solana-program/system. Wrap provider.signTransaction({ messageBytes }) in a Kit TransactionSigner. If the signature is 65 bytes, trim to 64 for Ed25519. Hook: useSolanaEmbeddedWallet from @openfort/react/solana. <OpenfortButton /> already has a Send action for native SOL, with an optional gasless toggle.
Gasless on Solana
Openfort Solana Paymaster integrates @solana/kora. Openfort is the fee payer. Users do not need SOL. In Dashboard, Gas sponsorship, add a policy with sponsorSolTransaction. Modes: app pays (project covers SOL), or user pays in a supported SPL token (Kora prices at request time). Point KoraClient at https://api.openfort.io/rpc/solana/{cluster} with the publishable key.
Sponsorship is project-scoped. No per-request policyId (unlike Ethereum). Kora must attach the fee payer and payment instructions before the user signs. Do not swap the fee payer after the user has signed. Maintained sample: solana-headless quickstart.
Backend wallets
@openfort/openfort-node 0.12.2. Secret key plus walletSecret. Create a Solana backend account with openfort.accounts.solana.backend.create(). create() always returns an EOA. If create fails with Authentication failed, the wallet secret is wrong, not the API key.
import Openfort from "@openfort/openfort-node"
const openfort = new Openfort(process.env.OPENFORT_SECRET_KEY!, {
walletSecret: process.env.OPENFORT_WALLET_SECRET!,
})
const account = await openfort.accounts.solana.backend.create()
console.log(account.id, account.address)Resources
Keep reading
Privy's TEE-and-sharding key model, the User / Treasury / Agent wallet products, the React provider pattern, server-side wallet operations, and how recovery actually works.
Update every @dynamic-labs/* package together. sdk-react-core 5.7.0. New React apps can use @dynamic-labs-sdk/react-hooks. Embedded-wallet showdown stays.
Email/social/passkey login → portable MPC wallets; sign via SDK or REST without exposing full keys.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
