Once a web application has connected to the ME Solana wallet, it can prompt users to sign a message, send transactions, and more. Signing is commonplace amongst many dApps, as it gives application owners the ability to verify ownership of the wallet. Signing a message does not require any transaction fees.
To invoke, you can call the signMessage method on the provider directly.
import { MagicEdenProvider } from "../types/types";
/**
* Prompts the user to sign a message using the MagicEden Provider object
* @param {MagicEdenProvider} provider The MagicEdenProvider object
* @param {string} message The message to sign
* @returns {Promise<string>} A promise that resolves to the signed message
* @throws {Error} If an unexpected error occurs while signing the message
*/
export const signMessage = async (
provider: MagicEdenProvider,
message: string
): Promise<string> => {
try {
const encodedText = new TextEncoder().encode(message);
const signedMessage = await provider.signMessage(encodedText);
return signedMessage;
} catch (error) {
console.warn(error);
throw new Error("An unexpected error occured while signing the message.");
}
};
Signing a message is relatively simple and doesn't require any real interaction with web3 libraries. Check out the signMessage functionality in the demo app for a more well rounded implementation.