Solana CookbookDevelopment

Load a local json file keypair

When running your local project may sometimes want to use local keypair. The default keypair path generated by the Solana CLI is ~/.config/solana/id.json.

You can generate a custom keypair using the Solana CLI command solana-keygen grind --starts-with hi:1. This will generate a keypair with a public key starting with "hi" and output the keypair to a json file. You can then load this keypair using the helper function below.

export async function loadKeypairFromFile(
filePath: string
): Promise<KeyPairSigner<string>> {
// This is here so you can also load the default keypair from the file system.
const resolvedPath = path.resolve(
filePath.startsWith("~") ? filePath.replace("~", os.homedir()) : filePath
);
const loadedKeyBytes = Uint8Array.from(
JSON.parse(fs.readFileSync(resolvedPath, "utf8"))
);
// Here you can also set the second parameter to true in case you need to extract your private key.
const keypairSigner = await createKeyPairSignerFromBytes(loadedKeyBytes);
return keypairSigner;
}
const keypairSigner = await loadKeypairFromFile("~/.config/solana/id.json");
console.log(keypairSigner.address);
export async function loadDefaultKeypairWithAirdrop(
cluster: string
const keypairSigner2 = await loadDefaultKeypairWithAirdrop("devnet");
console.log(keypairSigner2.address);
Gill
import { airdropFactory, createSolanaClient, lamports } from "gill";
import { loadKeypairSignerFromFile } from "gill/node";
const keypairSigner = await loadKeypairSignerFromFile();
console.log(keypairSigner.address);
export async function loadDefaultKeypairWithAirdrop(
cluster: string
): Promise<KeyPairSigner<string>> {
const keypair = await loadKeypairSignerFromFile();
const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: cluster
});
try {
const result = await rpc.getBalance(keypair.address).send();
console.log(`Balance: ${result.value} lamports`);
if (result.value < lamports(500_000n)) {
console.log(`Balance low requesting airdrop`);
const airdrop = airdropFactory({ rpc, rpcSubscriptions });
await airdrop({
commitment: "confirmed",
lamports: lamports(1_000_000_000n),
recipientAddress: keypair.address
});
}
} catch (err) {
console.error("Error fetching balance:", err);
}
return keypair;
}
const keypairSigner2 = await loadDefaultKeypairWithAirdrop("devnet");
console.log(keypairSigner2.address);

Is this page helpful?

管理運営

© 2025 Solana Foundation.
無断転載を禁じます。
Load a local json file keypair | Solana