How to Validate a Public Key

In certain special cases (e.g. a Program Derived Address), public keys may not have a private key associated with them. You can check this by looking to see if the public key lies on the ed25519 curve. Only public keys that lie on the curve can be controlled by users with wallets.

import { PublicKey } from "@solana/web3.js";
// on curve address
const key = new PublicKey("5oNDL3swdJJF1g9DzJiZ4ynHXgszjAEpUkxVYejchzrY");
console.log(PublicKey.isOnCurve(key.toBytes()));
const offCurveAddress = new PublicKey(
"4BJXYkfvg37zEmBbsacZjeQDpTNx91KppxFJxRqrz48e"
);
console.log(PublicKey.isOnCurve(offCurveAddress.toBytes()));
Console
Click to execute the code.

Is this page helpful?

管理者

©️ 2025 Solana 基金会版权所有
取得联系