The Solana Profile Picture Protocol allows Solana users to set a single Metaplex-standard NFT as a universal PFP for the Solana blockchain.
Individual Solana protocols can use the documentation below both to show PFPs in their FE, and to provide functionality within their own FE to allow users to set a new PFP.
import { Connection, PublicKey } from '@solana/web3.js';
import { getProfilePicture } from '@solflare-wallet/pfp';
const connection = new Connection('https://api.mainnet-beta.solana.com');
const walletPubkey = new PublicKey('ES8rZr16f5eAc9PkUcAbafwg5JjEJANbpwu92CF2Cbox');
const { isAvailable, url } = await getProfilePicture(connection, walletPubkey);
function getProfilePicture (connection: Connection, publicKey: PublicKey, config: ProfilePictureConfig): Promise<ProfilePicture>
connection
- RPC connection objectpublicKey
- The public key of the walletconfig
(optional)fallback
- Boolean, use a fallback generated image (defaulttrue
)resize
- Object with Cloudflare image resize params (default{ width: 100 }
)
Object with the following fields:
isAvailable
- Boolean,true
if there is a profile picture for the given walleturl
- The URL of the profile image, always populated (either a fallback image or an empty-image icon), you can choose to ignore it ifisAvailable
is falsename
- NFT name (only ifisAvailable: true
)metadata
- NFT metadata object (only ifisAvailable: true
)tokenAccount
- The public key of the token account that holds the NFT (only ifisAvailable: true
)mintAccount
- The public key of the NFT's mint (only ifisAvailable: true
)
function createSetProfilePictureTransaction (ownerPublicKey: PublicKey, mintPublicKey: PublicKey, tokenAccountPublicKey: PublicKey): Promise<Transaction>
ownerPublicKey
- The public key of the walletmintPublicKey
- The public key of the NFT's minttokenAccountPublicKey
- The public key of the token account that holds the NFT
A Web3 Transaction object
function createRemoveProfilePictureTransaction (ownerPublicKey: PublicKey): Promise<Transaction>
ownerPublicKey
- The public key of the wallet
A Web3 Transaction object