Understanding Wallets
Embedded wallet
A private key is a signer—a cryptographic entity capable of signing messages and transactions on behalf of a user. When this private key is created and managed within an app or game, it becomes what we call an embedded wallet.
At Openfort, embedded wallets are self-custodial by design. These wallets are seamlessly integrated into your application and don't require an external wallet client like a browser extension or mobile app. This makes them ideal for users who don't already have a wallet or prefer not to connect an external one.
You can choose exactly when to provision an embedded wallets for your user and can interact with it through Openfort's signature and transaction APIs, or through libraries like wagmi
, viem
, or any other tooling that supports the EIP-1193 provider interface.
Wallet types: EOAs and Smart Accounts
In the context of blockchains, there are two main types of wallets:
-
Externally Owned Accounts (EOAs): These are the standard accounts controlled directly by a private key. EOAs are simple and efficient, but limited in terms of programmability.
-
Smart Accounts (aka Smart Wallets): These are onchain smart contracts that implement advanced logic for how assets are managed and transactions are authorized.
Every embedded wallet created by Openfort is paired with a smart wallet, offering users a modern, programmable onchain experience from day one.
Smart wallets and ERC-4337
Smart wallets provisioned through Openfort are ERC-4337-compatible smart contract accounts. This means they support account abstraction—a standard that enables:
- Gas sponsorship via paymasters
- Transaction batching and session signing
- Permission delegation and modular wallet logic
ERC-4337 introduces a new infrastructure layer—entry points, bundlers, and paymasters—which abstracts complex wallet logic from the base protocol, allowing for highly customizable, user-friendly wallets.
With Openfort, you don't need to manage any of this infrastructure manually. We handle signer creation, smart wallet deployment, and integration with the ERC-4337 stack automatically.
EOAs + ERC-7702: Upgrading the basic wallet
Thanks to the new ERC-7702 standard, EOAs can now be temporarily upgraded into smart EOAs, enabling many of the same benefits as smart wallets—including:
- Gasless transactions
- Batching
- Custom validation logic
The key difference is that with ERC-7702, the EOA remains in control and no smart contract is permanently deployed. However, key rotation is not supported under 7702, unlike fully programmable smart wallets.
JavaScript Implementation
In JavaScript applications, you can interact with embedded wallets through Openfort's signature and transaction APIs, or through popular wallet libraries that support the EIP-1193 provider interface.
import { Openfort } from '@openfort/openfort-js'
const openfort = new Openfort({
baseConfiguration: {
publishableKey: "YOUR_PUBLISHABLE_KEY"
},
shieldConfiguration: {
shieldPublishableKey: "YOUR_SHIELD_PUBLISHABLE_KEY"
}
})
// Get EIP-1193 provider for library integration
const provider = await openfort.embeddedWallet.getEthereumProvider()
Browser-Specific Features
JavaScript embedded wallets in web browsers provide several unique capabilities:
EIP-1193 Provider Interface
Direct access to the standard Ethereum provider interface for seamless integration with existing tooling.
// Use with any EIP-1193 compatible library
const accounts = await provider.request({ method: 'eth_accounts' })
const chainId = await provider.request({ method: 'eth_chainId' })
Web3 Library Integration
Seamless integration with popular libraries:
- Wagmi: React hooks for Ethereum
- Viem: TypeScript interface for Ethereum
- Ethers: Complete Ethereum library
// Example with Viem
import { createWalletClient, custom } from 'viem'
const walletClient = createWalletClient({
transport: custom(provider)
})