Skip to content
LogoLogo

Using backend wallets

Backend wallets are server-side wallets that enable your application to sign transactions, manage assets, and interact with blockchains programmatically. Each backend wallet corresponds to a private/public key pair, with the private key securely stored and managed by Openfort.

Managing accounts

Creating accounts

Create new backend accounts with an optional name. Account names help you organize and identify your wallets.

import Openfort from '@openfort/openfort-node';
 
const openfort = new Openfort(YOUR_SECRET_KEY, {
  walletSecret: YOUR_WALLET_SECRET,
});
 
// Create an EVM backend account
const account = await openfort.accounts.evm.backend.create({
  name: 'MyWallet',
});
 
console.log('Account ID:', account.id);
console.log('Address:', account.address);

Listing accounts

Retrieve all backend accounts in your project with pagination support.

import Openfort from '@openfort/openfort-node';
 
const openfort = new Openfort(YOUR_SECRET_KEY, {
  walletSecret: YOUR_WALLET_SECRET,
});
 
// List all EVM backend accounts
const result = await openfort.accounts.evm.backend.list({ limit: 10 });
 
console.log(`Found ${result.total} accounts:`);
for (const account of result.accounts) {
  console.log(`  - ${account.address} (${account.id})`);
}
 
// Paginate through results
const nextPage = await openfort.accounts.evm.backend.list({
  limit: 10,
  skip: 10,
});

Retrieving accounts

Retrieve a specific account by its ID or blockchain address.

import Openfort from '@openfort/openfort-node';
 
const openfort = new Openfort(YOUR_SECRET_KEY, {
  walletSecret: YOUR_WALLET_SECRET,
});
 
// Retrieve by ID
const accountById = await openfort.accounts.evm.backend.get({
  id: 'dac_...',
});
 
// Retrieve by address
const accountByAddress = await openfort.accounts.evm.backend.get({
  address: '0x1234567890123456789012345678901234567890',
});

Importing accounts

Import existing wallets into Openfort by providing the private key. This enables you to migrate existing wallets or use keys generated elsewhere.

import Openfort from '@openfort/openfort-node';
 
const openfort = new Openfort(YOUR_SECRET_KEY, {
  walletSecret: YOUR_WALLET_SECRET,
});
 
// Import an EVM account using a hex-encoded private key
const account = await openfort.accounts.evm.backend.import({
  privateKey: '0x0123456789abcdef...', // 32-byte hex-encoded private key
  name: 'ImportedWallet',
});
 
console.log('Imported account:', account.address);

Exporting accounts

Export the private key from a backend account. This is useful for migrating to another provider or for backup purposes.

import Openfort from '@openfort/openfort-node';
 
const openfort = new Openfort(YOUR_SECRET_KEY, {
  walletSecret: YOUR_WALLET_SECRET,
});
 
// Export the private key
const privateKey = await openfort.accounts.evm.backend.export({
  id: 'dac_...',
});
 
console.log('Private key:', `0x${privateKey}`);

Signing messages

Backend wallets can sign arbitrary messages for authentication or verification purposes.

import Openfort from '@openfort/openfort-node';
 
const openfort = new Openfort(YOUR_SECRET_KEY, {
  walletSecret: YOUR_WALLET_SECRET,
});
 
const account = await openfort.accounts.evm.backend.create({
  name: 'SigningWallet',
});
 
// Sign a message
const message = 'Hello, Openfort!';
const signature = await account.signMessage({ message });
 
console.log('Signature:', signature);